passagemath-objects 10.6.45__cp313-cp313-musllinux_1_2_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of passagemath-objects might be problematic. Click here for more details.
- passagemath_objects/__init__.py +3 -0
- passagemath_objects-10.6.45.dist-info/METADATA +115 -0
- passagemath_objects-10.6.45.dist-info/RECORD +280 -0
- passagemath_objects-10.6.45.dist-info/WHEEL +5 -0
- passagemath_objects-10.6.45.dist-info/top_level.txt +3 -0
- passagemath_objects.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
- sage/all__sagemath_objects.py +37 -0
- sage/arith/all__sagemath_objects.py +5 -0
- sage/arith/long.pxd +411 -0
- sage/arith/numerical_approx.cpython-313-x86_64-linux-musl.so +0 -0
- sage/arith/numerical_approx.pxd +35 -0
- sage/arith/numerical_approx.pyx +75 -0
- sage/arith/power.cpython-313-x86_64-linux-musl.so +0 -0
- sage/arith/power.pxd +31 -0
- sage/arith/power.pyx +127 -0
- sage/categories/action.cpython-313-x86_64-linux-musl.so +0 -0
- sage/categories/action.pxd +29 -0
- sage/categories/action.pyx +641 -0
- sage/categories/algebra_functor.py +745 -0
- sage/categories/all__sagemath_objects.py +33 -0
- sage/categories/basic.py +62 -0
- sage/categories/cartesian_product.py +295 -0
- sage/categories/category.py +3401 -0
- sage/categories/category_cy_helper.cpython-313-x86_64-linux-musl.so +0 -0
- sage/categories/category_cy_helper.pxd +8 -0
- sage/categories/category_cy_helper.pyx +322 -0
- sage/categories/category_singleton.cpython-313-x86_64-linux-musl.so +0 -0
- sage/categories/category_singleton.pxd +3 -0
- sage/categories/category_singleton.pyx +342 -0
- sage/categories/category_types.py +637 -0
- sage/categories/category_with_axiom.py +2876 -0
- sage/categories/covariant_functorial_construction.py +703 -0
- sage/categories/facade_sets.py +228 -0
- sage/categories/functor.cpython-313-x86_64-linux-musl.so +0 -0
- sage/categories/functor.pxd +7 -0
- sage/categories/functor.pyx +691 -0
- sage/categories/homset.py +1338 -0
- sage/categories/homsets.py +364 -0
- sage/categories/isomorphic_objects.py +73 -0
- sage/categories/map.cpython-313-x86_64-linux-musl.so +0 -0
- sage/categories/map.pxd +34 -0
- sage/categories/map.pyx +2106 -0
- sage/categories/morphism.cpython-313-x86_64-linux-musl.so +0 -0
- sage/categories/morphism.pxd +14 -0
- sage/categories/morphism.pyx +895 -0
- sage/categories/objects.py +167 -0
- sage/categories/primer.py +1696 -0
- sage/categories/pushout.py +4834 -0
- sage/categories/quotients.py +64 -0
- sage/categories/realizations.py +200 -0
- sage/categories/sets_cat.py +3290 -0
- sage/categories/sets_with_partial_maps.py +52 -0
- sage/categories/subobjects.py +64 -0
- sage/categories/subquotients.py +21 -0
- sage/categories/with_realizations.py +311 -0
- sage/cpython/__init__.py +19 -0
- sage/cpython/_py2_random.py +619 -0
- sage/cpython/all.py +3 -0
- sage/cpython/atexit.cpython-313-x86_64-linux-musl.so +0 -0
- sage/cpython/atexit.pyx +269 -0
- sage/cpython/builtin_types.cpython-313-x86_64-linux-musl.so +0 -0
- sage/cpython/builtin_types.pyx +7 -0
- sage/cpython/cython_metaclass.cpython-313-x86_64-linux-musl.so +0 -0
- sage/cpython/cython_metaclass.h +117 -0
- sage/cpython/cython_metaclass.pxd +3 -0
- sage/cpython/cython_metaclass.pyx +130 -0
- sage/cpython/debug.cpython-313-x86_64-linux-musl.so +0 -0
- sage/cpython/debug.pyx +302 -0
- sage/cpython/dict_del_by_value.cpython-313-x86_64-linux-musl.so +0 -0
- sage/cpython/dict_del_by_value.pxd +9 -0
- sage/cpython/dict_del_by_value.pyx +191 -0
- sage/cpython/dict_internal.h +245 -0
- sage/cpython/getattr.cpython-313-x86_64-linux-musl.so +0 -0
- sage/cpython/getattr.pxd +9 -0
- sage/cpython/getattr.pyx +439 -0
- sage/cpython/pycore_long.h +97 -0
- sage/cpython/pycore_long.pxd +10 -0
- sage/cpython/python_debug.h +44 -0
- sage/cpython/python_debug.pxd +47 -0
- sage/cpython/pyx_visit.h +13 -0
- sage/cpython/string.cpython-313-x86_64-linux-musl.so +0 -0
- sage/cpython/string.pxd +76 -0
- sage/cpython/string.pyx +34 -0
- sage/cpython/string_impl.h +60 -0
- sage/cpython/type.cpython-313-x86_64-linux-musl.so +0 -0
- sage/cpython/type.pxd +2 -0
- sage/cpython/type.pyx +40 -0
- sage/cpython/wrapperdescr.pxd +67 -0
- sage/ext/all__sagemath_objects.py +3 -0
- sage/ext/ccobject.h +64 -0
- sage/ext/cplusplus.pxd +17 -0
- sage/ext/mod_int.h +30 -0
- sage/ext/mod_int.pxd +24 -0
- sage/ext/stdsage.pxd +39 -0
- sage/groups/all__sagemath_objects.py +1 -0
- sage/groups/group.cpython-313-x86_64-linux-musl.so +0 -0
- sage/groups/group.pxd +14 -0
- sage/groups/group.pyx +322 -0
- sage/groups/old.cpython-313-x86_64-linux-musl.so +0 -0
- sage/groups/old.pxd +14 -0
- sage/groups/old.pyx +219 -0
- sage/libs/all__sagemath_objects.py +3 -0
- sage/libs/gmp/__init__.py +1 -0
- sage/libs/gmp/all.pxd +6 -0
- sage/libs/gmp/binop.pxd +23 -0
- sage/libs/gmp/misc.pxd +8 -0
- sage/libs/gmp/mpf.pxd +88 -0
- sage/libs/gmp/mpn.pxd +57 -0
- sage/libs/gmp/mpq.pxd +57 -0
- sage/libs/gmp/mpz.pxd +202 -0
- sage/libs/gmp/pylong.cpython-313-x86_64-linux-musl.so +0 -0
- sage/libs/gmp/pylong.pxd +12 -0
- sage/libs/gmp/pylong.pyx +150 -0
- sage/libs/gmp/random.pxd +25 -0
- sage/libs/gmp/randomize.pxd +59 -0
- sage/libs/gmp/types.pxd +53 -0
- sage/libs/gmpxx.pxd +19 -0
- sage/misc/abstract_method.py +276 -0
- sage/misc/all__sagemath_objects.py +43 -0
- sage/misc/bindable_class.py +253 -0
- sage/misc/c3_controlled.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/c3_controlled.pxd +2 -0
- sage/misc/c3_controlled.pyx +1402 -0
- sage/misc/cachefunc.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/cachefunc.pxd +43 -0
- sage/misc/cachefunc.pyx +3781 -0
- sage/misc/call.py +188 -0
- sage/misc/classcall_metaclass.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/classcall_metaclass.pxd +14 -0
- sage/misc/classcall_metaclass.pyx +599 -0
- sage/misc/constant_function.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/constant_function.pyx +130 -0
- sage/misc/decorators.py +747 -0
- sage/misc/fast_methods.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/fast_methods.pxd +20 -0
- sage/misc/fast_methods.pyx +351 -0
- sage/misc/flatten.py +90 -0
- sage/misc/fpickle.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/fpickle.pyx +177 -0
- sage/misc/function_mangling.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/function_mangling.pxd +11 -0
- sage/misc/function_mangling.pyx +308 -0
- sage/misc/inherit_comparison.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/inherit_comparison.pxd +5 -0
- sage/misc/inherit_comparison.pyx +105 -0
- sage/misc/instancedoc.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/instancedoc.pyx +331 -0
- sage/misc/lazy_attribute.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/lazy_attribute.pyx +607 -0
- sage/misc/lazy_format.py +135 -0
- sage/misc/lazy_import.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/lazy_import.pyx +1299 -0
- sage/misc/lazy_import_cache.py +36 -0
- sage/misc/lazy_list.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/lazy_list.pxd +19 -0
- sage/misc/lazy_list.pyx +1187 -0
- sage/misc/lazy_string.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/lazy_string.pxd +7 -0
- sage/misc/lazy_string.pyx +546 -0
- sage/misc/misc.py +1066 -0
- sage/misc/misc_c.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/misc_c.pxd +3 -0
- sage/misc/misc_c.pyx +766 -0
- sage/misc/namespace_package.py +37 -0
- sage/misc/nested_class.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/nested_class.pxd +3 -0
- sage/misc/nested_class.pyx +394 -0
- sage/misc/persist.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/persist.pyx +1251 -0
- sage/misc/prandom.py +418 -0
- sage/misc/randstate.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/randstate.pxd +30 -0
- sage/misc/randstate.pyx +1059 -0
- sage/misc/repr.py +203 -0
- sage/misc/reset.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/reset.pyx +196 -0
- sage/misc/sage_ostools.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/sage_ostools.pyx +323 -0
- sage/misc/sage_timeit.py +275 -0
- sage/misc/sage_timeit_class.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/sage_timeit_class.pyx +120 -0
- sage/misc/sage_unittest.py +637 -0
- sage/misc/sageinspect.py +2768 -0
- sage/misc/session.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/session.pyx +392 -0
- sage/misc/superseded.py +557 -0
- sage/misc/test_nested_class.py +228 -0
- sage/misc/timing.py +264 -0
- sage/misc/unknown.py +222 -0
- sage/misc/verbose.py +253 -0
- sage/misc/weak_dict.cpython-313-x86_64-linux-musl.so +0 -0
- sage/misc/weak_dict.pxd +15 -0
- sage/misc/weak_dict.pyx +1231 -0
- sage/modules/all__sagemath_objects.py +1 -0
- sage/modules/module.cpython-313-x86_64-linux-musl.so +0 -0
- sage/modules/module.pxd +5 -0
- sage/modules/module.pyx +329 -0
- sage/rings/all__sagemath_objects.py +3 -0
- sage/rings/integer_fake.h +22 -0
- sage/rings/integer_fake.pxd +55 -0
- sage/sets/all__sagemath_objects.py +3 -0
- sage/sets/pythonclass.cpython-313-x86_64-linux-musl.so +0 -0
- sage/sets/pythonclass.pxd +9 -0
- sage/sets/pythonclass.pyx +247 -0
- sage/structure/__init__.py +4 -0
- sage/structure/all.py +30 -0
- sage/structure/category_object.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/category_object.pxd +28 -0
- sage/structure/category_object.pyx +1087 -0
- sage/structure/coerce.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/coerce.pxd +44 -0
- sage/structure/coerce.pyx +2107 -0
- sage/structure/coerce_actions.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/coerce_actions.pxd +27 -0
- sage/structure/coerce_actions.pyx +988 -0
- sage/structure/coerce_dict.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/coerce_dict.pxd +51 -0
- sage/structure/coerce_dict.pyx +1557 -0
- sage/structure/coerce_exceptions.py +23 -0
- sage/structure/coerce_maps.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/coerce_maps.pxd +28 -0
- sage/structure/coerce_maps.pyx +718 -0
- sage/structure/debug_options.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/debug_options.pxd +6 -0
- sage/structure/debug_options.pyx +54 -0
- sage/structure/dynamic_class.py +541 -0
- sage/structure/element.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/element.pxd +272 -0
- sage/structure/element.pyx +4772 -0
- sage/structure/element_wrapper.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/element_wrapper.pxd +12 -0
- sage/structure/element_wrapper.pyx +582 -0
- sage/structure/factorization.py +1422 -0
- sage/structure/factorization_integer.py +105 -0
- sage/structure/factory.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/factory.pyx +786 -0
- sage/structure/formal_sum.py +489 -0
- sage/structure/gens_py.py +73 -0
- sage/structure/global_options.py +1743 -0
- sage/structure/indexed_generators.py +863 -0
- sage/structure/list_clone.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/list_clone.pxd +65 -0
- sage/structure/list_clone.pyx +1867 -0
- sage/structure/list_clone_demo.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/list_clone_demo.pyx +248 -0
- sage/structure/list_clone_timings.py +179 -0
- sage/structure/list_clone_timings_cy.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/list_clone_timings_cy.pyx +86 -0
- sage/structure/mutability.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/mutability.pxd +21 -0
- sage/structure/mutability.pyx +348 -0
- sage/structure/nonexact.py +69 -0
- sage/structure/parent.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/parent.pxd +112 -0
- sage/structure/parent.pyx +3093 -0
- sage/structure/parent_base.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/parent_base.pxd +13 -0
- sage/structure/parent_base.pyx +44 -0
- sage/structure/parent_gens.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/parent_gens.pxd +22 -0
- sage/structure/parent_gens.pyx +377 -0
- sage/structure/parent_old.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/parent_old.pxd +25 -0
- sage/structure/parent_old.pyx +294 -0
- sage/structure/proof/__init__.py +1 -0
- sage/structure/proof/all.py +243 -0
- sage/structure/proof/proof.py +300 -0
- sage/structure/richcmp.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/richcmp.pxd +213 -0
- sage/structure/richcmp.pyx +495 -0
- sage/structure/sage_object.cpython-313-x86_64-linux-musl.so +0 -0
- sage/structure/sage_object.pxd +3 -0
- sage/structure/sage_object.pyx +988 -0
- sage/structure/sage_object_test.py +19 -0
- sage/structure/sequence.py +937 -0
- sage/structure/set_factories.py +1178 -0
- sage/structure/set_factories_example.py +527 -0
- sage/structure/support_view.py +179 -0
- sage/structure/test_factory.py +56 -0
- sage/structure/unique_representation.py +1359 -0
sage/misc/repr.py
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-objects
|
|
2
|
+
"""
|
|
3
|
+
Repr formatting support
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def coeff_repr(c, is_latex=False):
|
|
8
|
+
r"""
|
|
9
|
+
String representing coefficients in a linear combination.
|
|
10
|
+
|
|
11
|
+
INPUT:
|
|
12
|
+
|
|
13
|
+
- ``c`` -- a coefficient (i.e., an element of a ring)
|
|
14
|
+
|
|
15
|
+
OUTPUT: string
|
|
16
|
+
|
|
17
|
+
EXAMPLES::
|
|
18
|
+
|
|
19
|
+
sage: from sage.misc.repr import coeff_repr
|
|
20
|
+
sage: coeff_repr(QQ(1/2))
|
|
21
|
+
'1/2'
|
|
22
|
+
sage: coeff_repr(-x^2) # needs sage.symbolic
|
|
23
|
+
'(-x^2)'
|
|
24
|
+
sage: coeff_repr(QQ(1/2), is_latex=True)
|
|
25
|
+
'\\frac{1}{2}'
|
|
26
|
+
sage: coeff_repr(-x^2, is_latex=True) # needs sage.symbolic
|
|
27
|
+
'\\left(-x^{2}\\right)'
|
|
28
|
+
"""
|
|
29
|
+
if not is_latex:
|
|
30
|
+
try:
|
|
31
|
+
return c._coeff_repr()
|
|
32
|
+
except AttributeError:
|
|
33
|
+
pass
|
|
34
|
+
if isinstance(c, (int, float)):
|
|
35
|
+
return str(c)
|
|
36
|
+
if is_latex and hasattr(c, '_latex_'):
|
|
37
|
+
s = c._latex_()
|
|
38
|
+
else:
|
|
39
|
+
s = str(c).replace(' ', '')
|
|
40
|
+
if s.find("+") != -1 or s.find("-") != -1:
|
|
41
|
+
if is_latex:
|
|
42
|
+
return "\\left(%s\\right)" % s
|
|
43
|
+
else:
|
|
44
|
+
return "(%s)" % s
|
|
45
|
+
return s
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def repr_lincomb(terms, is_latex=False, scalar_mult='*', strip_one=False,
|
|
49
|
+
repr_monomial=None, latex_scalar_mult=None):
|
|
50
|
+
"""
|
|
51
|
+
Compute a string representation of a linear combination of some
|
|
52
|
+
formal symbols.
|
|
53
|
+
|
|
54
|
+
INPUT:
|
|
55
|
+
|
|
56
|
+
- ``terms`` -- list of terms, as pairs (support, coefficient)
|
|
57
|
+
- ``is_latex`` -- whether to produce latex (default: ``False``)
|
|
58
|
+
- ``scalar_mult`` -- string representing the multiplication (default: ``'*'``)
|
|
59
|
+
- ``latex_scalar_mult`` -- latex string representing the multiplication
|
|
60
|
+
(default: a space if ``scalar_mult`` is ``'*'``; otherwise ``scalar_mult``)
|
|
61
|
+
- ``coeffs`` -- for backward compatibility
|
|
62
|
+
|
|
63
|
+
EXAMPLES::
|
|
64
|
+
|
|
65
|
+
sage: repr_lincomb([('a',1), ('b',-2), ('c',3)])
|
|
66
|
+
'a - 2*b + 3*c'
|
|
67
|
+
sage: repr_lincomb([('a',0), ('b',-2), ('c',3)])
|
|
68
|
+
'-2*b + 3*c'
|
|
69
|
+
sage: repr_lincomb([('a',0), ('b',2), ('c',3)])
|
|
70
|
+
'2*b + 3*c'
|
|
71
|
+
sage: repr_lincomb([('a',1), ('b',0), ('c',3)])
|
|
72
|
+
'a + 3*c'
|
|
73
|
+
sage: repr_lincomb([('a',-1), ('b','2+3*x'), ('c',3)])
|
|
74
|
+
'-a + (2+3*x)*b + 3*c'
|
|
75
|
+
sage: repr_lincomb([('a', '1+x^2'), ('b', '2+3*x'), ('c', 3)])
|
|
76
|
+
'(1+x^2)*a + (2+3*x)*b + 3*c'
|
|
77
|
+
sage: repr_lincomb([('a', '1+x^2'), ('b', '-2+3*x'), ('c', 3)])
|
|
78
|
+
'(1+x^2)*a + (-2+3*x)*b + 3*c'
|
|
79
|
+
sage: repr_lincomb([('a', 1), ('b', -2), ('c', -3)])
|
|
80
|
+
'a - 2*b - 3*c'
|
|
81
|
+
sage: t = PolynomialRing(RationalField(),'t').gen()
|
|
82
|
+
sage: repr_lincomb([('a', -t), ('s', t - 2), ('', t^2 + 2)])
|
|
83
|
+
'-t*a + (t-2)*s + (t^2+2)'
|
|
84
|
+
|
|
85
|
+
Examples for ``scalar_mult``::
|
|
86
|
+
|
|
87
|
+
sage: repr_lincomb([('a',1), ('b',2), ('c',3)], scalar_mult='*')
|
|
88
|
+
'a + 2*b + 3*c'
|
|
89
|
+
sage: repr_lincomb([('a',2), ('b',0), ('c',-3)], scalar_mult='**')
|
|
90
|
+
'2**a - 3**c'
|
|
91
|
+
sage: repr_lincomb([('a',-1), ('b',2), ('c',3)], scalar_mult='**')
|
|
92
|
+
'-a + 2**b + 3**c'
|
|
93
|
+
|
|
94
|
+
Examples for ``scalar_mult`` and ``is_latex``::
|
|
95
|
+
|
|
96
|
+
sage: repr_lincomb([('a',-1), ('b',2), ('c',3)], is_latex=True)
|
|
97
|
+
'-a + 2 b + 3 c'
|
|
98
|
+
sage: repr_lincomb([('a',-1), ('b',-1), ('c',3)], is_latex=True, scalar_mult='*')
|
|
99
|
+
'-a - b + 3 c'
|
|
100
|
+
sage: repr_lincomb([('a',-1), ('b',2), ('c',-3)], is_latex=True, scalar_mult='**')
|
|
101
|
+
'-a + 2**b - 3**c'
|
|
102
|
+
sage: repr_lincomb([('a',-2), ('b',-1), ('c',-3)], is_latex=True, latex_scalar_mult='*')
|
|
103
|
+
'-2*a - b - 3*c'
|
|
104
|
+
sage: repr_lincomb([('a',-2), ('b',-1), ('c',-3)], is_latex=True, latex_scalar_mult='')
|
|
105
|
+
'-2a - b - 3c'
|
|
106
|
+
|
|
107
|
+
Examples for ``strip_one``::
|
|
108
|
+
|
|
109
|
+
sage: repr_lincomb([ ('a',1), (1,-2), ('3',3) ])
|
|
110
|
+
'a - 2*1 + 3*3'
|
|
111
|
+
sage: repr_lincomb([ ('a',-1), (1,1), ('3',3) ])
|
|
112
|
+
'-a + 1 + 3*3'
|
|
113
|
+
sage: repr_lincomb([ ('a',1), (1,-2), ('3',3) ], strip_one = True)
|
|
114
|
+
'a - 2 + 3*3'
|
|
115
|
+
sage: repr_lincomb([ ('a',-1), (1,1), ('3',3) ], strip_one = True)
|
|
116
|
+
'-a + 1 + 3*3'
|
|
117
|
+
sage: repr_lincomb([ ('a',1), (1,-1), ('3',3) ], strip_one = True)
|
|
118
|
+
'a - 1 + 3*3'
|
|
119
|
+
|
|
120
|
+
Examples for ``repr_monomial``::
|
|
121
|
+
|
|
122
|
+
sage: repr_lincomb([('a',1), ('b',2), ('c',3)], repr_monomial = lambda s: s+"1")
|
|
123
|
+
'a1 + 2*b1 + 3*c1'
|
|
124
|
+
|
|
125
|
+
TESTS:
|
|
126
|
+
|
|
127
|
+
Verify that :issue:`31672` is fixed::
|
|
128
|
+
|
|
129
|
+
sage: # needs sage.symbolic
|
|
130
|
+
sage: alpha = var("alpha")
|
|
131
|
+
sage: repr_lincomb([(x, alpha)], is_latex=True)
|
|
132
|
+
'\\alpha x'
|
|
133
|
+
sage: A.<psi> = PolynomialRing(QQ)
|
|
134
|
+
sage: B.<t> = FreeAlgebra(A) # needs sage.combinat sage.modules
|
|
135
|
+
sage: (psi * t)._latex_() # needs sage.combinat sage.modules
|
|
136
|
+
'\\psi t'
|
|
137
|
+
"""
|
|
138
|
+
# Setting scalar_mult: symbol used for scalar multiplication
|
|
139
|
+
if is_latex:
|
|
140
|
+
if latex_scalar_mult is not None:
|
|
141
|
+
scalar_mult = latex_scalar_mult
|
|
142
|
+
elif scalar_mult == "*":
|
|
143
|
+
scalar_mult = " "
|
|
144
|
+
|
|
145
|
+
if repr_monomial is None:
|
|
146
|
+
if is_latex:
|
|
147
|
+
|
|
148
|
+
def repr_monomial(monomial):
|
|
149
|
+
return monomial._latex_() if hasattr(monomial, '_latex_') else str(monomial)
|
|
150
|
+
else:
|
|
151
|
+
repr_monomial = str
|
|
152
|
+
|
|
153
|
+
s = ""
|
|
154
|
+
first = True
|
|
155
|
+
|
|
156
|
+
if scalar_mult is None:
|
|
157
|
+
scalar_mult = "" if is_latex else "*"
|
|
158
|
+
|
|
159
|
+
for (monomial, c) in terms:
|
|
160
|
+
if c != 0:
|
|
161
|
+
coeff = coeff_repr(c)
|
|
162
|
+
negative = False
|
|
163
|
+
if len(coeff) and coeff[0] == "-":
|
|
164
|
+
negative = True
|
|
165
|
+
try:
|
|
166
|
+
if c < 0:
|
|
167
|
+
negative = True
|
|
168
|
+
except (NotImplementedError, TypeError):
|
|
169
|
+
# comparisons may not be implemented for some coefficients
|
|
170
|
+
pass
|
|
171
|
+
if negative:
|
|
172
|
+
coeff = coeff_repr(-c, is_latex)
|
|
173
|
+
else:
|
|
174
|
+
coeff = coeff_repr(c, is_latex)
|
|
175
|
+
if coeff == "1":
|
|
176
|
+
coeff = ""
|
|
177
|
+
if coeff != "0":
|
|
178
|
+
if negative:
|
|
179
|
+
if first:
|
|
180
|
+
sign = "-" # add trailing space?
|
|
181
|
+
else:
|
|
182
|
+
sign = " - "
|
|
183
|
+
else:
|
|
184
|
+
if first:
|
|
185
|
+
sign = ""
|
|
186
|
+
else:
|
|
187
|
+
sign = " + "
|
|
188
|
+
b = repr_monomial(monomial)
|
|
189
|
+
if len(b):
|
|
190
|
+
if coeff != "":
|
|
191
|
+
if b == "1" and strip_one:
|
|
192
|
+
b = ""
|
|
193
|
+
else:
|
|
194
|
+
b = scalar_mult + b
|
|
195
|
+
s += "%s%s%s" % (sign, coeff, b)
|
|
196
|
+
first = False
|
|
197
|
+
if first:
|
|
198
|
+
return "0"
|
|
199
|
+
# this can happen only if are only terms with coeff_repr(c) == "0"
|
|
200
|
+
# elif s == "":
|
|
201
|
+
# return "1" # is empty string representation invalid?
|
|
202
|
+
else:
|
|
203
|
+
return s
|
|
Binary file
|
sage/misc/reset.pyx
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-objects
|
|
2
|
+
# cython: old_style_globals=True
|
|
3
|
+
"""
|
|
4
|
+
Interpreter reset
|
|
5
|
+
"""
|
|
6
|
+
import sys
|
|
7
|
+
|
|
8
|
+
# Exclude these from the reset command.
|
|
9
|
+
# DATA, base64 -- needed by the notebook
|
|
10
|
+
# Add exit and quit to EXCLUDE to resolve Issue #22529 and Issue #16704
|
|
11
|
+
EXCLUDE = set(['sage_mode', '__DIR__', 'DIR', 'DATA', 'base64', 'exit', 'quit'])
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def reset(vars=None, attached=False):
|
|
15
|
+
"""
|
|
16
|
+
Delete all user-defined variables, reset all global variables
|
|
17
|
+
back to their default states, and reset all interfaces to other
|
|
18
|
+
computer algebra systems.
|
|
19
|
+
|
|
20
|
+
If vars is specified, just restore the value of vars and leave
|
|
21
|
+
all other variables alone (i.e., call restore).
|
|
22
|
+
|
|
23
|
+
Note that the variables in the set :obj:`sage.misc.reset.EXCLUDE` are
|
|
24
|
+
excluded from being reset.
|
|
25
|
+
|
|
26
|
+
INPUT:
|
|
27
|
+
|
|
28
|
+
- ``vars`` -- list or space or comma separated string (default:
|
|
29
|
+
``None``); variables to restore
|
|
30
|
+
|
|
31
|
+
- ``attached`` -- boolean (default: ``False``); if ``vars`` is not ``None``,
|
|
32
|
+
whether to detach all attached files
|
|
33
|
+
|
|
34
|
+
EXAMPLES::
|
|
35
|
+
|
|
36
|
+
sage: x = 5
|
|
37
|
+
sage: reset()
|
|
38
|
+
sage: x # needs sage.symbolic
|
|
39
|
+
x
|
|
40
|
+
|
|
41
|
+
sage: fn = tmp_filename(ext='.py')
|
|
42
|
+
sage: sage.misc.reset.EXCLUDE.add('fn')
|
|
43
|
+
sage: with open(fn, 'w') as f:
|
|
44
|
+
....: _ = f.write('a = 111')
|
|
45
|
+
sage: attach(fn)
|
|
46
|
+
sage: af = attached_files(); len(af)
|
|
47
|
+
1
|
|
48
|
+
sage: af == [fn]
|
|
49
|
+
True
|
|
50
|
+
sage: reset()
|
|
51
|
+
sage: af = attached_files(); len(af)
|
|
52
|
+
1
|
|
53
|
+
sage: reset(attached=True)
|
|
54
|
+
sage: af = attached_files(); len(af)
|
|
55
|
+
0
|
|
56
|
+
sage: sage.misc.reset.EXCLUDE.remove('fn')
|
|
57
|
+
|
|
58
|
+
TESTS:
|
|
59
|
+
|
|
60
|
+
Confirm that assumptions do not survive a reset (:issue:`10855`)::
|
|
61
|
+
|
|
62
|
+
sage: # needs sage.symbolic
|
|
63
|
+
sage: assume(x > 3)
|
|
64
|
+
sage: assumptions()
|
|
65
|
+
[x > 3]
|
|
66
|
+
sage: bool(x > 3)
|
|
67
|
+
True
|
|
68
|
+
sage: reset()
|
|
69
|
+
sage: assumptions()
|
|
70
|
+
[]
|
|
71
|
+
sage: bool(x > 3)
|
|
72
|
+
False
|
|
73
|
+
"""
|
|
74
|
+
if vars is not None:
|
|
75
|
+
restore(vars)
|
|
76
|
+
return
|
|
77
|
+
G = globals() # this is the reason the code must be in Cython.
|
|
78
|
+
T = type(sys)
|
|
79
|
+
for k in list(G):
|
|
80
|
+
if k[0] != '_' and not isinstance(k, T) and k not in EXCLUDE:
|
|
81
|
+
try:
|
|
82
|
+
del G[k]
|
|
83
|
+
except KeyError:
|
|
84
|
+
pass
|
|
85
|
+
restore()
|
|
86
|
+
try:
|
|
87
|
+
from sage.symbolic.assumptions import forget
|
|
88
|
+
except ImportError:
|
|
89
|
+
pass
|
|
90
|
+
else:
|
|
91
|
+
forget()
|
|
92
|
+
reset_interfaces()
|
|
93
|
+
if attached:
|
|
94
|
+
import sage.repl.attach
|
|
95
|
+
sage.repl.attach.reset()
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def restore(vars=None):
|
|
99
|
+
"""
|
|
100
|
+
Restore predefined global variables to their default values.
|
|
101
|
+
|
|
102
|
+
INPUT:
|
|
103
|
+
|
|
104
|
+
- ``vars`` -- string or list (default: ``None``); if not ``None``, restores
|
|
105
|
+
just the given variables to the default value
|
|
106
|
+
|
|
107
|
+
EXAMPLES::
|
|
108
|
+
|
|
109
|
+
sage: x = 10; y = 15/3; QQ='red'
|
|
110
|
+
sage: QQ
|
|
111
|
+
'red'
|
|
112
|
+
sage: restore('QQ')
|
|
113
|
+
sage: QQ
|
|
114
|
+
Rational Field
|
|
115
|
+
sage: x
|
|
116
|
+
10
|
|
117
|
+
sage: y = var('y') # needs sage.symbolic
|
|
118
|
+
sage: restore('x y')
|
|
119
|
+
sage: x # needs sage.symbolic
|
|
120
|
+
x
|
|
121
|
+
sage: y
|
|
122
|
+
Traceback (most recent call last):
|
|
123
|
+
...
|
|
124
|
+
NameError: name 'y' is not defined
|
|
125
|
+
sage: x = 10; y = 15/3; QQ='red'
|
|
126
|
+
sage: ww = 15
|
|
127
|
+
sage: restore()
|
|
128
|
+
sage: x, QQ, ww # needs sage.symbolic
|
|
129
|
+
(x, Rational Field, 15)
|
|
130
|
+
sage: restore('ww')
|
|
131
|
+
sage: ww
|
|
132
|
+
Traceback (most recent call last):
|
|
133
|
+
...
|
|
134
|
+
NameError: name 'ww' is not defined
|
|
135
|
+
"""
|
|
136
|
+
G = globals() # this is the reason the code must be in Cython.
|
|
137
|
+
if 'sage_mode' not in G:
|
|
138
|
+
try:
|
|
139
|
+
import sage.all as toplevel
|
|
140
|
+
except ImportError:
|
|
141
|
+
try:
|
|
142
|
+
import sage.all__sagemath_polyhedra as toplevel
|
|
143
|
+
except ImportError:
|
|
144
|
+
try:
|
|
145
|
+
import sage.all__sagemath_symbolics as toplevel
|
|
146
|
+
except ImportError:
|
|
147
|
+
try:
|
|
148
|
+
import sage.all__sagemath_modules as toplevel
|
|
149
|
+
except ImportError:
|
|
150
|
+
try:
|
|
151
|
+
import sage.all__sagemath_categories as toplevel
|
|
152
|
+
except ImportError:
|
|
153
|
+
import sage.all__sagemath_objects as toplevel
|
|
154
|
+
else:
|
|
155
|
+
mode = G['sage_mode']
|
|
156
|
+
if mode == 'cmdline':
|
|
157
|
+
import sage.all_cmdline as toplevel
|
|
158
|
+
else:
|
|
159
|
+
import sage.all as toplevel
|
|
160
|
+
D = toplevel.__dict__
|
|
161
|
+
_restore(G, D, vars)
|
|
162
|
+
try:
|
|
163
|
+
import sage.calculus.calculus
|
|
164
|
+
except ImportError:
|
|
165
|
+
pass
|
|
166
|
+
else:
|
|
167
|
+
_restore(sage.calculus.calculus.syms_cur, sage.calculus.calculus.syms_default, vars)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def _restore(G, D, vars):
|
|
171
|
+
if vars is None:
|
|
172
|
+
for k, v in D.iteritems():
|
|
173
|
+
G[k] = v
|
|
174
|
+
else:
|
|
175
|
+
if isinstance(vars, str):
|
|
176
|
+
if ',' in vars:
|
|
177
|
+
vars = vars.split(',')
|
|
178
|
+
else:
|
|
179
|
+
vars = vars.split()
|
|
180
|
+
for k in vars:
|
|
181
|
+
if k in D:
|
|
182
|
+
G[k] = D[k]
|
|
183
|
+
else:
|
|
184
|
+
try:
|
|
185
|
+
del G[k] # the default value was "unset"
|
|
186
|
+
except KeyError:
|
|
187
|
+
pass
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
def reset_interfaces():
|
|
191
|
+
try:
|
|
192
|
+
from sage.interfaces.quit import expect_quitall
|
|
193
|
+
except ImportError:
|
|
194
|
+
pass
|
|
195
|
+
else:
|
|
196
|
+
expect_quitall()
|
|
Binary file
|