reach-vb HF staff commited on
Commit
803812e
1 Parent(s): c8e7ce2

4799229696a145898acfae86a49f8b88b6858651674b0f1d8137083b7feba481

Browse files
Files changed (50) hide show
  1. lib/python3.11/site-packages/huggingface_hub-0.20.2.dist-info/INSTALLER +1 -0
  2. lib/python3.11/site-packages/huggingface_hub-0.20.2.dist-info/LICENSE +201 -0
  3. lib/python3.11/site-packages/huggingface_hub-0.20.2.dist-info/METADATA +293 -0
  4. lib/python3.11/site-packages/huggingface_hub-0.20.2.dist-info/RECORD +147 -0
  5. lib/python3.11/site-packages/huggingface_hub-0.20.2.dist-info/REQUESTED +0 -0
  6. lib/python3.11/site-packages/huggingface_hub-0.20.2.dist-info/WHEEL +5 -0
  7. lib/python3.11/site-packages/huggingface_hub-0.20.2.dist-info/entry_points.txt +6 -0
  8. lib/python3.11/site-packages/huggingface_hub-0.20.2.dist-info/top_level.txt +1 -0
  9. lib/python3.11/site-packages/huggingface_hub/utils/_validators.py +230 -0
  10. lib/python3.11/site-packages/huggingface_hub/utils/endpoint_helpers.py +223 -0
  11. lib/python3.11/site-packages/huggingface_hub/utils/insecure_hashlib.py +34 -0
  12. lib/python3.11/site-packages/huggingface_hub/utils/logging.py +182 -0
  13. lib/python3.11/site-packages/huggingface_hub/utils/sha.py +28 -0
  14. lib/python3.11/site-packages/huggingface_hub/utils/tqdm.py +186 -0
  15. lib/python3.11/site-packages/idna-3.6.dist-info/INSTALLER +1 -0
  16. lib/python3.11/site-packages/idna-3.6.dist-info/LICENSE.md +31 -0
  17. lib/python3.11/site-packages/idna-3.6.dist-info/METADATA +243 -0
  18. lib/python3.11/site-packages/idna-3.6.dist-info/RECORD +22 -0
  19. lib/python3.11/site-packages/idna-3.6.dist-info/WHEEL +4 -0
  20. lib/python3.11/site-packages/idna/__init__.py +44 -0
  21. lib/python3.11/site-packages/idna/__pycache__/__init__.cpython-311.pyc +0 -0
  22. lib/python3.11/site-packages/idna/__pycache__/codec.cpython-311.pyc +0 -0
  23. lib/python3.11/site-packages/idna/__pycache__/compat.cpython-311.pyc +0 -0
  24. lib/python3.11/site-packages/idna/__pycache__/core.cpython-311.pyc +0 -0
  25. lib/python3.11/site-packages/idna/__pycache__/idnadata.cpython-311.pyc +0 -0
  26. lib/python3.11/site-packages/idna/__pycache__/intranges.cpython-311.pyc +0 -0
  27. lib/python3.11/site-packages/idna/__pycache__/package_data.cpython-311.pyc +0 -0
  28. lib/python3.11/site-packages/idna/__pycache__/uts46data.cpython-311.pyc +0 -0
  29. lib/python3.11/site-packages/idna/codec.py +118 -0
  30. lib/python3.11/site-packages/idna/compat.py +13 -0
  31. lib/python3.11/site-packages/idna/core.py +400 -0
  32. lib/python3.11/site-packages/idna/idnadata.py +2150 -0
  33. lib/python3.11/site-packages/idna/intranges.py +54 -0
  34. lib/python3.11/site-packages/idna/package_data.py +2 -0
  35. lib/python3.11/site-packages/idna/py.typed +0 -0
  36. lib/python3.11/site-packages/idna/uts46data.py +0 -0
  37. lib/python3.11/site-packages/isympy.py +342 -0
  38. lib/python3.11/site-packages/jinja2/__init__.py +37 -0
  39. lib/python3.11/site-packages/jinja2/__pycache__/__init__.cpython-311.pyc +0 -0
  40. lib/python3.11/site-packages/jinja2/__pycache__/_identifier.cpython-311.pyc +0 -0
  41. lib/python3.11/site-packages/jinja2/__pycache__/async_utils.cpython-311.pyc +0 -0
  42. lib/python3.11/site-packages/jinja2/__pycache__/bccache.cpython-311.pyc +0 -0
  43. lib/python3.11/site-packages/jinja2/__pycache__/compiler.cpython-311.pyc +0 -0
  44. lib/python3.11/site-packages/jinja2/__pycache__/constants.cpython-311.pyc +0 -0
  45. lib/python3.11/site-packages/jinja2/__pycache__/debug.cpython-311.pyc +0 -0
  46. lib/python3.11/site-packages/jinja2/__pycache__/defaults.cpython-311.pyc +0 -0
  47. lib/python3.11/site-packages/jinja2/__pycache__/environment.cpython-311.pyc +0 -0
  48. lib/python3.11/site-packages/jinja2/__pycache__/exceptions.cpython-311.pyc +0 -0
  49. lib/python3.11/site-packages/jinja2/__pycache__/ext.cpython-311.pyc +0 -0
  50. lib/python3.11/site-packages/jinja2/__pycache__/filters.cpython-311.pyc +0 -0
lib/python3.11/site-packages/huggingface_hub-0.20.2.dist-info/INSTALLER ADDED
@@ -0,0 +1 @@
 
 
1
+ pip
lib/python3.11/site-packages/huggingface_hub-0.20.2.dist-info/LICENSE ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [yyyy] [name of copyright owner]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
lib/python3.11/site-packages/huggingface_hub-0.20.2.dist-info/METADATA ADDED
@@ -0,0 +1,293 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.1
2
+ Name: huggingface-hub
3
+ Version: 0.20.2
4
+ Summary: Client library to download and publish models, datasets and other repos on the huggingface.co hub
5
+ Home-page: https://github.com/huggingface/huggingface_hub
6
+ Author: Hugging Face, Inc.
7
+ Author-email: julien@huggingface.co
8
+ License: Apache
9
+ Keywords: model-hub machine-learning models natural-language-processing deep-learning pytorch pretrained-models
10
+ Platform: UNKNOWN
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Intended Audience :: Education
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: License :: OSI Approved :: Apache Software License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Programming Language :: Python :: 3.8
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
23
+ Requires-Python: >=3.8.0
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: filelock
27
+ Requires-Dist: fsspec >=2023.5.0
28
+ Requires-Dist: requests
29
+ Requires-Dist: tqdm >=4.42.1
30
+ Requires-Dist: pyyaml >=5.1
31
+ Requires-Dist: typing-extensions >=3.7.4.3
32
+ Requires-Dist: packaging >=20.9
33
+ Provides-Extra: all
34
+ Requires-Dist: InquirerPy ==0.3.4 ; extra == 'all'
35
+ Requires-Dist: aiohttp ; extra == 'all'
36
+ Requires-Dist: jedi ; extra == 'all'
37
+ Requires-Dist: Jinja2 ; extra == 'all'
38
+ Requires-Dist: pytest ; extra == 'all'
39
+ Requires-Dist: pytest-cov ; extra == 'all'
40
+ Requires-Dist: pytest-env ; extra == 'all'
41
+ Requires-Dist: pytest-xdist ; extra == 'all'
42
+ Requires-Dist: pytest-vcr ; extra == 'all'
43
+ Requires-Dist: pytest-asyncio ; extra == 'all'
44
+ Requires-Dist: pytest-rerunfailures ; extra == 'all'
45
+ Requires-Dist: urllib3 <2.0 ; extra == 'all'
46
+ Requires-Dist: soundfile ; extra == 'all'
47
+ Requires-Dist: Pillow ; extra == 'all'
48
+ Requires-Dist: gradio ; extra == 'all'
49
+ Requires-Dist: numpy ; extra == 'all'
50
+ Requires-Dist: ruff >=0.1.3 ; extra == 'all'
51
+ Requires-Dist: mypy ==1.5.1 ; extra == 'all'
52
+ Requires-Dist: typing-extensions >=4.8.0 ; extra == 'all'
53
+ Requires-Dist: types-PyYAML ; extra == 'all'
54
+ Requires-Dist: types-requests ; extra == 'all'
55
+ Requires-Dist: types-simplejson ; extra == 'all'
56
+ Requires-Dist: types-toml ; extra == 'all'
57
+ Requires-Dist: types-tqdm ; extra == 'all'
58
+ Requires-Dist: types-urllib3 ; extra == 'all'
59
+ Requires-Dist: pydantic <2.0,>1.1 ; (python_version == "3.8") and extra == 'all'
60
+ Requires-Dist: pydantic <3.0,>1.1 ; (python_version > "3.8") and extra == 'all'
61
+ Provides-Extra: cli
62
+ Requires-Dist: InquirerPy ==0.3.4 ; extra == 'cli'
63
+ Provides-Extra: dev
64
+ Requires-Dist: InquirerPy ==0.3.4 ; extra == 'dev'
65
+ Requires-Dist: aiohttp ; extra == 'dev'
66
+ Requires-Dist: jedi ; extra == 'dev'
67
+ Requires-Dist: Jinja2 ; extra == 'dev'
68
+ Requires-Dist: pytest ; extra == 'dev'
69
+ Requires-Dist: pytest-cov ; extra == 'dev'
70
+ Requires-Dist: pytest-env ; extra == 'dev'
71
+ Requires-Dist: pytest-xdist ; extra == 'dev'
72
+ Requires-Dist: pytest-vcr ; extra == 'dev'
73
+ Requires-Dist: pytest-asyncio ; extra == 'dev'
74
+ Requires-Dist: pytest-rerunfailures ; extra == 'dev'
75
+ Requires-Dist: urllib3 <2.0 ; extra == 'dev'
76
+ Requires-Dist: soundfile ; extra == 'dev'
77
+ Requires-Dist: Pillow ; extra == 'dev'
78
+ Requires-Dist: gradio ; extra == 'dev'
79
+ Requires-Dist: numpy ; extra == 'dev'
80
+ Requires-Dist: ruff >=0.1.3 ; extra == 'dev'
81
+ Requires-Dist: mypy ==1.5.1 ; extra == 'dev'
82
+ Requires-Dist: typing-extensions >=4.8.0 ; extra == 'dev'
83
+ Requires-Dist: types-PyYAML ; extra == 'dev'
84
+ Requires-Dist: types-requests ; extra == 'dev'
85
+ Requires-Dist: types-simplejson ; extra == 'dev'
86
+ Requires-Dist: types-toml ; extra == 'dev'
87
+ Requires-Dist: types-tqdm ; extra == 'dev'
88
+ Requires-Dist: types-urllib3 ; extra == 'dev'
89
+ Requires-Dist: pydantic <2.0,>1.1 ; (python_version == "3.8") and extra == 'dev'
90
+ Requires-Dist: pydantic <3.0,>1.1 ; (python_version > "3.8") and extra == 'dev'
91
+ Provides-Extra: fastai
92
+ Requires-Dist: toml ; extra == 'fastai'
93
+ Requires-Dist: fastai >=2.4 ; extra == 'fastai'
94
+ Requires-Dist: fastcore >=1.3.27 ; extra == 'fastai'
95
+ Provides-Extra: inference
96
+ Requires-Dist: aiohttp ; extra == 'inference'
97
+ Requires-Dist: pydantic <2.0,>1.1 ; (python_version == "3.8") and extra == 'inference'
98
+ Requires-Dist: pydantic <3.0,>1.1 ; (python_version > "3.8") and extra == 'inference'
99
+ Provides-Extra: quality
100
+ Requires-Dist: ruff >=0.1.3 ; extra == 'quality'
101
+ Requires-Dist: mypy ==1.5.1 ; extra == 'quality'
102
+ Provides-Extra: tensorflow
103
+ Requires-Dist: tensorflow ; extra == 'tensorflow'
104
+ Requires-Dist: pydot ; extra == 'tensorflow'
105
+ Requires-Dist: graphviz ; extra == 'tensorflow'
106
+ Provides-Extra: testing
107
+ Requires-Dist: InquirerPy ==0.3.4 ; extra == 'testing'
108
+ Requires-Dist: aiohttp ; extra == 'testing'
109
+ Requires-Dist: jedi ; extra == 'testing'
110
+ Requires-Dist: Jinja2 ; extra == 'testing'
111
+ Requires-Dist: pytest ; extra == 'testing'
112
+ Requires-Dist: pytest-cov ; extra == 'testing'
113
+ Requires-Dist: pytest-env ; extra == 'testing'
114
+ Requires-Dist: pytest-xdist ; extra == 'testing'
115
+ Requires-Dist: pytest-vcr ; extra == 'testing'
116
+ Requires-Dist: pytest-asyncio ; extra == 'testing'
117
+ Requires-Dist: pytest-rerunfailures ; extra == 'testing'
118
+ Requires-Dist: urllib3 <2.0 ; extra == 'testing'
119
+ Requires-Dist: soundfile ; extra == 'testing'
120
+ Requires-Dist: Pillow ; extra == 'testing'
121
+ Requires-Dist: gradio ; extra == 'testing'
122
+ Requires-Dist: numpy ; extra == 'testing'
123
+ Requires-Dist: pydantic <2.0,>1.1 ; (python_version == "3.8") and extra == 'testing'
124
+ Requires-Dist: pydantic <3.0,>1.1 ; (python_version > "3.8") and extra == 'testing'
125
+ Provides-Extra: torch
126
+ Requires-Dist: torch ; extra == 'torch'
127
+ Provides-Extra: typing
128
+ Requires-Dist: typing-extensions >=4.8.0 ; extra == 'typing'
129
+ Requires-Dist: types-PyYAML ; extra == 'typing'
130
+ Requires-Dist: types-requests ; extra == 'typing'
131
+ Requires-Dist: types-simplejson ; extra == 'typing'
132
+ Requires-Dist: types-toml ; extra == 'typing'
133
+ Requires-Dist: types-tqdm ; extra == 'typing'
134
+ Requires-Dist: types-urllib3 ; extra == 'typing'
135
+
136
+ <p align="center">
137
+ <br/>
138
+ <img alt="huggingface_hub library logo" src="https://huggingface.co/datasets/huggingface/documentation-images/raw/main/huggingface_hub.svg" width="376" height="59" style="max-width: 100%;">
139
+ <br/>
140
+ </p>
141
+
142
+ <p align="center">
143
+ <i>The official Python client for the Huggingface Hub.</i>
144
+ </p>
145
+
146
+ <p align="center">
147
+ <a href="https://huggingface.co/docs/huggingface_hub/en/index"><img alt="Documentation" src="https://img.shields.io/website/http/huggingface.co/docs/huggingface_hub/index.svg?down_color=red&down_message=offline&up_message=online&label=doc"></a>
148
+ <a href="https://github.com/huggingface/huggingface_hub/releases"><img alt="GitHub release" src="https://img.shields.io/github/release/huggingface/huggingface_hub.svg"></a>
149
+ <a href="https://github.com/huggingface/huggingface_hub"><img alt="PyPi version" src="https://img.shields.io/pypi/pyversions/huggingface_hub.svg"></a>
150
+ <a href="https://pypi.org/project/huggingface-hub"><img alt="downloads" src="https://static.pepy.tech/badge/huggingface_hub/month"></a>
151
+ <a href="https://codecov.io/gh/huggingface/huggingface_hub"><img alt="Code coverage" src="https://codecov.io/gh/huggingface/huggingface_hub/branch/main/graph/badge.svg?token=RXP95LE2XL"></a>
152
+ </p>
153
+
154
+ <h4 align="center">
155
+ <p>
156
+ <b>English</b> |
157
+ <a href="https://github.com/huggingface/huggingface_hub/blob/main/README_de.md">Deutsch</a> |
158
+ <a href="https://github.com/huggingface/huggingface_hub/blob/main/README_hi.md">हिंदी</a> |
159
+ <a href="https://github.com/huggingface/huggingface_hub/blob/main/README_ko.md">한국어</a>
160
+ <p>
161
+ </h4>
162
+ ---
163
+
164
+ **Documentation**: <a href="https://hf.co/docs/huggingface_hub" target="_blank">https://hf.co/docs/huggingface_hub</a>
165
+
166
+ **Source Code**: <a href="https://github.com/huggingface/huggingface_hub" target="_blank">https://github.com/huggingface/huggingface_hub</a>
167
+
168
+ ---
169
+
170
+ ## Welcome to the huggingface_hub library
171
+
172
+ The `huggingface_hub` library allows you to interact with the [Hugging Face Hub](https://huggingface.co/), a platform democratizing open-source Machine Learning for creators and collaborators. Discover pre-trained models and datasets for your projects or play with the thousands of machine learning apps hosted on the Hub. You can also create and share your own models, datasets and demos with the community. The `huggingface_hub` library provides a simple way to do all these things with Python.
173
+
174
+ ## Key features
175
+
176
+ - [Download files](https://huggingface.co/docs/huggingface_hub/en/guides/download) from the Hub.
177
+ - [Upload files](https://huggingface.co/docs/huggingface_hub/en/guides/upload) to the Hub.
178
+ - [Manage your repositories](https://huggingface.co/docs/huggingface_hub/en/guides/repository).
179
+ - [Run Inference](https://huggingface.co/docs/huggingface_hub/en/guides/inference) on deployed models.
180
+ - [Search](https://huggingface.co/docs/huggingface_hub/en/guides/search) for models, datasets and Spaces.
181
+ - [Share Model Cards](https://huggingface.co/docs/huggingface_hub/en/guides/model-cards) to document your models.
182
+ - [Engage with the community](https://huggingface.co/docs/huggingface_hub/en/guides/community) through PRs and comments.
183
+
184
+ ## Installation
185
+
186
+ Install the `huggingface_hub` package with [pip](https://pypi.org/project/huggingface-hub/):
187
+
188
+ ```bash
189
+ pip install huggingface_hub
190
+ ```
191
+
192
+ If you prefer, you can also install it with [conda](https://huggingface.co/docs/huggingface_hub/en/installation#install-with-conda).
193
+
194
+ In order to keep the package minimal by default, `huggingface_hub` comes with optional dependencies useful for some use cases. For example, if you want have a complete experience for Inference, run:
195
+
196
+ ```bash
197
+ pip install huggingface_hub[inference]
198
+ ```
199
+
200
+ To learn more installation and optional dependencies, check out the [installation guide](https://huggingface.co/docs/huggingface_hub/en/installation).
201
+
202
+ ## Quick start
203
+
204
+ ### Download files
205
+
206
+ Download a single file
207
+
208
+ ```py
209
+ from huggingface_hub import hf_hub_download
210
+
211
+ hf_hub_download(repo_id="tiiuae/falcon-7b-instruct", filename="config.json")
212
+ ```
213
+
214
+ Or an entire repository
215
+
216
+ ```py
217
+ from huggingface_hub import snapshot_download
218
+
219
+ snapshot_download("stabilityai/stable-diffusion-2-1")
220
+ ```
221
+
222
+ Files will be downloaded in a local cache folder. More details in [this guide](https://huggingface.co/docs/huggingface_hub/en/guides/manage-cache).
223
+
224
+ ### Login
225
+
226
+ The Hugging Face Hub uses tokens to authenticate applications (see [docs](https://huggingface.co/docs/hub/security-tokens)). To login your machine, run the following CLI:
227
+
228
+ ```bash
229
+ huggingface-cli login
230
+ # or using an environment variable
231
+ huggingface-cli login --token $HUGGINGFACE_TOKEN
232
+ ```
233
+
234
+ ### Create a repository
235
+
236
+ ```py
237
+ from huggingface_hub import create_repo
238
+
239
+ create_repo(repo_id="super-cool-model")
240
+ ```
241
+
242
+ ### Upload files
243
+
244
+ Upload a single file
245
+
246
+ ```py
247
+ from huggingface_hub import upload_file
248
+
249
+ upload_file(
250
+ path_or_fileobj="/home/lysandre/dummy-test/README.md",
251
+ path_in_repo="README.md",
252
+ repo_id="lysandre/test-model",
253
+ )
254
+ ```
255
+
256
+ Or an entire folder
257
+
258
+ ```py
259
+ from huggingface_hub import upload_folder
260
+
261
+ upload_folder(
262
+ folder_path="/path/to/local/space",
263
+ repo_id="username/my-cool-space",
264
+ repo_type="space",
265
+ )
266
+ ```
267
+
268
+ For details in the [upload guide](https://huggingface.co/docs/huggingface_hub/en/guides/upload).
269
+
270
+ ## Integrating to the Hub.
271
+
272
+ We're partnering with cool open source ML libraries to provide free model hosting and versioning. You can find the existing integrations [here](https://huggingface.co/docs/hub/libraries).
273
+
274
+ The advantages are:
275
+
276
+ - Free model or dataset hosting for libraries and their users.
277
+ - Built-in file versioning, even with very large files, thanks to a git-based approach.
278
+ - Hosted inference API for all models publicly available.
279
+ - In-browser widgets to play with the uploaded models.
280
+ - Anyone can upload a new model for your library, they just need to add the corresponding tag for the model to be discoverable.
281
+ - Fast downloads! We use Cloudfront (a CDN) to geo-replicate downloads so they're blazing fast from anywhere on the globe.
282
+ - Usage stats and more features to come.
283
+
284
+ If you would like to integrate your library, feel free to open an issue to begin the discussion. We wrote a [step-by-step guide](https://huggingface.co/docs/hub/adding-a-library) with ❤️ showing how to do this integration.
285
+
286
+ ## Contributions (feature requests, bugs, etc.) are super welcome 💙💚💛💜🧡❤️
287
+
288
+ Everyone is welcome to contribute, and we value everybody's contribution. Code is not the only way to help the community.
289
+ Answering questions, helping others, reaching out and improving the documentations are immensely valuable to the community.
290
+ We wrote a [contribution guide](https://github.com/huggingface/huggingface_hub/blob/main/CONTRIBUTING.md) to summarize
291
+ how to get started to contribute to this repository.
292
+
293
+
lib/python3.11/site-packages/huggingface_hub-0.20.2.dist-info/RECORD ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ../../../bin/huggingface-cli,sha256=42ZeW_3Nn1vHZKQItmZ_VOOsdDLj25vF8xg4DWUhluQ,302
2
+ huggingface_hub-0.20.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
3
+ huggingface_hub-0.20.2.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
4
+ huggingface_hub-0.20.2.dist-info/METADATA,sha256=D1vK91f8NEHzMiWLSl7_TQs6rZ6cr0E4ecRkkFB0lMM,12930
5
+ huggingface_hub-0.20.2.dist-info/RECORD,,
6
+ huggingface_hub-0.20.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ huggingface_hub-0.20.2.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
8
+ huggingface_hub-0.20.2.dist-info/entry_points.txt,sha256=Y3Z2L02rBG7va_iE6RPXolIgwOdwUFONyRN3kXMxZ0g,131
9
+ huggingface_hub-0.20.2.dist-info/top_level.txt,sha256=8KzlQJAY4miUvjAssOAJodqKOw3harNzuiwGQ9qLSSk,16
10
+ huggingface_hub/__init__.py,sha256=ixK6-0G7PFdH1mCZ9c5g8ZuYHsxSpVo8TTuA7O0mun8,20809
11
+ huggingface_hub/__pycache__/__init__.cpython-311.pyc,,
12
+ huggingface_hub/__pycache__/_commit_api.cpython-311.pyc,,
13
+ huggingface_hub/__pycache__/_commit_scheduler.cpython-311.pyc,,
14
+ huggingface_hub/__pycache__/_inference_endpoints.cpython-311.pyc,,
15
+ huggingface_hub/__pycache__/_login.cpython-311.pyc,,
16
+ huggingface_hub/__pycache__/_multi_commits.cpython-311.pyc,,
17
+ huggingface_hub/__pycache__/_snapshot_download.cpython-311.pyc,,
18
+ huggingface_hub/__pycache__/_space_api.cpython-311.pyc,,
19
+ huggingface_hub/__pycache__/_tensorboard_logger.cpython-311.pyc,,
20
+ huggingface_hub/__pycache__/_webhooks_payload.cpython-311.pyc,,
21
+ huggingface_hub/__pycache__/_webhooks_server.cpython-311.pyc,,
22
+ huggingface_hub/__pycache__/community.cpython-311.pyc,,
23
+ huggingface_hub/__pycache__/constants.cpython-311.pyc,,
24
+ huggingface_hub/__pycache__/fastai_utils.cpython-311.pyc,,
25
+ huggingface_hub/__pycache__/file_download.cpython-311.pyc,,
26
+ huggingface_hub/__pycache__/hf_api.cpython-311.pyc,,
27
+ huggingface_hub/__pycache__/hf_file_system.cpython-311.pyc,,
28
+ huggingface_hub/__pycache__/hub_mixin.cpython-311.pyc,,
29
+ huggingface_hub/__pycache__/inference_api.cpython-311.pyc,,
30
+ huggingface_hub/__pycache__/keras_mixin.cpython-311.pyc,,
31
+ huggingface_hub/__pycache__/lfs.cpython-311.pyc,,
32
+ huggingface_hub/__pycache__/repocard.cpython-311.pyc,,
33
+ huggingface_hub/__pycache__/repocard_data.cpython-311.pyc,,
34
+ huggingface_hub/__pycache__/repository.cpython-311.pyc,,
35
+ huggingface_hub/_commit_api.py,sha256=LWwx0PmTHzh-gwO6-cl0GWTrSnzCy8tfZ8DDCxnfb7Y,27795
36
+ huggingface_hub/_commit_scheduler.py,sha256=FgfjYv3E0oK3iBxDdy45Y7t78FWkmjnBR4dRd5aZviU,13653
37
+ huggingface_hub/_inference_endpoints.py,sha256=FW36nfm9UNNnc6L6hyL2KLiItglPGcQuYJ6DA2w4Gp4,14929
38
+ huggingface_hub/_login.py,sha256=8Y_OlSayd185u5lInGvY4zeYzBKaaaMBwTJl7MhIgSE,15325
39
+ huggingface_hub/_multi_commits.py,sha256=xEiS4N8ZmIrrDxVGS93mA33VoVrbhlAp5T8M_XQTMiA,12518
40
+ huggingface_hub/_snapshot_download.py,sha256=-0Kpp1gG1m2Slkbyj4GhvdOZeqzDTChqMQ1TGFHNjnA,15377
41
+ huggingface_hub/_space_api.py,sha256=Kr1rRpbMVoUs51U52KFY_FQcMA9TEC7RDCKGB4nzGus,5116
42
+ huggingface_hub/_tensorboard_logger.py,sha256=3W8eUS3jhZ3WyVG9Hi6rVwZC-jcCyRunBns5vIniGfA,7165
43
+ huggingface_hub/_webhooks_payload.py,sha256=raqcWHIw98bsFvam5kkqiSEbDA8W0TU055ZlpmbUrWs,2831
44
+ huggingface_hub/_webhooks_server.py,sha256=u3Kua_O4okXPgnH60GDIhJTDEEyIiVX6Go4CUNX4ifE,15196
45
+ huggingface_hub/commands/__init__.py,sha256=AkbM2a-iGh0Vq_xAWhK3mu3uZ44km8-X5uWjKcvcrUQ,928
46
+ huggingface_hub/commands/__pycache__/__init__.cpython-311.pyc,,
47
+ huggingface_hub/commands/__pycache__/_cli_utils.cpython-311.pyc,,
48
+ huggingface_hub/commands/__pycache__/delete_cache.cpython-311.pyc,,
49
+ huggingface_hub/commands/__pycache__/download.cpython-311.pyc,,
50
+ huggingface_hub/commands/__pycache__/env.cpython-311.pyc,,
51
+ huggingface_hub/commands/__pycache__/huggingface_cli.cpython-311.pyc,,
52
+ huggingface_hub/commands/__pycache__/lfs.cpython-311.pyc,,
53
+ huggingface_hub/commands/__pycache__/scan_cache.cpython-311.pyc,,
54
+ huggingface_hub/commands/__pycache__/upload.cpython-311.pyc,,
55
+ huggingface_hub/commands/__pycache__/user.cpython-311.pyc,,
56
+ huggingface_hub/commands/_cli_utils.py,sha256=VA_3cHzIlsEQmKPnfNTgJNI36UtcrxRmfB44RdbP1LA,1970
57
+ huggingface_hub/commands/delete_cache.py,sha256=9Nn2ihdORPpkULkhAzju6aYar2rsa4laSE38rt8645I,16130
58
+ huggingface_hub/commands/download.py,sha256=sthMmLQD3E0uybAlGoYt1Mpk_8w7r_im7FyDGJrZWyo,9161
59
+ huggingface_hub/commands/env.py,sha256=LJjOxo-m0DrvQdyhWGjnLGtWt91ec63BMI4FQ-5bWXQ,1225
60
+ huggingface_hub/commands/huggingface_cli.py,sha256=o862C98OcZoyqCzY7mNpia1h0KaLJUgSb0y10ot8sxA,1924
61
+ huggingface_hub/commands/lfs.py,sha256=6E769AoRxUDiIOapn1_QvTbNtdUnUiouu2F4Gopp4do,7318
62
+ huggingface_hub/commands/scan_cache.py,sha256=nMEJxBScezxs00EWyAvJtWCjhwxCL1YlBE6qNfiT3RY,5182
63
+ huggingface_hub/commands/upload.py,sha256=vrac37T3sYwzaf6gpVR5qWzwh4fOhqakRvDUrLEx4Kg,13621
64
+ huggingface_hub/commands/user.py,sha256=QApZJOCQEHADhjunM3hlQ72uqHsearCiCE4SdpzGdcc,6893
65
+ huggingface_hub/community.py,sha256=SHc_LOZYSzCuk5aA73InLObrrnW-0MJuv2e63FXwg50,12202
66
+ huggingface_hub/constants.py,sha256=fYBWYCLnyFOOldgN6a8E8PLmDVuGNdnKhfm5Qu8SLfE,7717
67
+ huggingface_hub/fastai_utils.py,sha256=5I7zAfgHJU_mZnxnf9wgWTHrCRu_EAV8VTangDVfE_o,16676
68
+ huggingface_hub/file_download.py,sha256=g97wMUn2yYAG8Xm8ZJevkqZSUyrQO_7-l18E6f_b_DE,75284
69
+ huggingface_hub/hf_api.py,sha256=NDG8cEpM_3Z2DddirrNbCELY9sQxDiamgOajO6sUBck,356971
70
+ huggingface_hub/hf_file_system.py,sha256=tTVDwh_60rpH_Iqvrf6mo_Z0ZhcY_4mHjxs1sQ6snrE,29535
71
+ huggingface_hub/hub_mixin.py,sha256=yoOrifi6Vq7N8L_DjXYtltvdURrfbx1XEyt59wyAaXs,16099
72
+ huggingface_hub/inference/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
+ huggingface_hub/inference/__pycache__/__init__.cpython-311.pyc,,
74
+ huggingface_hub/inference/__pycache__/_client.cpython-311.pyc,,
75
+ huggingface_hub/inference/__pycache__/_common.cpython-311.pyc,,
76
+ huggingface_hub/inference/__pycache__/_text_generation.cpython-311.pyc,,
77
+ huggingface_hub/inference/__pycache__/_types.cpython-311.pyc,,
78
+ huggingface_hub/inference/_client.py,sha256=hhJSPBmDw5dVw1LoH2255-pX4uwMo8vHSkrhB_m54xY,86559
79
+ huggingface_hub/inference/_common.py,sha256=8GaagYW1hoSWjilWgMdbpJU4sK78l1RPKPBsvGHpXGU,11331
80
+ huggingface_hub/inference/_generated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
+ huggingface_hub/inference/_generated/__pycache__/__init__.cpython-311.pyc,,
82
+ huggingface_hub/inference/_generated/__pycache__/_async_client.cpython-311.pyc,,
83
+ huggingface_hub/inference/_generated/_async_client.py,sha256=v6CRLNY2GJz1TCzlPQVvphmeJL_OZ6yfupG2fF_WmJg,89343
84
+ huggingface_hub/inference/_text_generation.py,sha256=VGZ7bulJmUc2iXKDAr1zaArC3vgAktkfSdWWp9HzIR4,20349
85
+ huggingface_hub/inference/_types.py,sha256=fRrORbJbZqCxZVQG4HK4Zx4xHwPej-Hppz_cb1wJ1I0,5664
86
+ huggingface_hub/inference_api.py,sha256=UXOKu_Ez2I3hDsjguqCcCrj03WFDndehpngYiIAucdg,8331
87
+ huggingface_hub/keras_mixin.py,sha256=fxVjwm742fwsLwbuNVt7Slo3KAjEX7sCcTudKnolPZM,18741
88
+ huggingface_hub/lfs.py,sha256=CnXzAoDyGDSsNDN4b88-7hXhx1BFSsbFY6vGc3O2lRs,19122
89
+ huggingface_hub/repocard.py,sha256=kJGupeVIE2eQqo4sOGrUWRf6vOdkKdQtryMdZKNxqoc,34257
90
+ huggingface_hub/repocard_data.py,sha256=ESn22o1V5ynxwQp0JSxUSzSuWE9J0KBzj9FOEITNPCo,31077
91
+ huggingface_hub/repository.py,sha256=8oNhKNvJRye3dr67cTn8faKkBSiWFgvj7bIBlOpI-8U,54489
92
+ huggingface_hub/templates/datasetcard_template.md,sha256=tWvaTQhO3WkU9Igi8Odwb44my9oYKAakb2ArfnTn1AU,5502
93
+ huggingface_hub/templates/modelcard_template.md,sha256=-z_riTFlcsX5pUja2FDd9ySGOkNy8vr6hroLct1hjJI,6874
94
+ huggingface_hub/utils/__init__.py,sha256=1msx7YIf9N22P92k3rcpZel2zvLqs-TsAxylD9WDavo,3239
95
+ huggingface_hub/utils/__pycache__/__init__.cpython-311.pyc,,
96
+ huggingface_hub/utils/__pycache__/_cache_assets.cpython-311.pyc,,
97
+ huggingface_hub/utils/__pycache__/_cache_manager.cpython-311.pyc,,
98
+ huggingface_hub/utils/__pycache__/_chunk_utils.cpython-311.pyc,,
99
+ huggingface_hub/utils/__pycache__/_datetime.cpython-311.pyc,,
100
+ huggingface_hub/utils/__pycache__/_deprecation.cpython-311.pyc,,
101
+ huggingface_hub/utils/__pycache__/_errors.cpython-311.pyc,,
102
+ huggingface_hub/utils/__pycache__/_experimental.cpython-311.pyc,,
103
+ huggingface_hub/utils/__pycache__/_fixes.cpython-311.pyc,,
104
+ huggingface_hub/utils/__pycache__/_git_credential.cpython-311.pyc,,
105
+ huggingface_hub/utils/__pycache__/_headers.cpython-311.pyc,,
106
+ huggingface_hub/utils/__pycache__/_hf_folder.cpython-311.pyc,,
107
+ huggingface_hub/utils/__pycache__/_http.cpython-311.pyc,,
108
+ huggingface_hub/utils/__pycache__/_pagination.cpython-311.pyc,,
109
+ huggingface_hub/utils/__pycache__/_paths.cpython-311.pyc,,
110
+ huggingface_hub/utils/__pycache__/_runtime.cpython-311.pyc,,
111
+ huggingface_hub/utils/__pycache__/_safetensors.cpython-311.pyc,,
112
+ huggingface_hub/utils/__pycache__/_subprocess.cpython-311.pyc,,
113
+ huggingface_hub/utils/__pycache__/_telemetry.cpython-311.pyc,,
114
+ huggingface_hub/utils/__pycache__/_token.cpython-311.pyc,,
115
+ huggingface_hub/utils/__pycache__/_typing.cpython-311.pyc,,
116
+ huggingface_hub/utils/__pycache__/_validators.cpython-311.pyc,,
117
+ huggingface_hub/utils/__pycache__/endpoint_helpers.cpython-311.pyc,,
118
+ huggingface_hub/utils/__pycache__/insecure_hashlib.cpython-311.pyc,,
119
+ huggingface_hub/utils/__pycache__/logging.cpython-311.pyc,,
120
+ huggingface_hub/utils/__pycache__/sha.cpython-311.pyc,,
121
+ huggingface_hub/utils/__pycache__/tqdm.cpython-311.pyc,,
122
+ huggingface_hub/utils/_cache_assets.py,sha256=kai77HPQMfYpROouMBQCr_gdBCaeTm996Sqj0dExbNg,5728
123
+ huggingface_hub/utils/_cache_manager.py,sha256=zRBo37DaHS6IDWyQ_53oCL4-U6p--inAGsC8DLtAQ_I,29103
124
+ huggingface_hub/utils/_chunk_utils.py,sha256=6VRyjiGr2bPupPl1azSUTxKuJ51wdgELipwJ2YRfH5U,2129
125
+ huggingface_hub/utils/_datetime.py,sha256=7pwXpJy2J4mNb4PwNxilYynvhPWMYX261pHiNbfUSEg,2918
126
+ huggingface_hub/utils/_deprecation.py,sha256=HZhRGGUX_QMKBBBwHHlffLtmCSK01TOpeXHefZbPfwI,4872
127
+ huggingface_hub/utils/_errors.py,sha256=nnvanhnSqX9nQ2LvOxNI38W5mYLYVYEQLhRr89LpQzc,13697
128
+ huggingface_hub/utils/_experimental.py,sha256=rBx4gV2NU1dT_OfeRzsCmCWyIF4Wxcf0PdkmIASoT6o,2394
129
+ huggingface_hub/utils/_fixes.py,sha256=wFvfTYj62Il2OwkQB_Qp0xONG6SARQ5oEkT3_FhB4rc,2437
130
+ huggingface_hub/utils/_git_credential.py,sha256=NMfMmuqdub_QX3T2d32Jhpf3RBnf2eh4VnDhHoqyZRA,4595
131
+ huggingface_hub/utils/_headers.py,sha256=wz0kPrpu9PHpeCIJAq8MBiHuR2HbNWGukd0QgWS6lWo,9344
132
+ huggingface_hub/utils/_hf_folder.py,sha256=9FlyCbiMP-PuyR4MP8sh5wiYbphkCjP18sCma0P7XDw,4488
133
+ huggingface_hub/utils/_http.py,sha256=qJ9wlsv-SU9L4Epr8FLHznY3COIcOrUUmGMjJXfrQvI,12889
134
+ huggingface_hub/utils/_pagination.py,sha256=VfpmMLyNCRo24fw0o_yWysMK69d9M6sSg2-nWtuypO4,1840
135
+ huggingface_hub/utils/_paths.py,sha256=nUaxXN-R2EcWfHE8ivFWfHqEKMIvXEdUeCGDC_QHMqc,4397
136
+ huggingface_hub/utils/_runtime.py,sha256=6sMMfwixkJAJj7pqYAva9A1g3-MBNWenKtlvBB985aY,10186
137
+ huggingface_hub/utils/_safetensors.py,sha256=EE9v9HflWBUqIegn0dCGHgNu9G9Db3v2aszvG4ldPF8,4876
138
+ huggingface_hub/utils/_subprocess.py,sha256=LW9b8TWh9rsm3pW9_5b-mVV_AtYNyLXgC6e09SthkWI,4616
139
+ huggingface_hub/utils/_telemetry.py,sha256=jHAdgWNcL9nVvMT3ec3i78O-cwL09GnlifuokzpQjMI,4641
140
+ huggingface_hub/utils/_token.py,sha256=e3GGABkd6zPYLE4-RdUxnH6vyen4vsvNxEl2PgStiTA,5475
141
+ huggingface_hub/utils/_typing.py,sha256=zTA0nTJAILGveXbJKyeh6u9uIagrFgPoRqr-uCEGDQI,921
142
+ huggingface_hub/utils/_validators.py,sha256=3ZmHubjslDRwFYe1oKyaUw6DZrc3DsuV2gABPrx7PTw,9358
143
+ huggingface_hub/utils/endpoint_helpers.py,sha256=reLS2ic6_BTe9RuZY5WLcd5dLjIWt5Klh5EHZ7XvHng,8533
144
+ huggingface_hub/utils/insecure_hashlib.py,sha256=OjxlvtSQHpbLp9PWSrXBDJ0wHjxCBU-SQJgucEEXDbU,1058
145
+ huggingface_hub/utils/logging.py,sha256=mARNwc5gY6apMQ9IM5zymn-RsYnFbYW3b0HDMYXmBS0,4729
146
+ huggingface_hub/utils/sha.py,sha256=IVi7CfBthfu-ExLduY_CQltTy-tVGTbrvURCTOWKcLA,901
147
+ huggingface_hub/utils/tqdm.py,sha256=zBWgoxxwHooOceABVREVqSNpJGcMpaByKFVDU8VbuUQ,6334
lib/python3.11/site-packages/huggingface_hub-0.20.2.dist-info/REQUESTED ADDED
File without changes
lib/python3.11/site-packages/huggingface_hub-0.20.2.dist-info/WHEEL ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.42.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
lib/python3.11/site-packages/huggingface_hub-0.20.2.dist-info/entry_points.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ [console_scripts]
2
+ huggingface-cli = huggingface_hub.commands.huggingface_cli:main
3
+
4
+ [fsspec.specs]
5
+ hf=huggingface_hub.HfFileSystem
6
+
lib/python3.11/site-packages/huggingface_hub-0.20.2.dist-info/top_level.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ huggingface_hub
lib/python3.11/site-packages/huggingface_hub/utils/_validators.py ADDED
@@ -0,0 +1,230 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # coding=utf-8
2
+ # Copyright 2022-present, the HuggingFace Inc. team.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ """Contains utilities to validate argument values in `huggingface_hub`."""
16
+ import inspect
17
+ import re
18
+ import warnings
19
+ from functools import wraps
20
+ from itertools import chain
21
+ from typing import Any, Dict
22
+
23
+ from ._typing import CallableT
24
+
25
+
26
+ REPO_ID_REGEX = re.compile(
27
+ r"""
28
+ ^
29
+ (\b[\w\-.]+\b/)? # optional namespace (username or organization)
30
+ \b # starts with a word boundary
31
+ [\w\-.]{1,96} # repo_name: alphanumeric + . _ -
32
+ \b # ends with a word boundary
33
+ $
34
+ """,
35
+ flags=re.VERBOSE,
36
+ )
37
+
38
+
39
+ class HFValidationError(ValueError):
40
+ """Generic exception thrown by `huggingface_hub` validators.
41
+
42
+ Inherits from [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError).
43
+ """
44
+
45
+
46
+ def validate_hf_hub_args(fn: CallableT) -> CallableT:
47
+ """Validate values received as argument for any public method of `huggingface_hub`.
48
+
49
+ The goal of this decorator is to harmonize validation of arguments reused
50
+ everywhere. By default, all defined validators are tested.
51
+
52
+ Validators:
53
+ - [`~utils.validate_repo_id`]: `repo_id` must be `"repo_name"`
54
+ or `"namespace/repo_name"`. Namespace is a username or an organization.
55
+ - [`~utils.smoothly_deprecate_use_auth_token`]: Use `token` instead of
56
+ `use_auth_token` (only if `use_auth_token` is not expected by the decorated
57
+ function - in practice, always the case in `huggingface_hub`).
58
+
59
+ Example:
60
+ ```py
61
+ >>> from huggingface_hub.utils import validate_hf_hub_args
62
+
63
+ >>> @validate_hf_hub_args
64
+ ... def my_cool_method(repo_id: str):
65
+ ... print(repo_id)
66
+
67
+ >>> my_cool_method(repo_id="valid_repo_id")
68
+ valid_repo_id
69
+
70
+ >>> my_cool_method("other..repo..id")
71
+ huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.
72
+
73
+ >>> my_cool_method(repo_id="other..repo..id")
74
+ huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.
75
+
76
+ >>> @validate_hf_hub_args
77
+ ... def my_cool_auth_method(token: str):
78
+ ... print(token)
79
+
80
+ >>> my_cool_auth_method(token="a token")
81
+ "a token"
82
+
83
+ >>> my_cool_auth_method(use_auth_token="a use_auth_token")
84
+ "a use_auth_token"
85
+
86
+ >>> my_cool_auth_method(token="a token", use_auth_token="a use_auth_token")
87
+ UserWarning: Both `token` and `use_auth_token` are passed (...)
88
+ "a token"
89
+ ```
90
+
91
+ Raises:
92
+ [`~utils.HFValidationError`]:
93
+ If an input is not valid.
94
+ """
95
+ # TODO: add an argument to opt-out validation for specific argument?
96
+ signature = inspect.signature(fn)
97
+
98
+ # Should the validator switch `use_auth_token` values to `token`? In practice, always
99
+ # True in `huggingface_hub`. Might not be the case in a downstream library.
100
+ check_use_auth_token = "use_auth_token" not in signature.parameters and "token" in signature.parameters
101
+
102
+ @wraps(fn)
103
+ def _inner_fn(*args, **kwargs):
104
+ has_token = False
105
+ for arg_name, arg_value in chain(
106
+ zip(signature.parameters, args), # Args values
107
+ kwargs.items(), # Kwargs values
108
+ ):
109
+ if arg_name in ["repo_id", "from_id", "to_id"]:
110
+ validate_repo_id(arg_value)
111
+
112
+ elif arg_name == "token" and arg_value is not None:
113
+ has_token = True
114
+
115
+ if check_use_auth_token:
116
+ kwargs = smoothly_deprecate_use_auth_token(fn_name=fn.__name__, has_token=has_token, kwargs=kwargs)
117
+
118
+ return fn(*args, **kwargs)
119
+
120
+ return _inner_fn # type: ignore
121
+
122
+
123
+ def validate_repo_id(repo_id: str) -> None:
124
+ """Validate `repo_id` is valid.
125
+
126
+ This is not meant to replace the proper validation made on the Hub but rather to
127
+ avoid local inconsistencies whenever possible (example: passing `repo_type` in the
128
+ `repo_id` is forbidden).
129
+
130
+ Rules:
131
+ - Between 1 and 96 characters.
132
+ - Either "repo_name" or "namespace/repo_name"
133
+ - [a-zA-Z0-9] or "-", "_", "."
134
+ - "--" and ".." are forbidden
135
+
136
+ Valid: `"foo"`, `"foo/bar"`, `"123"`, `"Foo-BAR_foo.bar123"`
137
+
138
+ Not valid: `"datasets/foo/bar"`, `".repo_id"`, `"foo--bar"`, `"foo.git"`
139
+
140
+ Example:
141
+ ```py
142
+ >>> from huggingface_hub.utils import validate_repo_id
143
+ >>> validate_repo_id(repo_id="valid_repo_id")
144
+ >>> validate_repo_id(repo_id="other..repo..id")
145
+ huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.
146
+ ```
147
+
148
+ Discussed in https://github.com/huggingface/huggingface_hub/issues/1008.
149
+ In moon-landing (internal repository):
150
+ - https://github.com/huggingface/moon-landing/blob/main/server/lib/Names.ts#L27
151
+ - https://github.com/huggingface/moon-landing/blob/main/server/views/components/NewRepoForm/NewRepoForm.svelte#L138
152
+ """
153
+ if not isinstance(repo_id, str):
154
+ # Typically, a Path is not a repo_id
155
+ raise HFValidationError(f"Repo id must be a string, not {type(repo_id)}: '{repo_id}'.")
156
+
157
+ if repo_id.count("/") > 1:
158
+ raise HFValidationError(
159
+ "Repo id must be in the form 'repo_name' or 'namespace/repo_name':"
160
+ f" '{repo_id}'. Use `repo_type` argument if needed."
161
+ )
162
+
163
+ if not REPO_ID_REGEX.match(repo_id):
164
+ raise HFValidationError(
165
+ "Repo id must use alphanumeric chars or '-', '_', '.', '--' and '..' are"
166
+ " forbidden, '-' and '.' cannot start or end the name, max length is 96:"
167
+ f" '{repo_id}'."
168
+ )
169
+
170
+ if "--" in repo_id or ".." in repo_id:
171
+ raise HFValidationError(f"Cannot have -- or .. in repo_id: '{repo_id}'.")
172
+
173
+ if repo_id.endswith(".git"):
174
+ raise HFValidationError(f"Repo_id cannot end by '.git': '{repo_id}'.")
175
+
176
+
177
+ def smoothly_deprecate_use_auth_token(fn_name: str, has_token: bool, kwargs: Dict[str, Any]) -> Dict[str, Any]:
178
+ """Smoothly deprecate `use_auth_token` in the `huggingface_hub` codebase.
179
+
180
+ The long-term goal is to remove any mention of `use_auth_token` in the codebase in
181
+ favor of a unique and less verbose `token` argument. This will be done a few steps:
182
+
183
+ 0. Step 0: methods that require a read-access to the Hub use the `use_auth_token`
184
+ argument (`str`, `bool` or `None`). Methods requiring write-access have a `token`
185
+ argument (`str`, `None`). This implicit rule exists to be able to not send the
186
+ token when not necessary (`use_auth_token=False`) even if logged in.
187
+
188
+ 1. Step 1: we want to harmonize everything and use `token` everywhere (supporting
189
+ `token=False` for read-only methods). In order not to break existing code, if
190
+ `use_auth_token` is passed to a function, the `use_auth_token` value is passed
191
+ as `token` instead, without any warning.
192
+ a. Corner case: if both `use_auth_token` and `token` values are passed, a warning
193
+ is thrown and the `use_auth_token` value is ignored.
194
+
195
+ 2. Step 2: Once it is release, we should push downstream libraries to switch from
196
+ `use_auth_token` to `token` as much as possible, but without throwing a warning
197
+ (e.g. manually create issues on the corresponding repos).
198
+
199
+ 3. Step 3: After a transitional period (6 months e.g. until April 2023?), we update
200
+ `huggingface_hub` to throw a warning on `use_auth_token`. Hopefully, very few
201
+ users will be impacted as it would have already been fixed.
202
+ In addition, unit tests in `huggingface_hub` must be adapted to expect warnings
203
+ to be thrown (but still use `use_auth_token` as before).
204
+
205
+ 4. Step 4: After a normal deprecation cycle (3 releases ?), remove this validator.
206
+ `use_auth_token` will definitely not be supported.
207
+ In addition, we update unit tests in `huggingface_hub` to use `token` everywhere.
208
+
209
+ This has been discussed in:
210
+ - https://github.com/huggingface/huggingface_hub/issues/1094.
211
+ - https://github.com/huggingface/huggingface_hub/pull/928
212
+ - (related) https://github.com/huggingface/huggingface_hub/pull/1064
213
+ """
214
+ new_kwargs = kwargs.copy() # do not mutate input !
215
+
216
+ use_auth_token = new_kwargs.pop("use_auth_token", None) # remove from kwargs
217
+ if use_auth_token is not None:
218
+ if has_token:
219
+ warnings.warn(
220
+ "Both `token` and `use_auth_token` are passed to"
221
+ f" `{fn_name}` with non-None values. `token` is now the"
222
+ " preferred argument to pass a User Access Token."
223
+ " `use_auth_token` value will be ignored."
224
+ )
225
+ else:
226
+ # `token` argument is not passed and a non-None value is passed in
227
+ # `use_auth_token` => use `use_auth_token` value as `token` kwarg.
228
+ new_kwargs["token"] = use_auth_token
229
+
230
+ return new_kwargs
lib/python3.11/site-packages/huggingface_hub/utils/endpoint_helpers.py ADDED
@@ -0,0 +1,223 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Licensed under the Apache License, Version 2.0 (the "License");
2
+ # you may not use this file except in compliance with the License.
3
+ # You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.
12
+ """
13
+ Helpful utility functions and classes in relation to exploring API endpoints
14
+ with the aim for a user-friendly interface.
15
+ """
16
+ import math
17
+ import re
18
+ from dataclasses import dataclass
19
+ from typing import TYPE_CHECKING, List, Optional, Union
20
+
21
+ from ..repocard_data import ModelCardData
22
+
23
+
24
+ if TYPE_CHECKING:
25
+ from ..hf_api import ModelInfo
26
+
27
+
28
+ def _is_emission_within_treshold(model_info: "ModelInfo", minimum_threshold: float, maximum_threshold: float) -> bool:
29
+ """Checks if a model's emission is within a given threshold.
30
+
31
+ Args:
32
+ model_info (`ModelInfo`):
33
+ A model info object containing the model's emission information.
34
+ minimum_threshold (`float`):
35
+ A minimum carbon threshold to filter by, such as 1.
36
+ maximum_threshold (`float`):
37
+ A maximum carbon threshold to filter by, such as 10.
38
+
39
+ Returns:
40
+ `bool`: Whether the model's emission is within the given threshold.
41
+ """
42
+ if minimum_threshold is None and maximum_threshold is None:
43
+ raise ValueError("Both `minimum_threshold` and `maximum_threshold` cannot both be `None`")
44
+ if minimum_threshold is None:
45
+ minimum_threshold = -1
46
+ if maximum_threshold is None:
47
+ maximum_threshold = math.inf
48
+
49
+ card_data = getattr(model_info, "card_data", None)
50
+ if card_data is None or not isinstance(card_data, (dict, ModelCardData)):
51
+ return False
52
+
53
+ # Get CO2 emission metadata
54
+ emission = card_data.get("co2_eq_emissions", None)
55
+ if isinstance(emission, dict):
56
+ emission = emission["emissions"]
57
+ if not emission:
58
+ return False
59
+
60
+ # Filter out if value is missing or out of range
61
+ matched = re.search(r"\d+\.\d+|\d+", str(emission))
62
+ if matched is None:
63
+ return False
64
+
65
+ emission_value = float(matched.group(0))
66
+ return minimum_threshold <= emission_value <= maximum_threshold
67
+
68
+
69
+ @dataclass
70
+ class DatasetFilter:
71
+ """
72
+ A class that converts human-readable dataset search parameters into ones
73
+ compatible with the REST API. For all parameters capitalization does not
74
+ matter.
75
+
76
+ Args:
77
+ author (`str`, *optional*):
78
+ A string or list of strings that can be used to identify datasets on
79
+ the Hub by the original uploader (author or organization), such as
80
+ `facebook` or `huggingface`.
81
+ benchmark (`str` or `List`, *optional*):
82
+ A string or list of strings that can be used to identify datasets on
83
+ the Hub by their official benchmark.
84
+ dataset_name (`str`, *optional*):
85
+ A string or list of strings that can be used to identify datasets on
86
+ the Hub by its name, such as `SQAC` or `wikineural`
87
+ language_creators (`str` or `List`, *optional*):
88
+ A string or list of strings that can be used to identify datasets on
89
+ the Hub with how the data was curated, such as `crowdsourced` or
90
+ `machine_generated`.
91
+ language (`str` or `List`, *optional*):
92
+ A string or list of strings representing a two-character language to
93
+ filter datasets by on the Hub.
94
+ multilinguality (`str` or `List`, *optional*):
95
+ A string or list of strings representing a filter for datasets that
96
+ contain multiple languages.
97
+ size_categories (`str` or `List`, *optional*):
98
+ A string or list of strings that can be used to identify datasets on
99
+ the Hub by the size of the dataset such as `100K<n<1M` or
100
+ `1M<n<10M`.
101
+ task_categories (`str` or `List`, *optional*):
102
+ A string or list of strings that can be used to identify datasets on
103
+ the Hub by the designed task, such as `audio_classification` or
104
+ `named_entity_recognition`.
105
+ task_ids (`str` or `List`, *optional*):
106
+ A string or list of strings that can be used to identify datasets on
107
+ the Hub by the specific task such as `speech_emotion_recognition` or
108
+ `paraphrase`.
109
+
110
+ Examples:
111
+
112
+ ```py
113
+ >>> from huggingface_hub import DatasetFilter
114
+
115
+ >>> # Using author
116
+ >>> new_filter = DatasetFilter(author="facebook")
117
+
118
+ >>> # Using benchmark
119
+ >>> new_filter = DatasetFilter(benchmark="raft")
120
+
121
+ >>> # Using dataset_name
122
+ >>> new_filter = DatasetFilter(dataset_name="wikineural")
123
+
124
+ >>> # Using language_creator
125
+ >>> new_filter = DatasetFilter(language_creator="crowdsourced")
126
+
127
+ >>> # Using language
128
+ >>> new_filter = DatasetFilter(language="en")
129
+
130
+ >>> # Using multilinguality
131
+ >>> new_filter = DatasetFilter(multilinguality="multilingual")
132
+
133
+ >>> # Using size_categories
134
+ >>> new_filter = DatasetFilter(size_categories="100K<n<1M")
135
+
136
+ >>> # Using task_categories
137
+ >>> new_filter = DatasetFilter(task_categories="audio_classification")
138
+
139
+ >>> # Using task_ids
140
+ >>> new_filter = DatasetFilter(task_ids="paraphrase")
141
+ ```
142
+ """
143
+
144
+ author: Optional[str] = None
145
+ benchmark: Optional[Union[str, List[str]]] = None
146
+ dataset_name: Optional[str] = None
147
+ language_creators: Optional[Union[str, List[str]]] = None
148
+ language: Optional[Union[str, List[str]]] = None
149
+ multilinguality: Optional[Union[str, List[str]]] = None
150
+ size_categories: Optional[Union[str, List[str]]] = None
151
+ task_categories: Optional[Union[str, List[str]]] = None
152
+ task_ids: Optional[Union[str, List[str]]] = None
153
+
154
+
155
+ @dataclass
156
+ class ModelFilter:
157
+ """
158
+ A class that converts human-readable model search parameters into ones
159
+ compatible with the REST API. For all parameters capitalization does not
160
+ matter.
161
+
162
+ Args:
163
+ author (`str`, *optional*):
164
+ A string that can be used to identify models on the Hub by the
165
+ original uploader (author or organization), such as `facebook` or
166
+ `huggingface`.
167
+ library (`str` or `List`, *optional*):
168
+ A string or list of strings of foundational libraries models were
169
+ originally trained from, such as pytorch, tensorflow, or allennlp.
170
+ language (`str` or `List`, *optional*):
171
+ A string or list of strings of languages, both by name and country
172
+ code, such as "en" or "English"
173
+ model_name (`str`, *optional*):
174
+ A string that contain complete or partial names for models on the
175
+ Hub, such as "bert" or "bert-base-cased"
176
+ task (`str` or `List`, *optional*):
177
+ A string or list of strings of tasks models were designed for, such
178
+ as: "fill-mask" or "automatic-speech-recognition"
179
+ tags (`str` or `List`, *optional*):
180
+ A string tag or a list of tags to filter models on the Hub by, such
181
+ as `text-generation` or `spacy`.
182
+ trained_dataset (`str` or `List`, *optional*):
183
+ A string tag or a list of string tags of the trained dataset for a
184
+ model on the Hub.
185
+
186
+
187
+ ```python
188
+ >>> from huggingface_hub import ModelFilter
189
+
190
+ >>> # For the author_or_organization
191
+ >>> new_filter = ModelFilter(author_or_organization="facebook")
192
+
193
+ >>> # For the library
194
+ >>> new_filter = ModelFilter(library="pytorch")
195
+
196
+ >>> # For the language
197
+ >>> new_filter = ModelFilter(language="french")
198
+
199
+ >>> # For the model_name
200
+ >>> new_filter = ModelFilter(model_name="bert")
201
+
202
+ >>> # For the task
203
+ >>> new_filter = ModelFilter(task="text-classification")
204
+
205
+ >>> from huggingface_hub import HfApi
206
+
207
+ >>> api = HfApi()
208
+ # To list model tags
209
+
210
+ >>> new_filter = ModelFilter(tags="benchmark:raft")
211
+
212
+ >>> # Related to the dataset
213
+ >>> new_filter = ModelFilter(trained_dataset="common_voice")
214
+ ```
215
+ """
216
+
217
+ author: Optional[str] = None
218
+ library: Optional[Union[str, List[str]]] = None
219
+ language: Optional[Union[str, List[str]]] = None
220
+ model_name: Optional[str] = None
221
+ task: Optional[Union[str, List[str]]] = None
222
+ trained_dataset: Optional[Union[str, List[str]]] = None
223
+ tags: Optional[Union[str, List[str]]] = None
lib/python3.11/site-packages/huggingface_hub/utils/insecure_hashlib.py ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Taken from https://github.com/mlflow/mlflow/pull/10119
2
+ #
3
+ # DO NOT use this function for security purposes (e.g., password hashing).
4
+ #
5
+ # In Python >= 3.9, insecure hashing algorithms such as MD5 fail in FIPS-compliant
6
+ # environments unless `usedforsecurity=False` is explicitly passed.
7
+ #
8
+ # References:
9
+ # - https://github.com/mlflow/mlflow/issues/9905
10
+ # - https://github.com/mlflow/mlflow/pull/10119
11
+ # - https://docs.python.org/3/library/hashlib.html
12
+ # - https://github.com/huggingface/transformers/pull/27038
13
+ #
14
+ # Usage:
15
+ # ```python
16
+ # # Use
17
+ # from huggingface_hub.utils.insecure_hashlib import sha256
18
+ # # instead of
19
+ # from hashlib import sha256
20
+ #
21
+ # # Use
22
+ # from huggingface_hub.utils import insecure_hashlib
23
+ # # instead of
24
+ # import hashlib
25
+ # ```
26
+ import functools
27
+ import hashlib
28
+ import sys
29
+
30
+
31
+ _kwargs = {"usedforsecurity": False} if sys.version_info >= (3, 9) else {}
32
+ md5 = functools.partial(hashlib.md5, **_kwargs)
33
+ sha1 = functools.partial(hashlib.sha1, **_kwargs)
34
+ sha256 = functools.partial(hashlib.sha256, **_kwargs)
lib/python3.11/site-packages/huggingface_hub/utils/logging.py ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # coding=utf-8
2
+ # Copyright 2020 Optuna, Hugging Face
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ """ Logging utilities."""
16
+
17
+ import logging
18
+ import os
19
+ from logging import (
20
+ CRITICAL, # NOQA
21
+ DEBUG, # NOQA
22
+ ERROR, # NOQA
23
+ FATAL, # NOQA
24
+ INFO, # NOQA
25
+ NOTSET, # NOQA
26
+ WARN, # NOQA
27
+ WARNING, # NOQA
28
+ )
29
+ from typing import Optional
30
+
31
+
32
+ log_levels = {
33
+ "debug": logging.DEBUG,
34
+ "info": logging.INFO,
35
+ "warning": logging.WARNING,
36
+ "error": logging.ERROR,
37
+ "critical": logging.CRITICAL,
38
+ }
39
+
40
+ _default_log_level = logging.WARNING
41
+
42
+
43
+ def _get_library_name() -> str:
44
+ return __name__.split(".")[0]
45
+
46
+
47
+ def _get_library_root_logger() -> logging.Logger:
48
+ return logging.getLogger(_get_library_name())
49
+
50
+
51
+ def _get_default_logging_level():
52
+ """
53
+ If `HF_HUB_VERBOSITY` env var is set to one of the valid choices return that as the new default level. If it is not
54
+ - fall back to `_default_log_level`
55
+ """
56
+ env_level_str = os.getenv("HF_HUB_VERBOSITY", None)
57
+ if env_level_str:
58
+ if env_level_str in log_levels:
59
+ return log_levels[env_level_str]
60
+ else:
61
+ logging.getLogger().warning(
62
+ f"Unknown option HF_HUB_VERBOSITY={env_level_str}, has to be one of: { ', '.join(log_levels.keys()) }"
63
+ )
64
+ return _default_log_level
65
+
66
+
67
+ def _configure_library_root_logger() -> None:
68
+ library_root_logger = _get_library_root_logger()
69
+ library_root_logger.addHandler(logging.StreamHandler())
70
+ library_root_logger.setLevel(_get_default_logging_level())
71
+
72
+
73
+ def _reset_library_root_logger() -> None:
74
+ library_root_logger = _get_library_root_logger()
75
+ library_root_logger.setLevel(logging.NOTSET)
76
+
77
+
78
+ def get_logger(name: Optional[str] = None) -> logging.Logger:
79
+ """
80
+ Returns a logger with the specified name. This function is not supposed
81
+ to be directly accessed by library users.
82
+
83
+ Args:
84
+ name (`str`, *optional*):
85
+ The name of the logger to get, usually the filename
86
+
87
+ Example:
88
+
89
+ ```python
90
+ >>> from huggingface_hub import get_logger
91
+
92
+ >>> logger = get_logger(__file__)
93
+ >>> logger.set_verbosity_info()
94
+ ```
95
+ """
96
+
97
+ if name is None:
98
+ name = _get_library_name()
99
+
100
+ return logging.getLogger(name)
101
+
102
+
103
+ def get_verbosity() -> int:
104
+ """Return the current level for the HuggingFace Hub's root logger.
105
+
106
+ Returns:
107
+ Logging level, e.g., `huggingface_hub.logging.DEBUG` and
108
+ `huggingface_hub.logging.INFO`.
109
+
110
+ <Tip>
111
+
112
+ HuggingFace Hub has following logging levels:
113
+
114
+ - `huggingface_hub.logging.CRITICAL`, `huggingface_hub.logging.FATAL`
115
+ - `huggingface_hub.logging.ERROR`
116
+ - `huggingface_hub.logging.WARNING`, `huggingface_hub.logging.WARN`
117
+ - `huggingface_hub.logging.INFO`
118
+ - `huggingface_hub.logging.DEBUG`
119
+
120
+ </Tip>
121
+ """
122
+ return _get_library_root_logger().getEffectiveLevel()
123
+
124
+
125
+ def set_verbosity(verbosity: int) -> None:
126
+ """
127
+ Sets the level for the HuggingFace Hub's root logger.
128
+
129
+ Args:
130
+ verbosity (`int`):
131
+ Logging level, e.g., `huggingface_hub.logging.DEBUG` and
132
+ `huggingface_hub.logging.INFO`.
133
+ """
134
+ _get_library_root_logger().setLevel(verbosity)
135
+
136
+
137
+ def set_verbosity_info():
138
+ """
139
+ Sets the verbosity to `logging.INFO`.
140
+ """
141
+ return set_verbosity(INFO)
142
+
143
+
144
+ def set_verbosity_warning():
145
+ """
146
+ Sets the verbosity to `logging.WARNING`.
147
+ """
148
+ return set_verbosity(WARNING)
149
+
150
+
151
+ def set_verbosity_debug():
152
+ """
153
+ Sets the verbosity to `logging.DEBUG`.
154
+ """
155
+ return set_verbosity(DEBUG)
156
+
157
+
158
+ def set_verbosity_error():
159
+ """
160
+ Sets the verbosity to `logging.ERROR`.
161
+ """
162
+ return set_verbosity(ERROR)
163
+
164
+
165
+ def disable_propagation() -> None:
166
+ """
167
+ Disable propagation of the library log outputs. Note that log propagation is
168
+ disabled by default.
169
+ """
170
+ _get_library_root_logger().propagate = False
171
+
172
+
173
+ def enable_propagation() -> None:
174
+ """
175
+ Enable propagation of the library log outputs. Please disable the
176
+ HuggingFace Hub's default handler to prevent double logging if the root
177
+ logger has been configured.
178
+ """
179
+ _get_library_root_logger().propagate = True
180
+
181
+
182
+ _configure_library_root_logger()
lib/python3.11/site-packages/huggingface_hub/utils/sha.py ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Utilities to efficiently compute the SHA 256 hash of a bunch of bytes."""
2
+ from typing import BinaryIO, Optional
3
+
4
+ from .insecure_hashlib import sha256
5
+
6
+
7
+ def sha_fileobj(fileobj: BinaryIO, chunk_size: Optional[int] = None) -> bytes:
8
+ """
9
+ Computes the sha256 hash of the given file object, by chunks of size `chunk_size`.
10
+
11
+ Args:
12
+ fileobj (file-like object):
13
+ The File object to compute sha256 for, typically obtained with `open(path, "rb")`
14
+ chunk_size (`int`, *optional*):
15
+ The number of bytes to read from `fileobj` at once, defaults to 1MB.
16
+
17
+ Returns:
18
+ `bytes`: `fileobj`'s sha256 hash as bytes
19
+ """
20
+ chunk_size = chunk_size if chunk_size is not None else 1024 * 1024
21
+
22
+ sha = sha256()
23
+ while True:
24
+ chunk = fileobj.read(chunk_size)
25
+ sha.update(chunk)
26
+ if not chunk:
27
+ break
28
+ return sha.digest()
lib/python3.11/site-packages/huggingface_hub/utils/tqdm.py ADDED
@@ -0,0 +1,186 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python
2
+ # coding=utf-8
3
+ # Copyright 2021 The HuggingFace Inc. team. All rights reserved.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License
16
+ """Utility helpers to handle progress bars in `huggingface_hub`.
17
+
18
+ Example:
19
+ 1. Use `huggingface_hub.utils.tqdm` as you would use `tqdm.tqdm` or `tqdm.auto.tqdm`.
20
+ 2. To disable progress bars, either use `disable_progress_bars()` helper or set the
21
+ environment variable `HF_HUB_DISABLE_PROGRESS_BARS` to 1.
22
+ 3. To re-enable progress bars, use `enable_progress_bars()`.
23
+ 4. To check whether progress bars are disabled, use `are_progress_bars_disabled()`.
24
+
25
+ NOTE: Environment variable `HF_HUB_DISABLE_PROGRESS_BARS` has the priority.
26
+
27
+ Example:
28
+ ```py
29
+ from huggingface_hub.utils import (
30
+ are_progress_bars_disabled,
31
+ disable_progress_bars,
32
+ enable_progress_bars,
33
+ tqdm,
34
+ )
35
+
36
+ # Disable progress bars globally
37
+ disable_progress_bars()
38
+
39
+ # Use as normal `tqdm`
40
+ for _ in tqdm(range(5)):
41
+ do_something()
42
+
43
+ # Still not showing progress bars, as `disable=False` is overwritten to `True`.
44
+ for _ in tqdm(range(5), disable=False):
45
+ do_something()
46
+
47
+ are_progress_bars_disabled() # True
48
+
49
+ # Re-enable progress bars globally
50
+ enable_progress_bars()
51
+
52
+ # Progress bar will be shown !
53
+ for _ in tqdm(range(5)):
54
+ do_something()
55
+ ```
56
+ """
57
+ import io
58
+ import warnings
59
+ from contextlib import contextmanager
60
+ from pathlib import Path
61
+ from typing import Iterator, Optional, Union
62
+
63
+ from tqdm.auto import tqdm as old_tqdm
64
+
65
+ from ..constants import HF_HUB_DISABLE_PROGRESS_BARS
66
+
67
+
68
+ # `HF_HUB_DISABLE_PROGRESS_BARS` is `Optional[bool]` while `_hf_hub_progress_bars_disabled`
69
+ # is a `bool`. If `HF_HUB_DISABLE_PROGRESS_BARS` is set to True or False, it has priority.
70
+ # If `HF_HUB_DISABLE_PROGRESS_BARS` is None, it means the user have not set the
71
+ # environment variable and is free to enable/disable progress bars programmatically.
72
+ # TL;DR: env variable has priority over code.
73
+ #
74
+ # By default, progress bars are enabled.
75
+ _hf_hub_progress_bars_disabled: bool = HF_HUB_DISABLE_PROGRESS_BARS or False
76
+
77
+
78
+ def disable_progress_bars() -> None:
79
+ """
80
+ Disable globally progress bars used in `huggingface_hub` except if `HF_HUB_DISABLE_PROGRESS_BARS` environment
81
+ variable has been set.
82
+
83
+ Use [`~utils.enable_progress_bars`] to re-enable them.
84
+ """
85
+ if HF_HUB_DISABLE_PROGRESS_BARS is False:
86
+ warnings.warn(
87
+ "Cannot disable progress bars: environment variable `HF_HUB_DISABLE_PROGRESS_BARS=0` is set and has"
88
+ " priority."
89
+ )
90
+ return
91
+ global _hf_hub_progress_bars_disabled
92
+ _hf_hub_progress_bars_disabled = True
93
+
94
+
95
+ def enable_progress_bars() -> None:
96
+ """
97
+ Enable globally progress bars used in `huggingface_hub` except if `HF_HUB_DISABLE_PROGRESS_BARS` environment
98
+ variable has been set.
99
+
100
+ Use [`~utils.disable_progress_bars`] to disable them.
101
+ """
102
+ if HF_HUB_DISABLE_PROGRESS_BARS is True:
103
+ warnings.warn(
104
+ "Cannot enable progress bars: environment variable `HF_HUB_DISABLE_PROGRESS_BARS=1` is set and has"
105
+ " priority."
106
+ )
107
+ return
108
+ global _hf_hub_progress_bars_disabled
109
+ _hf_hub_progress_bars_disabled = False
110
+
111
+
112
+ def are_progress_bars_disabled() -> bool:
113
+ """Return whether progress bars are globally disabled or not.
114
+
115
+ Progress bars used in `huggingface_hub` can be enable or disabled globally using [`~utils.enable_progress_bars`]
116
+ and [`~utils.disable_progress_bars`] or by setting `HF_HUB_DISABLE_PROGRESS_BARS` as environment variable.
117
+ """
118
+ global _hf_hub_progress_bars_disabled
119
+ return _hf_hub_progress_bars_disabled
120
+
121
+
122
+ class tqdm(old_tqdm):
123
+ """
124
+ Class to override `disable` argument in case progress bars are globally disabled.
125
+
126
+ Taken from https://github.com/tqdm/tqdm/issues/619#issuecomment-619639324.
127
+ """
128
+
129
+ def __init__(self, *args, **kwargs):
130
+ if are_progress_bars_disabled():
131
+ kwargs["disable"] = True
132
+ super().__init__(*args, **kwargs)
133
+
134
+ def __delattr__(self, attr: str) -> None:
135
+ """Fix for https://github.com/huggingface/huggingface_hub/issues/1603"""
136
+ try:
137
+ super().__delattr__(attr)
138
+ except AttributeError:
139
+ if attr != "_lock":
140
+ raise
141
+
142
+
143
+ @contextmanager
144
+ def tqdm_stream_file(path: Union[Path, str]) -> Iterator[io.BufferedReader]:
145
+ """
146
+ Open a file as binary and wrap the `read` method to display a progress bar when it's streamed.
147
+
148
+ First implemented in `transformers` in 2019 but removed when switched to git-lfs. Used in `huggingface_hub` to show
149
+ progress bar when uploading an LFS file to the Hub. See github.com/huggingface/transformers/pull/2078#discussion_r354739608
150
+ for implementation details.
151
+
152
+ Note: currently implementation handles only files stored on disk as it is the most common use case. Could be
153
+ extended to stream any `BinaryIO` object but we might have to debug some corner cases.
154
+
155
+ Example:
156
+ ```py
157
+ >>> with tqdm_stream_file("config.json") as f:
158
+ >>> requests.put(url, data=f)
159
+ config.json: 100%|█████████████████████████| 8.19k/8.19k [00:02<00:00, 3.72kB/s]
160
+ ```
161
+ """
162
+ if isinstance(path, str):
163
+ path = Path(path)
164
+
165
+ with path.open("rb") as f:
166
+ total_size = path.stat().st_size
167
+ pbar = tqdm(
168
+ unit="B",
169
+ unit_scale=True,
170
+ total=total_size,
171
+ initial=0,
172
+ desc=path.name,
173
+ )
174
+
175
+ f_read = f.read
176
+
177
+ def _inner_read(size: Optional[int] = -1) -> bytes:
178
+ data = f_read(size)
179
+ pbar.update(len(data))
180
+ return data
181
+
182
+ f.read = _inner_read # type: ignore
183
+
184
+ yield f
185
+
186
+ pbar.close()
lib/python3.11/site-packages/idna-3.6.dist-info/INSTALLER ADDED
@@ -0,0 +1 @@
 
 
1
+ pip
lib/python3.11/site-packages/idna-3.6.dist-info/LICENSE.md ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2013-2023, Kim Davies and contributors.
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are
8
+ met:
9
+
10
+ 1. Redistributions of source code must retain the above copyright
11
+ notice, this list of conditions and the following disclaimer.
12
+
13
+ 2. Redistributions in binary form must reproduce the above copyright
14
+ notice, this list of conditions and the following disclaimer in the
15
+ documentation and/or other materials provided with the distribution.
16
+
17
+ 3. Neither the name of the copyright holder nor the names of its
18
+ contributors may be used to endorse or promote products derived from
19
+ this software without specific prior written permission.
20
+
21
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25
+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
27
+ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
lib/python3.11/site-packages/idna-3.6.dist-info/METADATA ADDED
@@ -0,0 +1,243 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.1
2
+ Name: idna
3
+ Version: 3.6
4
+ Summary: Internationalized Domain Names in Applications (IDNA)
5
+ Author-email: Kim Davies <kim+pypi@gumleaf.org>
6
+ Requires-Python: >=3.5
7
+ Description-Content-Type: text/x-rst
8
+ Classifier: Development Status :: 5 - Production/Stable
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Intended Audience :: System Administrators
11
+ Classifier: License :: OSI Approved :: BSD License
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Programming Language :: Python
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3 :: Only
16
+ Classifier: Programming Language :: Python :: 3.5
17
+ Classifier: Programming Language :: Python :: 3.6
18
+ Classifier: Programming Language :: Python :: 3.7
19
+ Classifier: Programming Language :: Python :: 3.8
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Programming Language :: Python :: Implementation :: CPython
25
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
26
+ Classifier: Topic :: Internet :: Name Service (DNS)
27
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
28
+ Classifier: Topic :: Utilities
29
+ Project-URL: Changelog, https://github.com/kjd/idna/blob/master/HISTORY.rst
30
+ Project-URL: Issue tracker, https://github.com/kjd/idna/issues
31
+ Project-URL: Source, https://github.com/kjd/idna
32
+
33
+ Internationalized Domain Names in Applications (IDNA)
34
+ =====================================================
35
+
36
+ Support for the Internationalized Domain Names in
37
+ Applications (IDNA) protocol as specified in `RFC 5891
38
+ <https://tools.ietf.org/html/rfc5891>`_. This is the latest version of
39
+ the protocol and is sometimes referred to as “IDNA 2008”.
40
+
41
+ This library also provides support for Unicode Technical
42
+ Standard 46, `Unicode IDNA Compatibility Processing
43
+ <https://unicode.org/reports/tr46/>`_.
44
+
45
+ This acts as a suitable replacement for the “encodings.idna”
46
+ module that comes with the Python standard library, but which
47
+ only supports the older superseded IDNA specification (`RFC 3490
48
+ <https://tools.ietf.org/html/rfc3490>`_).
49
+
50
+ Basic functions are simply executed:
51
+
52
+ .. code-block:: pycon
53
+
54
+ >>> import idna
55
+ >>> idna.encode('ドメイン.テスト')
56
+ b'xn--eckwd4c7c.xn--zckzah'
57
+ >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah'))
58
+ ドメイン.テスト
59
+
60
+
61
+ Installation
62
+ ------------
63
+
64
+ This package is available for installation from PyPI:
65
+
66
+ .. code-block:: bash
67
+
68
+ $ python3 -m pip install idna
69
+
70
+
71
+ Usage
72
+ -----
73
+
74
+ For typical usage, the ``encode`` and ``decode`` functions will take a
75
+ domain name argument and perform a conversion to A-labels or U-labels
76
+ respectively.
77
+
78
+ .. code-block:: pycon
79
+
80
+ >>> import idna
81
+ >>> idna.encode('ドメイン.テスト')
82
+ b'xn--eckwd4c7c.xn--zckzah'
83
+ >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah'))
84
+ ドメイン.テスト
85
+
86
+ You may use the codec encoding and decoding methods using the
87
+ ``idna.codec`` module:
88
+
89
+ .. code-block:: pycon
90
+
91
+ >>> import idna.codec
92
+ >>> print('домен.испытание'.encode('idna2008'))
93
+ b'xn--d1acufc.xn--80akhbyknj4f'
94
+ >>> print(b'xn--d1acufc.xn--80akhbyknj4f'.decode('idna2008'))
95
+ домен.испытание
96
+
97
+ Conversions can be applied at a per-label basis using the ``ulabel`` or
98
+ ``alabel`` functions if necessary:
99
+
100
+ .. code-block:: pycon
101
+
102
+ >>> idna.alabel('测试')
103
+ b'xn--0zwm56d'
104
+
105
+ Compatibility Mapping (UTS #46)
106
+ +++++++++++++++++++++++++++++++
107
+
108
+ As described in `RFC 5895 <https://tools.ietf.org/html/rfc5895>`_, the
109
+ IDNA specification does not normalize input from different potential
110
+ ways a user may input a domain name. This functionality, known as
111
+ a “mapping”, is considered by the specification to be a local
112
+ user-interface issue distinct from IDNA conversion functionality.
113
+
114
+ This library provides one such mapping that was developed by the
115
+ Unicode Consortium. Known as `Unicode IDNA Compatibility Processing
116
+ <https://unicode.org/reports/tr46/>`_, it provides for both a regular
117
+ mapping for typical applications, as well as a transitional mapping to
118
+ help migrate from older IDNA 2003 applications.
119
+
120
+ For example, “Königsgäßchen” is not a permissible label as *LATIN
121
+ CAPITAL LETTER K* is not allowed (nor are capital letters in general).
122
+ UTS 46 will convert this into lower case prior to applying the IDNA
123
+ conversion.
124
+
125
+ .. code-block:: pycon
126
+
127
+ >>> import idna
128
+ >>> idna.encode('Königsgäßchen')
129
+ ...
130
+ idna.core.InvalidCodepoint: Codepoint U+004B at position 1 of 'Königsgäßchen' not allowed
131
+ >>> idna.encode('Königsgäßchen', uts46=True)
132
+ b'xn--knigsgchen-b4a3dun'
133
+ >>> print(idna.decode('xn--knigsgchen-b4a3dun'))
134
+ königsgäßchen
135
+
136
+ Transitional processing provides conversions to help transition from
137
+ the older 2003 standard to the current standard. For example, in the
138
+ original IDNA specification, the *LATIN SMALL LETTER SHARP S* (ß) was
139
+ converted into two *LATIN SMALL LETTER S* (ss), whereas in the current
140
+ IDNA specification this conversion is not performed.
141
+
142
+ .. code-block:: pycon
143
+
144
+ >>> idna.encode('Königsgäßchen', uts46=True, transitional=True)
145
+ 'xn--knigsgsschen-lcb0w'
146
+
147
+ Implementers should use transitional processing with caution, only in
148
+ rare cases where conversion from legacy labels to current labels must be
149
+ performed (i.e. IDNA implementations that pre-date 2008). For typical
150
+ applications that just need to convert labels, transitional processing
151
+ is unlikely to be beneficial and could produce unexpected incompatible
152
+ results.
153
+
154
+ ``encodings.idna`` Compatibility
155
+ ++++++++++++++++++++++++++++++++
156
+
157
+ Function calls from the Python built-in ``encodings.idna`` module are
158
+ mapped to their IDNA 2008 equivalents using the ``idna.compat`` module.
159
+ Simply substitute the ``import`` clause in your code to refer to the new
160
+ module name.
161
+
162
+ Exceptions
163
+ ----------
164
+
165
+ All errors raised during the conversion following the specification
166
+ should raise an exception derived from the ``idna.IDNAError`` base
167
+ class.
168
+
169
+ More specific exceptions that may be generated as ``idna.IDNABidiError``
170
+ when the error reflects an illegal combination of left-to-right and
171
+ right-to-left characters in a label; ``idna.InvalidCodepoint`` when
172
+ a specific codepoint is an illegal character in an IDN label (i.e.
173
+ INVALID); and ``idna.InvalidCodepointContext`` when the codepoint is
174
+ illegal based on its positional context (i.e. it is CONTEXTO or CONTEXTJ
175
+ but the contextual requirements are not satisfied.)
176
+
177
+ Building and Diagnostics
178
+ ------------------------
179
+
180
+ The IDNA and UTS 46 functionality relies upon pre-calculated lookup
181
+ tables for performance. These tables are derived from computing against
182
+ eligibility criteria in the respective standards. These tables are
183
+ computed using the command-line script ``tools/idna-data``.
184
+
185
+ This tool will fetch relevant codepoint data from the Unicode repository
186
+ and perform the required calculations to identify eligibility. There are
187
+ three main modes:
188
+
189
+ * ``idna-data make-libdata``. Generates ``idnadata.py`` and
190
+ ``uts46data.py``, the pre-calculated lookup tables used for IDNA and
191
+ UTS 46 conversions. Implementers who wish to track this library against
192
+ a different Unicode version may use this tool to manually generate a
193
+ different version of the ``idnadata.py`` and ``uts46data.py`` files.
194
+
195
+ * ``idna-data make-table``. Generate a table of the IDNA disposition
196
+ (e.g. PVALID, CONTEXTJ, CONTEXTO) in the format found in Appendix
197
+ B.1 of RFC 5892 and the pre-computed tables published by `IANA
198
+ <https://www.iana.org/>`_.
199
+
200
+ * ``idna-data U+0061``. Prints debugging output on the various
201
+ properties associated with an individual Unicode codepoint (in this
202
+ case, U+0061), that are used to assess the IDNA and UTS 46 status of a
203
+ codepoint. This is helpful in debugging or analysis.
204
+
205
+ The tool accepts a number of arguments, described using ``idna-data
206
+ -h``. Most notably, the ``--version`` argument allows the specification
207
+ of the version of Unicode to be used in computing the table data. For
208
+ example, ``idna-data --version 9.0.0 make-libdata`` will generate
209
+ library data against Unicode 9.0.0.
210
+
211
+
212
+ Additional Notes
213
+ ----------------
214
+
215
+ * **Packages**. The latest tagged release version is published in the
216
+ `Python Package Index <https://pypi.org/project/idna/>`_.
217
+
218
+ * **Version support**. This library supports Python 3.5 and higher.
219
+ As this library serves as a low-level toolkit for a variety of
220
+ applications, many of which strive for broad compatibility with older
221
+ Python versions, there is no rush to remove older interpreter support.
222
+ Removing support for older versions should be well justified in that the
223
+ maintenance burden has become too high.
224
+
225
+ * **Python 2**. Python 2 is supported by version 2.x of this library.
226
+ While active development of the version 2.x series has ended, notable
227
+ issues being corrected may be backported to 2.x. Use "idna<3" in your
228
+ requirements file if you need this library for a Python 2 application.
229
+
230
+ * **Testing**. The library has a test suite based on each rule of the
231
+ IDNA specification, as well as tests that are provided as part of the
232
+ Unicode Technical Standard 46, `Unicode IDNA Compatibility Processing
233
+ <https://unicode.org/reports/tr46/>`_.
234
+
235
+ * **Emoji**. It is an occasional request to support emoji domains in
236
+ this library. Encoding of symbols like emoji is expressly prohibited by
237
+ the technical standard IDNA 2008 and emoji domains are broadly phased
238
+ out across the domain industry due to associated security risks. For
239
+ now, applications that need to support these non-compliant labels
240
+ may wish to consider trying the encode/decode operation in this library
241
+ first, and then falling back to using `encodings.idna`. See `the Github
242
+ project <https://github.com/kjd/idna/issues/18>`_ for more discussion.
243
+
lib/python3.11/site-packages/idna-3.6.dist-info/RECORD ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ idna-3.6.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
2
+ idna-3.6.dist-info/LICENSE.md,sha256=yy-vDKGMbTh-x8tm8yGTn7puZ-nawJ0xR3y52NP-aJk,1541
3
+ idna-3.6.dist-info/METADATA,sha256=N93B509dkvvkd_Y0E_VxCHPkVkrD6InxoyfXvX4egds,9888
4
+ idna-3.6.dist-info/RECORD,,
5
+ idna-3.6.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
6
+ idna/__init__.py,sha256=KJQN1eQBr8iIK5SKrJ47lXvxG0BJ7Lm38W4zT0v_8lk,849
7
+ idna/__pycache__/__init__.cpython-311.pyc,,
8
+ idna/__pycache__/codec.cpython-311.pyc,,
9
+ idna/__pycache__/compat.cpython-311.pyc,,
10
+ idna/__pycache__/core.cpython-311.pyc,,
11
+ idna/__pycache__/idnadata.cpython-311.pyc,,
12
+ idna/__pycache__/intranges.cpython-311.pyc,,
13
+ idna/__pycache__/package_data.cpython-311.pyc,,
14
+ idna/__pycache__/uts46data.cpython-311.pyc,,
15
+ idna/codec.py,sha256=PS6m-XmdST7Wj7J7ulRMakPDt5EBJyYrT3CPtjh-7t4,3426
16
+ idna/compat.py,sha256=0_sOEUMT4CVw9doD3vyRhX80X19PwqFoUBs7gWsFME4,321
17
+ idna/core.py,sha256=Bxz9L1rH0N5U-yukGfPuDRTxR2jDUl96NCq1ql3YAUw,12908
18
+ idna/idnadata.py,sha256=9u3Ec_GRrhlcbs7QM3pAZ2ObEQzPIOm99FaVOm91UGg,44351
19
+ idna/intranges.py,sha256=YBr4fRYuWH7kTKS2tXlFjM24ZF1Pdvcir-aywniInqg,1881
20
+ idna/package_data.py,sha256=y-iv-qJdmHsWVR5FszYwsMo1AQg8qpdU2aU5nT-S2oQ,21
21
+ idna/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ idna/uts46data.py,sha256=1KuksWqLuccPXm2uyRVkhfiFLNIhM_H2m4azCcnOqEU,206503
lib/python3.11/site-packages/idna-3.6.dist-info/WHEEL ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ Wheel-Version: 1.0
2
+ Generator: flit 3.9.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
lib/python3.11/site-packages/idna/__init__.py ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from .package_data import __version__
2
+ from .core import (
3
+ IDNABidiError,
4
+ IDNAError,
5
+ InvalidCodepoint,
6
+ InvalidCodepointContext,
7
+ alabel,
8
+ check_bidi,
9
+ check_hyphen_ok,
10
+ check_initial_combiner,
11
+ check_label,
12
+ check_nfc,
13
+ decode,
14
+ encode,
15
+ ulabel,
16
+ uts46_remap,
17
+ valid_contextj,
18
+ valid_contexto,
19
+ valid_label_length,
20
+ valid_string_length,
21
+ )
22
+ from .intranges import intranges_contain
23
+
24
+ __all__ = [
25
+ "IDNABidiError",
26
+ "IDNAError",
27
+ "InvalidCodepoint",
28
+ "InvalidCodepointContext",
29
+ "alabel",
30
+ "check_bidi",
31
+ "check_hyphen_ok",
32
+ "check_initial_combiner",
33
+ "check_label",
34
+ "check_nfc",
35
+ "decode",
36
+ "encode",
37
+ "intranges_contain",
38
+ "ulabel",
39
+ "uts46_remap",
40
+ "valid_contextj",
41
+ "valid_contexto",
42
+ "valid_label_length",
43
+ "valid_string_length",
44
+ ]
lib/python3.11/site-packages/idna/__pycache__/__init__.cpython-311.pyc ADDED
Binary file (1.12 kB). View file
 
lib/python3.11/site-packages/idna/__pycache__/codec.cpython-311.pyc ADDED
Binary file (5.81 kB). View file
 
lib/python3.11/site-packages/idna/__pycache__/compat.cpython-311.pyc ADDED
Binary file (1.04 kB). View file
 
lib/python3.11/site-packages/idna/__pycache__/core.cpython-311.pyc ADDED
Binary file (19.4 kB). View file
 
lib/python3.11/site-packages/idna/__pycache__/idnadata.cpython-311.pyc ADDED
Binary file (39 kB). View file
 
lib/python3.11/site-packages/idna/__pycache__/intranges.cpython-311.pyc ADDED
Binary file (3.01 kB). View file
 
lib/python3.11/site-packages/idna/__pycache__/package_data.cpython-311.pyc ADDED
Binary file (241 Bytes). View file
 
lib/python3.11/site-packages/idna/__pycache__/uts46data.cpython-311.pyc ADDED
Binary file (163 kB). View file
 
lib/python3.11/site-packages/idna/codec.py ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from .core import encode, decode, alabel, ulabel, IDNAError
2
+ import codecs
3
+ import re
4
+ from typing import Any, Tuple, Optional
5
+
6
+ _unicode_dots_re = re.compile('[\u002e\u3002\uff0e\uff61]')
7
+
8
+ class Codec(codecs.Codec):
9
+
10
+ def encode(self, data: str, errors: str = 'strict') -> Tuple[bytes, int]:
11
+ if errors != 'strict':
12
+ raise IDNAError('Unsupported error handling \"{}\"'.format(errors))
13
+
14
+ if not data:
15
+ return b"", 0
16
+
17
+ return encode(data), len(data)
18
+
19
+ def decode(self, data: bytes, errors: str = 'strict') -> Tuple[str, int]:
20
+ if errors != 'strict':
21
+ raise IDNAError('Unsupported error handling \"{}\"'.format(errors))
22
+
23
+ if not data:
24
+ return '', 0
25
+
26
+ return decode(data), len(data)
27
+
28
+ class IncrementalEncoder(codecs.BufferedIncrementalEncoder):
29
+ def _buffer_encode(self, data: str, errors: str, final: bool) -> Tuple[bytes, int]:
30
+ if errors != 'strict':
31
+ raise IDNAError('Unsupported error handling \"{}\"'.format(errors))
32
+
33
+ if not data:
34
+ return b'', 0
35
+
36
+ labels = _unicode_dots_re.split(data)
37
+ trailing_dot = b''
38
+ if labels:
39
+ if not labels[-1]:
40
+ trailing_dot = b'.'
41
+ del labels[-1]
42
+ elif not final:
43
+ # Keep potentially unfinished label until the next call
44
+ del labels[-1]
45
+ if labels:
46
+ trailing_dot = b'.'
47
+
48
+ result = []
49
+ size = 0
50
+ for label in labels:
51
+ result.append(alabel(label))
52
+ if size:
53
+ size += 1
54
+ size += len(label)
55
+
56
+ # Join with U+002E
57
+ result_bytes = b'.'.join(result) + trailing_dot
58
+ size += len(trailing_dot)
59
+ return result_bytes, size
60
+
61
+ class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
62
+ def _buffer_decode(self, data: Any, errors: str, final: bool) -> Tuple[str, int]:
63
+ if errors != 'strict':
64
+ raise IDNAError('Unsupported error handling \"{}\"'.format(errors))
65
+
66
+ if not data:
67
+ return ('', 0)
68
+
69
+ if not isinstance(data, str):
70
+ data = str(data, 'ascii')
71
+
72
+ labels = _unicode_dots_re.split(data)
73
+ trailing_dot = ''
74
+ if labels:
75
+ if not labels[-1]:
76
+ trailing_dot = '.'
77
+ del labels[-1]
78
+ elif not final:
79
+ # Keep potentially unfinished label until the next call
80
+ del labels[-1]
81
+ if labels:
82
+ trailing_dot = '.'
83
+
84
+ result = []
85
+ size = 0
86
+ for label in labels:
87
+ result.append(ulabel(label))
88
+ if size:
89
+ size += 1
90
+ size += len(label)
91
+
92
+ result_str = '.'.join(result) + trailing_dot
93
+ size += len(trailing_dot)
94
+ return (result_str, size)
95
+
96
+
97
+ class StreamWriter(Codec, codecs.StreamWriter):
98
+ pass
99
+
100
+
101
+ class StreamReader(Codec, codecs.StreamReader):
102
+ pass
103
+
104
+
105
+ def search_function(name: str) -> Optional[codecs.CodecInfo]:
106
+ if name != 'idna2008':
107
+ return None
108
+ return codecs.CodecInfo(
109
+ name=name,
110
+ encode=Codec().encode,
111
+ decode=Codec().decode,
112
+ incrementalencoder=IncrementalEncoder,
113
+ incrementaldecoder=IncrementalDecoder,
114
+ streamwriter=StreamWriter,
115
+ streamreader=StreamReader,
116
+ )
117
+
118
+ codecs.register(search_function)
lib/python3.11/site-packages/idna/compat.py ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from .core import *
2
+ from .codec import *
3
+ from typing import Any, Union
4
+
5
+ def ToASCII(label: str) -> bytes:
6
+ return encode(label)
7
+
8
+ def ToUnicode(label: Union[bytes, bytearray]) -> str:
9
+ return decode(label)
10
+
11
+ def nameprep(s: Any) -> None:
12
+ raise NotImplementedError('IDNA 2008 does not utilise nameprep protocol')
13
+
lib/python3.11/site-packages/idna/core.py ADDED
@@ -0,0 +1,400 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from . import idnadata
2
+ import bisect
3
+ import unicodedata
4
+ import re
5
+ from typing import Union, Optional
6
+ from .intranges import intranges_contain
7
+
8
+ _virama_combining_class = 9
9
+ _alabel_prefix = b'xn--'
10
+ _unicode_dots_re = re.compile('[\u002e\u3002\uff0e\uff61]')
11
+
12
+ class IDNAError(UnicodeError):
13
+ """ Base exception for all IDNA-encoding related problems """
14
+ pass
15
+
16
+
17
+ class IDNABidiError(IDNAError):
18
+ """ Exception when bidirectional requirements are not satisfied """
19
+ pass
20
+
21
+
22
+ class InvalidCodepoint(IDNAError):
23
+ """ Exception when a disallowed or unallocated codepoint is used """
24
+ pass
25
+
26
+
27
+ class InvalidCodepointContext(IDNAError):
28
+ """ Exception when the codepoint is not valid in the context it is used """
29
+ pass
30
+
31
+
32
+ def _combining_class(cp: int) -> int:
33
+ v = unicodedata.combining(chr(cp))
34
+ if v == 0:
35
+ if not unicodedata.name(chr(cp)):
36
+ raise ValueError('Unknown character in unicodedata')
37
+ return v
38
+
39
+ def _is_script(cp: str, script: str) -> bool:
40
+ return intranges_contain(ord(cp), idnadata.scripts[script])
41
+
42
+ def _punycode(s: str) -> bytes:
43
+ return s.encode('punycode')
44
+
45
+ def _unot(s: int) -> str:
46
+ return 'U+{:04X}'.format(s)
47
+
48
+
49
+ def valid_label_length(label: Union[bytes, str]) -> bool:
50
+ if len(label) > 63:
51
+ return False
52
+ return True
53
+
54
+
55
+ def valid_string_length(label: Union[bytes, str], trailing_dot: bool) -> bool:
56
+ if len(label) > (254 if trailing_dot else 253):
57
+ return False
58
+ return True
59
+
60
+
61
+ def check_bidi(label: str, check_ltr: bool = False) -> bool:
62
+ # Bidi rules should only be applied if string contains RTL characters
63
+ bidi_label = False
64
+ for (idx, cp) in enumerate(label, 1):
65
+ direction = unicodedata.bidirectional(cp)
66
+ if direction == '':
67
+ # String likely comes from a newer version of Unicode
68
+ raise IDNABidiError('Unknown directionality in label {} at position {}'.format(repr(label), idx))
69
+ if direction in ['R', 'AL', 'AN']:
70
+ bidi_label = True
71
+ if not bidi_label and not check_ltr:
72
+ return True
73
+
74
+ # Bidi rule 1
75
+ direction = unicodedata.bidirectional(label[0])
76
+ if direction in ['R', 'AL']:
77
+ rtl = True
78
+ elif direction == 'L':
79
+ rtl = False
80
+ else:
81
+ raise IDNABidiError('First codepoint in label {} must be directionality L, R or AL'.format(repr(label)))
82
+
83
+ valid_ending = False
84
+ number_type = None # type: Optional[str]
85
+ for (idx, cp) in enumerate(label, 1):
86
+ direction = unicodedata.bidirectional(cp)
87
+
88
+ if rtl:
89
+ # Bidi rule 2
90
+ if not direction in ['R', 'AL', 'AN', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']:
91
+ raise IDNABidiError('Invalid direction for codepoint at position {} in a right-to-left label'.format(idx))
92
+ # Bidi rule 3
93
+ if direction in ['R', 'AL', 'EN', 'AN']:
94
+ valid_ending = True
95
+ elif direction != 'NSM':
96
+ valid_ending = False
97
+ # Bidi rule 4
98
+ if direction in ['AN', 'EN']:
99
+ if not number_type:
100
+ number_type = direction
101
+ else:
102
+ if number_type != direction:
103
+ raise IDNABidiError('Can not mix numeral types in a right-to-left label')
104
+ else:
105
+ # Bidi rule 5
106
+ if not direction in ['L', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']:
107
+ raise IDNABidiError('Invalid direction for codepoint at position {} in a left-to-right label'.format(idx))
108
+ # Bidi rule 6
109
+ if direction in ['L', 'EN']:
110
+ valid_ending = True
111
+ elif direction != 'NSM':
112
+ valid_ending = False
113
+
114
+ if not valid_ending:
115
+ raise IDNABidiError('Label ends with illegal codepoint directionality')
116
+
117
+ return True
118
+
119
+
120
+ def check_initial_combiner(label: str) -> bool:
121
+ if unicodedata.category(label[0])[0] == 'M':
122
+ raise IDNAError('Label begins with an illegal combining character')
123
+ return True
124
+
125
+
126
+ def check_hyphen_ok(label: str) -> bool:
127
+ if label[2:4] == '--':
128
+ raise IDNAError('Label has disallowed hyphens in 3rd and 4th position')
129
+ if label[0] == '-' or label[-1] == '-':
130
+ raise IDNAError('Label must not start or end with a hyphen')
131
+ return True
132
+
133
+
134
+ def check_nfc(label: str) -> None:
135
+ if unicodedata.normalize('NFC', label) != label:
136
+ raise IDNAError('Label must be in Normalization Form C')
137
+
138
+
139
+ def valid_contextj(label: str, pos: int) -> bool:
140
+ cp_value = ord(label[pos])
141
+
142
+ if cp_value == 0x200c:
143
+
144
+ if pos > 0:
145
+ if _combining_class(ord(label[pos - 1])) == _virama_combining_class:
146
+ return True
147
+
148
+ ok = False
149
+ for i in range(pos-1, -1, -1):
150
+ joining_type = idnadata.joining_types.get(ord(label[i]))
151
+ if joining_type == ord('T'):
152
+ continue
153
+ if joining_type in [ord('L'), ord('D')]:
154
+ ok = True
155
+ break
156
+
157
+ if not ok:
158
+ return False
159
+
160
+ ok = False
161
+ for i in range(pos+1, len(label)):
162
+ joining_type = idnadata.joining_types.get(ord(label[i]))
163
+ if joining_type == ord('T'):
164
+ continue
165
+ if joining_type in [ord('R'), ord('D')]:
166
+ ok = True
167
+ break
168
+ return ok
169
+
170
+ if cp_value == 0x200d:
171
+
172
+ if pos > 0:
173
+ if _combining_class(ord(label[pos - 1])) == _virama_combining_class:
174
+ return True
175
+ return False
176
+
177
+ else:
178
+
179
+ return False
180
+
181
+
182
+ def valid_contexto(label: str, pos: int, exception: bool = False) -> bool:
183
+ cp_value = ord(label[pos])
184
+
185
+ if cp_value == 0x00b7:
186
+ if 0 < pos < len(label)-1:
187
+ if ord(label[pos - 1]) == 0x006c and ord(label[pos + 1]) == 0x006c:
188
+ return True
189
+ return False
190
+
191
+ elif cp_value == 0x0375:
192
+ if pos < len(label)-1 and len(label) > 1:
193
+ return _is_script(label[pos + 1], 'Greek')
194
+ return False
195
+
196
+ elif cp_value == 0x05f3 or cp_value == 0x05f4:
197
+ if pos > 0:
198
+ return _is_script(label[pos - 1], 'Hebrew')
199
+ return False
200
+
201
+ elif cp_value == 0x30fb:
202
+ for cp in label:
203
+ if cp == '\u30fb':
204
+ continue
205
+ if _is_script(cp, 'Hiragana') or _is_script(cp, 'Katakana') or _is_script(cp, 'Han'):
206
+ return True
207
+ return False
208
+
209
+ elif 0x660 <= cp_value <= 0x669:
210
+ for cp in label:
211
+ if 0x6f0 <= ord(cp) <= 0x06f9:
212
+ return False
213
+ return True
214
+
215
+ elif 0x6f0 <= cp_value <= 0x6f9:
216
+ for cp in label:
217
+ if 0x660 <= ord(cp) <= 0x0669:
218
+ return False
219
+ return True
220
+
221
+ return False
222
+
223
+
224
+ def check_label(label: Union[str, bytes, bytearray]) -> None:
225
+ if isinstance(label, (bytes, bytearray)):
226
+ label = label.decode('utf-8')
227
+ if len(label) == 0:
228
+ raise IDNAError('Empty Label')
229
+
230
+ check_nfc(label)
231
+ check_hyphen_ok(label)
232
+ check_initial_combiner(label)
233
+
234
+ for (pos, cp) in enumerate(label):
235
+ cp_value = ord(cp)
236
+ if intranges_contain(cp_value, idnadata.codepoint_classes['PVALID']):
237
+ continue
238
+ elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTJ']):
239
+ try:
240
+ if not valid_contextj(label, pos):
241
+ raise InvalidCodepointContext('Joiner {} not allowed at position {} in {}'.format(
242
+ _unot(cp_value), pos+1, repr(label)))
243
+ except ValueError:
244
+ raise IDNAError('Unknown codepoint adjacent to joiner {} at position {} in {}'.format(
245
+ _unot(cp_value), pos+1, repr(label)))
246
+ elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTO']):
247
+ if not valid_contexto(label, pos):
248
+ raise InvalidCodepointContext('Codepoint {} not allowed at position {} in {}'.format(_unot(cp_value), pos+1, repr(label)))
249
+ else:
250
+ raise InvalidCodepoint('Codepoint {} at position {} of {} not allowed'.format(_unot(cp_value), pos+1, repr(label)))
251
+
252
+ check_bidi(label)
253
+
254
+
255
+ def alabel(label: str) -> bytes:
256
+ try:
257
+ label_bytes = label.encode('ascii')
258
+ ulabel(label_bytes)
259
+ if not valid_label_length(label_bytes):
260
+ raise IDNAError('Label too long')
261
+ return label_bytes
262
+ except UnicodeEncodeError:
263
+ pass
264
+
265
+ if not label:
266
+ raise IDNAError('No Input')
267
+
268
+ label = str(label)
269
+ check_label(label)
270
+ label_bytes = _punycode(label)
271
+ label_bytes = _alabel_prefix + label_bytes
272
+
273
+ if not valid_label_length(label_bytes):
274
+ raise IDNAError('Label too long')
275
+
276
+ return label_bytes
277
+
278
+
279
+ def ulabel(label: Union[str, bytes, bytearray]) -> str:
280
+ if not isinstance(label, (bytes, bytearray)):
281
+ try:
282
+ label_bytes = label.encode('ascii')
283
+ except UnicodeEncodeError:
284
+ check_label(label)
285
+ return label
286
+ else:
287
+ label_bytes = label
288
+
289
+ label_bytes = label_bytes.lower()
290
+ if label_bytes.startswith(_alabel_prefix):
291
+ label_bytes = label_bytes[len(_alabel_prefix):]
292
+ if not label_bytes:
293
+ raise IDNAError('Malformed A-label, no Punycode eligible content found')
294
+ if label_bytes.decode('ascii')[-1] == '-':
295
+ raise IDNAError('A-label must not end with a hyphen')
296
+ else:
297
+ check_label(label_bytes)
298
+ return label_bytes.decode('ascii')
299
+
300
+ try:
301
+ label = label_bytes.decode('punycode')
302
+ except UnicodeError:
303
+ raise IDNAError('Invalid A-label')
304
+ check_label(label)
305
+ return label
306
+
307
+
308
+ def uts46_remap(domain: str, std3_rules: bool = True, transitional: bool = False) -> str:
309
+ """Re-map the characters in the string according to UTS46 processing."""
310
+ from .uts46data import uts46data
311
+ output = ''
312
+
313
+ for pos, char in enumerate(domain):
314
+ code_point = ord(char)
315
+ try:
316
+ uts46row = uts46data[code_point if code_point < 256 else
317
+ bisect.bisect_left(uts46data, (code_point, 'Z')) - 1]
318
+ status = uts46row[1]
319
+ replacement = None # type: Optional[str]
320
+ if len(uts46row) == 3:
321
+ replacement = uts46row[2]
322
+ if (status == 'V' or
323
+ (status == 'D' and not transitional) or
324
+ (status == '3' and not std3_rules and replacement is None)):
325
+ output += char
326
+ elif replacement is not None and (status == 'M' or
327
+ (status == '3' and not std3_rules) or
328
+ (status == 'D' and transitional)):
329
+ output += replacement
330
+ elif status != 'I':
331
+ raise IndexError()
332
+ except IndexError:
333
+ raise InvalidCodepoint(
334
+ 'Codepoint {} not allowed at position {} in {}'.format(
335
+ _unot(code_point), pos + 1, repr(domain)))
336
+
337
+ return unicodedata.normalize('NFC', output)
338
+
339
+
340
+ def encode(s: Union[str, bytes, bytearray], strict: bool = False, uts46: bool = False, std3_rules: bool = False, transitional: bool = False) -> bytes:
341
+ if not isinstance(s, str):
342
+ try:
343
+ s = str(s, 'ascii')
344
+ except UnicodeDecodeError:
345
+ raise IDNAError('should pass a unicode string to the function rather than a byte string.')
346
+ if uts46:
347
+ s = uts46_remap(s, std3_rules, transitional)
348
+ trailing_dot = False
349
+ result = []
350
+ if strict:
351
+ labels = s.split('.')
352
+ else:
353
+ labels = _unicode_dots_re.split(s)
354
+ if not labels or labels == ['']:
355
+ raise IDNAError('Empty domain')
356
+ if labels[-1] == '':
357
+ del labels[-1]
358
+ trailing_dot = True
359
+ for label in labels:
360
+ s = alabel(label)
361
+ if s:
362
+ result.append(s)
363
+ else:
364
+ raise IDNAError('Empty label')
365
+ if trailing_dot:
366
+ result.append(b'')
367
+ s = b'.'.join(result)
368
+ if not valid_string_length(s, trailing_dot):
369
+ raise IDNAError('Domain too long')
370
+ return s
371
+
372
+
373
+ def decode(s: Union[str, bytes, bytearray], strict: bool = False, uts46: bool = False, std3_rules: bool = False) -> str:
374
+ try:
375
+ if not isinstance(s, str):
376
+ s = str(s, 'ascii')
377
+ except UnicodeDecodeError:
378
+ raise IDNAError('Invalid ASCII in A-label')
379
+ if uts46:
380
+ s = uts46_remap(s, std3_rules, False)
381
+ trailing_dot = False
382
+ result = []
383
+ if not strict:
384
+ labels = _unicode_dots_re.split(s)
385
+ else:
386
+ labels = s.split('.')
387
+ if not labels or labels == ['']:
388
+ raise IDNAError('Empty domain')
389
+ if not labels[-1]:
390
+ del labels[-1]
391
+ trailing_dot = True
392
+ for label in labels:
393
+ s = ulabel(label)
394
+ if s:
395
+ result.append(s)
396
+ else:
397
+ raise IDNAError('Empty label')
398
+ if trailing_dot:
399
+ result.append('')
400
+ return '.'.join(result)
lib/python3.11/site-packages/idna/idnadata.py ADDED
@@ -0,0 +1,2150 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # This file is automatically generated by tools/idna-data
2
+
3
+ __version__ = '15.1.0'
4
+ scripts = {
5
+ 'Greek': (
6
+ 0x37000000374,
7
+ 0x37500000378,
8
+ 0x37a0000037e,
9
+ 0x37f00000380,
10
+ 0x38400000385,
11
+ 0x38600000387,
12
+ 0x3880000038b,
13
+ 0x38c0000038d,
14
+ 0x38e000003a2,
15
+ 0x3a3000003e2,
16
+ 0x3f000000400,
17
+ 0x1d2600001d2b,
18
+ 0x1d5d00001d62,
19
+ 0x1d6600001d6b,
20
+ 0x1dbf00001dc0,
21
+ 0x1f0000001f16,
22
+ 0x1f1800001f1e,
23
+ 0x1f2000001f46,
24
+ 0x1f4800001f4e,
25
+ 0x1f5000001f58,
26
+ 0x1f5900001f5a,
27
+ 0x1f5b00001f5c,
28
+ 0x1f5d00001f5e,
29
+ 0x1f5f00001f7e,
30
+ 0x1f8000001fb5,
31
+ 0x1fb600001fc5,
32
+ 0x1fc600001fd4,
33
+ 0x1fd600001fdc,
34
+ 0x1fdd00001ff0,
35
+ 0x1ff200001ff5,
36
+ 0x1ff600001fff,
37
+ 0x212600002127,
38
+ 0xab650000ab66,
39
+ 0x101400001018f,
40
+ 0x101a0000101a1,
41
+ 0x1d2000001d246,
42
+ ),
43
+ 'Han': (
44
+ 0x2e8000002e9a,
45
+ 0x2e9b00002ef4,
46
+ 0x2f0000002fd6,
47
+ 0x300500003006,
48
+ 0x300700003008,
49
+ 0x30210000302a,
50
+ 0x30380000303c,
51
+ 0x340000004dc0,
52
+ 0x4e000000a000,
53
+ 0xf9000000fa6e,
54
+ 0xfa700000fada,
55
+ 0x16fe200016fe4,
56
+ 0x16ff000016ff2,
57
+ 0x200000002a6e0,
58
+ 0x2a7000002b73a,
59
+ 0x2b7400002b81e,
60
+ 0x2b8200002cea2,
61
+ 0x2ceb00002ebe1,
62
+ 0x2ebf00002ee5e,
63
+ 0x2f8000002fa1e,
64
+ 0x300000003134b,
65
+ 0x31350000323b0,
66
+ ),
67
+ 'Hebrew': (
68
+ 0x591000005c8,
69
+ 0x5d0000005eb,
70
+ 0x5ef000005f5,
71
+ 0xfb1d0000fb37,
72
+ 0xfb380000fb3d,
73
+ 0xfb3e0000fb3f,
74
+ 0xfb400000fb42,
75
+ 0xfb430000fb45,
76
+ 0xfb460000fb50,
77
+ ),
78
+ 'Hiragana': (
79
+ 0x304100003097,
80
+ 0x309d000030a0,
81
+ 0x1b0010001b120,
82
+ 0x1b1320001b133,
83
+ 0x1b1500001b153,
84
+ 0x1f2000001f201,
85
+ ),
86
+ 'Katakana': (
87
+ 0x30a1000030fb,
88
+ 0x30fd00003100,
89
+ 0x31f000003200,
90
+ 0x32d0000032ff,
91
+ 0x330000003358,
92
+ 0xff660000ff70,
93
+ 0xff710000ff9e,
94
+ 0x1aff00001aff4,
95
+ 0x1aff50001affc,
96
+ 0x1affd0001afff,
97
+ 0x1b0000001b001,
98
+ 0x1b1200001b123,
99
+ 0x1b1550001b156,
100
+ 0x1b1640001b168,
101
+ ),
102
+ }
103
+ joining_types = {
104
+ 0x600: 85,
105
+ 0x601: 85,
106
+ 0x602: 85,
107
+ 0x603: 85,
108
+ 0x604: 85,
109
+ 0x605: 85,
110
+ 0x608: 85,
111
+ 0x60b: 85,
112
+ 0x620: 68,
113
+ 0x621: 85,
114
+ 0x622: 82,
115
+ 0x623: 82,
116
+ 0x624: 82,
117
+ 0x625: 82,
118
+ 0x626: 68,
119
+ 0x627: 82,
120
+ 0x628: 68,
121
+ 0x629: 82,
122
+ 0x62a: 68,
123
+ 0x62b: 68,
124
+ 0x62c: 68,
125
+ 0x62d: 68,
126
+ 0x62e: 68,
127
+ 0x62f: 82,
128
+ 0x630: 82,
129
+ 0x631: 82,
130
+ 0x632: 82,
131
+ 0x633: 68,
132
+ 0x634: 68,
133
+ 0x635: 68,
134
+ 0x636: 68,
135
+ 0x637: 68,
136
+ 0x638: 68,
137
+ 0x639: 68,
138
+ 0x63a: 68,
139
+ 0x63b: 68,
140
+ 0x63c: 68,
141
+ 0x63d: 68,
142
+ 0x63e: 68,
143
+ 0x63f: 68,
144
+ 0x640: 67,
145
+ 0x641: 68,
146
+ 0x642: 68,
147
+ 0x643: 68,
148
+ 0x644: 68,
149
+ 0x645: 68,
150
+ 0x646: 68,
151
+ 0x647: 68,
152
+ 0x648: 82,
153
+ 0x649: 68,
154
+ 0x64a: 68,
155
+ 0x66e: 68,
156
+ 0x66f: 68,
157
+ 0x671: 82,
158
+ 0x672: 82,
159
+ 0x673: 82,
160
+ 0x674: 85,
161
+ 0x675: 82,
162
+ 0x676: 82,
163
+ 0x677: 82,
164
+ 0x678: 68,
165
+ 0x679: 68,
166
+ 0x67a: 68,
167
+ 0x67b: 68,
168
+ 0x67c: 68,
169
+ 0x67d: 68,
170
+ 0x67e: 68,
171
+ 0x67f: 68,
172
+ 0x680: 68,
173
+ 0x681: 68,
174
+ 0x682: 68,
175
+ 0x683: 68,
176
+ 0x684: 68,
177
+ 0x685: 68,
178
+ 0x686: 68,
179
+ 0x687: 68,
180
+ 0x688: 82,
181
+ 0x689: 82,
182
+ 0x68a: 82,
183
+ 0x68b: 82,
184
+ 0x68c: 82,
185
+ 0x68d: 82,
186
+ 0x68e: 82,
187
+ 0x68f: 82,
188
+ 0x690: 82,
189
+ 0x691: 82,
190
+ 0x692: 82,
191
+ 0x693: 82,
192
+ 0x694: 82,
193
+ 0x695: 82,
194
+ 0x696: 82,
195
+ 0x697: 82,
196
+ 0x698: 82,
197
+ 0x699: 82,
198
+ 0x69a: 68,
199
+ 0x69b: 68,
200
+ 0x69c: 68,
201
+ 0x69d: 68,
202
+ 0x69e: 68,
203
+ 0x69f: 68,
204
+ 0x6a0: 68,
205
+ 0x6a1: 68,
206
+ 0x6a2: 68,
207
+ 0x6a3: 68,
208
+ 0x6a4: 68,
209
+ 0x6a5: 68,
210
+ 0x6a6: 68,
211
+ 0x6a7: 68,
212
+ 0x6a8: 68,
213
+ 0x6a9: 68,
214
+ 0x6aa: 68,
215
+ 0x6ab: 68,
216
+ 0x6ac: 68,
217
+ 0x6ad: 68,
218
+ 0x6ae: 68,
219
+ 0x6af: 68,
220
+ 0x6b0: 68,
221
+ 0x6b1: 68,
222
+ 0x6b2: 68,
223
+ 0x6b3: 68,
224
+ 0x6b4: 68,
225
+ 0x6b5: 68,
226
+ 0x6b6: 68,
227
+ 0x6b7: 68,
228
+ 0x6b8: 68,
229
+ 0x6b9: 68,
230
+ 0x6ba: 68,
231
+ 0x6bb: 68,
232
+ 0x6bc: 68,
233
+ 0x6bd: 68,
234
+ 0x6be: 68,
235
+ 0x6bf: 68,
236
+ 0x6c0: 82,
237
+ 0x6c1: 68,
238
+ 0x6c2: 68,
239
+ 0x6c3: 82,
240
+ 0x6c4: 82,
241
+ 0x6c5: 82,
242
+ 0x6c6: 82,
243
+ 0x6c7: 82,
244
+ 0x6c8: 82,
245
+ 0x6c9: 82,
246
+ 0x6ca: 82,
247
+ 0x6cb: 82,
248
+ 0x6cc: 68,
249
+ 0x6cd: 82,
250
+ 0x6ce: 68,
251
+ 0x6cf: 82,
252
+ 0x6d0: 68,
253
+ 0x6d1: 68,
254
+ 0x6d2: 82,
255
+ 0x6d3: 82,
256
+ 0x6d5: 82,
257
+ 0x6dd: 85,
258
+ 0x6ee: 82,
259
+ 0x6ef: 82,
260
+ 0x6fa: 68,
261
+ 0x6fb: 68,
262
+ 0x6fc: 68,
263
+ 0x6ff: 68,
264
+ 0x70f: 84,
265
+ 0x710: 82,
266
+ 0x712: 68,
267
+ 0x713: 68,
268
+ 0x714: 68,
269
+ 0x715: 82,
270
+ 0x716: 82,
271
+ 0x717: 82,
272
+ 0x718: 82,
273
+ 0x719: 82,
274
+ 0x71a: 68,
275
+ 0x71b: 68,
276
+ 0x71c: 68,
277
+ 0x71d: 68,
278
+ 0x71e: 82,
279
+ 0x71f: 68,
280
+ 0x720: 68,
281
+ 0x721: 68,
282
+ 0x722: 68,
283
+ 0x723: 68,
284
+ 0x724: 68,
285
+ 0x725: 68,
286
+ 0x726: 68,
287
+ 0x727: 68,
288
+ 0x728: 82,
289
+ 0x729: 68,
290
+ 0x72a: 82,
291
+ 0x72b: 68,
292
+ 0x72c: 82,
293
+ 0x72d: 68,
294
+ 0x72e: 68,
295
+ 0x72f: 82,
296
+ 0x74d: 82,
297
+ 0x74e: 68,
298
+ 0x74f: 68,
299
+ 0x750: 68,
300
+ 0x751: 68,
301
+ 0x752: 68,
302
+ 0x753: 68,
303
+ 0x754: 68,
304
+ 0x755: 68,
305
+ 0x756: 68,
306
+ 0x757: 68,
307
+ 0x758: 68,
308
+ 0x759: 82,
309
+ 0x75a: 82,
310
+ 0x75b: 82,
311
+ 0x75c: 68,
312
+ 0x75d: 68,
313
+ 0x75e: 68,
314
+ 0x75f: 68,
315
+ 0x760: 68,
316
+ 0x761: 68,
317
+ 0x762: 68,
318
+ 0x763: 68,
319
+ 0x764: 68,
320
+ 0x765: 68,
321
+ 0x766: 68,
322
+ 0x767: 68,
323
+ 0x768: 68,
324
+ 0x769: 68,
325
+ 0x76a: 68,
326
+ 0x76b: 82,
327
+ 0x76c: 82,
328
+ 0x76d: 68,
329
+ 0x76e: 68,
330
+ 0x76f: 68,
331
+ 0x770: 68,
332
+ 0x771: 82,
333
+ 0x772: 68,
334
+ 0x773: 82,
335
+ 0x774: 82,
336
+ 0x775: 68,
337
+ 0x776: 68,
338
+ 0x777: 68,
339
+ 0x778: 82,
340
+ 0x779: 82,
341
+ 0x77a: 68,
342
+ 0x77b: 68,
343
+ 0x77c: 68,
344
+ 0x77d: 68,
345
+ 0x77e: 68,
346
+ 0x77f: 68,
347
+ 0x7ca: 68,
348
+ 0x7cb: 68,
349
+ 0x7cc: 68,
350
+ 0x7cd: 68,
351
+ 0x7ce: 68,
352
+ 0x7cf: 68,
353
+ 0x7d0: 68,
354
+ 0x7d1: 68,
355
+ 0x7d2: 68,
356
+ 0x7d3: 68,
357
+ 0x7d4: 68,
358
+ 0x7d5: 68,
359
+ 0x7d6: 68,
360
+ 0x7d7: 68,
361
+ 0x7d8: 68,
362
+ 0x7d9: 68,
363
+ 0x7da: 68,
364
+ 0x7db: 68,
365
+ 0x7dc: 68,
366
+ 0x7dd: 68,
367
+ 0x7de: 68,
368
+ 0x7df: 68,
369
+ 0x7e0: 68,
370
+ 0x7e1: 68,
371
+ 0x7e2: 68,
372
+ 0x7e3: 68,
373
+ 0x7e4: 68,
374
+ 0x7e5: 68,
375
+ 0x7e6: 68,
376
+ 0x7e7: 68,
377
+ 0x7e8: 68,
378
+ 0x7e9: 68,
379
+ 0x7ea: 68,
380
+ 0x7fa: 67,
381
+ 0x840: 82,
382
+ 0x841: 68,
383
+ 0x842: 68,
384
+ 0x843: 68,
385
+ 0x844: 68,
386
+ 0x845: 68,
387
+ 0x846: 82,
388
+ 0x847: 82,
389
+ 0x848: 68,
390
+ 0x849: 82,
391
+ 0x84a: 68,
392
+ 0x84b: 68,
393
+ 0x84c: 68,
394
+ 0x84d: 68,
395
+ 0x84e: 68,
396
+ 0x84f: 68,
397
+ 0x850: 68,
398
+ 0x851: 68,
399
+ 0x852: 68,
400
+ 0x853: 68,
401
+ 0x854: 82,
402
+ 0x855: 68,
403
+ 0x856: 82,
404
+ 0x857: 82,
405
+ 0x858: 82,
406
+ 0x860: 68,
407
+ 0x861: 85,
408
+ 0x862: 68,
409
+ 0x863: 68,
410
+ 0x864: 68,
411
+ 0x865: 68,
412
+ 0x866: 85,
413
+ 0x867: 82,
414
+ 0x868: 68,
415
+ 0x869: 82,
416
+ 0x86a: 82,
417
+ 0x870: 82,
418
+ 0x871: 82,
419
+ 0x872: 82,
420
+ 0x873: 82,
421
+ 0x874: 82,
422
+ 0x875: 82,
423
+ 0x876: 82,
424
+ 0x877: 82,
425
+ 0x878: 82,
426
+ 0x879: 82,
427
+ 0x87a: 82,
428
+ 0x87b: 82,
429
+ 0x87c: 82,
430
+ 0x87d: 82,
431
+ 0x87e: 82,
432
+ 0x87f: 82,
433
+ 0x880: 82,
434
+ 0x881: 82,
435
+ 0x882: 82,
436
+ 0x883: 67,
437
+ 0x884: 67,
438
+ 0x885: 67,
439
+ 0x886: 68,
440
+ 0x887: 85,
441
+ 0x888: 85,
442
+ 0x889: 68,
443
+ 0x88a: 68,
444
+ 0x88b: 68,
445
+ 0x88c: 68,
446
+ 0x88d: 68,
447
+ 0x88e: 82,
448
+ 0x890: 85,
449
+ 0x891: 85,
450
+ 0x8a0: 68,
451
+ 0x8a1: 68,
452
+ 0x8a2: 68,
453
+ 0x8a3: 68,
454
+ 0x8a4: 68,
455
+ 0x8a5: 68,
456
+ 0x8a6: 68,
457
+ 0x8a7: 68,
458
+ 0x8a8: 68,
459
+ 0x8a9: 68,
460
+ 0x8aa: 82,
461
+ 0x8ab: 82,
462
+ 0x8ac: 82,
463
+ 0x8ad: 85,
464
+ 0x8ae: 82,
465
+ 0x8af: 68,
466
+ 0x8b0: 68,
467
+ 0x8b1: 82,
468
+ 0x8b2: 82,
469
+ 0x8b3: 68,
470
+ 0x8b4: 68,
471
+ 0x8b5: 68,
472
+ 0x8b6: 68,
473
+ 0x8b7: 68,
474
+ 0x8b8: 68,
475
+ 0x8b9: 82,
476
+ 0x8ba: 68,
477
+ 0x8bb: 68,
478
+ 0x8bc: 68,
479
+ 0x8bd: 68,
480
+ 0x8be: 68,
481
+ 0x8bf: 68,
482
+ 0x8c0: 68,
483
+ 0x8c1: 68,
484
+ 0x8c2: 68,
485
+ 0x8c3: 68,
486
+ 0x8c4: 68,
487
+ 0x8c5: 68,
488
+ 0x8c6: 68,
489
+ 0x8c7: 68,
490
+ 0x8c8: 68,
491
+ 0x8e2: 85,
492
+ 0x1806: 85,
493
+ 0x1807: 68,
494
+ 0x180a: 67,
495
+ 0x180e: 85,
496
+ 0x1820: 68,
497
+ 0x1821: 68,
498
+ 0x1822: 68,
499
+ 0x1823: 68,
500
+ 0x1824: 68,
501
+ 0x1825: 68,
502
+ 0x1826: 68,
503
+ 0x1827: 68,
504
+ 0x1828: 68,
505
+ 0x1829: 68,
506
+ 0x182a: 68,
507
+ 0x182b: 68,
508
+ 0x182c: 68,
509
+ 0x182d: 68,
510
+ 0x182e: 68,
511
+ 0x182f: 68,
512
+ 0x1830: 68,
513
+ 0x1831: 68,
514
+ 0x1832: 68,
515
+ 0x1833: 68,
516
+ 0x1834: 68,
517
+ 0x1835: 68,
518
+ 0x1836: 68,
519
+ 0x1837: 68,
520
+ 0x1838: 68,
521
+ 0x1839: 68,
522
+ 0x183a: 68,
523
+ 0x183b: 68,
524
+ 0x183c: 68,
525
+ 0x183d: 68,
526
+ 0x183e: 68,
527
+ 0x183f: 68,
528
+ 0x1840: 68,
529
+ 0x1841: 68,
530
+ 0x1842: 68,
531
+ 0x1843: 68,
532
+ 0x1844: 68,
533
+ 0x1845: 68,
534
+ 0x1846: 68,
535
+ 0x1847: 68,
536
+ 0x1848: 68,
537
+ 0x1849: 68,
538
+ 0x184a: 68,
539
+ 0x184b: 68,
540
+ 0x184c: 68,
541
+ 0x184d: 68,
542
+ 0x184e: 68,
543
+ 0x184f: 68,
544
+ 0x1850: 68,
545
+ 0x1851: 68,
546
+ 0x1852: 68,
547
+ 0x1853: 68,
548
+ 0x1854: 68,
549
+ 0x1855: 68,
550
+ 0x1856: 68,
551
+ 0x1857: 68,
552
+ 0x1858: 68,
553
+ 0x1859: 68,
554
+ 0x185a: 68,
555
+ 0x185b: 68,
556
+ 0x185c: 68,
557
+ 0x185d: 68,
558
+ 0x185e: 68,
559
+ 0x185f: 68,
560
+ 0x1860: 68,
561
+ 0x1861: 68,
562
+ 0x1862: 68,
563
+ 0x1863: 68,
564
+ 0x1864: 68,
565
+ 0x1865: 68,
566
+ 0x1866: 68,
567
+ 0x1867: 68,
568
+ 0x1868: 68,
569
+ 0x1869: 68,
570
+ 0x186a: 68,
571
+ 0x186b: 68,
572
+ 0x186c: 68,
573
+ 0x186d: 68,
574
+ 0x186e: 68,
575
+ 0x186f: 68,
576
+ 0x1870: 68,
577
+ 0x1871: 68,
578
+ 0x1872: 68,
579
+ 0x1873: 68,
580
+ 0x1874: 68,
581
+ 0x1875: 68,
582
+ 0x1876: 68,
583
+ 0x1877: 68,
584
+ 0x1878: 68,
585
+ 0x1880: 85,
586
+ 0x1881: 85,
587
+ 0x1882: 85,
588
+ 0x1883: 85,
589
+ 0x1884: 85,
590
+ 0x1885: 84,
591
+ 0x1886: 84,
592
+ 0x1887: 68,
593
+ 0x1888: 68,
594
+ 0x1889: 68,
595
+ 0x188a: 68,
596
+ 0x188b: 68,
597
+ 0x188c: 68,
598
+ 0x188d: 68,
599
+ 0x188e: 68,
600
+ 0x188f: 68,
601
+ 0x1890: 68,
602
+ 0x1891: 68,
603
+ 0x1892: 68,
604
+ 0x1893: 68,
605
+ 0x1894: 68,
606
+ 0x1895: 68,
607
+ 0x1896: 68,
608
+ 0x1897: 68,
609
+ 0x1898: 68,
610
+ 0x1899: 68,
611
+ 0x189a: 68,
612
+ 0x189b: 68,
613
+ 0x189c: 68,
614
+ 0x189d: 68,
615
+ 0x189e: 68,
616
+ 0x189f: 68,
617
+ 0x18a0: 68,
618
+ 0x18a1: 68,
619
+ 0x18a2: 68,
620
+ 0x18a3: 68,
621
+ 0x18a4: 68,
622
+ 0x18a5: 68,
623
+ 0x18a6: 68,
624
+ 0x18a7: 68,
625
+ 0x18a8: 68,
626
+ 0x18aa: 68,
627
+ 0x200c: 85,
628
+ 0x200d: 67,
629
+ 0x202f: 85,
630
+ 0x2066: 85,
631
+ 0x2067: 85,
632
+ 0x2068: 85,
633
+ 0x2069: 85,
634
+ 0xa840: 68,
635
+ 0xa841: 68,
636
+ 0xa842: 68,
637
+ 0xa843: 68,
638
+ 0xa844: 68,
639
+ 0xa845: 68,
640
+ 0xa846: 68,
641
+ 0xa847: 68,
642
+ 0xa848: 68,
643
+ 0xa849: 68,
644
+ 0xa84a: 68,
645
+ 0xa84b: 68,
646
+ 0xa84c: 68,
647
+ 0xa84d: 68,
648
+ 0xa84e: 68,
649
+ 0xa84f: 68,
650
+ 0xa850: 68,
651
+ 0xa851: 68,
652
+ 0xa852: 68,
653
+ 0xa853: 68,
654
+ 0xa854: 68,
655
+ 0xa855: 68,
656
+ 0xa856: 68,
657
+ 0xa857: 68,
658
+ 0xa858: 68,
659
+ 0xa859: 68,
660
+ 0xa85a: 68,
661
+ 0xa85b: 68,
662
+ 0xa85c: 68,
663
+ 0xa85d: 68,
664
+ 0xa85e: 68,
665
+ 0xa85f: 68,
666
+ 0xa860: 68,
667
+ 0xa861: 68,
668
+ 0xa862: 68,
669
+ 0xa863: 68,
670
+ 0xa864: 68,
671
+ 0xa865: 68,
672
+ 0xa866: 68,
673
+ 0xa867: 68,
674
+ 0xa868: 68,
675
+ 0xa869: 68,
676
+ 0xa86a: 68,
677
+ 0xa86b: 68,
678
+ 0xa86c: 68,
679
+ 0xa86d: 68,
680
+ 0xa86e: 68,
681
+ 0xa86f: 68,
682
+ 0xa870: 68,
683
+ 0xa871: 68,
684
+ 0xa872: 76,
685
+ 0xa873: 85,
686
+ 0x10ac0: 68,
687
+ 0x10ac1: 68,
688
+ 0x10ac2: 68,
689
+ 0x10ac3: 68,
690
+ 0x10ac4: 68,
691
+ 0x10ac5: 82,
692
+ 0x10ac6: 85,
693
+ 0x10ac7: 82,
694
+ 0x10ac8: 85,
695
+ 0x10ac9: 82,
696
+ 0x10aca: 82,
697
+ 0x10acb: 85,
698
+ 0x10acc: 85,
699
+ 0x10acd: 76,
700
+ 0x10ace: 82,
701
+ 0x10acf: 82,
702
+ 0x10ad0: 82,
703
+ 0x10ad1: 82,
704
+ 0x10ad2: 82,
705
+ 0x10ad3: 68,
706
+ 0x10ad4: 68,
707
+ 0x10ad5: 68,
708
+ 0x10ad6: 68,
709
+ 0x10ad7: 76,
710
+ 0x10ad8: 68,
711
+ 0x10ad9: 68,
712
+ 0x10ada: 68,
713
+ 0x10adb: 68,
714
+ 0x10adc: 68,
715
+ 0x10add: 82,
716
+ 0x10ade: 68,
717
+ 0x10adf: 68,
718
+ 0x10ae0: 68,
719
+ 0x10ae1: 82,
720
+ 0x10ae2: 85,
721
+ 0x10ae3: 85,
722
+ 0x10ae4: 82,
723
+ 0x10aeb: 68,
724
+ 0x10aec: 68,
725
+ 0x10aed: 68,
726
+ 0x10aee: 68,
727
+ 0x10aef: 82,
728
+ 0x10b80: 68,
729
+ 0x10b81: 82,
730
+ 0x10b82: 68,
731
+ 0x10b83: 82,
732
+ 0x10b84: 82,
733
+ 0x10b85: 82,
734
+ 0x10b86: 68,
735
+ 0x10b87: 68,
736
+ 0x10b88: 68,
737
+ 0x10b89: 82,
738
+ 0x10b8a: 68,
739
+ 0x10b8b: 68,
740
+ 0x10b8c: 82,
741
+ 0x10b8d: 68,
742
+ 0x10b8e: 82,
743
+ 0x10b8f: 82,
744
+ 0x10b90: 68,
745
+ 0x10b91: 82,
746
+ 0x10ba9: 82,
747
+ 0x10baa: 82,
748
+ 0x10bab: 82,
749
+ 0x10bac: 82,
750
+ 0x10bad: 68,
751
+ 0x10bae: 68,
752
+ 0x10baf: 85,
753
+ 0x10d00: 76,
754
+ 0x10d01: 68,
755
+ 0x10d02: 68,
756
+ 0x10d03: 68,
757
+ 0x10d04: 68,
758
+ 0x10d05: 68,
759
+ 0x10d06: 68,
760
+ 0x10d07: 68,
761
+ 0x10d08: 68,
762
+ 0x10d09: 68,
763
+ 0x10d0a: 68,
764
+ 0x10d0b: 68,
765
+ 0x10d0c: 68,
766
+ 0x10d0d: 68,
767
+ 0x10d0e: 68,
768
+ 0x10d0f: 68,
769
+ 0x10d10: 68,
770
+ 0x10d11: 68,
771
+ 0x10d12: 68,
772
+ 0x10d13: 68,
773
+ 0x10d14: 68,
774
+ 0x10d15: 68,
775
+ 0x10d16: 68,
776
+ 0x10d17: 68,
777
+ 0x10d18: 68,
778
+ 0x10d19: 68,
779
+ 0x10d1a: 68,
780
+ 0x10d1b: 68,
781
+ 0x10d1c: 68,
782
+ 0x10d1d: 68,
783
+ 0x10d1e: 68,
784
+ 0x10d1f: 68,
785
+ 0x10d20: 68,
786
+ 0x10d21: 68,
787
+ 0x10d22: 82,
788
+ 0x10d23: 68,
789
+ 0x10f30: 68,
790
+ 0x10f31: 68,
791
+ 0x10f32: 68,
792
+ 0x10f33: 82,
793
+ 0x10f34: 68,
794
+ 0x10f35: 68,
795
+ 0x10f36: 68,
796
+ 0x10f37: 68,
797
+ 0x10f38: 68,
798
+ 0x10f39: 68,
799
+ 0x10f3a: 68,
800
+ 0x10f3b: 68,
801
+ 0x10f3c: 68,
802
+ 0x10f3d: 68,
803
+ 0x10f3e: 68,
804
+ 0x10f3f: 68,
805
+ 0x10f40: 68,
806
+ 0x10f41: 68,
807
+ 0x10f42: 68,
808
+ 0x10f43: 68,
809
+ 0x10f44: 68,
810
+ 0x10f45: 85,
811
+ 0x10f51: 68,
812
+ 0x10f52: 68,
813
+ 0x10f53: 68,
814
+ 0x10f54: 82,
815
+ 0x10f70: 68,
816
+ 0x10f71: 68,
817
+ 0x10f72: 68,
818
+ 0x10f73: 68,
819
+ 0x10f74: 82,
820
+ 0x10f75: 82,
821
+ 0x10f76: 68,
822
+ 0x10f77: 68,
823
+ 0x10f78: 68,
824
+ 0x10f79: 68,
825
+ 0x10f7a: 68,
826
+ 0x10f7b: 68,
827
+ 0x10f7c: 68,
828
+ 0x10f7d: 68,
829
+ 0x10f7e: 68,
830
+ 0x10f7f: 68,
831
+ 0x10f80: 68,
832
+ 0x10f81: 68,
833
+ 0x10fb0: 68,
834
+ 0x10fb1: 85,
835
+ 0x10fb2: 68,
836
+ 0x10fb3: 68,
837
+ 0x10fb4: 82,
838
+ 0x10fb5: 82,
839
+ 0x10fb6: 82,
840
+ 0x10fb7: 85,
841
+ 0x10fb8: 68,
842
+ 0x10fb9: 82,
843
+ 0x10fba: 82,
844
+ 0x10fbb: 68,
845
+ 0x10fbc: 68,
846
+ 0x10fbd: 82,
847
+ 0x10fbe: 68,
848
+ 0x10fbf: 68,
849
+ 0x10fc0: 85,
850
+ 0x10fc1: 68,
851
+ 0x10fc2: 82,
852
+ 0x10fc3: 82,
853
+ 0x10fc4: 68,
854
+ 0x10fc5: 85,
855
+ 0x10fc6: 85,
856
+ 0x10fc7: 85,
857
+ 0x10fc8: 85,
858
+ 0x10fc9: 82,
859
+ 0x10fca: 68,
860
+ 0x10fcb: 76,
861
+ 0x110bd: 85,
862
+ 0x110cd: 85,
863
+ 0x1e900: 68,
864
+ 0x1e901: 68,
865
+ 0x1e902: 68,
866
+ 0x1e903: 68,
867
+ 0x1e904: 68,
868
+ 0x1e905: 68,
869
+ 0x1e906: 68,
870
+ 0x1e907: 68,
871
+ 0x1e908: 68,
872
+ 0x1e909: 68,
873
+ 0x1e90a: 68,
874
+ 0x1e90b: 68,
875
+ 0x1e90c: 68,
876
+ 0x1e90d: 68,
877
+ 0x1e90e: 68,
878
+ 0x1e90f: 68,
879
+ 0x1e910: 68,
880
+ 0x1e911: 68,
881
+ 0x1e912: 68,
882
+ 0x1e913: 68,
883
+ 0x1e914: 68,
884
+ 0x1e915: 68,
885
+ 0x1e916: 68,
886
+ 0x1e917: 68,
887
+ 0x1e918: 68,
888
+ 0x1e919: 68,
889
+ 0x1e91a: 68,
890
+ 0x1e91b: 68,
891
+ 0x1e91c: 68,
892
+ 0x1e91d: 68,
893
+ 0x1e91e: 68,
894
+ 0x1e91f: 68,
895
+ 0x1e920: 68,
896
+ 0x1e921: 68,
897
+ 0x1e922: 68,
898
+ 0x1e923: 68,
899
+ 0x1e924: 68,
900
+ 0x1e925: 68,
901
+ 0x1e926: 68,
902
+ 0x1e927: 68,
903
+ 0x1e928: 68,
904
+ 0x1e929: 68,
905
+ 0x1e92a: 68,
906
+ 0x1e92b: 68,
907
+ 0x1e92c: 68,
908
+ 0x1e92d: 68,
909
+ 0x1e92e: 68,
910
+ 0x1e92f: 68,
911
+ 0x1e930: 68,
912
+ 0x1e931: 68,
913
+ 0x1e932: 68,
914
+ 0x1e933: 68,
915
+ 0x1e934: 68,
916
+ 0x1e935: 68,
917
+ 0x1e936: 68,
918
+ 0x1e937: 68,
919
+ 0x1e938: 68,
920
+ 0x1e939: 68,
921
+ 0x1e93a: 68,
922
+ 0x1e93b: 68,
923
+ 0x1e93c: 68,
924
+ 0x1e93d: 68,
925
+ 0x1e93e: 68,
926
+ 0x1e93f: 68,
927
+ 0x1e940: 68,
928
+ 0x1e941: 68,
929
+ 0x1e942: 68,
930
+ 0x1e943: 68,
931
+ 0x1e94b: 84,
932
+ }
933
+ codepoint_classes = {
934
+ 'PVALID': (
935
+ 0x2d0000002e,
936
+ 0x300000003a,
937
+ 0x610000007b,
938
+ 0xdf000000f7,
939
+ 0xf800000100,
940
+ 0x10100000102,
941
+ 0x10300000104,
942
+ 0x10500000106,
943
+ 0x10700000108,
944
+ 0x1090000010a,
945
+ 0x10b0000010c,
946
+ 0x10d0000010e,
947
+ 0x10f00000110,
948
+ 0x11100000112,
949
+ 0x11300000114,
950
+ 0x11500000116,
951
+ 0x11700000118,
952
+ 0x1190000011a,
953
+ 0x11b0000011c,
954
+ 0x11d0000011e,
955
+ 0x11f00000120,
956
+ 0x12100000122,
957
+ 0x12300000124,
958
+ 0x12500000126,
959
+ 0x12700000128,
960
+ 0x1290000012a,
961
+ 0x12b0000012c,
962
+ 0x12d0000012e,
963
+ 0x12f00000130,
964
+ 0x13100000132,
965
+ 0x13500000136,
966
+ 0x13700000139,
967
+ 0x13a0000013b,
968
+ 0x13c0000013d,
969
+ 0x13e0000013f,
970
+ 0x14200000143,
971
+ 0x14400000145,
972
+ 0x14600000147,
973
+ 0x14800000149,
974
+ 0x14b0000014c,
975
+ 0x14d0000014e,
976
+ 0x14f00000150,
977
+ 0x15100000152,
978
+ 0x15300000154,
979
+ 0x15500000156,
980
+ 0x15700000158,
981
+ 0x1590000015a,
982
+ 0x15b0000015c,
983
+ 0x15d0000015e,
984
+ 0x15f00000160,
985
+ 0x16100000162,
986
+ 0x16300000164,
987
+ 0x16500000166,
988
+ 0x16700000168,
989
+ 0x1690000016a,
990
+ 0x16b0000016c,
991
+ 0x16d0000016e,
992
+ 0x16f00000170,
993
+ 0x17100000172,
994
+ 0x17300000174,
995
+ 0x17500000176,
996
+ 0x17700000178,
997
+ 0x17a0000017b,
998
+ 0x17c0000017d,
999
+ 0x17e0000017f,
1000
+ 0x18000000181,
1001
+ 0x18300000184,
1002
+ 0x18500000186,
1003
+ 0x18800000189,
1004
+ 0x18c0000018e,
1005
+ 0x19200000193,
1006
+ 0x19500000196,
1007
+ 0x1990000019c,
1008
+ 0x19e0000019f,
1009
+ 0x1a1000001a2,
1010
+ 0x1a3000001a4,
1011
+ 0x1a5000001a6,
1012
+ 0x1a8000001a9,
1013
+ 0x1aa000001ac,
1014
+ 0x1ad000001ae,
1015
+ 0x1b0000001b1,
1016
+ 0x1b4000001b5,
1017
+ 0x1b6000001b7,
1018
+ 0x1b9000001bc,
1019
+ 0x1bd000001c4,
1020
+ 0x1ce000001cf,
1021
+ 0x1d0000001d1,
1022
+ 0x1d2000001d3,
1023
+ 0x1d4000001d5,
1024
+ 0x1d6000001d7,
1025
+ 0x1d8000001d9,
1026
+ 0x1da000001db,
1027
+ 0x1dc000001de,
1028
+ 0x1df000001e0,
1029
+ 0x1e1000001e2,
1030
+ 0x1e3000001e4,
1031
+ 0x1e5000001e6,
1032
+ 0x1e7000001e8,
1033
+ 0x1e9000001ea,
1034
+ 0x1eb000001ec,
1035
+ 0x1ed000001ee,
1036
+ 0x1ef000001f1,
1037
+ 0x1f5000001f6,
1038
+ 0x1f9000001fa,
1039
+ 0x1fb000001fc,
1040
+ 0x1fd000001fe,
1041
+ 0x1ff00000200,
1042
+ 0x20100000202,
1043
+ 0x20300000204,
1044
+ 0x20500000206,
1045
+ 0x20700000208,
1046
+ 0x2090000020a,
1047
+ 0x20b0000020c,
1048
+ 0x20d0000020e,
1049
+ 0x20f00000210,
1050
+ 0x21100000212,
1051
+ 0x21300000214,
1052
+ 0x21500000216,
1053
+ 0x21700000218,
1054
+ 0x2190000021a,
1055
+ 0x21b0000021c,
1056
+ 0x21d0000021e,
1057
+ 0x21f00000220,
1058
+ 0x22100000222,
1059
+ 0x22300000224,
1060
+ 0x22500000226,
1061
+ 0x22700000228,
1062
+ 0x2290000022a,
1063
+ 0x22b0000022c,
1064
+ 0x22d0000022e,
1065
+ 0x22f00000230,
1066
+ 0x23100000232,
1067
+ 0x2330000023a,
1068
+ 0x23c0000023d,
1069
+ 0x23f00000241,
1070
+ 0x24200000243,
1071
+ 0x24700000248,
1072
+ 0x2490000024a,
1073
+ 0x24b0000024c,
1074
+ 0x24d0000024e,
1075
+ 0x24f000002b0,
1076
+ 0x2b9000002c2,
1077
+ 0x2c6000002d2,
1078
+ 0x2ec000002ed,
1079
+ 0x2ee000002ef,
1080
+ 0x30000000340,
1081
+ 0x34200000343,
1082
+ 0x3460000034f,
1083
+ 0x35000000370,
1084
+ 0x37100000372,
1085
+ 0x37300000374,
1086
+ 0x37700000378,
1087
+ 0x37b0000037e,
1088
+ 0x39000000391,
1089
+ 0x3ac000003cf,
1090
+ 0x3d7000003d8,
1091
+ 0x3d9000003da,
1092
+ 0x3db000003dc,
1093
+ 0x3dd000003de,
1094
+ 0x3df000003e0,
1095
+ 0x3e1000003e2,
1096
+ 0x3e3000003e4,
1097
+ 0x3e5000003e6,
1098
+ 0x3e7000003e8,
1099
+ 0x3e9000003ea,
1100
+ 0x3eb000003ec,
1101
+ 0x3ed000003ee,
1102
+ 0x3ef000003f0,
1103
+ 0x3f3000003f4,
1104
+ 0x3f8000003f9,
1105
+ 0x3fb000003fd,
1106
+ 0x43000000460,
1107
+ 0x46100000462,
1108
+ 0x46300000464,
1109
+ 0x46500000466,
1110
+ 0x46700000468,
1111
+ 0x4690000046a,
1112
+ 0x46b0000046c,
1113
+ 0x46d0000046e,
1114
+ 0x46f00000470,
1115
+ 0x47100000472,
1116
+ 0x47300000474,
1117
+ 0x47500000476,
1118
+ 0x47700000478,
1119
+ 0x4790000047a,
1120
+ 0x47b0000047c,
1121
+ 0x47d0000047e,
1122
+ 0x47f00000480,
1123
+ 0x48100000482,
1124
+ 0x48300000488,
1125
+ 0x48b0000048c,
1126
+ 0x48d0000048e,
1127
+ 0x48f00000490,
1128
+ 0x49100000492,
1129
+ 0x49300000494,
1130
+ 0x49500000496,
1131
+ 0x49700000498,
1132
+ 0x4990000049a,
1133
+ 0x49b0000049c,
1134
+ 0x49d0000049e,
1135
+ 0x49f000004a0,
1136
+ 0x4a1000004a2,
1137
+ 0x4a3000004a4,
1138
+ 0x4a5000004a6,
1139
+ 0x4a7000004a8,
1140
+ 0x4a9000004aa,
1141
+ 0x4ab000004ac,
1142
+ 0x4ad000004ae,
1143
+ 0x4af000004b0,
1144
+ 0x4b1000004b2,
1145
+ 0x4b3000004b4,
1146
+ 0x4b5000004b6,
1147
+ 0x4b7000004b8,
1148
+ 0x4b9000004ba,
1149
+ 0x4bb000004bc,
1150
+ 0x4bd000004be,
1151
+ 0x4bf000004c0,
1152
+ 0x4c2000004c3,
1153
+ 0x4c4000004c5,
1154
+ 0x4c6000004c7,
1155
+ 0x4c8000004c9,
1156
+ 0x4ca000004cb,
1157
+ 0x4cc000004cd,
1158
+ 0x4ce000004d0,
1159
+ 0x4d1000004d2,
1160
+ 0x4d3000004d4,
1161
+ 0x4d5000004d6,
1162
+ 0x4d7000004d8,
1163
+ 0x4d9000004da,
1164
+ 0x4db000004dc,
1165
+ 0x4dd000004de,
1166
+ 0x4df000004e0,
1167
+ 0x4e1000004e2,
1168
+ 0x4e3000004e4,
1169
+ 0x4e5000004e6,
1170
+ 0x4e7000004e8,
1171
+ 0x4e9000004ea,
1172
+ 0x4eb000004ec,
1173
+ 0x4ed000004ee,
1174
+ 0x4ef000004f0,
1175
+ 0x4f1000004f2,
1176
+ 0x4f3000004f4,
1177
+ 0x4f5000004f6,
1178
+ 0x4f7000004f8,
1179
+ 0x4f9000004fa,
1180
+ 0x4fb000004fc,
1181
+ 0x4fd000004fe,
1182
+ 0x4ff00000500,
1183
+ 0x50100000502,
1184
+ 0x50300000504,
1185
+ 0x50500000506,
1186
+ 0x50700000508,
1187
+ 0x5090000050a,
1188
+ 0x50b0000050c,
1189
+ 0x50d0000050e,
1190
+ 0x50f00000510,
1191
+ 0x51100000512,
1192
+ 0x51300000514,
1193
+ 0x51500000516,
1194
+ 0x51700000518,
1195
+ 0x5190000051a,
1196
+ 0x51b0000051c,
1197
+ 0x51d0000051e,
1198
+ 0x51f00000520,
1199
+ 0x52100000522,
1200
+ 0x52300000524,
1201
+ 0x52500000526,
1202
+ 0x52700000528,
1203
+ 0x5290000052a,
1204
+ 0x52b0000052c,
1205
+ 0x52d0000052e,
1206
+ 0x52f00000530,
1207
+ 0x5590000055a,
1208
+ 0x56000000587,
1209
+ 0x58800000589,
1210
+ 0x591000005be,
1211
+ 0x5bf000005c0,
1212
+ 0x5c1000005c3,
1213
+ 0x5c4000005c6,
1214
+ 0x5c7000005c8,
1215
+ 0x5d0000005eb,
1216
+ 0x5ef000005f3,
1217
+ 0x6100000061b,
1218
+ 0x62000000640,
1219
+ 0x64100000660,
1220
+ 0x66e00000675,
1221
+ 0x679000006d4,
1222
+ 0x6d5000006dd,
1223
+ 0x6df000006e9,
1224
+ 0x6ea000006f0,
1225
+ 0x6fa00000700,
1226
+ 0x7100000074b,
1227
+ 0x74d000007b2,
1228
+ 0x7c0000007f6,
1229
+ 0x7fd000007fe,
1230
+ 0x8000000082e,
1231
+ 0x8400000085c,
1232
+ 0x8600000086b,
1233
+ 0x87000000888,
1234
+ 0x8890000088f,
1235
+ 0x898000008e2,
1236
+ 0x8e300000958,
1237
+ 0x96000000964,
1238
+ 0x96600000970,
1239
+ 0x97100000984,
1240
+ 0x9850000098d,
1241
+ 0x98f00000991,
1242
+ 0x993000009a9,
1243
+ 0x9aa000009b1,
1244
+ 0x9b2000009b3,
1245
+ 0x9b6000009ba,
1246
+ 0x9bc000009c5,
1247
+ 0x9c7000009c9,
1248
+ 0x9cb000009cf,
1249
+ 0x9d7000009d8,
1250
+ 0x9e0000009e4,
1251
+ 0x9e6000009f2,
1252
+ 0x9fc000009fd,
1253
+ 0x9fe000009ff,
1254
+ 0xa0100000a04,
1255
+ 0xa0500000a0b,
1256
+ 0xa0f00000a11,
1257
+ 0xa1300000a29,
1258
+ 0xa2a00000a31,
1259
+ 0xa3200000a33,
1260
+ 0xa3500000a36,
1261
+ 0xa3800000a3a,
1262
+ 0xa3c00000a3d,
1263
+ 0xa3e00000a43,
1264
+ 0xa4700000a49,
1265
+ 0xa4b00000a4e,
1266
+ 0xa5100000a52,
1267
+ 0xa5c00000a5d,
1268
+ 0xa6600000a76,
1269
+ 0xa8100000a84,
1270
+ 0xa8500000a8e,
1271
+ 0xa8f00000a92,
1272
+ 0xa9300000aa9,
1273
+ 0xaaa00000ab1,
1274
+ 0xab200000ab4,
1275
+ 0xab500000aba,
1276
+ 0xabc00000ac6,
1277
+ 0xac700000aca,
1278
+ 0xacb00000ace,
1279
+ 0xad000000ad1,
1280
+ 0xae000000ae4,
1281
+ 0xae600000af0,
1282
+ 0xaf900000b00,
1283
+ 0xb0100000b04,
1284
+ 0xb0500000b0d,
1285
+ 0xb0f00000b11,
1286
+ 0xb1300000b29,
1287
+ 0xb2a00000b31,
1288
+ 0xb3200000b34,
1289
+ 0xb3500000b3a,
1290
+ 0xb3c00000b45,
1291
+ 0xb4700000b49,
1292
+ 0xb4b00000b4e,
1293
+ 0xb5500000b58,
1294
+ 0xb5f00000b64,
1295
+ 0xb6600000b70,
1296
+ 0xb7100000b72,
1297
+ 0xb8200000b84,
1298
+ 0xb8500000b8b,
1299
+ 0xb8e00000b91,
1300
+ 0xb9200000b96,
1301
+ 0xb9900000b9b,
1302
+ 0xb9c00000b9d,
1303
+ 0xb9e00000ba0,
1304
+ 0xba300000ba5,
1305
+ 0xba800000bab,
1306
+ 0xbae00000bba,
1307
+ 0xbbe00000bc3,
1308
+ 0xbc600000bc9,
1309
+ 0xbca00000bce,
1310
+ 0xbd000000bd1,
1311
+ 0xbd700000bd8,
1312
+ 0xbe600000bf0,
1313
+ 0xc0000000c0d,
1314
+ 0xc0e00000c11,
1315
+ 0xc1200000c29,
1316
+ 0xc2a00000c3a,
1317
+ 0xc3c00000c45,
1318
+ 0xc4600000c49,
1319
+ 0xc4a00000c4e,
1320
+ 0xc5500000c57,
1321
+ 0xc5800000c5b,
1322
+ 0xc5d00000c5e,
1323
+ 0xc6000000c64,
1324
+ 0xc6600000c70,
1325
+ 0xc8000000c84,
1326
+ 0xc8500000c8d,
1327
+ 0xc8e00000c91,
1328
+ 0xc9200000ca9,
1329
+ 0xcaa00000cb4,
1330
+ 0xcb500000cba,
1331
+ 0xcbc00000cc5,
1332
+ 0xcc600000cc9,
1333
+ 0xcca00000cce,
1334
+ 0xcd500000cd7,
1335
+ 0xcdd00000cdf,
1336
+ 0xce000000ce4,
1337
+ 0xce600000cf0,
1338
+ 0xcf100000cf4,
1339
+ 0xd0000000d0d,
1340
+ 0xd0e00000d11,
1341
+ 0xd1200000d45,
1342
+ 0xd4600000d49,
1343
+ 0xd4a00000d4f,
1344
+ 0xd5400000d58,
1345
+ 0xd5f00000d64,
1346
+ 0xd6600000d70,
1347
+ 0xd7a00000d80,
1348
+ 0xd8100000d84,
1349
+ 0xd8500000d97,
1350
+ 0xd9a00000db2,
1351
+ 0xdb300000dbc,
1352
+ 0xdbd00000dbe,
1353
+ 0xdc000000dc7,
1354
+ 0xdca00000dcb,
1355
+ 0xdcf00000dd5,
1356
+ 0xdd600000dd7,
1357
+ 0xdd800000de0,
1358
+ 0xde600000df0,
1359
+ 0xdf200000df4,
1360
+ 0xe0100000e33,
1361
+ 0xe3400000e3b,
1362
+ 0xe4000000e4f,
1363
+ 0xe5000000e5a,
1364
+ 0xe8100000e83,
1365
+ 0xe8400000e85,
1366
+ 0xe8600000e8b,
1367
+ 0xe8c00000ea4,
1368
+ 0xea500000ea6,
1369
+ 0xea700000eb3,
1370
+ 0xeb400000ebe,
1371
+ 0xec000000ec5,
1372
+ 0xec600000ec7,
1373
+ 0xec800000ecf,
1374
+ 0xed000000eda,
1375
+ 0xede00000ee0,
1376
+ 0xf0000000f01,
1377
+ 0xf0b00000f0c,
1378
+ 0xf1800000f1a,
1379
+ 0xf2000000f2a,
1380
+ 0xf3500000f36,
1381
+ 0xf3700000f38,
1382
+ 0xf3900000f3a,
1383
+ 0xf3e00000f43,
1384
+ 0xf4400000f48,
1385
+ 0xf4900000f4d,
1386
+ 0xf4e00000f52,
1387
+ 0xf5300000f57,
1388
+ 0xf5800000f5c,
1389
+ 0xf5d00000f69,
1390
+ 0xf6a00000f6d,
1391
+ 0xf7100000f73,
1392
+ 0xf7400000f75,
1393
+ 0xf7a00000f81,
1394
+ 0xf8200000f85,
1395
+ 0xf8600000f93,
1396
+ 0xf9400000f98,
1397
+ 0xf9900000f9d,
1398
+ 0xf9e00000fa2,
1399
+ 0xfa300000fa7,
1400
+ 0xfa800000fac,
1401
+ 0xfad00000fb9,
1402
+ 0xfba00000fbd,
1403
+ 0xfc600000fc7,
1404
+ 0x10000000104a,
1405
+ 0x10500000109e,
1406
+ 0x10d0000010fb,
1407
+ 0x10fd00001100,
1408
+ 0x120000001249,
1409
+ 0x124a0000124e,
1410
+ 0x125000001257,
1411
+ 0x125800001259,
1412
+ 0x125a0000125e,
1413
+ 0x126000001289,
1414
+ 0x128a0000128e,
1415
+ 0x1290000012b1,
1416
+ 0x12b2000012b6,
1417
+ 0x12b8000012bf,
1418
+ 0x12c0000012c1,
1419
+ 0x12c2000012c6,
1420
+ 0x12c8000012d7,
1421
+ 0x12d800001311,
1422
+ 0x131200001316,
1423
+ 0x13180000135b,
1424
+ 0x135d00001360,
1425
+ 0x138000001390,
1426
+ 0x13a0000013f6,
1427
+ 0x14010000166d,
1428
+ 0x166f00001680,
1429
+ 0x16810000169b,
1430
+ 0x16a0000016eb,
1431
+ 0x16f1000016f9,
1432
+ 0x170000001716,
1433
+ 0x171f00001735,
1434
+ 0x174000001754,
1435
+ 0x17600000176d,
1436
+ 0x176e00001771,
1437
+ 0x177200001774,
1438
+ 0x1780000017b4,
1439
+ 0x17b6000017d4,
1440
+ 0x17d7000017d8,
1441
+ 0x17dc000017de,
1442
+ 0x17e0000017ea,
1443
+ 0x18100000181a,
1444
+ 0x182000001879,
1445
+ 0x1880000018ab,
1446
+ 0x18b0000018f6,
1447
+ 0x19000000191f,
1448
+ 0x19200000192c,
1449
+ 0x19300000193c,
1450
+ 0x19460000196e,
1451
+ 0x197000001975,
1452
+ 0x1980000019ac,
1453
+ 0x19b0000019ca,
1454
+ 0x19d0000019da,
1455
+ 0x1a0000001a1c,
1456
+ 0x1a2000001a5f,
1457
+ 0x1a6000001a7d,
1458
+ 0x1a7f00001a8a,
1459
+ 0x1a9000001a9a,
1460
+ 0x1aa700001aa8,
1461
+ 0x1ab000001abe,
1462
+ 0x1abf00001acf,
1463
+ 0x1b0000001b4d,
1464
+ 0x1b5000001b5a,
1465
+ 0x1b6b00001b74,
1466
+ 0x1b8000001bf4,
1467
+ 0x1c0000001c38,
1468
+ 0x1c4000001c4a,
1469
+ 0x1c4d00001c7e,
1470
+ 0x1cd000001cd3,
1471
+ 0x1cd400001cfb,
1472
+ 0x1d0000001d2c,
1473
+ 0x1d2f00001d30,
1474
+ 0x1d3b00001d3c,
1475
+ 0x1d4e00001d4f,
1476
+ 0x1d6b00001d78,
1477
+ 0x1d7900001d9b,
1478
+ 0x1dc000001e00,
1479
+ 0x1e0100001e02,
1480
+ 0x1e0300001e04,
1481
+ 0x1e0500001e06,
1482
+ 0x1e0700001e08,
1483
+ 0x1e0900001e0a,
1484
+ 0x1e0b00001e0c,
1485
+ 0x1e0d00001e0e,
1486
+ 0x1e0f00001e10,
1487
+ 0x1e1100001e12,
1488
+ 0x1e1300001e14,
1489
+ 0x1e1500001e16,
1490
+ 0x1e1700001e18,
1491
+ 0x1e1900001e1a,
1492
+ 0x1e1b00001e1c,
1493
+ 0x1e1d00001e1e,
1494
+ 0x1e1f00001e20,
1495
+ 0x1e2100001e22,
1496
+ 0x1e2300001e24,
1497
+ 0x1e2500001e26,
1498
+ 0x1e2700001e28,
1499
+ 0x1e2900001e2a,
1500
+ 0x1e2b00001e2c,
1501
+ 0x1e2d00001e2e,
1502
+ 0x1e2f00001e30,
1503
+ 0x1e3100001e32,
1504
+ 0x1e3300001e34,
1505
+ 0x1e3500001e36,
1506
+ 0x1e3700001e38,
1507
+ 0x1e3900001e3a,
1508
+ 0x1e3b00001e3c,
1509
+ 0x1e3d00001e3e,
1510
+ 0x1e3f00001e40,
1511
+ 0x1e4100001e42,
1512
+ 0x1e4300001e44,
1513
+ 0x1e4500001e46,
1514
+ 0x1e4700001e48,
1515
+ 0x1e4900001e4a,
1516
+ 0x1e4b00001e4c,
1517
+ 0x1e4d00001e4e,
1518
+ 0x1e4f00001e50,
1519
+ 0x1e5100001e52,
1520
+ 0x1e5300001e54,
1521
+ 0x1e5500001e56,
1522
+ 0x1e5700001e58,
1523
+ 0x1e5900001e5a,
1524
+ 0x1e5b00001e5c,
1525
+ 0x1e5d00001e5e,
1526
+ 0x1e5f00001e60,
1527
+ 0x1e6100001e62,
1528
+ 0x1e6300001e64,
1529
+ 0x1e6500001e66,
1530
+ 0x1e6700001e68,
1531
+ 0x1e6900001e6a,
1532
+ 0x1e6b00001e6c,
1533
+ 0x1e6d00001e6e,
1534
+ 0x1e6f00001e70,
1535
+ 0x1e7100001e72,
1536
+ 0x1e7300001e74,
1537
+ 0x1e7500001e76,
1538
+ 0x1e7700001e78,
1539
+ 0x1e7900001e7a,
1540
+ 0x1e7b00001e7c,
1541
+ 0x1e7d00001e7e,
1542
+ 0x1e7f00001e80,
1543
+ 0x1e8100001e82,
1544
+ 0x1e8300001e84,
1545
+ 0x1e8500001e86,
1546
+ 0x1e8700001e88,
1547
+ 0x1e8900001e8a,
1548
+ 0x1e8b00001e8c,
1549
+ 0x1e8d00001e8e,
1550
+ 0x1e8f00001e90,
1551
+ 0x1e9100001e92,
1552
+ 0x1e9300001e94,
1553
+ 0x1e9500001e9a,
1554
+ 0x1e9c00001e9e,
1555
+ 0x1e9f00001ea0,
1556
+ 0x1ea100001ea2,
1557
+ 0x1ea300001ea4,
1558
+ 0x1ea500001ea6,
1559
+ 0x1ea700001ea8,
1560
+ 0x1ea900001eaa,
1561
+ 0x1eab00001eac,
1562
+ 0x1ead00001eae,
1563
+ 0x1eaf00001eb0,
1564
+ 0x1eb100001eb2,
1565
+ 0x1eb300001eb4,
1566
+ 0x1eb500001eb6,
1567
+ 0x1eb700001eb8,
1568
+ 0x1eb900001eba,
1569
+ 0x1ebb00001ebc,
1570
+ 0x1ebd00001ebe,
1571
+ 0x1ebf00001ec0,
1572
+ 0x1ec100001ec2,
1573
+ 0x1ec300001ec4,
1574
+ 0x1ec500001ec6,
1575
+ 0x1ec700001ec8,
1576
+ 0x1ec900001eca,
1577
+ 0x1ecb00001ecc,
1578
+ 0x1ecd00001ece,
1579
+ 0x1ecf00001ed0,
1580
+ 0x1ed100001ed2,
1581
+ 0x1ed300001ed4,
1582
+ 0x1ed500001ed6,
1583
+ 0x1ed700001ed8,
1584
+ 0x1ed900001eda,
1585
+ 0x1edb00001edc,
1586
+ 0x1edd00001ede,
1587
+ 0x1edf00001ee0,
1588
+ 0x1ee100001ee2,
1589
+ 0x1ee300001ee4,
1590
+ 0x1ee500001ee6,
1591
+ 0x1ee700001ee8,
1592
+ 0x1ee900001eea,
1593
+ 0x1eeb00001eec,
1594
+ 0x1eed00001eee,
1595
+ 0x1eef00001ef0,
1596
+ 0x1ef100001ef2,
1597
+ 0x1ef300001ef4,
1598
+ 0x1ef500001ef6,
1599
+ 0x1ef700001ef8,
1600
+ 0x1ef900001efa,
1601
+ 0x1efb00001efc,
1602
+ 0x1efd00001efe,
1603
+ 0x1eff00001f08,
1604
+ 0x1f1000001f16,
1605
+ 0x1f2000001f28,
1606
+ 0x1f3000001f38,
1607
+ 0x1f4000001f46,
1608
+ 0x1f5000001f58,
1609
+ 0x1f6000001f68,
1610
+ 0x1f7000001f71,
1611
+ 0x1f7200001f73,
1612
+ 0x1f7400001f75,
1613
+ 0x1f7600001f77,
1614
+ 0x1f7800001f79,
1615
+ 0x1f7a00001f7b,
1616
+ 0x1f7c00001f7d,
1617
+ 0x1fb000001fb2,
1618
+ 0x1fb600001fb7,
1619
+ 0x1fc600001fc7,
1620
+ 0x1fd000001fd3,
1621
+ 0x1fd600001fd8,
1622
+ 0x1fe000001fe3,
1623
+ 0x1fe400001fe8,
1624
+ 0x1ff600001ff7,
1625
+ 0x214e0000214f,
1626
+ 0x218400002185,
1627
+ 0x2c3000002c60,
1628
+ 0x2c6100002c62,
1629
+ 0x2c6500002c67,
1630
+ 0x2c6800002c69,
1631
+ 0x2c6a00002c6b,
1632
+ 0x2c6c00002c6d,
1633
+ 0x2c7100002c72,
1634
+ 0x2c7300002c75,
1635
+ 0x2c7600002c7c,
1636
+ 0x2c8100002c82,
1637
+ 0x2c8300002c84,
1638
+ 0x2c8500002c86,
1639
+ 0x2c8700002c88,
1640
+ 0x2c8900002c8a,
1641
+ 0x2c8b00002c8c,
1642
+ 0x2c8d00002c8e,
1643
+ 0x2c8f00002c90,
1644
+ 0x2c9100002c92,
1645
+ 0x2c9300002c94,
1646
+ 0x2c9500002c96,
1647
+ 0x2c9700002c98,
1648
+ 0x2c9900002c9a,
1649
+ 0x2c9b00002c9c,
1650
+ 0x2c9d00002c9e,
1651
+ 0x2c9f00002ca0,
1652
+ 0x2ca100002ca2,
1653
+ 0x2ca300002ca4,
1654
+ 0x2ca500002ca6,
1655
+ 0x2ca700002ca8,
1656
+ 0x2ca900002caa,
1657
+ 0x2cab00002cac,
1658
+ 0x2cad00002cae,
1659
+ 0x2caf00002cb0,
1660
+ 0x2cb100002cb2,
1661
+ 0x2cb300002cb4,
1662
+ 0x2cb500002cb6,
1663
+ 0x2cb700002cb8,
1664
+ 0x2cb900002cba,
1665
+ 0x2cbb00002cbc,
1666
+ 0x2cbd00002cbe,
1667
+ 0x2cbf00002cc0,
1668
+ 0x2cc100002cc2,
1669
+ 0x2cc300002cc4,
1670
+ 0x2cc500002cc6,
1671
+ 0x2cc700002cc8,
1672
+ 0x2cc900002cca,
1673
+ 0x2ccb00002ccc,
1674
+ 0x2ccd00002cce,
1675
+ 0x2ccf00002cd0,
1676
+ 0x2cd100002cd2,
1677
+ 0x2cd300002cd4,
1678
+ 0x2cd500002cd6,
1679
+ 0x2cd700002cd8,
1680
+ 0x2cd900002cda,
1681
+ 0x2cdb00002cdc,
1682
+ 0x2cdd00002cde,
1683
+ 0x2cdf00002ce0,
1684
+ 0x2ce100002ce2,
1685
+ 0x2ce300002ce5,
1686
+ 0x2cec00002ced,
1687
+ 0x2cee00002cf2,
1688
+ 0x2cf300002cf4,
1689
+ 0x2d0000002d26,
1690
+ 0x2d2700002d28,
1691
+ 0x2d2d00002d2e,
1692
+ 0x2d3000002d68,
1693
+ 0x2d7f00002d97,
1694
+ 0x2da000002da7,
1695
+ 0x2da800002daf,
1696
+ 0x2db000002db7,
1697
+ 0x2db800002dbf,
1698
+ 0x2dc000002dc7,
1699
+ 0x2dc800002dcf,
1700
+ 0x2dd000002dd7,
1701
+ 0x2dd800002ddf,
1702
+ 0x2de000002e00,
1703
+ 0x2e2f00002e30,
1704
+ 0x300500003008,
1705
+ 0x302a0000302e,
1706
+ 0x303c0000303d,
1707
+ 0x304100003097,
1708
+ 0x30990000309b,
1709
+ 0x309d0000309f,
1710
+ 0x30a1000030fb,
1711
+ 0x30fc000030ff,
1712
+ 0x310500003130,
1713
+ 0x31a0000031c0,
1714
+ 0x31f000003200,
1715
+ 0x340000004dc0,
1716
+ 0x4e000000a48d,
1717
+ 0xa4d00000a4fe,
1718
+ 0xa5000000a60d,
1719
+ 0xa6100000a62c,
1720
+ 0xa6410000a642,
1721
+ 0xa6430000a644,
1722
+ 0xa6450000a646,
1723
+ 0xa6470000a648,
1724
+ 0xa6490000a64a,
1725
+ 0xa64b0000a64c,
1726
+ 0xa64d0000a64e,
1727
+ 0xa64f0000a650,
1728
+ 0xa6510000a652,
1729
+ 0xa6530000a654,
1730
+ 0xa6550000a656,
1731
+ 0xa6570000a658,
1732
+ 0xa6590000a65a,
1733
+ 0xa65b0000a65c,
1734
+ 0xa65d0000a65e,
1735
+ 0xa65f0000a660,
1736
+ 0xa6610000a662,
1737
+ 0xa6630000a664,
1738
+ 0xa6650000a666,
1739
+ 0xa6670000a668,
1740
+ 0xa6690000a66a,
1741
+ 0xa66b0000a66c,
1742
+ 0xa66d0000a670,
1743
+ 0xa6740000a67e,
1744
+ 0xa67f0000a680,
1745
+ 0xa6810000a682,
1746
+ 0xa6830000a684,
1747
+ 0xa6850000a686,
1748
+ 0xa6870000a688,
1749
+ 0xa6890000a68a,
1750
+ 0xa68b0000a68c,
1751
+ 0xa68d0000a68e,
1752
+ 0xa68f0000a690,
1753
+ 0xa6910000a692,
1754
+ 0xa6930000a694,
1755
+ 0xa6950000a696,
1756
+ 0xa6970000a698,
1757
+ 0xa6990000a69a,
1758
+ 0xa69b0000a69c,
1759
+ 0xa69e0000a6e6,
1760
+ 0xa6f00000a6f2,
1761
+ 0xa7170000a720,
1762
+ 0xa7230000a724,
1763
+ 0xa7250000a726,
1764
+ 0xa7270000a728,
1765
+ 0xa7290000a72a,
1766
+ 0xa72b0000a72c,
1767
+ 0xa72d0000a72e,
1768
+ 0xa72f0000a732,
1769
+ 0xa7330000a734,
1770
+ 0xa7350000a736,
1771
+ 0xa7370000a738,
1772
+ 0xa7390000a73a,
1773
+ 0xa73b0000a73c,
1774
+ 0xa73d0000a73e,
1775
+ 0xa73f0000a740,
1776
+ 0xa7410000a742,
1777
+ 0xa7430000a744,
1778
+ 0xa7450000a746,
1779
+ 0xa7470000a748,
1780
+ 0xa7490000a74a,
1781
+ 0xa74b0000a74c,
1782
+ 0xa74d0000a74e,
1783
+ 0xa74f0000a750,
1784
+ 0xa7510000a752,
1785
+ 0xa7530000a754,
1786
+ 0xa7550000a756,
1787
+ 0xa7570000a758,
1788
+ 0xa7590000a75a,
1789
+ 0xa75b0000a75c,
1790
+ 0xa75d0000a75e,
1791
+ 0xa75f0000a760,
1792
+ 0xa7610000a762,
1793
+ 0xa7630000a764,
1794
+ 0xa7650000a766,
1795
+ 0xa7670000a768,
1796
+ 0xa7690000a76a,
1797
+ 0xa76b0000a76c,
1798
+ 0xa76d0000a76e,
1799
+ 0xa76f0000a770,
1800
+ 0xa7710000a779,
1801
+ 0xa77a0000a77b,
1802
+ 0xa77c0000a77d,
1803
+ 0xa77f0000a780,
1804
+ 0xa7810000a782,
1805
+ 0xa7830000a784,
1806
+ 0xa7850000a786,
1807
+ 0xa7870000a789,
1808
+ 0xa78c0000a78d,
1809
+ 0xa78e0000a790,
1810
+ 0xa7910000a792,
1811
+ 0xa7930000a796,
1812
+ 0xa7970000a798,
1813
+ 0xa7990000a79a,
1814
+ 0xa79b0000a79c,
1815
+ 0xa79d0000a79e,
1816
+ 0xa79f0000a7a0,
1817
+ 0xa7a10000a7a2,
1818
+ 0xa7a30000a7a4,
1819
+ 0xa7a50000a7a6,
1820
+ 0xa7a70000a7a8,
1821
+ 0xa7a90000a7aa,
1822
+ 0xa7af0000a7b0,
1823
+ 0xa7b50000a7b6,
1824
+ 0xa7b70000a7b8,
1825
+ 0xa7b90000a7ba,
1826
+ 0xa7bb0000a7bc,
1827
+ 0xa7bd0000a7be,
1828
+ 0xa7bf0000a7c0,
1829
+ 0xa7c10000a7c2,
1830
+ 0xa7c30000a7c4,
1831
+ 0xa7c80000a7c9,
1832
+ 0xa7ca0000a7cb,
1833
+ 0xa7d10000a7d2,
1834
+ 0xa7d30000a7d4,
1835
+ 0xa7d50000a7d6,
1836
+ 0xa7d70000a7d8,
1837
+ 0xa7d90000a7da,
1838
+ 0xa7f60000a7f8,
1839
+ 0xa7fa0000a828,
1840
+ 0xa82c0000a82d,
1841
+ 0xa8400000a874,
1842
+ 0xa8800000a8c6,
1843
+ 0xa8d00000a8da,
1844
+ 0xa8e00000a8f8,
1845
+ 0xa8fb0000a8fc,
1846
+ 0xa8fd0000a92e,
1847
+ 0xa9300000a954,
1848
+ 0xa9800000a9c1,
1849
+ 0xa9cf0000a9da,
1850
+ 0xa9e00000a9ff,
1851
+ 0xaa000000aa37,
1852
+ 0xaa400000aa4e,
1853
+ 0xaa500000aa5a,
1854
+ 0xaa600000aa77,
1855
+ 0xaa7a0000aac3,
1856
+ 0xaadb0000aade,
1857
+ 0xaae00000aaf0,
1858
+ 0xaaf20000aaf7,
1859
+ 0xab010000ab07,
1860
+ 0xab090000ab0f,
1861
+ 0xab110000ab17,
1862
+ 0xab200000ab27,
1863
+ 0xab280000ab2f,
1864
+ 0xab300000ab5b,
1865
+ 0xab600000ab69,
1866
+ 0xabc00000abeb,
1867
+ 0xabec0000abee,
1868
+ 0xabf00000abfa,
1869
+ 0xac000000d7a4,
1870
+ 0xfa0e0000fa10,
1871
+ 0xfa110000fa12,
1872
+ 0xfa130000fa15,
1873
+ 0xfa1f0000fa20,
1874
+ 0xfa210000fa22,
1875
+ 0xfa230000fa25,
1876
+ 0xfa270000fa2a,
1877
+ 0xfb1e0000fb1f,
1878
+ 0xfe200000fe30,
1879
+ 0xfe730000fe74,
1880
+ 0x100000001000c,
1881
+ 0x1000d00010027,
1882
+ 0x100280001003b,
1883
+ 0x1003c0001003e,
1884
+ 0x1003f0001004e,
1885
+ 0x100500001005e,
1886
+ 0x10080000100fb,
1887
+ 0x101fd000101fe,
1888
+ 0x102800001029d,
1889
+ 0x102a0000102d1,
1890
+ 0x102e0000102e1,
1891
+ 0x1030000010320,
1892
+ 0x1032d00010341,
1893
+ 0x103420001034a,
1894
+ 0x103500001037b,
1895
+ 0x103800001039e,
1896
+ 0x103a0000103c4,
1897
+ 0x103c8000103d0,
1898
+ 0x104280001049e,
1899
+ 0x104a0000104aa,
1900
+ 0x104d8000104fc,
1901
+ 0x1050000010528,
1902
+ 0x1053000010564,
1903
+ 0x10597000105a2,
1904
+ 0x105a3000105b2,
1905
+ 0x105b3000105ba,
1906
+ 0x105bb000105bd,
1907
+ 0x1060000010737,
1908
+ 0x1074000010756,
1909
+ 0x1076000010768,
1910
+ 0x1078000010781,
1911
+ 0x1080000010806,
1912
+ 0x1080800010809,
1913
+ 0x1080a00010836,
1914
+ 0x1083700010839,
1915
+ 0x1083c0001083d,
1916
+ 0x1083f00010856,
1917
+ 0x1086000010877,
1918
+ 0x108800001089f,
1919
+ 0x108e0000108f3,
1920
+ 0x108f4000108f6,
1921
+ 0x1090000010916,
1922
+ 0x109200001093a,
1923
+ 0x10980000109b8,
1924
+ 0x109be000109c0,
1925
+ 0x10a0000010a04,
1926
+ 0x10a0500010a07,
1927
+ 0x10a0c00010a14,
1928
+ 0x10a1500010a18,
1929
+ 0x10a1900010a36,
1930
+ 0x10a3800010a3b,
1931
+ 0x10a3f00010a40,
1932
+ 0x10a6000010a7d,
1933
+ 0x10a8000010a9d,
1934
+ 0x10ac000010ac8,
1935
+ 0x10ac900010ae7,
1936
+ 0x10b0000010b36,
1937
+ 0x10b4000010b56,
1938
+ 0x10b6000010b73,
1939
+ 0x10b8000010b92,
1940
+ 0x10c0000010c49,
1941
+ 0x10cc000010cf3,
1942
+ 0x10d0000010d28,
1943
+ 0x10d3000010d3a,
1944
+ 0x10e8000010eaa,
1945
+ 0x10eab00010ead,
1946
+ 0x10eb000010eb2,
1947
+ 0x10efd00010f1d,
1948
+ 0x10f2700010f28,
1949
+ 0x10f3000010f51,
1950
+ 0x10f7000010f86,
1951
+ 0x10fb000010fc5,
1952
+ 0x10fe000010ff7,
1953
+ 0x1100000011047,
1954
+ 0x1106600011076,
1955
+ 0x1107f000110bb,
1956
+ 0x110c2000110c3,
1957
+ 0x110d0000110e9,
1958
+ 0x110f0000110fa,
1959
+ 0x1110000011135,
1960
+ 0x1113600011140,
1961
+ 0x1114400011148,
1962
+ 0x1115000011174,
1963
+ 0x1117600011177,
1964
+ 0x11180000111c5,
1965
+ 0x111c9000111cd,
1966
+ 0x111ce000111db,
1967
+ 0x111dc000111dd,
1968
+ 0x1120000011212,
1969
+ 0x1121300011238,
1970
+ 0x1123e00011242,
1971
+ 0x1128000011287,
1972
+ 0x1128800011289,
1973
+ 0x1128a0001128e,
1974
+ 0x1128f0001129e,
1975
+ 0x1129f000112a9,
1976
+ 0x112b0000112eb,
1977
+ 0x112f0000112fa,
1978
+ 0x1130000011304,
1979
+ 0x113050001130d,
1980
+ 0x1130f00011311,
1981
+ 0x1131300011329,
1982
+ 0x1132a00011331,
1983
+ 0x1133200011334,
1984
+ 0x113350001133a,
1985
+ 0x1133b00011345,
1986
+ 0x1134700011349,
1987
+ 0x1134b0001134e,
1988
+ 0x1135000011351,
1989
+ 0x1135700011358,
1990
+ 0x1135d00011364,
1991
+ 0x113660001136d,
1992
+ 0x1137000011375,
1993
+ 0x114000001144b,
1994
+ 0x114500001145a,
1995
+ 0x1145e00011462,
1996
+ 0x11480000114c6,
1997
+ 0x114c7000114c8,
1998
+ 0x114d0000114da,
1999
+ 0x11580000115b6,
2000
+ 0x115b8000115c1,
2001
+ 0x115d8000115de,
2002
+ 0x1160000011641,
2003
+ 0x1164400011645,
2004
+ 0x116500001165a,
2005
+ 0x11680000116b9,
2006
+ 0x116c0000116ca,
2007
+ 0x117000001171b,
2008
+ 0x1171d0001172c,
2009
+ 0x117300001173a,
2010
+ 0x1174000011747,
2011
+ 0x118000001183b,
2012
+ 0x118c0000118ea,
2013
+ 0x118ff00011907,
2014
+ 0x119090001190a,
2015
+ 0x1190c00011914,
2016
+ 0x1191500011917,
2017
+ 0x1191800011936,
2018
+ 0x1193700011939,
2019
+ 0x1193b00011944,
2020
+ 0x119500001195a,
2021
+ 0x119a0000119a8,
2022
+ 0x119aa000119d8,
2023
+ 0x119da000119e2,
2024
+ 0x119e3000119e5,
2025
+ 0x11a0000011a3f,
2026
+ 0x11a4700011a48,
2027
+ 0x11a5000011a9a,
2028
+ 0x11a9d00011a9e,
2029
+ 0x11ab000011af9,
2030
+ 0x11c0000011c09,
2031
+ 0x11c0a00011c37,
2032
+ 0x11c3800011c41,
2033
+ 0x11c5000011c5a,
2034
+ 0x11c7200011c90,
2035
+ 0x11c9200011ca8,
2036
+ 0x11ca900011cb7,
2037
+ 0x11d0000011d07,
2038
+ 0x11d0800011d0a,
2039
+ 0x11d0b00011d37,
2040
+ 0x11d3a00011d3b,
2041
+ 0x11d3c00011d3e,
2042
+ 0x11d3f00011d48,
2043
+ 0x11d5000011d5a,
2044
+ 0x11d6000011d66,
2045
+ 0x11d6700011d69,
2046
+ 0x11d6a00011d8f,
2047
+ 0x11d9000011d92,
2048
+ 0x11d9300011d99,
2049
+ 0x11da000011daa,
2050
+ 0x11ee000011ef7,
2051
+ 0x11f0000011f11,
2052
+ 0x11f1200011f3b,
2053
+ 0x11f3e00011f43,
2054
+ 0x11f5000011f5a,
2055
+ 0x11fb000011fb1,
2056
+ 0x120000001239a,
2057
+ 0x1248000012544,
2058
+ 0x12f9000012ff1,
2059
+ 0x1300000013430,
2060
+ 0x1344000013456,
2061
+ 0x1440000014647,
2062
+ 0x1680000016a39,
2063
+ 0x16a4000016a5f,
2064
+ 0x16a6000016a6a,
2065
+ 0x16a7000016abf,
2066
+ 0x16ac000016aca,
2067
+ 0x16ad000016aee,
2068
+ 0x16af000016af5,
2069
+ 0x16b0000016b37,
2070
+ 0x16b4000016b44,
2071
+ 0x16b5000016b5a,
2072
+ 0x16b6300016b78,
2073
+ 0x16b7d00016b90,
2074
+ 0x16e6000016e80,
2075
+ 0x16f0000016f4b,
2076
+ 0x16f4f00016f88,
2077
+ 0x16f8f00016fa0,
2078
+ 0x16fe000016fe2,
2079
+ 0x16fe300016fe5,
2080
+ 0x16ff000016ff2,
2081
+ 0x17000000187f8,
2082
+ 0x1880000018cd6,
2083
+ 0x18d0000018d09,
2084
+ 0x1aff00001aff4,
2085
+ 0x1aff50001affc,
2086
+ 0x1affd0001afff,
2087
+ 0x1b0000001b123,
2088
+ 0x1b1320001b133,
2089
+ 0x1b1500001b153,
2090
+ 0x1b1550001b156,
2091
+ 0x1b1640001b168,
2092
+ 0x1b1700001b2fc,
2093
+ 0x1bc000001bc6b,
2094
+ 0x1bc700001bc7d,
2095
+ 0x1bc800001bc89,
2096
+ 0x1bc900001bc9a,
2097
+ 0x1bc9d0001bc9f,
2098
+ 0x1cf000001cf2e,
2099
+ 0x1cf300001cf47,
2100
+ 0x1da000001da37,
2101
+ 0x1da3b0001da6d,
2102
+ 0x1da750001da76,
2103
+ 0x1da840001da85,
2104
+ 0x1da9b0001daa0,
2105
+ 0x1daa10001dab0,
2106
+ 0x1df000001df1f,
2107
+ 0x1df250001df2b,
2108
+ 0x1e0000001e007,
2109
+ 0x1e0080001e019,
2110
+ 0x1e01b0001e022,
2111
+ 0x1e0230001e025,
2112
+ 0x1e0260001e02b,
2113
+ 0x1e0300001e06e,
2114
+ 0x1e08f0001e090,
2115
+ 0x1e1000001e12d,
2116
+ 0x1e1300001e13e,
2117
+ 0x1e1400001e14a,
2118
+ 0x1e14e0001e14f,
2119
+ 0x1e2900001e2af,
2120
+ 0x1e2c00001e2fa,
2121
+ 0x1e4d00001e4fa,
2122
+ 0x1e7e00001e7e7,
2123
+ 0x1e7e80001e7ec,
2124
+ 0x1e7ed0001e7ef,
2125
+ 0x1e7f00001e7ff,
2126
+ 0x1e8000001e8c5,
2127
+ 0x1e8d00001e8d7,
2128
+ 0x1e9220001e94c,
2129
+ 0x1e9500001e95a,
2130
+ 0x200000002a6e0,
2131
+ 0x2a7000002b73a,
2132
+ 0x2b7400002b81e,
2133
+ 0x2b8200002cea2,
2134
+ 0x2ceb00002ebe1,
2135
+ 0x2ebf00002ee5e,
2136
+ 0x300000003134b,
2137
+ 0x31350000323b0,
2138
+ ),
2139
+ 'CONTEXTJ': (
2140
+ 0x200c0000200e,
2141
+ ),
2142
+ 'CONTEXTO': (
2143
+ 0xb7000000b8,
2144
+ 0x37500000376,
2145
+ 0x5f3000005f5,
2146
+ 0x6600000066a,
2147
+ 0x6f0000006fa,
2148
+ 0x30fb000030fc,
2149
+ ),
2150
+ }
lib/python3.11/site-packages/idna/intranges.py ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Given a list of integers, made up of (hopefully) a small number of long runs
3
+ of consecutive integers, compute a representation of the form
4
+ ((start1, end1), (start2, end2) ...). Then answer the question "was x present
5
+ in the original list?" in time O(log(# runs)).
6
+ """
7
+
8
+ import bisect
9
+ from typing import List, Tuple
10
+
11
+ def intranges_from_list(list_: List[int]) -> Tuple[int, ...]:
12
+ """Represent a list of integers as a sequence of ranges:
13
+ ((start_0, end_0), (start_1, end_1), ...), such that the original
14
+ integers are exactly those x such that start_i <= x < end_i for some i.
15
+
16
+ Ranges are encoded as single integers (start << 32 | end), not as tuples.
17
+ """
18
+
19
+ sorted_list = sorted(list_)
20
+ ranges = []
21
+ last_write = -1
22
+ for i in range(len(sorted_list)):
23
+ if i+1 < len(sorted_list):
24
+ if sorted_list[i] == sorted_list[i+1]-1:
25
+ continue
26
+ current_range = sorted_list[last_write+1:i+1]
27
+ ranges.append(_encode_range(current_range[0], current_range[-1] + 1))
28
+ last_write = i
29
+
30
+ return tuple(ranges)
31
+
32
+ def _encode_range(start: int, end: int) -> int:
33
+ return (start << 32) | end
34
+
35
+ def _decode_range(r: int) -> Tuple[int, int]:
36
+ return (r >> 32), (r & ((1 << 32) - 1))
37
+
38
+
39
+ def intranges_contain(int_: int, ranges: Tuple[int, ...]) -> bool:
40
+ """Determine if `int_` falls into one of the ranges in `ranges`."""
41
+ tuple_ = _encode_range(int_, 0)
42
+ pos = bisect.bisect_left(ranges, tuple_)
43
+ # we could be immediately ahead of a tuple (start, end)
44
+ # with start < int_ <= end
45
+ if pos > 0:
46
+ left, right = _decode_range(ranges[pos-1])
47
+ if left <= int_ < right:
48
+ return True
49
+ # or we could be immediately behind a tuple (int_, end)
50
+ if pos < len(ranges):
51
+ left, _ = _decode_range(ranges[pos])
52
+ if left == int_:
53
+ return True
54
+ return False
lib/python3.11/site-packages/idna/package_data.py ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ __version__ = '3.6'
2
+
lib/python3.11/site-packages/idna/py.typed ADDED
File without changes
lib/python3.11/site-packages/idna/uts46data.py ADDED
The diff for this file is too large to render. See raw diff
 
lib/python3.11/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()
lib/python3.11/site-packages/jinja2/__init__.py ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Jinja is a template engine written in pure Python. It provides a
2
+ non-XML syntax that supports inline expressions and an optional
3
+ sandboxed environment.
4
+ """
5
+ from .bccache import BytecodeCache as BytecodeCache
6
+ from .bccache import FileSystemBytecodeCache as FileSystemBytecodeCache
7
+ from .bccache import MemcachedBytecodeCache as MemcachedBytecodeCache
8
+ from .environment import Environment as Environment
9
+ from .environment import Template as Template
10
+ from .exceptions import TemplateAssertionError as TemplateAssertionError
11
+ from .exceptions import TemplateError as TemplateError
12
+ from .exceptions import TemplateNotFound as TemplateNotFound
13
+ from .exceptions import TemplateRuntimeError as TemplateRuntimeError
14
+ from .exceptions import TemplatesNotFound as TemplatesNotFound
15
+ from .exceptions import TemplateSyntaxError as TemplateSyntaxError
16
+ from .exceptions import UndefinedError as UndefinedError
17
+ from .loaders import BaseLoader as BaseLoader
18
+ from .loaders import ChoiceLoader as ChoiceLoader
19
+ from .loaders import DictLoader as DictLoader
20
+ from .loaders import FileSystemLoader as FileSystemLoader
21
+ from .loaders import FunctionLoader as FunctionLoader
22
+ from .loaders import ModuleLoader as ModuleLoader
23
+ from .loaders import PackageLoader as PackageLoader
24
+ from .loaders import PrefixLoader as PrefixLoader
25
+ from .runtime import ChainableUndefined as ChainableUndefined
26
+ from .runtime import DebugUndefined as DebugUndefined
27
+ from .runtime import make_logging_undefined as make_logging_undefined
28
+ from .runtime import StrictUndefined as StrictUndefined
29
+ from .runtime import Undefined as Undefined
30
+ from .utils import clear_caches as clear_caches
31
+ from .utils import is_undefined as is_undefined
32
+ from .utils import pass_context as pass_context
33
+ from .utils import pass_environment as pass_environment
34
+ from .utils import pass_eval_context as pass_eval_context
35
+ from .utils import select_autoescape as select_autoescape
36
+
37
+ __version__ = "3.1.2"
lib/python3.11/site-packages/jinja2/__pycache__/__init__.cpython-311.pyc ADDED
Binary file (2.15 kB). View file
 
lib/python3.11/site-packages/jinja2/__pycache__/_identifier.cpython-311.pyc ADDED
Binary file (2.17 kB). View file
 
lib/python3.11/site-packages/jinja2/__pycache__/async_utils.cpython-311.pyc ADDED
Binary file (4.67 kB). View file
 
lib/python3.11/site-packages/jinja2/__pycache__/bccache.cpython-311.pyc ADDED
Binary file (21 kB). View file
 
lib/python3.11/site-packages/jinja2/__pycache__/compiler.cpython-311.pyc ADDED
Binary file (111 kB). View file
 
lib/python3.11/site-packages/jinja2/__pycache__/constants.cpython-311.pyc ADDED
Binary file (1.59 kB). View file
 
lib/python3.11/site-packages/jinja2/__pycache__/debug.cpython-311.pyc ADDED
Binary file (6.75 kB). View file
 
lib/python3.11/site-packages/jinja2/__pycache__/defaults.cpython-311.pyc ADDED
Binary file (1.76 kB). View file
 
lib/python3.11/site-packages/jinja2/__pycache__/environment.cpython-311.pyc ADDED
Binary file (80.6 kB). View file
 
lib/python3.11/site-packages/jinja2/__pycache__/exceptions.cpython-311.pyc ADDED
Binary file (8.64 kB). View file
 
lib/python3.11/site-packages/jinja2/__pycache__/ext.cpython-311.pyc ADDED
Binary file (43.2 kB). View file
 
lib/python3.11/site-packages/jinja2/__pycache__/filters.cpython-311.pyc ADDED
Binary file (75.9 kB). View file