1 | initial version |
Not sure if it is a bug, but in your example n
is a Python int
, not a Sage integer. You can use srange(6)
instead of range
, it should work.
2 | No.2 Revision |
Not sure if it is a bug, but in your example n
is a Python int
, not a Sage integer. You can use srange(6)
instead of rangerange(6), it in your first loop, then the ellipsis should work should work.
3 | No.3 Revision |
Not sure if it is a bug, but in your example n
is a Python int
, because it is created by the range
function, not a Sage integer. You can use srange(6)
instead of range(6)
in your first loop, then the ellipsis should work should work.
4 | No.4 Revision |
Not sure if it is a bug, but in your example n
is a Python int
(not a Sage integer) because it is created by the range
function, not a Sage integer. function,. You can use srange(6)
instead of range(6)
in your first loop, then the ellipsis should work.
5 | No.5 Revision |
Not sure if it is a bug, but in In your example n
is a Python int
(not a Sage integer) because it is created by the range
function,. You can use srange(6)
instead of range(6)
in your first loop, then the ellipsis should work.
EDIT : since i am a player, i inspected further to decide whether it is a bug or a feature. In the documentation of ellipsis_iter
it is claimed that the result is an iterator, and in the official Python documentation, iterators are required to provide a .next()
method. With Python integers as "universe" (see below), ellipsis_iter
provides an object that does not provide a .next()
method:
sage: I = ellipsis_iter(int(-42),Ellipsis,int(42))
sage: I.next()
AttributeError: 'xrange' object has no attribute 'next'
Let us inspect why.
So, if you look at the source code of ellipsis_iter
(see ellipsis_iter??
or the file src/sage/misc/misc.py
), you will see that it uses xsrange
. Now if you look at xsrange
, you will see that it does something when the "universe" is ZZ
, but just calls xrange
Python builtin:
sage: xsrange(42)
<generator object generic_xsrange at 0x7f93417ea230>
sage: xsrange(int(42))
xrange(42)
Unfortunately, xrange
is of type 'xrange'
and is not an iterator (though it is an iterable since you can loop over it).
sage: xsrange(42).next()
0
sage: xrange(42).next()
AttributeError: 'xrange' object has no attribute 'next'
So, it is a bug, thanks for reporting.
6 | No.6 Revision |
In your example n
is a Python int
(not a Sage integer) because it is created by the range
function,. You can use srange(6)
instead of range(6)
in your first loop, then the ellipsis should work.
EDIT : since i am a player, i inspected further to decide whether it is a bug or a feature. In the documentation of ellipsis_iter
it is claimed that the result is an iterator, and in the official Python documentation, iterators are required to provide a .next()
method. With Python integers as "universe" (see below), ellipsis_iter
provides an object that does not provide a .next()
method:
sage: I = ellipsis_iter(int(-42),Ellipsis,int(42))
sage: I.next()
AttributeError: 'xrange' object has no attribute 'next'
Let us inspect why.
So, if you look at the source code of ellipsis_iter
(see ellipsis_iter??
or the file src/sage/misc/misc.py
), you will see that it uses xsrange
. Now if you look at xsrange
, you will see that it does something when the "universe" is ZZ
, but just calls xrange
Python builtin:
sage: xsrange(42)
<generator object generic_xsrange at 0x7f93417ea230>
sage: xsrange(int(42))
xrange(42)
See in the source code:
if universe is not ZZ:
return xrange(start, end, step)
Unfortunately, xrange
is of type 'xrange'
and is not an iterator (though it is an iterable since you can loop over it).
sage: xsrange(42).next()
0
sage: xrange(42).next()
AttributeError: 'xrange' object has no attribute 'next'
So, it is a bug, thanks for reporting.
7 | No.7 Revision |
In your example n
is a Python int
(not a Sage integer) because it is created by the range
function,. You can use srange(6)
instead of range(6)
in your first loop, then the ellipsis should work.
EDIT : since i am a player, i inspected further to decide whether it is a bug or a feature. In the documentation of ellipsis_iter
it is claimed that the result is an iterator, and in the official Python documentation, iterators are required to provide a .next()
method. With Python integers as "universe" (see below), ellipsis_iter
provides an object that does not provide a .next()
method:
sage: I = ellipsis_iter(int(-42),Ellipsis,int(42))
sage: I.next()
AttributeError: 'xrange' object has no attribute 'next'
Let us inspect why.
So, if you look at the source code of ellipsis_iter
(see ellipsis_iter??
or the file src/sage/misc/misc.py
), you will see that it uses xsrange
. Now if you look at xsrange
, you will see that it does something when the "universe" is ZZ
, but just calls xrange
Python builtin:
sage: xsrange(42)
<generator object generic_xsrange at 0x7f93417ea230>
sage: xsrange(int(42))
xrange(42)
See in the source code:
if universe is not ZZ:
return xrange(start, end, step)
Unfortunately, xrange
is of type 'xrange'
and is not an iterator (though it is an iterable since you can loop over it).
sage: xsrange(42).next()
0
sage: xrange(42).next()
AttributeError: 'xrange' object has no attribute 'next'
So, it is a bug, thanks for reporting.
8 | No.8 Revision |
In your example n
is a Python int
(not a Sage integer) because it is created by the range
function,. You can use srange(6)
instead of range(6)
in your first loop, then the ellipsis should work.
EDIT : since i am a player, i inspected further to decide whether it is a bug or a feature. In the documentation of ellipsis_iter
it is claimed that the result is an iterator, and in the official Python documentation, iterators are required to provide a .next()
method. With Python integers as "universe" (see below), ellipsis_iter
provides an object that does not provide a .next()
method:
sage: I = ellipsis_iter(int(-42),Ellipsis,int(42))
sage: I.next()
AttributeError: 'xrange' object has no attribute 'next'
Let us inspect why.
So, if you look at the source code of ellipsis_iter
(see ellipsis_iter??
or the file src/sage/misc/misc.py
), you will see that it uses xsrange
. Now if you look at xsrange
, you will see that it does something when the "universe" is ZZ
, but just calls xrange
Python builtin:
sage: xsrange(42)
<generator object generic_xsrange at 0x7f93417ea230>
sage: xsrange(int(42))
xrange(42)
See in the source code:
if universe is not ZZ:
return xrange(start, end, step)
Unfortunately, xrange
is of type 'xrange'
and is not an iterator (though it is an iterable since you can loop over it).
sage: xsrange(42).next()
0
sage: xrange(42).next()
AttributeError: 'xrange' object has no attribute 'next'
So, it is a bug, thanks for reporting, this is now trac ticket 18538.