Kano001 commited on
Commit
bcbf5e5
1 Parent(s): 98211e9

Upload 9 files

Browse files
.gitattributes CHANGED
@@ -74,3 +74,4 @@ MLPY/Library/bin/mkl_vml_mc2.1.dll filter=lfs diff=lfs merge=lfs -text
74
  MLPY/Library/bin/mkl_vml_mc3.1.dll filter=lfs diff=lfs merge=lfs -text
75
  MLPY/Library/bin/omptarget.rtl.level0.dll filter=lfs diff=lfs merge=lfs -text
76
  MLPY/Library/bin/omptarget.rtl.opencl.dll filter=lfs diff=lfs merge=lfs -text
 
 
74
  MLPY/Library/bin/mkl_vml_mc3.1.dll filter=lfs diff=lfs merge=lfs -text
75
  MLPY/Library/bin/omptarget.rtl.level0.dll filter=lfs diff=lfs merge=lfs -text
76
  MLPY/Library/bin/omptarget.rtl.opencl.dll filter=lfs diff=lfs merge=lfs -text
77
+ MLPY/Lib/site-packages/PyWin32.chm filter=lfs diff=lfs merge=lfs -text
MLPY/Lib/site-packages/PyWin32.chm ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:772b99cf23c71c56993fba2db86469d399d7dad43d182e0a59a25dc1c0713b0c
3
+ size 2648456
MLPY/Lib/site-packages/distutils-precedence.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7ea7ffef3fe2a117ee12c68ed6553617f0d7fd2f0590257c25c484959a3b7373
3
+ size 152
MLPY/Lib/site-packages/isympy.py ADDED
@@ -0,0 +1,342 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Python shell for SymPy.
3
+
4
+ This is just a normal Python shell (IPython shell if you have the
5
+ IPython package installed), that executes the following commands for
6
+ the user:
7
+
8
+ >>> from __future__ import division
9
+ >>> from sympy import *
10
+ >>> x, y, z, t = symbols('x y z t')
11
+ >>> k, m, n = symbols('k m n', integer=True)
12
+ >>> f, g, h = symbols('f g h', cls=Function)
13
+ >>> init_printing()
14
+
15
+ So starting 'isympy' is equivalent to starting Python (or IPython) and
16
+ executing the above commands by hand. It is intended for easy and quick
17
+ experimentation with SymPy. isympy is a good way to use SymPy as an
18
+ interactive calculator. If you have IPython and Matplotlib installed, then
19
+ interactive plotting is enabled by default.
20
+
21
+ COMMAND LINE OPTIONS
22
+ --------------------
23
+
24
+ -c CONSOLE, --console=CONSOLE
25
+
26
+ Use the specified shell (Python or IPython) shell as the console
27
+ backend instead of the default one (IPython if present, Python
28
+ otherwise), e.g.:
29
+
30
+ $isympy -c python
31
+
32
+ CONSOLE must be one of 'ipython' or 'python'
33
+
34
+ -p PRETTY, --pretty PRETTY
35
+
36
+ Setup pretty-printing in SymPy. When pretty-printing is enabled,
37
+ expressions can be printed with Unicode or ASCII. The default is
38
+ to use pretty-printing (with Unicode if the terminal supports it).
39
+ When this option is 'no', expressions will not be pretty-printed
40
+ and ASCII will be used:
41
+
42
+ $isympy -p no
43
+
44
+ PRETTY must be one of 'unicode', 'ascii', or 'no'
45
+
46
+ -t TYPES, --types=TYPES
47
+
48
+ Setup the ground types for the polys. By default, gmpy ground types
49
+ are used if gmpy2 or gmpy is installed, otherwise it falls back to python
50
+ ground types, which are a little bit slower. You can manually
51
+ choose python ground types even if gmpy is installed (e.g., for
52
+ testing purposes):
53
+
54
+ $isympy -t python
55
+
56
+ TYPES must be one of 'gmpy', 'gmpy1' or 'python'
57
+
58
+ Note that the ground type gmpy1 is primarily intended for testing; it
59
+ forces the use of gmpy version 1 even if gmpy2 is available.
60
+
61
+ This is the same as setting the environment variable
62
+ SYMPY_GROUND_TYPES to the given ground type (e.g.,
63
+ SYMPY_GROUND_TYPES='gmpy')
64
+
65
+ The ground types can be determined interactively from the variable
66
+ sympy.polys.domains.GROUND_TYPES.
67
+
68
+ -o ORDER, --order ORDER
69
+
70
+ Setup the ordering of terms for printing. The default is lex, which
71
+ orders terms lexicographically (e.g., x**2 + x + 1). You can choose
72
+ other orderings, such as rev-lex, which will use reverse
73
+ lexicographic ordering (e.g., 1 + x + x**2):
74
+
75
+ $isympy -o rev-lex
76
+
77
+ ORDER must be one of 'lex', 'rev-lex', 'grlex', 'rev-grlex',
78
+ 'grevlex', 'rev-grevlex', 'old', or 'none'.
79
+
80
+ Note that for very large expressions, ORDER='none' may speed up
81
+ printing considerably but the terms will have no canonical order.
82
+
83
+ -q, --quiet
84
+
85
+ Print only Python's and SymPy's versions to stdout at startup.
86
+
87
+ -d, --doctest
88
+
89
+ Use the same format that should be used for doctests. This is
90
+ equivalent to -c python -p no.
91
+
92
+ -C, --no-cache
93
+
94
+ Disable the caching mechanism. Disabling the cache may slow certain
95
+ operations down considerably. This is useful for testing the cache,
96
+ or for benchmarking, as the cache can result in deceptive timings.
97
+
98
+ This is equivalent to setting the environment variable
99
+ SYMPY_USE_CACHE to 'no'.
100
+
101
+ -a, --auto-symbols (requires at least IPython 0.11)
102
+
103
+ Automatically create missing symbols. Normally, typing a name of a
104
+ Symbol that has not been instantiated first would raise NameError,
105
+ but with this option enabled, any undefined name will be
106
+ automatically created as a Symbol.
107
+
108
+ Note that this is intended only for interactive, calculator style
109
+ usage. In a script that uses SymPy, Symbols should be instantiated
110
+ at the top, so that it's clear what they are.
111
+
112
+ This will not override any names that are already defined, which
113
+ includes the single character letters represented by the mnemonic
114
+ QCOSINE (see the "Gotchas and Pitfalls" document in the
115
+ documentation). You can delete existing names by executing "del
116
+ name". If a name is defined, typing "'name' in dir()" will return True.
117
+
118
+ The Symbols that are created using this have default assumptions.
119
+ If you want to place assumptions on symbols, you should create them
120
+ using symbols() or var().
121
+
122
+ Finally, this only works in the top level namespace. So, for
123
+ example, if you define a function in isympy with an undefined
124
+ Symbol, it will not work.
125
+
126
+ See also the -i and -I options.
127
+
128
+ -i, --int-to-Integer (requires at least IPython 0.11)
129
+
130
+ Automatically wrap int literals with Integer. This makes it so that
131
+ things like 1/2 will come out as Rational(1, 2), rather than 0.5. This
132
+ works by preprocessing the source and wrapping all int literals with
133
+ Integer. Note that this will not change the behavior of int literals
134
+ assigned to variables, and it also won't change the behavior of functions
135
+ that return int literals.
136
+
137
+ If you want an int, you can wrap the literal in int(), e.g. int(3)/int(2)
138
+ gives 1.5 (with division imported from __future__).
139
+
140
+ -I, --interactive (requires at least IPython 0.11)
141
+
142
+ This is equivalent to --auto-symbols --int-to-Integer. Future options
143
+ designed for ease of interactive use may be added to this.
144
+
145
+ -D, --debug
146
+
147
+ Enable debugging output. This is the same as setting the
148
+ environment variable SYMPY_DEBUG to 'True'. The debug status is set
149
+ in the variable SYMPY_DEBUG within isympy.
150
+
151
+ -- IPython options
152
+
153
+ Additionally you can pass command line options directly to the IPython
154
+ interpreter (the standard Python shell is not supported). However you
155
+ need to add the '--' separator between two types of options, e.g the
156
+ startup banner option and the colors option. You need to enter the
157
+ options as required by the version of IPython that you are using, too:
158
+
159
+ in IPython 0.11,
160
+
161
+ $isympy -q -- --colors=NoColor
162
+
163
+ or older versions of IPython,
164
+
165
+ $isympy -q -- -colors NoColor
166
+
167
+ See also isympy --help.
168
+ """
169
+
170
+ import os
171
+ import sys
172
+
173
+ # DO NOT IMPORT SYMPY HERE! Or the setting of the sympy environment variables
174
+ # by the command line will break.
175
+
176
+ def main() -> None:
177
+ from argparse import ArgumentParser, RawDescriptionHelpFormatter
178
+
179
+ VERSION = None
180
+ if '--version' in sys.argv:
181
+ # We cannot import sympy before this is run, because flags like -C and
182
+ # -t set environment variables that must be set before SymPy is
183
+ # imported. The only thing we need to import it for is to get the
184
+ # version, which only matters with the --version flag.
185
+ import sympy
186
+ VERSION = sympy.__version__
187
+
188
+ usage = 'isympy [options] -- [ipython options]'
189
+ parser = ArgumentParser(
190
+ usage=usage,
191
+ description=__doc__,
192
+ formatter_class=RawDescriptionHelpFormatter,
193
+ )
194
+
195
+ parser.add_argument('--version', action='version', version=VERSION)
196
+
197
+ parser.add_argument(
198
+ '-c', '--console',
199
+ dest='console',
200
+ action='store',
201
+ default=None,
202
+ choices=['ipython', 'python'],
203
+ metavar='CONSOLE',
204
+ help='select type of interactive session: ipython | python; defaults '
205
+ 'to ipython if IPython is installed, otherwise python')
206
+
207
+ parser.add_argument(
208
+ '-p', '--pretty',
209
+ dest='pretty',
210
+ action='store',
211
+ default=None,
212
+ metavar='PRETTY',
213
+ choices=['unicode', 'ascii', 'no'],
214
+ help='setup pretty printing: unicode | ascii | no; defaults to '
215
+ 'unicode printing if the terminal supports it, otherwise ascii')
216
+
217
+ parser.add_argument(
218
+ '-t', '--types',
219
+ dest='types',
220
+ action='store',
221
+ default=None,
222
+ metavar='TYPES',
223
+ choices=['gmpy', 'gmpy1', 'python'],
224
+ help='setup ground types: gmpy | gmpy1 | python; defaults to gmpy if gmpy2 '
225
+ 'or gmpy is installed, otherwise python')
226
+
227
+ parser.add_argument(
228
+ '-o', '--order',
229
+ dest='order',
230
+ action='store',
231
+ default=None,
232
+ metavar='ORDER',
233
+ choices=['lex', 'grlex', 'grevlex', 'rev-lex', 'rev-grlex', 'rev-grevlex', 'old', 'none'],
234
+ help='setup ordering of terms: [rev-]lex | [rev-]grlex | [rev-]grevlex | old | none; defaults to lex')
235
+
236
+ parser.add_argument(
237
+ '-q', '--quiet',
238
+ dest='quiet',
239
+ action='store_true',
240
+ default=False,
241
+ help='print only version information at startup')
242
+
243
+ parser.add_argument(
244
+ '-d', '--doctest',
245
+ dest='doctest',
246
+ action='store_true',
247
+ default=False,
248
+ help='use the doctest format for output (you can just copy and paste it)')
249
+
250
+ parser.add_argument(
251
+ '-C', '--no-cache',
252
+ dest='cache',
253
+ action='store_false',
254
+ default=True,
255
+ help='disable caching mechanism')
256
+
257
+ parser.add_argument(
258
+ '-a', '--auto-symbols',
259
+ dest='auto_symbols',
260
+ action='store_true',
261
+ default=False,
262
+ help='automatically construct missing symbols')
263
+
264
+ parser.add_argument(
265
+ '-i', '--int-to-Integer',
266
+ dest='auto_int_to_Integer',
267
+ action='store_true',
268
+ default=False,
269
+ help="automatically wrap int literals with Integer")
270
+
271
+ parser.add_argument(
272
+ '-I', '--interactive',
273
+ dest='interactive',
274
+ action='store_true',
275
+ default=False,
276
+ help="equivalent to -a -i")
277
+
278
+ parser.add_argument(
279
+ '-D', '--debug',
280
+ dest='debug',
281
+ action='store_true',
282
+ default=False,
283
+ help='enable debugging output')
284
+
285
+ (options, ipy_args) = parser.parse_known_args()
286
+ if '--' in ipy_args:
287
+ ipy_args.remove('--')
288
+
289
+ if not options.cache:
290
+ os.environ['SYMPY_USE_CACHE'] = 'no'
291
+
292
+ if options.types:
293
+ os.environ['SYMPY_GROUND_TYPES'] = options.types
294
+
295
+ if options.debug:
296
+ os.environ['SYMPY_DEBUG'] = str(options.debug)
297
+
298
+ if options.doctest:
299
+ options.pretty = 'no'
300
+ options.console = 'python'
301
+
302
+ session = options.console
303
+
304
+ if session is not None:
305
+ ipython = session == 'ipython'
306
+ else:
307
+ try:
308
+ import IPython
309
+ ipython = True
310
+ except ImportError:
311
+ if not options.quiet:
312
+ from sympy.interactive.session import no_ipython
313
+ print(no_ipython)
314
+ ipython = False
315
+
316
+ args = {
317
+ 'pretty_print': True,
318
+ 'use_unicode': None,
319
+ 'use_latex': None,
320
+ 'order': None,
321
+ 'argv': ipy_args,
322
+ }
323
+
324
+ if options.pretty == 'unicode':
325
+ args['use_unicode'] = True
326
+ elif options.pretty == 'ascii':
327
+ args['use_unicode'] = False
328
+ elif options.pretty == 'no':
329
+ args['pretty_print'] = False
330
+
331
+ if options.order is not None:
332
+ args['order'] = options.order
333
+
334
+ args['quiet'] = options.quiet
335
+ args['auto_symbols'] = options.auto_symbols or options.interactive
336
+ args['auto_int_to_Integer'] = options.auto_int_to_Integer or options.interactive
337
+
338
+ from sympy.interactive import init_session
339
+ init_session(ipython, **args)
340
+
341
+ if __name__ == "__main__":
342
+ main()
MLPY/Lib/site-packages/protobuf-3.20.3-py3.9-nspkg.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:87b022cdc8c873bfb46c8cffbf5212c1abc8f04f2d7ddbc40817456ab793e9ff
3
+ size 540
MLPY/Lib/site-packages/pythoncom.py ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ # Magic utility that "redirects" to pythoncomxx.dll
2
+ import pywintypes
3
+
4
+ pywintypes.__import_pywin32_system_module__("pythoncom", globals())
MLPY/Lib/site-packages/pywin32.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4f67ff92af0ea38bf18ac308efd976f781d84e56f579c603ed1e8f0c69a17f8d
3
+ size 178
MLPY/Lib/site-packages/pywin32.version.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ 306
MLPY/Lib/site-packages/six.py ADDED
@@ -0,0 +1,998 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) 2010-2020 Benjamin Peterson
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in all
11
+ # copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ # SOFTWARE.
20
+
21
+ """Utilities for writing code that runs on Python 2 and 3"""
22
+
23
+ from __future__ import absolute_import
24
+
25
+ import functools
26
+ import itertools
27
+ import operator
28
+ import sys
29
+ import types
30
+
31
+ __author__ = "Benjamin Peterson <[email protected]>"
32
+ __version__ = "1.16.0"
33
+
34
+
35
+ # Useful for very coarse version differentiation.
36
+ PY2 = sys.version_info[0] == 2
37
+ PY3 = sys.version_info[0] == 3
38
+ PY34 = sys.version_info[0:2] >= (3, 4)
39
+
40
+ if PY3:
41
+ string_types = str,
42
+ integer_types = int,
43
+ class_types = type,
44
+ text_type = str
45
+ binary_type = bytes
46
+
47
+ MAXSIZE = sys.maxsize
48
+ else:
49
+ string_types = basestring,
50
+ integer_types = (int, long)
51
+ class_types = (type, types.ClassType)
52
+ text_type = unicode
53
+ binary_type = str
54
+
55
+ if sys.platform.startswith("java"):
56
+ # Jython always uses 32 bits.
57
+ MAXSIZE = int((1 << 31) - 1)
58
+ else:
59
+ # It's possible to have sizeof(long) != sizeof(Py_ssize_t).
60
+ class X(object):
61
+
62
+ def __len__(self):
63
+ return 1 << 31
64
+ try:
65
+ len(X())
66
+ except OverflowError:
67
+ # 32-bit
68
+ MAXSIZE = int((1 << 31) - 1)
69
+ else:
70
+ # 64-bit
71
+ MAXSIZE = int((1 << 63) - 1)
72
+ del X
73
+
74
+ if PY34:
75
+ from importlib.util import spec_from_loader
76
+ else:
77
+ spec_from_loader = None
78
+
79
+
80
+ def _add_doc(func, doc):
81
+ """Add documentation to a function."""
82
+ func.__doc__ = doc
83
+
84
+
85
+ def _import_module(name):
86
+ """Import module, returning the module after the last dot."""
87
+ __import__(name)
88
+ return sys.modules[name]
89
+
90
+
91
+ class _LazyDescr(object):
92
+
93
+ def __init__(self, name):
94
+ self.name = name
95
+
96
+ def __get__(self, obj, tp):
97
+ result = self._resolve()
98
+ setattr(obj, self.name, result) # Invokes __set__.
99
+ try:
100
+ # This is a bit ugly, but it avoids running this again by
101
+ # removing this descriptor.
102
+ delattr(obj.__class__, self.name)
103
+ except AttributeError:
104
+ pass
105
+ return result
106
+
107
+
108
+ class MovedModule(_LazyDescr):
109
+
110
+ def __init__(self, name, old, new=None):
111
+ super(MovedModule, self).__init__(name)
112
+ if PY3:
113
+ if new is None:
114
+ new = name
115
+ self.mod = new
116
+ else:
117
+ self.mod = old
118
+
119
+ def _resolve(self):
120
+ return _import_module(self.mod)
121
+
122
+ def __getattr__(self, attr):
123
+ _module = self._resolve()
124
+ value = getattr(_module, attr)
125
+ setattr(self, attr, value)
126
+ return value
127
+
128
+
129
+ class _LazyModule(types.ModuleType):
130
+
131
+ def __init__(self, name):
132
+ super(_LazyModule, self).__init__(name)
133
+ self.__doc__ = self.__class__.__doc__
134
+
135
+ def __dir__(self):
136
+ attrs = ["__doc__", "__name__"]
137
+ attrs += [attr.name for attr in self._moved_attributes]
138
+ return attrs
139
+
140
+ # Subclasses should override this
141
+ _moved_attributes = []
142
+
143
+
144
+ class MovedAttribute(_LazyDescr):
145
+
146
+ def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None):
147
+ super(MovedAttribute, self).__init__(name)
148
+ if PY3:
149
+ if new_mod is None:
150
+ new_mod = name
151
+ self.mod = new_mod
152
+ if new_attr is None:
153
+ if old_attr is None:
154
+ new_attr = name
155
+ else:
156
+ new_attr = old_attr
157
+ self.attr = new_attr
158
+ else:
159
+ self.mod = old_mod
160
+ if old_attr is None:
161
+ old_attr = name
162
+ self.attr = old_attr
163
+
164
+ def _resolve(self):
165
+ module = _import_module(self.mod)
166
+ return getattr(module, self.attr)
167
+
168
+
169
+ class _SixMetaPathImporter(object):
170
+
171
+ """
172
+ A meta path importer to import six.moves and its submodules.
173
+
174
+ This class implements a PEP302 finder and loader. It should be compatible
175
+ with Python 2.5 and all existing versions of Python3
176
+ """
177
+
178
+ def __init__(self, six_module_name):
179
+ self.name = six_module_name
180
+ self.known_modules = {}
181
+
182
+ def _add_module(self, mod, *fullnames):
183
+ for fullname in fullnames:
184
+ self.known_modules[self.name + "." + fullname] = mod
185
+
186
+ def _get_module(self, fullname):
187
+ return self.known_modules[self.name + "." + fullname]
188
+
189
+ def find_module(self, fullname, path=None):
190
+ if fullname in self.known_modules:
191
+ return self
192
+ return None
193
+
194
+ def find_spec(self, fullname, path, target=None):
195
+ if fullname in self.known_modules:
196
+ return spec_from_loader(fullname, self)
197
+ return None
198
+
199
+ def __get_module(self, fullname):
200
+ try:
201
+ return self.known_modules[fullname]
202
+ except KeyError:
203
+ raise ImportError("This loader does not know module " + fullname)
204
+
205
+ def load_module(self, fullname):
206
+ try:
207
+ # in case of a reload
208
+ return sys.modules[fullname]
209
+ except KeyError:
210
+ pass
211
+ mod = self.__get_module(fullname)
212
+ if isinstance(mod, MovedModule):
213
+ mod = mod._resolve()
214
+ else:
215
+ mod.__loader__ = self
216
+ sys.modules[fullname] = mod
217
+ return mod
218
+
219
+ def is_package(self, fullname):
220
+ """
221
+ Return true, if the named module is a package.
222
+
223
+ We need this method to get correct spec objects with
224
+ Python 3.4 (see PEP451)
225
+ """
226
+ return hasattr(self.__get_module(fullname), "__path__")
227
+
228
+ def get_code(self, fullname):
229
+ """Return None
230
+
231
+ Required, if is_package is implemented"""
232
+ self.__get_module(fullname) # eventually raises ImportError
233
+ return None
234
+ get_source = get_code # same as get_code
235
+
236
+ def create_module(self, spec):
237
+ return self.load_module(spec.name)
238
+
239
+ def exec_module(self, module):
240
+ pass
241
+
242
+ _importer = _SixMetaPathImporter(__name__)
243
+
244
+
245
+ class _MovedItems(_LazyModule):
246
+
247
+ """Lazy loading of moved objects"""
248
+ __path__ = [] # mark as package
249
+
250
+
251
+ _moved_attributes = [
252
+ MovedAttribute("cStringIO", "cStringIO", "io", "StringIO"),
253
+ MovedAttribute("filter", "itertools", "builtins", "ifilter", "filter"),
254
+ MovedAttribute("filterfalse", "itertools", "itertools", "ifilterfalse", "filterfalse"),
255
+ MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"),
256
+ MovedAttribute("intern", "__builtin__", "sys"),
257
+ MovedAttribute("map", "itertools", "builtins", "imap", "map"),
258
+ MovedAttribute("getcwd", "os", "os", "getcwdu", "getcwd"),
259
+ MovedAttribute("getcwdb", "os", "os", "getcwd", "getcwdb"),
260
+ MovedAttribute("getoutput", "commands", "subprocess"),
261
+ MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"),
262
+ MovedAttribute("reload_module", "__builtin__", "importlib" if PY34 else "imp", "reload"),
263
+ MovedAttribute("reduce", "__builtin__", "functools"),
264
+ MovedAttribute("shlex_quote", "pipes", "shlex", "quote"),
265
+ MovedAttribute("StringIO", "StringIO", "io"),
266
+ MovedAttribute("UserDict", "UserDict", "collections"),
267
+ MovedAttribute("UserList", "UserList", "collections"),
268
+ MovedAttribute("UserString", "UserString", "collections"),
269
+ MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"),
270
+ MovedAttribute("zip", "itertools", "builtins", "izip", "zip"),
271
+ MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest"),
272
+ MovedModule("builtins", "__builtin__"),
273
+ MovedModule("configparser", "ConfigParser"),
274
+ MovedModule("collections_abc", "collections", "collections.abc" if sys.version_info >= (3, 3) else "collections"),
275
+ MovedModule("copyreg", "copy_reg"),
276
+ MovedModule("dbm_gnu", "gdbm", "dbm.gnu"),
277
+ MovedModule("dbm_ndbm", "dbm", "dbm.ndbm"),
278
+ MovedModule("_dummy_thread", "dummy_thread", "_dummy_thread" if sys.version_info < (3, 9) else "_thread"),
279
+ MovedModule("http_cookiejar", "cookielib", "http.cookiejar"),
280
+ MovedModule("http_cookies", "Cookie", "http.cookies"),
281
+ MovedModule("html_entities", "htmlentitydefs", "html.entities"),
282
+ MovedModule("html_parser", "HTMLParser", "html.parser"),
283
+ MovedModule("http_client", "httplib", "http.client"),
284
+ MovedModule("email_mime_base", "email.MIMEBase", "email.mime.base"),
285
+ MovedModule("email_mime_image", "email.MIMEImage", "email.mime.image"),
286
+ MovedModule("email_mime_multipart", "email.MIMEMultipart", "email.mime.multipart"),
287
+ MovedModule("email_mime_nonmultipart", "email.MIMENonMultipart", "email.mime.nonmultipart"),
288
+ MovedModule("email_mime_text", "email.MIMEText", "email.mime.text"),
289
+ MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"),
290
+ MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"),
291
+ MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"),
292
+ MovedModule("cPickle", "cPickle", "pickle"),
293
+ MovedModule("queue", "Queue"),
294
+ MovedModule("reprlib", "repr"),
295
+ MovedModule("socketserver", "SocketServer"),
296
+ MovedModule("_thread", "thread", "_thread"),
297
+ MovedModule("tkinter", "Tkinter"),
298
+ MovedModule("tkinter_dialog", "Dialog", "tkinter.dialog"),
299
+ MovedModule("tkinter_filedialog", "FileDialog", "tkinter.filedialog"),
300
+ MovedModule("tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"),
301
+ MovedModule("tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"),
302
+ MovedModule("tkinter_tix", "Tix", "tkinter.tix"),
303
+ MovedModule("tkinter_ttk", "ttk", "tkinter.ttk"),
304
+ MovedModule("tkinter_constants", "Tkconstants", "tkinter.constants"),
305
+ MovedModule("tkinter_dnd", "Tkdnd", "tkinter.dnd"),
306
+ MovedModule("tkinter_colorchooser", "tkColorChooser",
307
+ "tkinter.colorchooser"),
308
+ MovedModule("tkinter_commondialog", "tkCommonDialog",
309
+ "tkinter.commondialog"),
310
+ MovedModule("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"),
311
+ MovedModule("tkinter_font", "tkFont", "tkinter.font"),
312
+ MovedModule("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"),
313
+ MovedModule("tkinter_tksimpledialog", "tkSimpleDialog",
314
+ "tkinter.simpledialog"),
315
+ MovedModule("urllib_parse", __name__ + ".moves.urllib_parse", "urllib.parse"),
316
+ MovedModule("urllib_error", __name__ + ".moves.urllib_error", "urllib.error"),
317
+ MovedModule("urllib", __name__ + ".moves.urllib", __name__ + ".moves.urllib"),
318
+ MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"),
319
+ MovedModule("xmlrpc_client", "xmlrpclib", "xmlrpc.client"),
320
+ MovedModule("xmlrpc_server", "SimpleXMLRPCServer", "xmlrpc.server"),
321
+ ]
322
+ # Add windows specific modules.
323
+ if sys.platform == "win32":
324
+ _moved_attributes += [
325
+ MovedModule("winreg", "_winreg"),
326
+ ]
327
+
328
+ for attr in _moved_attributes:
329
+ setattr(_MovedItems, attr.name, attr)
330
+ if isinstance(attr, MovedModule):
331
+ _importer._add_module(attr, "moves." + attr.name)
332
+ del attr
333
+
334
+ _MovedItems._moved_attributes = _moved_attributes
335
+
336
+ moves = _MovedItems(__name__ + ".moves")
337
+ _importer._add_module(moves, "moves")
338
+
339
+
340
+ class Module_six_moves_urllib_parse(_LazyModule):
341
+
342
+ """Lazy loading of moved objects in six.moves.urllib_parse"""
343
+
344
+
345
+ _urllib_parse_moved_attributes = [
346
+ MovedAttribute("ParseResult", "urlparse", "urllib.parse"),
347
+ MovedAttribute("SplitResult", "urlparse", "urllib.parse"),
348
+ MovedAttribute("parse_qs", "urlparse", "urllib.parse"),
349
+ MovedAttribute("parse_qsl", "urlparse", "urllib.parse"),
350
+ MovedAttribute("urldefrag", "urlparse", "urllib.parse"),
351
+ MovedAttribute("urljoin", "urlparse", "urllib.parse"),
352
+ MovedAttribute("urlparse", "urlparse", "urllib.parse"),
353
+ MovedAttribute("urlsplit", "urlparse", "urllib.parse"),
354
+ MovedAttribute("urlunparse", "urlparse", "urllib.parse"),
355
+ MovedAttribute("urlunsplit", "urlparse", "urllib.parse"),
356
+ MovedAttribute("quote", "urllib", "urllib.parse"),
357
+ MovedAttribute("quote_plus", "urllib", "urllib.parse"),
358
+ MovedAttribute("unquote", "urllib", "urllib.parse"),
359
+ MovedAttribute("unquote_plus", "urllib", "urllib.parse"),
360
+ MovedAttribute("unquote_to_bytes", "urllib", "urllib.parse", "unquote", "unquote_to_bytes"),
361
+ MovedAttribute("urlencode", "urllib", "urllib.parse"),
362
+ MovedAttribute("splitquery", "urllib", "urllib.parse"),
363
+ MovedAttribute("splittag", "urllib", "urllib.parse"),
364
+ MovedAttribute("splituser", "urllib", "urllib.parse"),
365
+ MovedAttribute("splitvalue", "urllib", "urllib.parse"),
366
+ MovedAttribute("uses_fragment", "urlparse", "urllib.parse"),
367
+ MovedAttribute("uses_netloc", "urlparse", "urllib.parse"),
368
+ MovedAttribute("uses_params", "urlparse", "urllib.parse"),
369
+ MovedAttribute("uses_query", "urlparse", "urllib.parse"),
370
+ MovedAttribute("uses_relative", "urlparse", "urllib.parse"),
371
+ ]
372
+ for attr in _urllib_parse_moved_attributes:
373
+ setattr(Module_six_moves_urllib_parse, attr.name, attr)
374
+ del attr
375
+
376
+ Module_six_moves_urllib_parse._moved_attributes = _urllib_parse_moved_attributes
377
+
378
+ _importer._add_module(Module_six_moves_urllib_parse(__name__ + ".moves.urllib_parse"),
379
+ "moves.urllib_parse", "moves.urllib.parse")
380
+
381
+
382
+ class Module_six_moves_urllib_error(_LazyModule):
383
+
384
+ """Lazy loading of moved objects in six.moves.urllib_error"""
385
+
386
+
387
+ _urllib_error_moved_attributes = [
388
+ MovedAttribute("URLError", "urllib2", "urllib.error"),
389
+ MovedAttribute("HTTPError", "urllib2", "urllib.error"),
390
+ MovedAttribute("ContentTooShortError", "urllib", "urllib.error"),
391
+ ]
392
+ for attr in _urllib_error_moved_attributes:
393
+ setattr(Module_six_moves_urllib_error, attr.name, attr)
394
+ del attr
395
+
396
+ Module_six_moves_urllib_error._moved_attributes = _urllib_error_moved_attributes
397
+
398
+ _importer._add_module(Module_six_moves_urllib_error(__name__ + ".moves.urllib.error"),
399
+ "moves.urllib_error", "moves.urllib.error")
400
+
401
+
402
+ class Module_six_moves_urllib_request(_LazyModule):
403
+
404
+ """Lazy loading of moved objects in six.moves.urllib_request"""
405
+
406
+
407
+ _urllib_request_moved_attributes = [
408
+ MovedAttribute("urlopen", "urllib2", "urllib.request"),
409
+ MovedAttribute("install_opener", "urllib2", "urllib.request"),
410
+ MovedAttribute("build_opener", "urllib2", "urllib.request"),
411
+ MovedAttribute("pathname2url", "urllib", "urllib.request"),
412
+ MovedAttribute("url2pathname", "urllib", "urllib.request"),
413
+ MovedAttribute("getproxies", "urllib", "urllib.request"),
414
+ MovedAttribute("Request", "urllib2", "urllib.request"),
415
+ MovedAttribute("OpenerDirector", "urllib2", "urllib.request"),
416
+ MovedAttribute("HTTPDefaultErrorHandler", "urllib2", "urllib.request"),
417
+ MovedAttribute("HTTPRedirectHandler", "urllib2", "urllib.request"),
418
+ MovedAttribute("HTTPCookieProcessor", "urllib2", "urllib.request"),
419
+ MovedAttribute("ProxyHandler", "urllib2", "urllib.request"),
420
+ MovedAttribute("BaseHandler", "urllib2", "urllib.request"),
421
+ MovedAttribute("HTTPPasswordMgr", "urllib2", "urllib.request"),
422
+ MovedAttribute("HTTPPasswordMgrWithDefaultRealm", "urllib2", "urllib.request"),
423
+ MovedAttribute("AbstractBasicAuthHandler", "urllib2", "urllib.request"),
424
+ MovedAttribute("HTTPBasicAuthHandler", "urllib2", "urllib.request"),
425
+ MovedAttribute("ProxyBasicAuthHandler", "urllib2", "urllib.request"),
426
+ MovedAttribute("AbstractDigestAuthHandler", "urllib2", "urllib.request"),
427
+ MovedAttribute("HTTPDigestAuthHandler", "urllib2", "urllib.request"),
428
+ MovedAttribute("ProxyDigestAuthHandler", "urllib2", "urllib.request"),
429
+ MovedAttribute("HTTPHandler", "urllib2", "urllib.request"),
430
+ MovedAttribute("HTTPSHandler", "urllib2", "urllib.request"),
431
+ MovedAttribute("FileHandler", "urllib2", "urllib.request"),
432
+ MovedAttribute("FTPHandler", "urllib2", "urllib.request"),
433
+ MovedAttribute("CacheFTPHandler", "urllib2", "urllib.request"),
434
+ MovedAttribute("UnknownHandler", "urllib2", "urllib.request"),
435
+ MovedAttribute("HTTPErrorProcessor", "urllib2", "urllib.request"),
436
+ MovedAttribute("urlretrieve", "urllib", "urllib.request"),
437
+ MovedAttribute("urlcleanup", "urllib", "urllib.request"),
438
+ MovedAttribute("URLopener", "urllib", "urllib.request"),
439
+ MovedAttribute("FancyURLopener", "urllib", "urllib.request"),
440
+ MovedAttribute("proxy_bypass", "urllib", "urllib.request"),
441
+ MovedAttribute("parse_http_list", "urllib2", "urllib.request"),
442
+ MovedAttribute("parse_keqv_list", "urllib2", "urllib.request"),
443
+ ]
444
+ for attr in _urllib_request_moved_attributes:
445
+ setattr(Module_six_moves_urllib_request, attr.name, attr)
446
+ del attr
447
+
448
+ Module_six_moves_urllib_request._moved_attributes = _urllib_request_moved_attributes
449
+
450
+ _importer._add_module(Module_six_moves_urllib_request(__name__ + ".moves.urllib.request"),
451
+ "moves.urllib_request", "moves.urllib.request")
452
+
453
+
454
+ class Module_six_moves_urllib_response(_LazyModule):
455
+
456
+ """Lazy loading of moved objects in six.moves.urllib_response"""
457
+
458
+
459
+ _urllib_response_moved_attributes = [
460
+ MovedAttribute("addbase", "urllib", "urllib.response"),
461
+ MovedAttribute("addclosehook", "urllib", "urllib.response"),
462
+ MovedAttribute("addinfo", "urllib", "urllib.response"),
463
+ MovedAttribute("addinfourl", "urllib", "urllib.response"),
464
+ ]
465
+ for attr in _urllib_response_moved_attributes:
466
+ setattr(Module_six_moves_urllib_response, attr.name, attr)
467
+ del attr
468
+
469
+ Module_six_moves_urllib_response._moved_attributes = _urllib_response_moved_attributes
470
+
471
+ _importer._add_module(Module_six_moves_urllib_response(__name__ + ".moves.urllib.response"),
472
+ "moves.urllib_response", "moves.urllib.response")
473
+
474
+
475
+ class Module_six_moves_urllib_robotparser(_LazyModule):
476
+
477
+ """Lazy loading of moved objects in six.moves.urllib_robotparser"""
478
+
479
+
480
+ _urllib_robotparser_moved_attributes = [
481
+ MovedAttribute("RobotFileParser", "robotparser", "urllib.robotparser"),
482
+ ]
483
+ for attr in _urllib_robotparser_moved_attributes:
484
+ setattr(Module_six_moves_urllib_robotparser, attr.name, attr)
485
+ del attr
486
+
487
+ Module_six_moves_urllib_robotparser._moved_attributes = _urllib_robotparser_moved_attributes
488
+
489
+ _importer._add_module(Module_six_moves_urllib_robotparser(__name__ + ".moves.urllib.robotparser"),
490
+ "moves.urllib_robotparser", "moves.urllib.robotparser")
491
+
492
+
493
+ class Module_six_moves_urllib(types.ModuleType):
494
+
495
+ """Create a six.moves.urllib namespace that resembles the Python 3 namespace"""
496
+ __path__ = [] # mark as package
497
+ parse = _importer._get_module("moves.urllib_parse")
498
+ error = _importer._get_module("moves.urllib_error")
499
+ request = _importer._get_module("moves.urllib_request")
500
+ response = _importer._get_module("moves.urllib_response")
501
+ robotparser = _importer._get_module("moves.urllib_robotparser")
502
+
503
+ def __dir__(self):
504
+ return ['parse', 'error', 'request', 'response', 'robotparser']
505
+
506
+ _importer._add_module(Module_six_moves_urllib(__name__ + ".moves.urllib"),
507
+ "moves.urllib")
508
+
509
+
510
+ def add_move(move):
511
+ """Add an item to six.moves."""
512
+ setattr(_MovedItems, move.name, move)
513
+
514
+
515
+ def remove_move(name):
516
+ """Remove item from six.moves."""
517
+ try:
518
+ delattr(_MovedItems, name)
519
+ except AttributeError:
520
+ try:
521
+ del moves.__dict__[name]
522
+ except KeyError:
523
+ raise AttributeError("no such move, %r" % (name,))
524
+
525
+
526
+ if PY3:
527
+ _meth_func = "__func__"
528
+ _meth_self = "__self__"
529
+
530
+ _func_closure = "__closure__"
531
+ _func_code = "__code__"
532
+ _func_defaults = "__defaults__"
533
+ _func_globals = "__globals__"
534
+ else:
535
+ _meth_func = "im_func"
536
+ _meth_self = "im_self"
537
+
538
+ _func_closure = "func_closure"
539
+ _func_code = "func_code"
540
+ _func_defaults = "func_defaults"
541
+ _func_globals = "func_globals"
542
+
543
+
544
+ try:
545
+ advance_iterator = next
546
+ except NameError:
547
+ def advance_iterator(it):
548
+ return it.next()
549
+ next = advance_iterator
550
+
551
+
552
+ try:
553
+ callable = callable
554
+ except NameError:
555
+ def callable(obj):
556
+ return any("__call__" in klass.__dict__ for klass in type(obj).__mro__)
557
+
558
+
559
+ if PY3:
560
+ def get_unbound_function(unbound):
561
+ return unbound
562
+
563
+ create_bound_method = types.MethodType
564
+
565
+ def create_unbound_method(func, cls):
566
+ return func
567
+
568
+ Iterator = object
569
+ else:
570
+ def get_unbound_function(unbound):
571
+ return unbound.im_func
572
+
573
+ def create_bound_method(func, obj):
574
+ return types.MethodType(func, obj, obj.__class__)
575
+
576
+ def create_unbound_method(func, cls):
577
+ return types.MethodType(func, None, cls)
578
+
579
+ class Iterator(object):
580
+
581
+ def next(self):
582
+ return type(self).__next__(self)
583
+
584
+ callable = callable
585
+ _add_doc(get_unbound_function,
586
+ """Get the function out of a possibly unbound function""")
587
+
588
+
589
+ get_method_function = operator.attrgetter(_meth_func)
590
+ get_method_self = operator.attrgetter(_meth_self)
591
+ get_function_closure = operator.attrgetter(_func_closure)
592
+ get_function_code = operator.attrgetter(_func_code)
593
+ get_function_defaults = operator.attrgetter(_func_defaults)
594
+ get_function_globals = operator.attrgetter(_func_globals)
595
+
596
+
597
+ if PY3:
598
+ def iterkeys(d, **kw):
599
+ return iter(d.keys(**kw))
600
+
601
+ def itervalues(d, **kw):
602
+ return iter(d.values(**kw))
603
+
604
+ def iteritems(d, **kw):
605
+ return iter(d.items(**kw))
606
+
607
+ def iterlists(d, **kw):
608
+ return iter(d.lists(**kw))
609
+
610
+ viewkeys = operator.methodcaller("keys")
611
+
612
+ viewvalues = operator.methodcaller("values")
613
+
614
+ viewitems = operator.methodcaller("items")
615
+ else:
616
+ def iterkeys(d, **kw):
617
+ return d.iterkeys(**kw)
618
+
619
+ def itervalues(d, **kw):
620
+ return d.itervalues(**kw)
621
+
622
+ def iteritems(d, **kw):
623
+ return d.iteritems(**kw)
624
+
625
+ def iterlists(d, **kw):
626
+ return d.iterlists(**kw)
627
+
628
+ viewkeys = operator.methodcaller("viewkeys")
629
+
630
+ viewvalues = operator.methodcaller("viewvalues")
631
+
632
+ viewitems = operator.methodcaller("viewitems")
633
+
634
+ _add_doc(iterkeys, "Return an iterator over the keys of a dictionary.")
635
+ _add_doc(itervalues, "Return an iterator over the values of a dictionary.")
636
+ _add_doc(iteritems,
637
+ "Return an iterator over the (key, value) pairs of a dictionary.")
638
+ _add_doc(iterlists,
639
+ "Return an iterator over the (key, [values]) pairs of a dictionary.")
640
+
641
+
642
+ if PY3:
643
+ def b(s):
644
+ return s.encode("latin-1")
645
+
646
+ def u(s):
647
+ return s
648
+ unichr = chr
649
+ import struct
650
+ int2byte = struct.Struct(">B").pack
651
+ del struct
652
+ byte2int = operator.itemgetter(0)
653
+ indexbytes = operator.getitem
654
+ iterbytes = iter
655
+ import io
656
+ StringIO = io.StringIO
657
+ BytesIO = io.BytesIO
658
+ del io
659
+ _assertCountEqual = "assertCountEqual"
660
+ if sys.version_info[1] <= 1:
661
+ _assertRaisesRegex = "assertRaisesRegexp"
662
+ _assertRegex = "assertRegexpMatches"
663
+ _assertNotRegex = "assertNotRegexpMatches"
664
+ else:
665
+ _assertRaisesRegex = "assertRaisesRegex"
666
+ _assertRegex = "assertRegex"
667
+ _assertNotRegex = "assertNotRegex"
668
+ else:
669
+ def b(s):
670
+ return s
671
+ # Workaround for standalone backslash
672
+
673
+ def u(s):
674
+ return unicode(s.replace(r'\\', r'\\\\'), "unicode_escape")
675
+ unichr = unichr
676
+ int2byte = chr
677
+
678
+ def byte2int(bs):
679
+ return ord(bs[0])
680
+
681
+ def indexbytes(buf, i):
682
+ return ord(buf[i])
683
+ iterbytes = functools.partial(itertools.imap, ord)
684
+ import StringIO
685
+ StringIO = BytesIO = StringIO.StringIO
686
+ _assertCountEqual = "assertItemsEqual"
687
+ _assertRaisesRegex = "assertRaisesRegexp"
688
+ _assertRegex = "assertRegexpMatches"
689
+ _assertNotRegex = "assertNotRegexpMatches"
690
+ _add_doc(b, """Byte literal""")
691
+ _add_doc(u, """Text literal""")
692
+
693
+
694
+ def assertCountEqual(self, *args, **kwargs):
695
+ return getattr(self, _assertCountEqual)(*args, **kwargs)
696
+
697
+
698
+ def assertRaisesRegex(self, *args, **kwargs):
699
+ return getattr(self, _assertRaisesRegex)(*args, **kwargs)
700
+
701
+
702
+ def assertRegex(self, *args, **kwargs):
703
+ return getattr(self, _assertRegex)(*args, **kwargs)
704
+
705
+
706
+ def assertNotRegex(self, *args, **kwargs):
707
+ return getattr(self, _assertNotRegex)(*args, **kwargs)
708
+
709
+
710
+ if PY3:
711
+ exec_ = getattr(moves.builtins, "exec")
712
+
713
+ def reraise(tp, value, tb=None):
714
+ try:
715
+ if value is None:
716
+ value = tp()
717
+ if value.__traceback__ is not tb:
718
+ raise value.with_traceback(tb)
719
+ raise value
720
+ finally:
721
+ value = None
722
+ tb = None
723
+
724
+ else:
725
+ def exec_(_code_, _globs_=None, _locs_=None):
726
+ """Execute code in a namespace."""
727
+ if _globs_ is None:
728
+ frame = sys._getframe(1)
729
+ _globs_ = frame.f_globals
730
+ if _locs_ is None:
731
+ _locs_ = frame.f_locals
732
+ del frame
733
+ elif _locs_ is None:
734
+ _locs_ = _globs_
735
+ exec("""exec _code_ in _globs_, _locs_""")
736
+
737
+ exec_("""def reraise(tp, value, tb=None):
738
+ try:
739
+ raise tp, value, tb
740
+ finally:
741
+ tb = None
742
+ """)
743
+
744
+
745
+ if sys.version_info[:2] > (3,):
746
+ exec_("""def raise_from(value, from_value):
747
+ try:
748
+ raise value from from_value
749
+ finally:
750
+ value = None
751
+ """)
752
+ else:
753
+ def raise_from(value, from_value):
754
+ raise value
755
+
756
+
757
+ print_ = getattr(moves.builtins, "print", None)
758
+ if print_ is None:
759
+ def print_(*args, **kwargs):
760
+ """The new-style print function for Python 2.4 and 2.5."""
761
+ fp = kwargs.pop("file", sys.stdout)
762
+ if fp is None:
763
+ return
764
+
765
+ def write(data):
766
+ if not isinstance(data, basestring):
767
+ data = str(data)
768
+ # If the file has an encoding, encode unicode with it.
769
+ if (isinstance(fp, file) and
770
+ isinstance(data, unicode) and
771
+ fp.encoding is not None):
772
+ errors = getattr(fp, "errors", None)
773
+ if errors is None:
774
+ errors = "strict"
775
+ data = data.encode(fp.encoding, errors)
776
+ fp.write(data)
777
+ want_unicode = False
778
+ sep = kwargs.pop("sep", None)
779
+ if sep is not None:
780
+ if isinstance(sep, unicode):
781
+ want_unicode = True
782
+ elif not isinstance(sep, str):
783
+ raise TypeError("sep must be None or a string")
784
+ end = kwargs.pop("end", None)
785
+ if end is not None:
786
+ if isinstance(end, unicode):
787
+ want_unicode = True
788
+ elif not isinstance(end, str):
789
+ raise TypeError("end must be None or a string")
790
+ if kwargs:
791
+ raise TypeError("invalid keyword arguments to print()")
792
+ if not want_unicode:
793
+ for arg in args:
794
+ if isinstance(arg, unicode):
795
+ want_unicode = True
796
+ break
797
+ if want_unicode:
798
+ newline = unicode("\n")
799
+ space = unicode(" ")
800
+ else:
801
+ newline = "\n"
802
+ space = " "
803
+ if sep is None:
804
+ sep = space
805
+ if end is None:
806
+ end = newline
807
+ for i, arg in enumerate(args):
808
+ if i:
809
+ write(sep)
810
+ write(arg)
811
+ write(end)
812
+ if sys.version_info[:2] < (3, 3):
813
+ _print = print_
814
+
815
+ def print_(*args, **kwargs):
816
+ fp = kwargs.get("file", sys.stdout)
817
+ flush = kwargs.pop("flush", False)
818
+ _print(*args, **kwargs)
819
+ if flush and fp is not None:
820
+ fp.flush()
821
+
822
+ _add_doc(reraise, """Reraise an exception.""")
823
+
824
+ if sys.version_info[0:2] < (3, 4):
825
+ # This does exactly the same what the :func:`py3:functools.update_wrapper`
826
+ # function does on Python versions after 3.2. It sets the ``__wrapped__``
827
+ # attribute on ``wrapper`` object and it doesn't raise an error if any of
828
+ # the attributes mentioned in ``assigned`` and ``updated`` are missing on
829
+ # ``wrapped`` object.
830
+ def _update_wrapper(wrapper, wrapped,
831
+ assigned=functools.WRAPPER_ASSIGNMENTS,
832
+ updated=functools.WRAPPER_UPDATES):
833
+ for attr in assigned:
834
+ try:
835
+ value = getattr(wrapped, attr)
836
+ except AttributeError:
837
+ continue
838
+ else:
839
+ setattr(wrapper, attr, value)
840
+ for attr in updated:
841
+ getattr(wrapper, attr).update(getattr(wrapped, attr, {}))
842
+ wrapper.__wrapped__ = wrapped
843
+ return wrapper
844
+ _update_wrapper.__doc__ = functools.update_wrapper.__doc__
845
+
846
+ def wraps(wrapped, assigned=functools.WRAPPER_ASSIGNMENTS,
847
+ updated=functools.WRAPPER_UPDATES):
848
+ return functools.partial(_update_wrapper, wrapped=wrapped,
849
+ assigned=assigned, updated=updated)
850
+ wraps.__doc__ = functools.wraps.__doc__
851
+
852
+ else:
853
+ wraps = functools.wraps
854
+
855
+
856
+ def with_metaclass(meta, *bases):
857
+ """Create a base class with a metaclass."""
858
+ # This requires a bit of explanation: the basic idea is to make a dummy
859
+ # metaclass for one level of class instantiation that replaces itself with
860
+ # the actual metaclass.
861
+ class metaclass(type):
862
+
863
+ def __new__(cls, name, this_bases, d):
864
+ if sys.version_info[:2] >= (3, 7):
865
+ # This version introduced PEP 560 that requires a bit
866
+ # of extra care (we mimic what is done by __build_class__).
867
+ resolved_bases = types.resolve_bases(bases)
868
+ if resolved_bases is not bases:
869
+ d['__orig_bases__'] = bases
870
+ else:
871
+ resolved_bases = bases
872
+ return meta(name, resolved_bases, d)
873
+
874
+ @classmethod
875
+ def __prepare__(cls, name, this_bases):
876
+ return meta.__prepare__(name, bases)
877
+ return type.__new__(metaclass, 'temporary_class', (), {})
878
+
879
+
880
+ def add_metaclass(metaclass):
881
+ """Class decorator for creating a class with a metaclass."""
882
+ def wrapper(cls):
883
+ orig_vars = cls.__dict__.copy()
884
+ slots = orig_vars.get('__slots__')
885
+ if slots is not None:
886
+ if isinstance(slots, str):
887
+ slots = [slots]
888
+ for slots_var in slots:
889
+ orig_vars.pop(slots_var)
890
+ orig_vars.pop('__dict__', None)
891
+ orig_vars.pop('__weakref__', None)
892
+ if hasattr(cls, '__qualname__'):
893
+ orig_vars['__qualname__'] = cls.__qualname__
894
+ return metaclass(cls.__name__, cls.__bases__, orig_vars)
895
+ return wrapper
896
+
897
+
898
+ def ensure_binary(s, encoding='utf-8', errors='strict'):
899
+ """Coerce **s** to six.binary_type.
900
+
901
+ For Python 2:
902
+ - `unicode` -> encoded to `str`
903
+ - `str` -> `str`
904
+
905
+ For Python 3:
906
+ - `str` -> encoded to `bytes`
907
+ - `bytes` -> `bytes`
908
+ """
909
+ if isinstance(s, binary_type):
910
+ return s
911
+ if isinstance(s, text_type):
912
+ return s.encode(encoding, errors)
913
+ raise TypeError("not expecting type '%s'" % type(s))
914
+
915
+
916
+ def ensure_str(s, encoding='utf-8', errors='strict'):
917
+ """Coerce *s* to `str`.
918
+
919
+ For Python 2:
920
+ - `unicode` -> encoded to `str`
921
+ - `str` -> `str`
922
+
923
+ For Python 3:
924
+ - `str` -> `str`
925
+ - `bytes` -> decoded to `str`
926
+ """
927
+ # Optimization: Fast return for the common case.
928
+ if type(s) is str:
929
+ return s
930
+ if PY2 and isinstance(s, text_type):
931
+ return s.encode(encoding, errors)
932
+ elif PY3 and isinstance(s, binary_type):
933
+ return s.decode(encoding, errors)
934
+ elif not isinstance(s, (text_type, binary_type)):
935
+ raise TypeError("not expecting type '%s'" % type(s))
936
+ return s
937
+
938
+
939
+ def ensure_text(s, encoding='utf-8', errors='strict'):
940
+ """Coerce *s* to six.text_type.
941
+
942
+ For Python 2:
943
+ - `unicode` -> `unicode`
944
+ - `str` -> `unicode`
945
+
946
+ For Python 3:
947
+ - `str` -> `str`
948
+ - `bytes` -> decoded to `str`
949
+ """
950
+ if isinstance(s, binary_type):
951
+ return s.decode(encoding, errors)
952
+ elif isinstance(s, text_type):
953
+ return s
954
+ else:
955
+ raise TypeError("not expecting type '%s'" % type(s))
956
+
957
+
958
+ def python_2_unicode_compatible(klass):
959
+ """
960
+ A class decorator that defines __unicode__ and __str__ methods under Python 2.
961
+ Under Python 3 it does nothing.
962
+
963
+ To support Python 2 and 3 with a single code base, define a __str__ method
964
+ returning text and apply this decorator to the class.
965
+ """
966
+ if PY2:
967
+ if '__str__' not in klass.__dict__:
968
+ raise ValueError("@python_2_unicode_compatible cannot be applied "
969
+ "to %s because it doesn't define __str__()." %
970
+ klass.__name__)
971
+ klass.__unicode__ = klass.__str__
972
+ klass.__str__ = lambda self: self.__unicode__().encode('utf-8')
973
+ return klass
974
+
975
+
976
+ # Complete the moves implementation.
977
+ # This code is at the end of this module to speed up module loading.
978
+ # Turn this module into a package.
979
+ __path__ = [] # required for PEP 302 and PEP 451
980
+ __package__ = __name__ # see PEP 366 @ReservedAssignment
981
+ if globals().get("__spec__") is not None:
982
+ __spec__.submodule_search_locations = [] # PEP 451 @UndefinedVariable
983
+ # Remove other six meta path importers, since they cause problems. This can
984
+ # happen if six is removed from sys.modules and then reloaded. (Setuptools does
985
+ # this for some reason.)
986
+ if sys.meta_path:
987
+ for i, importer in enumerate(sys.meta_path):
988
+ # Here's some real nastiness: Another "instance" of the six module might
989
+ # be floating around. Therefore, we can't use isinstance() to check for
990
+ # the six meta path importer, since the other six instance will have
991
+ # inserted an importer with different class.
992
+ if (type(importer).__name__ == "_SixMetaPathImporter" and
993
+ importer.name == __name__):
994
+ del sys.meta_path[i]
995
+ break
996
+ del i, importer
997
+ # Finally, add the importer to the meta path import hook.
998
+ sys.meta_path.append(_importer)
MLPY/Lib/site-packages/typing_extensions.py ADDED
The diff for this file is too large to render. See raw diff