#16275: Hom: introduce a check argument to simplify the unpickling detection
logic
-------------------------------------+-------------------------------------
Reporter: nthiery | Owner:
Type: enhancement | Status: needs_review
Priority: major | Milestone: sage-6.2
Component: categories | Resolution:
Keywords: homset, pickling | Merged in:
Authors: Nicolas M. | Reviewers: Simon King, Nicolas
Thiéry, Simon King | M. Thiéry
Report Upstream: N/A | Work issues:
Branch: | Commit:
u/SimonKing/ticket/16275 | e1e916cde347deac1df9079f7ec856184e3862bf
Dependencies: | Stopgaps:
-------------------------------------+-------------------------------------
Comment (by nthiery):
Cool!
Coming back to the idea of putting the pickle as a doctest; there is a
quite natural way to avoid the ugly meaningless string: to put instead
the corresponding sequence of instructions, as given by
explain_pickle.
Hmm, ok, maybe that's a bit too long in this case :-)
{{{
sage: pg_unpickle_map = unpickle_global('sage.categories.map',
'unpickle_map')
sage: pg_HeckeModuleMorphism_matrix =
unpickle_global('sage.modular.hecke.morphism',
'HeckeModuleMorphism_matrix')
sage: pg_Hom = unpickle_global('sage.categories.homset', 'Hom')
sage: pg_dynamic_class = unpickle_global('sage.structure.dynamic_class',
'dynamic_class')
sage: pg_ModularSymbolsAmbient_wt2_g0 =
unpickle_global('sage.modular.modsym.ambient',
'ModularSymbolsAmbient_wt2_g0')
sage: pg_getattr = unpickle_global('__builtin__', 'getattr')
sage: pg_unreduce =
unpickle_global('sage.structure.unique_representation', 'unreduce')
sage: pg_HeckeModules = unpickle_global('sage.categories.hecke_modules',
'HeckeModules')
sage: pg_RationalField = unpickle_global('sage.rings.rational_field',
'RationalField')
sage: pg = unpickle_instantiate(pg_RationalField, ())
sage: si1 = pg_unreduce(pg_HeckeModules, (pg,), {})
sage: si2 =
unpickle_newobj(pg_dynamic_class('ModularSymbolsAmbient_wt2_g0_with_category',
(pg_ModularSymbolsAmbient_wt2_g0, pg_getattr(si1, 'parent_class')),
None, None, pgsage: _ModularSymbolsAmbient_wt2_g0), ())
sage: pg_unpickle = unpickle_global('sage.matrix.matrix0', 'unpickle')
sage: pg_Matrix_rational_dense =
unpickle_global('sage.matrix.matrix_rational_dense',
'Matrix_rational_dense')
sage: pg_MatrixSpace = unpickle_global('sage.matrix.matrix_space',
'MatrixSpace')
sage: si3 = pg_unreduce(pg_MatrixSpace, (pg, 3r, 3r, False), {})
sage: si4 = pg_unpickle(pg_Matrix_rational_dense, si3, True, None, '8 0 0
0 8 0 0 0 8', 0r)
sage: pg__make_p1list = unpickle_global('sage.modular.modsym.p1list',
'_make_p1list')
sage: pg_Gamma0_constructor =
unpickle_global('sage.modular.arithgroup.congroup_gamma0',
'Gamma0_constructor')
sage: pg_make_integer = unpickle_global('sage.rings.integer',
'make_integer')
sage: si5 = pg_make_integer('6')
sage: pg_generic_factory_unpickle =
unpickle_global('sage.structure.factory', 'generic_factory_unpickle')
sage: pg_lookup_global = unpickle_global('sage.structure.factory',
'lookup_global')
sage: si6 = (6r, 2r, 'rc1')
sage: pg_ManinSymbol =
unpickle_global('sage.modular.modsym.manin_symbols', 'ManinSymbol')
sage: si7 = unpickle_newobj(pg_ManinSymbol, ())
sage: si8 = (0r, 0r, 1r)
sage: pg_ManinSymbolList_gamma0 =
unpickle_global('sage.modular.modsym.manin_symbols',
'ManinSymbolList_gamma0')
sage: si9 = unpickle_newobj(pg_ManinSymbolList_gamma0, ())
sage: si10 = unpickle_newobj(pg_ManinSymbol, ())
sage: si11 = (0r, 1r, 0r)
sage: unpickle_build(si10, {'_ManinSymbol__t':si11,
'_ManinSymbol__parent':si9})
sage: si12 = unpickle_newobj(pg_ManinSymbol, ())
sage: si13 = (0r, 1r, 1r)
sage: unpickle_build(si12, {'_ManinSymbol__t':si13,
'_ManinSymbol__parent':si9})
sage: si14 = unpickle_newobj(pg_ManinSymbol, ())
sage: si15 = (0r, 1r, 2r)
sage: unpickle_build(si14, {'_ManinSymbol__t':si15,
'_ManinSymbol__parent':si9})
sage: si16 = unpickle_newobj(pg_ManinSymbol, ())
sage: si17 = (0r, 1r, 3r)
sage: unpickle_build(si16, {'_ManinSymbol__t':si17,
'_ManinSymbol__parent':si9})
sage: si18 = unpickle_newobj(pg_ManinSymbol, ())
sage: si19 = (0r, 1r, 4r)
sage: unpickle_build(si18, {'_ManinSymbol__t':si19,
'_ManinSymbol__parent':si9})
sage: si20 = unpickle_newobj(pg_ManinSymbol, ())
sage: si21 = (0r, 1r, 5r)
sage: unpickle_build(si20, {'_ManinSymbol__t':si21,
'_ManinSymbol__parent':si9})
sage: si22 = unpickle_newobj(pg_ManinSymbol, ())
sage: si23 = (0r, 2r, 1r)
sage: unpickle_build(si22, {'_ManinSymbol__t':si23,
'_ManinSymbol__parent':si9})
sage: si24 = unpickle_newobj(pg_ManinSymbol, ())
sage: si25 = (0r, 2r, 3r)
sage: unpickle_build(si24, {'_ManinSymbol__t':si25,
'_ManinSymbol__parent':si9})
sage: si26 = unpickle_newobj(pg_ManinSymbol, ())
sage: si27 = (0r, 2r, 5r)
sage: unpickle_build(si26, {'_ManinSymbol__t':si27,
'_ManinSymbol__parent':si9})
sage: si28 = unpickle_newobj(pg_ManinSymbol, ())
sage: si29 = (0r, 3r, 1r)
sage: unpickle_build(si28, {'_ManinSymbol__t':si29,
'_ManinSymbol__parent':si9})
sage: si30 = unpickle_newobj(pg_ManinSymbol, ())
sage: si31 = (0r, 3r, 2r)
sage: unpickle_build(si30, {'_ManinSymbol__t':si31,
'_ManinSymbol__parent':si9})
sage: unpickle_build(si9, {'_ManinSymbolList__manin_symbol_list':[si7,
si10, si12, si14, si16, si18, si20, si22, si24, si26, si28, si30],
'_list':[si8, si11, si13, si15, si1sage: 7, si19, si21, si23, si25,
si27, si29, si31], '_index':{si13:2r, si27:9r, si15:3r, si8:0r,
si17:4r, si25:8r, si23:7r, si31:11r, si19sage: :5r, si11:1r, si29:10r,
si21:6r}, '_ManinSymbolList_group__syms':pg__make_p1list(6r),
'_ManinSymbolList_group__level':si5, '_wsage: eight':2r})
sage: unpickle_build(si7, {'_ManinSymbol__t':si8,
'_ManinSymbol__parent':si9})
sage: pg_Matrix_rational_sparse =
unpickle_global('sage.matrix.matrix_rational_sparse',
'Matrix_rational_sparse')
sage: pg_make_rational = unpickle_global('sage.rings.rational',
'make_rational')
sage: si32 = {(3r, 2r):pg_make_rational('1'), (0r,
0r):pg_make_rational('-1'), (8r, 2r):pg_make_rational('-1'), (7r,
1r):pg_make_rational('1'), (9r, 2r):pg_make_rational('-1sage: '), (5r,
2r):pg_make_rational('1'), (11r, 2r):pg_make_rational('1'), (3r,
1r):pg_make_rational('-1'), (10r, 1r)sage: :pg_make_rational('1'),
(5r, 1r):pg_make_rational('-1'), (1r, 0r):pg_make_rational('1'), (4r,
1r):pg_make_rational('-1'), (7r, 2r)sage: :pg_make_rational('-1'), (9r,
1r):pg_make_rational('1')}
sage: pg_DirichletCharacter = unpickle_global('sage.modular.dirichlet',
'DirichletCharacter')
sage: si33 = unpickle_newobj(pg_DirichletCharacter, ())
sage: si34 = pg_make_integer('6')
sage: unpickle_build(si33,
(pg_generic_factory_unpickle(pg_lookup_global('DirichletGroup'), si6,
(pg, si34, pg_make_rational('-1'), pg_make_integer('2')), {}),
{'_DirichletCsage: haracter__modulus':si34,
'_DirichletCharacter__values_on_gens':(pg_make_rational('1'),)}))
sage: pg_HeckeAlgebra_full = unpickle_global('sage.modular.hecke.algebra',
'HeckeAlgebra_full')
sage: pg_CommutativeAlgebras =
unpickle_global('sage.categories.commutative_algebras',
'CommutativeAlgebras')
sage: si35 =
unpickle_newobj(pg_dynamic_class('HeckeAlgebra_full_with_category',
(pg_HeckeAlgebra_full, pg_getattr(pg_unreduce(pg_CommutativeAlgebras,
(pg,), {}), 'parent_clsage: ass')), None, None, pg_HeckeAlgebra_full), ())
sage: pg_HeckeOperator =
unpickle_global('sage.modular.modsym.hecke_operator', 'HeckeOperator')
sage: si36 = unpickle_newobj(pg_HeckeOperator, ())
sage: pg_HeckeAlgebraElement_matrix =
unpickle_global('sage.modular.hecke.hecke_operator',
'HeckeAlgebraElement_matrix')
sage: si37 = unpickle_newobj(pg_HeckeAlgebraElement_matrix, ())
sage: unpickle_build(si37, (si35,
{'_HeckeAlgebraElement_matrix__matrix':si4,
'_HeckeAlgebraElement__hecke_module_morphism':pg_unpickle_map(pg_HeckeModuleMorphism_matrix,
pgsage: _Hom(si2, si2, si1), {'_matrix':si4,
'_HeckeModuleMorphism_matrix__name':''}, {'_codomain':si2, '_domain':si2,
'_repr_type_str':None})}))
sage: unpickle_build(si36, (si35, {'_HeckeOperator__matrix_form':si37,
'_HeckeOperator__matrix':si4, '_HeckeOperator__n':7r}))
sage: unpickle_build(si35, {'_latex_names':None, '_list':None,
'_HeckeAlgebra_base__matrix_space_cache':si3, '_names':None,
'_gens_dict':None, '_HeckeAlgebra_base__M':si2, 'sage: _base':pg,
'_gens':None, '_HeckeAlgebra_base__hecke_operator':{7r:si36}})
sage: unpickle_build(si2, {'_latex_names':None,
'_ModularSymbolsAmbient__rank':3r, '_hecke_matrices':{(7r, None):si4,
7r:si4}, '_ModularSymbolsAmbient__p1list':pg__make_p1list(6r),
'_ModularSymbolsSpace__group':pg_Gamma0_constructor(si5),
'_AmbientHeckeModule__free_module':pg_generic_factory_unpickle(pg_lookup_global('FreeModule'),
si6, (pg, 3r, False, None), {}), '_ModularSymbolsSpace__sign':0r,
'_AmbientHeckeModule__rank':pg_make_integer('3'),
'_HeckeModule_free_module__weight':2r, '_list':None,
'_manin_generators':[si7, si10, si12, si14, si16, si18, si20, si22, si24,
si26, si28, si30], '_gens_dict':None, '_generator_orders':None,
'_manin_gens_to_basis':pg_unpickle(pg_Matrix_rational_sparse,
pg_unreduce(pg_MatrixSpace, (pg, 12r, 3r, True), {}), False,
{'dict':si32}, si32, -1r), '_ModularSymbolsSpace__character':si33,
'_diamond_matrices':{}, '_names':None, '_HeckeModule_generic__level':si5,
'_manin_basis':[1r, 10r, 11r], '_base':pg, '_gens':None,
'_HeckeModule_generic__hecke_algebra':si35, '_mod2term':[(1r,
pg_make_rational('-1')), (1r, pg_make_rational('1')), (6r,
pg_make_rational('-1')), (9r, pg_make_rational('-1')), (10r,
pg_make_rational('-1')), (7r, pg_make_rational('-1')), (6r,
pg_make_rational('1')), (7r, pg_make_rational('1')), (11r,
pg_make_rational('-1')), (9r, pg_make_rational('1')), (10r,
pg_make_rational('1')), (11r, pg_make_rational('1'))],
'_ModularSymbolsAmbient_wtk_g0__manin_symbols':si9})
sage: pg_unpickle_map(pg_HeckeModuleMorphism_matrix, pg_Hom(si2, si2,
si1), {'_matrix':pg_unpickle(pg_Matrix_rational_dense, si3, False, None,
'0 1 2 3 4 5 6 7 8', 0r), '_HeckeModuleMorphism_matrix__name':'spam',
'_default_filename':'broken_pickle.sobj'}, {'_codomain':si2,
'_domain':si2, '_repr_type_str':None})
}}}
Cheers,
Nicolas
--
Ticket URL: <http://trac.sagemath.org/ticket/16275#comment:42>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" 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 http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.