passagemath-objects 10.6.41__cp312-cp312-win_amd64.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.
Files changed (281) hide show
  1. passagemath_objects/__init__.py +3 -0
  2. passagemath_objects-10.6.41.dist-info/DELVEWHEEL +2 -0
  3. passagemath_objects-10.6.41.dist-info/METADATA +115 -0
  4. passagemath_objects-10.6.41.dist-info/RECORD +281 -0
  5. passagemath_objects-10.6.41.dist-info/WHEEL +5 -0
  6. passagemath_objects-10.6.41.dist-info/top_level.txt +3 -0
  7. passagemath_objects.libs/libgmp-10-79b4110c7ea2b760f16cfef97e8a8a34.dll +0 -0
  8. sage/all__sagemath_objects.py +46 -0
  9. sage/arith/all__sagemath_objects.py +5 -0
  10. sage/arith/long.pxd +411 -0
  11. sage/arith/numerical_approx.cp312-win_amd64.pyd +0 -0
  12. sage/arith/numerical_approx.pxd +35 -0
  13. sage/arith/numerical_approx.pyx +75 -0
  14. sage/arith/power.cp312-win_amd64.pyd +0 -0
  15. sage/arith/power.pxd +31 -0
  16. sage/arith/power.pyx +127 -0
  17. sage/categories/action.cp312-win_amd64.pyd +0 -0
  18. sage/categories/action.pxd +29 -0
  19. sage/categories/action.pyx +641 -0
  20. sage/categories/algebra_functor.py +745 -0
  21. sage/categories/all__sagemath_objects.py +33 -0
  22. sage/categories/basic.py +71 -0
  23. sage/categories/cartesian_product.py +295 -0
  24. sage/categories/category.py +3401 -0
  25. sage/categories/category_cy_helper.cp312-win_amd64.pyd +0 -0
  26. sage/categories/category_cy_helper.pxd +8 -0
  27. sage/categories/category_cy_helper.pyx +322 -0
  28. sage/categories/category_singleton.cp312-win_amd64.pyd +0 -0
  29. sage/categories/category_singleton.pxd +3 -0
  30. sage/categories/category_singleton.pyx +342 -0
  31. sage/categories/category_types.py +637 -0
  32. sage/categories/category_with_axiom.py +2885 -0
  33. sage/categories/covariant_functorial_construction.py +703 -0
  34. sage/categories/facade_sets.py +228 -0
  35. sage/categories/functor.cp312-win_amd64.pyd +0 -0
  36. sage/categories/functor.pxd +7 -0
  37. sage/categories/functor.pyx +691 -0
  38. sage/categories/homset.py +1338 -0
  39. sage/categories/homsets.py +364 -0
  40. sage/categories/isomorphic_objects.py +73 -0
  41. sage/categories/map.cp312-win_amd64.pyd +0 -0
  42. sage/categories/map.pxd +34 -0
  43. sage/categories/map.pyx +2112 -0
  44. sage/categories/morphism.cp312-win_amd64.pyd +0 -0
  45. sage/categories/morphism.pxd +14 -0
  46. sage/categories/morphism.pyx +895 -0
  47. sage/categories/objects.py +167 -0
  48. sage/categories/primer.py +1696 -0
  49. sage/categories/pushout.py +4834 -0
  50. sage/categories/quotients.py +64 -0
  51. sage/categories/realizations.py +200 -0
  52. sage/categories/sets_cat.py +3228 -0
  53. sage/categories/sets_with_partial_maps.py +52 -0
  54. sage/categories/subobjects.py +64 -0
  55. sage/categories/subquotients.py +21 -0
  56. sage/categories/with_realizations.py +311 -0
  57. sage/cpython/__init__.py +28 -0
  58. sage/cpython/_py2_random.py +619 -0
  59. sage/cpython/all.py +3 -0
  60. sage/cpython/atexit.cp312-win_amd64.pyd +0 -0
  61. sage/cpython/atexit.pyx +269 -0
  62. sage/cpython/builtin_types.cp312-win_amd64.pyd +0 -0
  63. sage/cpython/builtin_types.pyx +7 -0
  64. sage/cpython/cython_metaclass.cp312-win_amd64.pyd +0 -0
  65. sage/cpython/cython_metaclass.h +117 -0
  66. sage/cpython/cython_metaclass.pxd +3 -0
  67. sage/cpython/cython_metaclass.pyx +130 -0
  68. sage/cpython/debug.cp312-win_amd64.pyd +0 -0
  69. sage/cpython/debug.pyx +302 -0
  70. sage/cpython/dict_del_by_value.cp312-win_amd64.pyd +0 -0
  71. sage/cpython/dict_del_by_value.pxd +9 -0
  72. sage/cpython/dict_del_by_value.pyx +191 -0
  73. sage/cpython/dict_internal.h +245 -0
  74. sage/cpython/getattr.cp312-win_amd64.pyd +0 -0
  75. sage/cpython/getattr.pxd +9 -0
  76. sage/cpython/getattr.pyx +439 -0
  77. sage/cpython/pycore_long.h +97 -0
  78. sage/cpython/pycore_long.pxd +10 -0
  79. sage/cpython/python_debug.h +44 -0
  80. sage/cpython/python_debug.pxd +47 -0
  81. sage/cpython/pyx_visit.h +13 -0
  82. sage/cpython/string.cp312-win_amd64.pyd +0 -0
  83. sage/cpython/string.pxd +76 -0
  84. sage/cpython/string.pyx +34 -0
  85. sage/cpython/string_impl.h +60 -0
  86. sage/cpython/type.cp312-win_amd64.pyd +0 -0
  87. sage/cpython/type.pxd +2 -0
  88. sage/cpython/type.pyx +40 -0
  89. sage/cpython/wrapperdescr.pxd +67 -0
  90. sage/ext/all__sagemath_objects.py +3 -0
  91. sage/ext/ccobject.h +64 -0
  92. sage/ext/cplusplus.pxd +17 -0
  93. sage/ext/mod_int.h +30 -0
  94. sage/ext/mod_int.pxd +24 -0
  95. sage/ext/stdsage.pxd +39 -0
  96. sage/groups/all__sagemath_objects.py +1 -0
  97. sage/groups/group.cp312-win_amd64.pyd +0 -0
  98. sage/groups/group.pxd +14 -0
  99. sage/groups/group.pyx +322 -0
  100. sage/groups/old.cp312-win_amd64.pyd +0 -0
  101. sage/groups/old.pxd +14 -0
  102. sage/groups/old.pyx +219 -0
  103. sage/libs/all__sagemath_objects.py +3 -0
  104. sage/libs/gmp/__init__.py +1 -0
  105. sage/libs/gmp/all.pxd +6 -0
  106. sage/libs/gmp/binop.pxd +23 -0
  107. sage/libs/gmp/misc.pxd +8 -0
  108. sage/libs/gmp/mpf.pxd +88 -0
  109. sage/libs/gmp/mpn.pxd +57 -0
  110. sage/libs/gmp/mpq.pxd +57 -0
  111. sage/libs/gmp/mpz.pxd +202 -0
  112. sage/libs/gmp/pylong.cp312-win_amd64.pyd +0 -0
  113. sage/libs/gmp/pylong.pxd +12 -0
  114. sage/libs/gmp/pylong.pyx +150 -0
  115. sage/libs/gmp/random.pxd +25 -0
  116. sage/libs/gmp/randomize.pxd +59 -0
  117. sage/libs/gmp/types.pxd +53 -0
  118. sage/libs/gmpxx.pxd +19 -0
  119. sage/misc/abstract_method.py +276 -0
  120. sage/misc/all__sagemath_objects.py +43 -0
  121. sage/misc/bindable_class.py +253 -0
  122. sage/misc/c3_controlled.cp312-win_amd64.pyd +0 -0
  123. sage/misc/c3_controlled.pxd +2 -0
  124. sage/misc/c3_controlled.pyx +1402 -0
  125. sage/misc/cachefunc.cp312-win_amd64.pyd +0 -0
  126. sage/misc/cachefunc.pxd +43 -0
  127. sage/misc/cachefunc.pyx +3781 -0
  128. sage/misc/call.py +188 -0
  129. sage/misc/classcall_metaclass.cp312-win_amd64.pyd +0 -0
  130. sage/misc/classcall_metaclass.pxd +14 -0
  131. sage/misc/classcall_metaclass.pyx +599 -0
  132. sage/misc/constant_function.cp312-win_amd64.pyd +0 -0
  133. sage/misc/constant_function.pyx +130 -0
  134. sage/misc/decorators.py +747 -0
  135. sage/misc/fast_methods.cp312-win_amd64.pyd +0 -0
  136. sage/misc/fast_methods.pxd +20 -0
  137. sage/misc/fast_methods.pyx +351 -0
  138. sage/misc/flatten.py +90 -0
  139. sage/misc/fpickle.cp312-win_amd64.pyd +0 -0
  140. sage/misc/fpickle.pyx +177 -0
  141. sage/misc/function_mangling.cp312-win_amd64.pyd +0 -0
  142. sage/misc/function_mangling.pxd +11 -0
  143. sage/misc/function_mangling.pyx +308 -0
  144. sage/misc/inherit_comparison.cp312-win_amd64.pyd +0 -0
  145. sage/misc/inherit_comparison.pxd +5 -0
  146. sage/misc/inherit_comparison.pyx +105 -0
  147. sage/misc/instancedoc.cp312-win_amd64.pyd +0 -0
  148. sage/misc/instancedoc.pyx +331 -0
  149. sage/misc/lazy_attribute.cp312-win_amd64.pyd +0 -0
  150. sage/misc/lazy_attribute.pyx +607 -0
  151. sage/misc/lazy_format.py +135 -0
  152. sage/misc/lazy_import.cp312-win_amd64.pyd +0 -0
  153. sage/misc/lazy_import.pyx +1299 -0
  154. sage/misc/lazy_import_cache.py +36 -0
  155. sage/misc/lazy_list.cp312-win_amd64.pyd +0 -0
  156. sage/misc/lazy_list.pxd +19 -0
  157. sage/misc/lazy_list.pyx +1187 -0
  158. sage/misc/lazy_string.cp312-win_amd64.pyd +0 -0
  159. sage/misc/lazy_string.pxd +7 -0
  160. sage/misc/lazy_string.pyx +546 -0
  161. sage/misc/misc.py +1066 -0
  162. sage/misc/misc_c.cp312-win_amd64.pyd +0 -0
  163. sage/misc/misc_c.pxd +3 -0
  164. sage/misc/misc_c.pyx +766 -0
  165. sage/misc/namespace_package.py +37 -0
  166. sage/misc/nested_class.cp312-win_amd64.pyd +0 -0
  167. sage/misc/nested_class.pxd +3 -0
  168. sage/misc/nested_class.pyx +394 -0
  169. sage/misc/persist.cp312-win_amd64.pyd +0 -0
  170. sage/misc/persist.pyx +1251 -0
  171. sage/misc/prandom.py +418 -0
  172. sage/misc/randstate.cp312-win_amd64.pyd +0 -0
  173. sage/misc/randstate.pxd +30 -0
  174. sage/misc/randstate.pyx +1059 -0
  175. sage/misc/repr.py +203 -0
  176. sage/misc/reset.cp312-win_amd64.pyd +0 -0
  177. sage/misc/reset.pyx +196 -0
  178. sage/misc/sage_ostools.cp312-win_amd64.pyd +0 -0
  179. sage/misc/sage_ostools.pyx +323 -0
  180. sage/misc/sage_timeit.py +276 -0
  181. sage/misc/sage_timeit_class.cp312-win_amd64.pyd +0 -0
  182. sage/misc/sage_timeit_class.pyx +120 -0
  183. sage/misc/sage_unittest.py +637 -0
  184. sage/misc/sageinspect.py +2768 -0
  185. sage/misc/session.cp312-win_amd64.pyd +0 -0
  186. sage/misc/session.pyx +392 -0
  187. sage/misc/superseded.py +557 -0
  188. sage/misc/test_nested_class.py +228 -0
  189. sage/misc/timing.py +264 -0
  190. sage/misc/unknown.py +222 -0
  191. sage/misc/verbose.py +253 -0
  192. sage/misc/weak_dict.cp312-win_amd64.pyd +0 -0
  193. sage/misc/weak_dict.pxd +15 -0
  194. sage/misc/weak_dict.pyx +1231 -0
  195. sage/modules/all__sagemath_objects.py +1 -0
  196. sage/modules/module.cp312-win_amd64.pyd +0 -0
  197. sage/modules/module.pxd +5 -0
  198. sage/modules/module.pyx +329 -0
  199. sage/rings/all__sagemath_objects.py +3 -0
  200. sage/rings/integer_fake.h +22 -0
  201. sage/rings/integer_fake.pxd +55 -0
  202. sage/sets/all__sagemath_objects.py +3 -0
  203. sage/sets/pythonclass.cp312-win_amd64.pyd +0 -0
  204. sage/sets/pythonclass.pxd +9 -0
  205. sage/sets/pythonclass.pyx +247 -0
  206. sage/structure/__init__.py +13 -0
  207. sage/structure/all.py +30 -0
  208. sage/structure/category_object.cp312-win_amd64.pyd +0 -0
  209. sage/structure/category_object.pxd +28 -0
  210. sage/structure/category_object.pyx +1087 -0
  211. sage/structure/coerce.cp312-win_amd64.pyd +0 -0
  212. sage/structure/coerce.pxd +44 -0
  213. sage/structure/coerce.pyx +2107 -0
  214. sage/structure/coerce_actions.cp312-win_amd64.pyd +0 -0
  215. sage/structure/coerce_actions.pxd +27 -0
  216. sage/structure/coerce_actions.pyx +988 -0
  217. sage/structure/coerce_dict.cp312-win_amd64.pyd +0 -0
  218. sage/structure/coerce_dict.pxd +51 -0
  219. sage/structure/coerce_dict.pyx +1557 -0
  220. sage/structure/coerce_exceptions.py +23 -0
  221. sage/structure/coerce_maps.cp312-win_amd64.pyd +0 -0
  222. sage/structure/coerce_maps.pxd +28 -0
  223. sage/structure/coerce_maps.pyx +718 -0
  224. sage/structure/debug_options.cp312-win_amd64.pyd +0 -0
  225. sage/structure/debug_options.pxd +6 -0
  226. sage/structure/debug_options.pyx +54 -0
  227. sage/structure/dynamic_class.py +541 -0
  228. sage/structure/element.cp312-win_amd64.pyd +0 -0
  229. sage/structure/element.pxd +272 -0
  230. sage/structure/element.pyx +4772 -0
  231. sage/structure/element_wrapper.cp312-win_amd64.pyd +0 -0
  232. sage/structure/element_wrapper.pxd +12 -0
  233. sage/structure/element_wrapper.pyx +582 -0
  234. sage/structure/factorization.py +1422 -0
  235. sage/structure/factorization_integer.py +105 -0
  236. sage/structure/factory.cp312-win_amd64.pyd +0 -0
  237. sage/structure/factory.pyx +786 -0
  238. sage/structure/formal_sum.py +489 -0
  239. sage/structure/gens_py.py +73 -0
  240. sage/structure/global_options.py +1743 -0
  241. sage/structure/indexed_generators.py +863 -0
  242. sage/structure/list_clone.cp312-win_amd64.pyd +0 -0
  243. sage/structure/list_clone.pxd +65 -0
  244. sage/structure/list_clone.pyx +1867 -0
  245. sage/structure/list_clone_demo.cp312-win_amd64.pyd +0 -0
  246. sage/structure/list_clone_demo.pyx +248 -0
  247. sage/structure/list_clone_timings.py +179 -0
  248. sage/structure/list_clone_timings_cy.cp312-win_amd64.pyd +0 -0
  249. sage/structure/list_clone_timings_cy.pyx +86 -0
  250. sage/structure/mutability.cp312-win_amd64.pyd +0 -0
  251. sage/structure/mutability.pxd +21 -0
  252. sage/structure/mutability.pyx +348 -0
  253. sage/structure/nonexact.py +69 -0
  254. sage/structure/parent.cp312-win_amd64.pyd +0 -0
  255. sage/structure/parent.pxd +112 -0
  256. sage/structure/parent.pyx +3093 -0
  257. sage/structure/parent_base.cp312-win_amd64.pyd +0 -0
  258. sage/structure/parent_base.pxd +13 -0
  259. sage/structure/parent_base.pyx +44 -0
  260. sage/structure/parent_gens.cp312-win_amd64.pyd +0 -0
  261. sage/structure/parent_gens.pxd +22 -0
  262. sage/structure/parent_gens.pyx +377 -0
  263. sage/structure/parent_old.cp312-win_amd64.pyd +0 -0
  264. sage/structure/parent_old.pxd +25 -0
  265. sage/structure/parent_old.pyx +294 -0
  266. sage/structure/proof/__init__.py +1 -0
  267. sage/structure/proof/all.py +243 -0
  268. sage/structure/proof/proof.py +300 -0
  269. sage/structure/richcmp.cp312-win_amd64.pyd +0 -0
  270. sage/structure/richcmp.pxd +213 -0
  271. sage/structure/richcmp.pyx +495 -0
  272. sage/structure/sage_object.cp312-win_amd64.pyd +0 -0
  273. sage/structure/sage_object.pxd +3 -0
  274. sage/structure/sage_object.pyx +988 -0
  275. sage/structure/sage_object_test.py +19 -0
  276. sage/structure/sequence.py +937 -0
  277. sage/structure/set_factories.py +1178 -0
  278. sage/structure/set_factories_example.py +527 -0
  279. sage/structure/support_view.py +179 -0
  280. sage/structure/test_factory.py +56 -0
  281. sage/structure/unique_representation.py +1359 -0
sage/misc/verbose.py ADDED
@@ -0,0 +1,253 @@
1
+ # sage_setup: distribution = sagemath-objects
2
+ r"""
3
+ Verbosity System and Logging in SageMath
4
+
5
+ Howto: Logging
6
+ ==============
7
+
8
+ Using Python's Logging Module
9
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
10
+
11
+ Import it::
12
+
13
+ sage: import logging
14
+ sage: logging.basicConfig() # only needed once
15
+
16
+ Setting the level::
17
+
18
+ sage: logging.getLogger().setLevel(logging.INFO)
19
+
20
+ Log something::
21
+
22
+ sage: logger = logging.getLogger(__name__)
23
+ sage: logger.info('Hello. I am talking to you.')
24
+ INFO:__main__:Hello. I am talking to you.
25
+
26
+ If we haven't set the logging level to ``logging.INFO``, then the previous
27
+ wouldn't have been shown.
28
+ ::
29
+
30
+ sage: logger.debug('Hello. I am really talking a lot.')
31
+
32
+ The latter is not shown as the current logging level is only
33
+ ``logging.INFO`` and not ``logging.DEBUG``.
34
+
35
+ Reset the level::
36
+
37
+ sage: logging.getLogger().setLevel(logging.WARNING)
38
+
39
+ Warnings are still shown at this default level (``logging.WARNING``)::
40
+
41
+ sage: logger.warning('Hello. I am warning you.')
42
+ WARNING:__main__:Hello. I am warning you.
43
+
44
+ And that's all.
45
+
46
+ There are a lot more features, see
47
+ :python:`Logging facility for Python<library/logging.html>`.
48
+
49
+
50
+ Using SageMath's Verbosity System
51
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
52
+
53
+ Alternatively, this module provides
54
+ :func:`verbose`, :func:`set_verbose`, :func:`get_verbose` which can
55
+ be used as follows::
56
+
57
+ sage: from sage.misc.verbose import verbose, set_verbose, get_verbose
58
+ sage: set_verbose(1)
59
+ sage: t = verbose("This is SageMath.", level=0)
60
+ verbose 0 (<module>) This is SageMath.
61
+ sage: t = verbose("This is SageMath.", level=1)
62
+ verbose 1 (<module>) This is SageMath.
63
+ sage: t = verbose("This is SageMath.", level=2)
64
+
65
+
66
+ Logging Levels of SageMath and Python
67
+ =====================================
68
+
69
+ .. csv-table::
70
+ :class: contentstable
71
+ :widths: 20, 20
72
+ :delim: |
73
+
74
+ SageMath | Python
75
+ `-2` | ``logging.CRITICAL``
76
+ `-1` | ``logging.ERROR``
77
+ `0` | ``logging.WARNING``
78
+ `1` | ``logging.INFO``
79
+ `2` | ``logging.DEBUG``
80
+
81
+
82
+ Various
83
+ =======
84
+
85
+ AUTHORS:
86
+
87
+ - Daniel Krenn (2016)
88
+
89
+
90
+ Functions
91
+ =========
92
+ """
93
+ # *****************************************************************************
94
+ # Copyright (C) 2006, 2007 William Stein <wstein@gmail.com>
95
+ # Copyright (C) 2006 Gonzalo Tornaria
96
+ # Copyright (C) 2008 John H. Palmieri
97
+ # Copyright (C) 2009 Mike Hansen
98
+ # Copyright (C) 2016 Daniel Krenn <dev@danielkrenn.at>
99
+ # Copyright (C) 2018 Frédéric Chapoton
100
+ #
101
+ # This program is free software: you can redistribute it and/or modify
102
+ # it under the terms of the GNU General Public License as published by
103
+ # the Free Software Foundation, either version 3 of the License, or
104
+ # (at your option) any later version.
105
+ # https://www.gnu.org/licenses/
106
+ # *****************************************************************************
107
+
108
+ import sys
109
+ import os
110
+
111
+ LEVEL = 0 # default
112
+
113
+ verbose_files = []
114
+
115
+
116
+ def verbose(mesg='', t=0, level=1, caller_name=None):
117
+ """
118
+ Print a message if the current verbosity is at least level.
119
+
120
+ INPUT:
121
+
122
+ - ``mesg`` -- string; a message to print
123
+
124
+ - ``t`` -- integer (optional); if included, will also print ``cputime(t)``,
125
+ which is the time since time ``t``. Thus ``t`` should have been obtained
126
+ with ``t=cputime()``
127
+
128
+ - ``level`` -- integer (default: 1); the verbosity level of
129
+ what we are printing
130
+
131
+ - ``caller_name`` -- string (default: ``None``); the name
132
+ of the calling function. In most cases Python can deduce this, so
133
+ it need not be provided.
134
+
135
+ OUTPUT: possibly prints a message to stdout; also returns ``cputime()``
136
+
137
+ EXAMPLES::
138
+
139
+ sage: set_verbose(1)
140
+ sage: t = cputime()
141
+ sage: t = verbose("This is Sage.", t, level=1, caller_name="william") # not tested
142
+ VERBOSE1 (william): This is Sage. (time = 0.0)
143
+ sage: set_verbose(0)
144
+ """
145
+ from sage.misc.timing import cputime
146
+ if level > LEVEL:
147
+ return cputime()
148
+
149
+ frame = sys._getframe(1).f_code
150
+ file_name = frame.co_filename
151
+ lineno = frame.co_firstlineno
152
+ if 'all' in verbose_files or level <= 0:
153
+ show = True
154
+ else:
155
+ show = False
156
+ for X in verbose_files:
157
+ if file_name.find(X) != -1:
158
+ show = True
159
+ break
160
+
161
+ if not show:
162
+ return cputime()
163
+
164
+ if t != 0 and mesg == "":
165
+ mesg = "Finished."
166
+
167
+ # see recipe 14.7 in Python Cookbook
168
+ if caller_name is None:
169
+ caller_name = frame.co_name
170
+ if caller_name == "?: ":
171
+ caller_name = ""
172
+ short_file_name = os.path.split(frame.co_filename)[1]
173
+ if '<' in short_file_name and '>' in short_file_name:
174
+ s = "verbose %s (%s) %s" % (level, caller_name, mesg)
175
+ else:
176
+ s = "verbose %s (%s: %s, %s) %s" % (level, lineno,
177
+ short_file_name, caller_name, mesg)
178
+ if t != 0:
179
+ s = s + " (time = %s)" % cputime(t)
180
+ print(s)
181
+ sys.stdout.flush()
182
+ return cputime()
183
+
184
+
185
+ def set_verbose(level, files='all'):
186
+ """
187
+ Set the global Sage verbosity level.
188
+
189
+ INPUT:
190
+
191
+ - ``level`` -- integer between 0 and 2, inclusive
192
+
193
+ - ``files`` -- (default: ``'all'``) list of files to make verbose, or
194
+ 'all' to make ALL files verbose (the default)
195
+
196
+ OUTPUT: changes the state of the verbosity flag and possibly
197
+ appends to the list of files that are verbose
198
+
199
+ EXAMPLES::
200
+
201
+ sage: set_verbose(2)
202
+ sage: verbose("This is Sage.", level=1) # not tested
203
+ VERBOSE1 (?): This is Sage.
204
+ sage: verbose("This is Sage.", level=2) # not tested
205
+ VERBOSE2 (?): This is Sage.
206
+ sage: verbose("This is Sage.", level=3) # not tested
207
+ [no output]
208
+ sage: set_verbose(0)
209
+ """
210
+ if level is None:
211
+ level = -1
212
+ if isinstance(level, str):
213
+ set_verbose_files([level])
214
+ global LEVEL
215
+ LEVEL = level
216
+ if isinstance(files, str):
217
+ files = [files]
218
+ set_verbose_files(files)
219
+
220
+
221
+ def set_verbose_files(file_name):
222
+ if not isinstance(file_name, list):
223
+ file_name = [file_name]
224
+ global verbose_files
225
+ verbose_files = file_name
226
+
227
+
228
+ def get_verbose_files():
229
+ return verbose_files
230
+
231
+
232
+ def unset_verbose_files(file_name):
233
+ if not isinstance(file_name, list):
234
+ file_name = [file_name]
235
+ for X in file_name:
236
+ verbose_files.remove(X)
237
+
238
+
239
+ def get_verbose():
240
+ """
241
+ Return the global Sage verbosity level.
242
+
243
+ EXAMPLES::
244
+
245
+ sage: get_verbose()
246
+ 0
247
+ sage: set_verbose(2)
248
+ sage: get_verbose()
249
+ 2
250
+ sage: set_verbose(0)
251
+ """
252
+ global LEVEL
253
+ return LEVEL
Binary file
@@ -0,0 +1,15 @@
1
+ # sage_setup: distribution = sagemath-objects
2
+ cdef class WeakValueDictionary(dict):
3
+ cdef __weakref__
4
+ cdef callback
5
+ cdef int _guard_level
6
+ cdef list _pending_removals
7
+
8
+ cdef int _set_item(self, key, value) except -1
9
+ cdef int _enter_iter(self) except -1
10
+ cdef int _exit_iter(self) except -1
11
+
12
+
13
+ cdef class CachedWeakValueDictionary(WeakValueDictionary):
14
+ cdef tuple cache
15
+ cdef Py_ssize_t cache_index