The related https://trac.sagemath.org/ticket/23372 has been refused.
Le lundi 28 août 2017 22:04:02 UTC+2, Nils Bruin a écrit :
>
> On Monday, August 28, 2017 at 3:45:23 AM UTC-7, Nicolas M. Thiéry wrote:
>>
>> sage: from __future__ import unicode_literals
>> sage: QQ['x,y']
>> ...
>> ValueError: variable name 'x,y' is not alphanumeric
>>
>
> PolynomialRing(QQ,'x,y')
>
> and
>
> PolynomialRing(QQ,u'x,y')
>
> both work just fine, whereas
>
> PolynomialRing(QQ,name="x,y")
>
> does not. So I expect that QQ[...] does some analysis on its argument to
> decide if it needs to pass a "name" or a "names" argument. However, finding
> out where that code might live seems to be nigh impossible thanks to the
> category stuff:
>
> sage: QQ.__getitem__??
> ...
> try:
> meth = super(Parent, self).__getitem__
> except AttributeError:
> # needed when self is a Cython object
> try:
> meth = self.getattr_from_category('__getitem__')
> except AttributeError:
> return self.list()[n]
> return meth(n)
>
> so finding where this code needs to be made more robust for str/unicode is
> very difficult.
> MAINTAINABILITY REQUEST: make methods better introspectable in the face of
> the category mro extensions.
>
> It might be in sage.cagtegories.rings.py:999
>
> def normalize_arg(arg):
> if isinstance(arg, (tuple, list)):
> # Allowing arbitrary iterables would create confusion,
> but we
> # may want to support a few more.
> return tuple(arg)
> elif isinstance(arg, str):
> return tuple(arg.split(','))
> else:
> return (arg,)
>
> We need a typecheck there that handles str and unicode the same.
>
> (incidentally, because str == unicode in Py3, this issue would not occur
> in Py3)
>
--
You received this message because you are subscribed to the Google Groups
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.