Ticket #6462 (closed defect: fixed)

Opened 8 months ago

Last modified 8 months ago

[with patch, positive review] Unpickling problem for orders in a number field

Reported by: davidloeffler Owned by: was
Priority: major Milestone: sage-4.1.1
Component: number theory Keywords:
Cc: Author(s): David Loeffler
Report Upstream: Reviewer(s): Nick Alexander
Merged in: sage-4.1.1.alpha0 Work issues:

Description (last modified by davidloeffler) (diff)

Unpickling elements of number field orders doesn't work:

sage: L = QuadraticField(-11,'a'); OL = L.maximal_order(); w = OL.0
sage: loads(dumps(w))
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)

/home/david/.sage/temp/groke/24319/_home_david__sage_init_sage_0.py in <module>()

/home/david/sage-4.1/local/lib/python2.6/site-packages/sage/structure/sage_object.so in sage.structure.sage_object.loads (sage/structure/sage_object.c:8076)()

/home/david/sage-4.1/local/lib/python2.6/site-packages/sage/rings/number_field/number_field_element_quadratic.so in sage.rings.number_field.number_field_element_quadratic.__make_NumberFieldElement_quadratic0 (sage/rings/number_field/number_field_element_quadratic.cpp:2792)()

/home/david/sage-4.1/local/lib/python2.6/site-packages/sage/rings/number_field/number_field_element_quadratic.so in sage.rings.number_field.number_field_element_quadratic.NumberFieldElement_quadratic.__init__ (sage/rings/number_field/number_field_element_quadratic.cpp:2897)()

<type 'str'>: (<type 'exceptions.AttributeError'>, AttributeError("'AbsoluteOrder' object has no attribute '_is_maximal'",))

With orders in higher-degree fields, I get a different error message:

sage: L = NumberField(x^3 - x - 1,'a'); OL = L.maximal_order(); w = OL.0
sage: loads(dumps(w))
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)

/home/david/.sage/temp/groke/24319/_home_david__sage_init_sage_0.py in <module>()

/home/david/sage-4.1/local/lib/python2.6/site-packages/sage/structure/sage_object.so in sage.structure.sage_object.loads (sage/structure/sage_object.c:8076)()

/home/david/sage-4.1/local/lib/python2.6/site-packages/sage/rings/number_field/number_field_element.so in sage.rings.number_field.number_field_element.__create__NumberFieldElement_version1 (sage/rings/number_field/number_field_element.cpp:3696)()

/home/david/sage-4.1/local/lib/python2.6/site-packages/sage/rings/number_field/number_field_element.so in sage.rings.number_field.number_field_element.OrderElement_absolute.__init__ (sage/rings/number_field/number_field_element.cpp:20595)()

AttributeError: ("'NumberField_absolute' object has no attribute 'number_field'", <built-in function __create__NumberFieldElement_version1>, (Number Field in a with defining polynomial x^3 - x - 1, <type 'sage.rings.number_field.number_field_element.OrderElement_absolute'>, 1))

(and the analogous thing for relative fields as well.)

This is a real problem because I am working on a computation where I need to be able to save results to disc, and this result is preventing me from loading what I've saved. (Elements of the fields rather than the orders unpickle OK, but it's next to impossible to prevent elements of the orders creeping in somehow when I pickle stuff.)

Attachments

trac_6462-order_elt_pickle_bug.patch Download (6.4 KB) - added by davidloeffler 8 months ago.
patch against 4.1.alpha2

Change History

Changed 8 months ago by davidloeffler

  • description modified (diff)

Changed 8 months ago by davidloeffler

patch against 4.1.alpha2

Changed 8 months ago by davidloeffler

  • summary changed from Unpickling problem for orders in a number field to [with patch, needs review] Unpickling problem for orders in a number field

Changed 8 months ago by ncalexan

  • reviewer set to Nick Alexander
  • summary changed from [with patch, needs review] Unpickling problem for orders in a number field to [with patch, positive review] Unpickling problem for orders in a number field
  • author set to David Loeffler

Fine by me.

Changed 8 months ago by mvngu

David, the patch trac_6462-order_elt_pickle_bug.patch doesn't contain your username. So I'm committing it in your name. Just to let people know, this has been merged in sage-4.1.1-alpha0. I can't close this ticket because I don't have the privilege to do so. Sorry, folks :-(

Changed 8 months ago by mvngu

  • status changed from new to closed
  • resolution set to fixed
  • merged set to sage-4.1.1.alpha0
Note: See TracTickets for help on using tickets.