0-hero commited on
Commit
12ab01b
·
verified ·
1 Parent(s): 01cd082

Add files using upload-large-folder tool

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .cache/pip/http-v2/0/0/e/9/d/00e9d7b0e1cda3bfdf322be5b79cb9c4a6e6ef6159d3de3d7d3abe87 +0 -0
  2. .cache/pip/http-v2/0/0/e/9/d/00e9d7b0e1cda3bfdf322be5b79cb9c4a6e6ef6159d3de3d7d3abe87.body +0 -0
  3. .cache/pip/http-v2/0/1/f/2/0/01f2082df50502ba9492d64e69db99d1fdb5730707a16c6264b355b8 +0 -0
  4. .cache/pip/http-v2/0/2/d/4/2/02d4221e858694abc22129c65515f1df2c4c326330eb1a34ceb0b382 +0 -0
  5. .cache/pip/http-v2/0/2/f/8/e/02f8e820ca8231526982c4a2b93baef519d0948ff85c925acd226f06 +0 -0
  6. .cache/pip/http-v2/0/2/f/8/e/02f8e820ca8231526982c4a2b93baef519d0948ff85c925acd226f06.body +0 -0
  7. .cache/pip/http-v2/0/5/8/9/6/0589682f53f4c502330bc0fa01138806ce0467c549c2af469b6afb31 +0 -0
  8. .cache/pip/http-v2/0/5/8/9/6/0589682f53f4c502330bc0fa01138806ce0467c549c2af469b6afb31.body +0 -0
  9. .cache/pip/http-v2/0/5/e/2/2/05e22b8b3169eed822187b7e670f3dc47b0666b777d95f87de8fb5e9 +0 -0
  10. .cache/pip/http-v2/0/5/e/2/2/05e22b8b3169eed822187b7e670f3dc47b0666b777d95f87de8fb5e9.body +0 -0
  11. .cache/pip/http-v2/0/6/7/2/6/06726d442b7e33afe35f1740674b6dee72357a95eef3aca0ef7abf21 +0 -0
  12. .cache/pip/http-v2/0/6/7/2/6/06726d442b7e33afe35f1740674b6dee72357a95eef3aca0ef7abf21.body +0 -0
  13. .cache/pip/http-v2/0/7/5/9/3/07593bb905dded4b84aacb1d96c1e64704669d6bab658dcaeab79c36.body +0 -0
  14. .cache/pip/http-v2/0/9/4/f/4/094f40b0ad6510929406d8b53f0945758a4aefd5c45857fe8adf0b03 +0 -0
  15. .cache/pip/http-v2/0/9/4/f/4/094f40b0ad6510929406d8b53f0945758a4aefd5c45857fe8adf0b03.body +0 -0
  16. .cache/pip/http-v2/0/9/a/c/f/09acf4ef8859e657a77d0079dea556ad6f8dc87031ab1c54b1a9cbfe +0 -0
  17. .cache/pip/http-v2/0/9/a/c/f/09acf4ef8859e657a77d0079dea556ad6f8dc87031ab1c54b1a9cbfe.body +0 -0
  18. .cache/pip/http-v2/0/e/a/4/f/0ea4f1b2570ca3d64073f1277e4faa435bd7c7cbadafd80723949de4 +0 -0
  19. .cache/pip/http-v2/0/e/a/4/f/0ea4f1b2570ca3d64073f1277e4faa435bd7c7cbadafd80723949de4.body +0 -0
  20. .cache/pip/http-v2/1/2/e/6/c/12e6c0100f8dcc54f1445b9845cfdcecf519882e2fe2767cf43bd439 +0 -0
  21. .cache/pip/http-v2/1/2/e/6/c/12e6c0100f8dcc54f1445b9845cfdcecf519882e2fe2767cf43bd439.body +0 -0
  22. .cache/pip/http-v2/1/8/e/e/a/18eea207de73c88bb45229bed4bcc74fbcbddadf2aa9f49e4df1f66a +0 -0
  23. .cache/pip/http-v2/1/8/e/e/a/18eea207de73c88bb45229bed4bcc74fbcbddadf2aa9f49e4df1f66a.body +88 -0
  24. .cache/pip/http-v2/1/d/8/a/2/1d8a24cdff71edbc3f733b6b4d52640c1c1129289938aa4d1c7adcf5 +0 -0
  25. .cache/pip/http-v2/1/d/8/a/2/1d8a24cdff71edbc3f733b6b4d52640c1c1129289938aa4d1c7adcf5.body +0 -0
  26. .cache/pip/http-v2/1/e/2/b/1/1e2b1734fc3c57a4733131da81a6167573fc77057172172ceee83a22 +0 -0
  27. .cache/pip/http-v2/2/e/2/d/8/2e2d841f57ca6a43dfc96af93374304dda5b757176df2cce7ca2b18d +0 -0
  28. .cache/pip/http-v2/4/0/2/3/b/4023be7b5b37a7a4144c804ce69828082d4fb2a124d9d8aabc855da8 +0 -0
  29. .cache/pip/http-v2/4/5/9/c/7/459c78bacdedb04c7e03d152081522ecf0ff46e1d14e7503997ea6c8 +0 -0
  30. .cache/pip/http-v2/7/1/9/e/0/719e0feaf94b669c315daed4ef76501cc929d482e4315b25fd3b0082.body +303 -0
  31. .cache/pip/http-v2/7/1/b/9/d/71b9df22187d5c54f1147d4ac0849d1438ec19aedc20363a3478b854.body +62 -0
  32. .cache/pip/http-v2/7/2/2/9/f/7229fb50bdca3f16cb03ca953b540cb67fb07fb971b675db32ae3239 +0 -0
  33. .cache/pip/http-v2/7/2/2/9/f/7229fb50bdca3f16cb03ca953b540cb67fb07fb971b675db32ae3239.body +522 -0
  34. .cache/pip/http-v2/7/3/5/4/e/7354e15b7a2b590d713d4782bd16917fac9db3c087fa80d4d8dc0db5 +0 -0
  35. .cache/pip/http-v2/7/3/5/4/e/7354e15b7a2b590d713d4782bd16917fac9db3c087fa80d4d8dc0db5.body +212 -0
  36. .cache/pip/http-v2/7/7/6/7/2/7767287c95ec4491394e4204f2ba3be9eb9e3ed9ca0ffd45d421b772 +0 -0
  37. .cache/pip/http-v2/7/7/6/7/2/7767287c95ec4491394e4204f2ba3be9eb9e3ed9ca0ffd45d421b772.body +0 -0
  38. .cache/pip/http-v2/7/c/c/b/9/7ccb994e5cb08d1aee93acb83ae5881083c4a349402f61c9f7d304f8 +0 -0
  39. .cache/pip/http-v2/7/c/c/b/9/7ccb994e5cb08d1aee93acb83ae5881083c4a349402f61c9f7d304f8.body +0 -0
  40. .cache/pip/http-v2/a/1/5/a/3/a15a3a227f3412287f03121d8de35a7e4b8889a19d0448af719d96c1 +0 -0
  41. .cache/pip/http-v2/a/1/5/a/3/a15a3a227f3412287f03121d8de35a7e4b8889a19d0448af719d96c1.body +0 -0
  42. .cache/pip/http-v2/a/1/9/5/3/a19537d3cf37c122db841d6fe4cd322bc10d1a558bb00d146b85cb9a.body +0 -0
  43. .cache/pip/http-v2/a/6/6/7/4/a6674e44f8dbb270324765d1fb568b86858877aed299a2428f81e802.body +0 -0
  44. .cache/pip/http-v2/a/8/1/3/d/a813d38208b26d1643cfecf26bd5ddeb869c95933e4bf304b8f6f1bb.body +1573 -0
  45. .cache/pip/http-v2/a/e/1/3/6/ae1360498e2a7e78c3695d71a4132c94b805a9c41d71ad8f62ad998f.body +0 -0
  46. .cache/pip/http-v2/a/e/7/a/2/ae7a241673cf118ca18eca030dc29d2715b1980127dd0e2949514433 +0 -0
  47. .cache/pip/http-v2/b/6/8/7/d/b687d90e2a44328db9c9ecd9af0a9c577a4e68f9d239bbb73aebc319.body +62 -0
  48. .config/wandb/settings +2 -0
  49. .ipynb_checkpoints/train-checkpoint.py +546 -0
  50. .launchpadlib/api.launchpad.net/cache/api.launchpad.net,devel,-application,json,fc4e1e3a03117146fb1e9d492ab76690 +19 -0
.cache/pip/http-v2/0/0/e/9/d/00e9d7b0e1cda3bfdf322be5b79cb9c4a6e6ef6159d3de3d7d3abe87 ADDED
Binary file (1.11 kB). View file
 
.cache/pip/http-v2/0/0/e/9/d/00e9d7b0e1cda3bfdf322be5b79cb9c4a6e6ef6159d3de3d7d3abe87.body ADDED
Binary file (617 kB). View file
 
.cache/pip/http-v2/0/1/f/2/0/01f2082df50502ba9492d64e69db99d1fdb5730707a16c6264b355b8 ADDED
Binary file (1.13 kB). View file
 
.cache/pip/http-v2/0/2/d/4/2/02d4221e858694abc22129c65515f1df2c4c326330eb1a34ceb0b382 ADDED
Binary file (1.12 kB). View file
 
.cache/pip/http-v2/0/2/f/8/e/02f8e820ca8231526982c4a2b93baef519d0948ff85c925acd226f06 ADDED
Binary file (1.82 kB). View file
 
.cache/pip/http-v2/0/2/f/8/e/02f8e820ca8231526982c4a2b93baef519d0948ff85c925acd226f06.body ADDED
Binary file (37.1 kB). View file
 
.cache/pip/http-v2/0/5/8/9/6/0589682f53f4c502330bc0fa01138806ce0467c549c2af469b6afb31 ADDED
Binary file (1.15 kB). View file
 
.cache/pip/http-v2/0/5/8/9/6/0589682f53f4c502330bc0fa01138806ce0467c549c2af469b6afb31.body ADDED
Binary file (64.9 kB). View file
 
.cache/pip/http-v2/0/5/e/2/2/05e22b8b3169eed822187b7e670f3dc47b0666b777d95f87de8fb5e9 ADDED
Binary file (1.11 kB). View file
 
.cache/pip/http-v2/0/5/e/2/2/05e22b8b3169eed822187b7e670f3dc47b0666b777d95f87de8fb5e9.body ADDED
Binary file (24.3 kB). View file
 
.cache/pip/http-v2/0/6/7/2/6/06726d442b7e33afe35f1740674b6dee72357a95eef3aca0ef7abf21 ADDED
Binary file (1.81 kB). View file
 
.cache/pip/http-v2/0/6/7/2/6/06726d442b7e33afe35f1740674b6dee72357a95eef3aca0ef7abf21.body ADDED
Binary file (7.81 kB). View file
 
.cache/pip/http-v2/0/7/5/9/3/07593bb905dded4b84aacb1d96c1e64704669d6bab658dcaeab79c36.body ADDED
Binary file (1.58 kB). View file
 
.cache/pip/http-v2/0/9/4/f/4/094f40b0ad6510929406d8b53f0945758a4aefd5c45857fe8adf0b03 ADDED
Binary file (1.15 kB). View file
 
.cache/pip/http-v2/0/9/4/f/4/094f40b0ad6510929406d8b53f0945758a4aefd5c45857fe8adf0b03.body ADDED
Binary file (472 kB). View file
 
.cache/pip/http-v2/0/9/a/c/f/09acf4ef8859e657a77d0079dea556ad6f8dc87031ab1c54b1a9cbfe ADDED
Binary file (1.15 kB). View file
 
.cache/pip/http-v2/0/9/a/c/f/09acf4ef8859e657a77d0079dea556ad6f8dc87031ab1c54b1a9cbfe.body ADDED
Binary file (342 kB). View file
 
.cache/pip/http-v2/0/e/a/4/f/0ea4f1b2570ca3d64073f1277e4faa435bd7c7cbadafd80723949de4 ADDED
Binary file (1.81 kB). View file
 
.cache/pip/http-v2/0/e/a/4/f/0ea4f1b2570ca3d64073f1277e4faa435bd7c7cbadafd80723949de4.body ADDED
Binary file (66.6 kB). View file
 
.cache/pip/http-v2/1/2/e/6/c/12e6c0100f8dcc54f1445b9845cfdcecf519882e2fe2767cf43bd439 ADDED
Binary file (1.81 kB). View file
 
.cache/pip/http-v2/1/2/e/6/c/12e6c0100f8dcc54f1445b9845cfdcecf519882e2fe2767cf43bd439.body ADDED
Binary file (2.16 kB). View file
 
.cache/pip/http-v2/1/8/e/e/a/18eea207de73c88bb45229bed4bcc74fbcbddadf2aa9f49e4df1f66a ADDED
Binary file (1.19 kB). View file
 
.cache/pip/http-v2/1/8/e/e/a/18eea207de73c88bb45229bed4bcc74fbcbddadf2aa9f49e4df1f66a.body ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.1
2
+ Name: pip
3
+ Version: 24.0
4
+ Summary: The PyPA recommended tool for installing Python packages.
5
+ Author-email: The pip developers <[email protected]>
6
+ License: MIT
7
+ Project-URL: Homepage, https://pip.pypa.io/
8
+ Project-URL: Documentation, https://pip.pypa.io
9
+ Project-URL: Source, https://github.com/pypa/pip
10
+ Project-URL: Changelog, https://pip.pypa.io/en/stable/news/
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Topic :: Software Development :: Build Tools
15
+ Classifier: Programming Language :: Python
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3 :: Only
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
+ Requires-Python: >=3.7
27
+ Description-Content-Type: text/x-rst
28
+ License-File: LICENSE.txt
29
+ License-File: AUTHORS.txt
30
+
31
+ pip - The Python Package Installer
32
+ ==================================
33
+
34
+ .. image:: https://img.shields.io/pypi/v/pip.svg
35
+ :target: https://pypi.org/project/pip/
36
+ :alt: PyPI
37
+
38
+ .. image:: https://img.shields.io/pypi/pyversions/pip
39
+ :target: https://pypi.org/project/pip
40
+ :alt: PyPI - Python Version
41
+
42
+ .. image:: https://readthedocs.org/projects/pip/badge/?version=latest
43
+ :target: https://pip.pypa.io/en/latest
44
+ :alt: Documentation
45
+
46
+ pip is the `package installer`_ for Python. You can use pip to install packages from the `Python Package Index`_ and other indexes.
47
+
48
+ Please take a look at our documentation for how to install and use pip:
49
+
50
+ * `Installation`_
51
+ * `Usage`_
52
+
53
+ We release updates regularly, with a new version every 3 months. Find more details in our documentation:
54
+
55
+ * `Release notes`_
56
+ * `Release process`_
57
+
58
+ If you find bugs, need help, or want to talk to the developers, please use our mailing lists or chat rooms:
59
+
60
+ * `Issue tracking`_
61
+ * `Discourse channel`_
62
+ * `User IRC`_
63
+
64
+ If you want to get involved head over to GitHub to get the source code, look at our development documentation and feel free to jump on the developer mailing lists and chat rooms:
65
+
66
+ * `GitHub page`_
67
+ * `Development documentation`_
68
+ * `Development IRC`_
69
+
70
+ Code of Conduct
71
+ ---------------
72
+
73
+ Everyone interacting in the pip project's codebases, issue trackers, chat
74
+ rooms, and mailing lists is expected to follow the `PSF Code of Conduct`_.
75
+
76
+ .. _package installer: https://packaging.python.org/guides/tool-recommendations/
77
+ .. _Python Package Index: https://pypi.org
78
+ .. _Installation: https://pip.pypa.io/en/stable/installation/
79
+ .. _Usage: https://pip.pypa.io/en/stable/
80
+ .. _Release notes: https://pip.pypa.io/en/stable/news.html
81
+ .. _Release process: https://pip.pypa.io/en/latest/development/release-process/
82
+ .. _GitHub page: https://github.com/pypa/pip
83
+ .. _Development documentation: https://pip.pypa.io/en/latest/development
84
+ .. _Issue tracking: https://github.com/pypa/pip/issues
85
+ .. _Discourse channel: https://discuss.python.org/c/packaging
86
+ .. _User IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa
87
+ .. _Development IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa-dev
88
+ .. _PSF Code of Conduct: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md
.cache/pip/http-v2/1/d/8/a/2/1d8a24cdff71edbc3f733b6b4d52640c1c1129289938aa4d1c7adcf5 ADDED
Binary file (1.15 kB). View file
 
.cache/pip/http-v2/1/d/8/a/2/1d8a24cdff71edbc3f733b6b4d52640c1c1129289938aa4d1c7adcf5.body ADDED
Binary file (207 kB). View file
 
.cache/pip/http-v2/1/e/2/b/1/1e2b1734fc3c57a4733131da81a6167573fc77057172172ceee83a22 ADDED
Binary file (1.81 kB). View file
 
.cache/pip/http-v2/2/e/2/d/8/2e2d841f57ca6a43dfc96af93374304dda5b757176df2cce7ca2b18d ADDED
Binary file (1.11 kB). View file
 
.cache/pip/http-v2/4/0/2/3/b/4023be7b5b37a7a4144c804ce69828082d4fb2a124d9d8aabc855da8 ADDED
Binary file (1.12 kB). View file
 
.cache/pip/http-v2/4/5/9/c/7/459c78bacdedb04c7e03d152081522ecf0ff46e1d14e7503997ea6c8 ADDED
Binary file (1.15 kB). View file
 
.cache/pip/http-v2/7/1/9/e/0/719e0feaf94b669c315daed4ef76501cc929d482e4315b25fd3b0082.body ADDED
@@ -0,0 +1,303 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.1
2
+ Name: huggingface-hub
3
+ Version: 0.25.1
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: [email protected]
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: packaging>=20.9
29
+ Requires-Dist: pyyaml>=5.1
30
+ Requires-Dist: requests
31
+ Requires-Dist: tqdm>=4.42.1
32
+ Requires-Dist: typing-extensions>=3.7.4.3
33
+ Provides-Extra: all
34
+ Requires-Dist: InquirerPy==0.3.4; extra == "all"
35
+ Requires-Dist: aiohttp; extra == "all"
36
+ Requires-Dist: minijinja>=1.0; extra == "all"
37
+ Requires-Dist: jedi; extra == "all"
38
+ Requires-Dist: Jinja2; extra == "all"
39
+ Requires-Dist: pytest<8.2.2,>=8.1.1; extra == "all"
40
+ Requires-Dist: pytest-cov; extra == "all"
41
+ Requires-Dist: pytest-env; extra == "all"
42
+ Requires-Dist: pytest-xdist; extra == "all"
43
+ Requires-Dist: pytest-vcr; extra == "all"
44
+ Requires-Dist: pytest-asyncio; extra == "all"
45
+ Requires-Dist: pytest-rerunfailures; extra == "all"
46
+ Requires-Dist: pytest-mock; extra == "all"
47
+ Requires-Dist: urllib3<2.0; extra == "all"
48
+ Requires-Dist: soundfile; extra == "all"
49
+ Requires-Dist: Pillow; extra == "all"
50
+ Requires-Dist: gradio; extra == "all"
51
+ Requires-Dist: numpy; extra == "all"
52
+ Requires-Dist: fastapi; extra == "all"
53
+ Requires-Dist: ruff>=0.5.0; extra == "all"
54
+ Requires-Dist: mypy==1.5.1; extra == "all"
55
+ Requires-Dist: typing-extensions>=4.8.0; extra == "all"
56
+ Requires-Dist: types-PyYAML; extra == "all"
57
+ Requires-Dist: types-requests; extra == "all"
58
+ Requires-Dist: types-simplejson; extra == "all"
59
+ Requires-Dist: types-toml; extra == "all"
60
+ Requires-Dist: types-tqdm; extra == "all"
61
+ Requires-Dist: types-urllib3; extra == "all"
62
+ Provides-Extra: cli
63
+ Requires-Dist: InquirerPy==0.3.4; extra == "cli"
64
+ Provides-Extra: dev
65
+ Requires-Dist: InquirerPy==0.3.4; extra == "dev"
66
+ Requires-Dist: aiohttp; extra == "dev"
67
+ Requires-Dist: minijinja>=1.0; extra == "dev"
68
+ Requires-Dist: jedi; extra == "dev"
69
+ Requires-Dist: Jinja2; extra == "dev"
70
+ Requires-Dist: pytest<8.2.2,>=8.1.1; extra == "dev"
71
+ Requires-Dist: pytest-cov; extra == "dev"
72
+ Requires-Dist: pytest-env; extra == "dev"
73
+ Requires-Dist: pytest-xdist; extra == "dev"
74
+ Requires-Dist: pytest-vcr; extra == "dev"
75
+ Requires-Dist: pytest-asyncio; extra == "dev"
76
+ Requires-Dist: pytest-rerunfailures; extra == "dev"
77
+ Requires-Dist: pytest-mock; extra == "dev"
78
+ Requires-Dist: urllib3<2.0; extra == "dev"
79
+ Requires-Dist: soundfile; extra == "dev"
80
+ Requires-Dist: Pillow; extra == "dev"
81
+ Requires-Dist: gradio; extra == "dev"
82
+ Requires-Dist: numpy; extra == "dev"
83
+ Requires-Dist: fastapi; extra == "dev"
84
+ Requires-Dist: ruff>=0.5.0; extra == "dev"
85
+ Requires-Dist: mypy==1.5.1; extra == "dev"
86
+ Requires-Dist: typing-extensions>=4.8.0; extra == "dev"
87
+ Requires-Dist: types-PyYAML; extra == "dev"
88
+ Requires-Dist: types-requests; extra == "dev"
89
+ Requires-Dist: types-simplejson; extra == "dev"
90
+ Requires-Dist: types-toml; extra == "dev"
91
+ Requires-Dist: types-tqdm; extra == "dev"
92
+ Requires-Dist: types-urllib3; extra == "dev"
93
+ Provides-Extra: fastai
94
+ Requires-Dist: toml; extra == "fastai"
95
+ Requires-Dist: fastai>=2.4; extra == "fastai"
96
+ Requires-Dist: fastcore>=1.3.27; extra == "fastai"
97
+ Provides-Extra: hf_transfer
98
+ Requires-Dist: hf-transfer>=0.1.4; extra == "hf-transfer"
99
+ Provides-Extra: inference
100
+ Requires-Dist: aiohttp; extra == "inference"
101
+ Requires-Dist: minijinja>=1.0; extra == "inference"
102
+ Provides-Extra: quality
103
+ Requires-Dist: ruff>=0.5.0; extra == "quality"
104
+ Requires-Dist: mypy==1.5.1; extra == "quality"
105
+ Provides-Extra: tensorflow
106
+ Requires-Dist: tensorflow; extra == "tensorflow"
107
+ Requires-Dist: pydot; extra == "tensorflow"
108
+ Requires-Dist: graphviz; extra == "tensorflow"
109
+ Provides-Extra: tensorflow-testing
110
+ Requires-Dist: tensorflow; extra == "tensorflow-testing"
111
+ Requires-Dist: keras<3.0; extra == "tensorflow-testing"
112
+ Provides-Extra: testing
113
+ Requires-Dist: InquirerPy==0.3.4; extra == "testing"
114
+ Requires-Dist: aiohttp; extra == "testing"
115
+ Requires-Dist: minijinja>=1.0; extra == "testing"
116
+ Requires-Dist: jedi; extra == "testing"
117
+ Requires-Dist: Jinja2; extra == "testing"
118
+ Requires-Dist: pytest<8.2.2,>=8.1.1; extra == "testing"
119
+ Requires-Dist: pytest-cov; extra == "testing"
120
+ Requires-Dist: pytest-env; extra == "testing"
121
+ Requires-Dist: pytest-xdist; extra == "testing"
122
+ Requires-Dist: pytest-vcr; extra == "testing"
123
+ Requires-Dist: pytest-asyncio; extra == "testing"
124
+ Requires-Dist: pytest-rerunfailures; extra == "testing"
125
+ Requires-Dist: pytest-mock; extra == "testing"
126
+ Requires-Dist: urllib3<2.0; extra == "testing"
127
+ Requires-Dist: soundfile; extra == "testing"
128
+ Requires-Dist: Pillow; extra == "testing"
129
+ Requires-Dist: gradio; extra == "testing"
130
+ Requires-Dist: numpy; extra == "testing"
131
+ Requires-Dist: fastapi; extra == "testing"
132
+ Provides-Extra: torch
133
+ Requires-Dist: torch; extra == "torch"
134
+ Requires-Dist: safetensors[torch]; extra == "torch"
135
+ Provides-Extra: typing
136
+ Requires-Dist: typing-extensions>=4.8.0; extra == "typing"
137
+ Requires-Dist: types-PyYAML; extra == "typing"
138
+ Requires-Dist: types-requests; extra == "typing"
139
+ Requires-Dist: types-simplejson; extra == "typing"
140
+ Requires-Dist: types-toml; extra == "typing"
141
+ Requires-Dist: types-tqdm; extra == "typing"
142
+ Requires-Dist: types-urllib3; extra == "typing"
143
+
144
+ <p align="center">
145
+ <br/>
146
+ <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%;">
147
+ <br/>
148
+ </p>
149
+
150
+ <p align="center">
151
+ <i>The official Python client for the Huggingface Hub.</i>
152
+ </p>
153
+
154
+ <p align="center">
155
+ <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>
156
+ <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>
157
+ <a href="https://github.com/huggingface/huggingface_hub"><img alt="PyPi version" src="https://img.shields.io/pypi/pyversions/huggingface_hub.svg"></a>
158
+ <a href="https://pypi.org/project/huggingface-hub"><img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dm/huggingface_hub"></a>
159
+ <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>
160
+ </p>
161
+
162
+ <h4 align="center">
163
+ <p>
164
+ <b>English</b> |
165
+ <a href="https://github.com/huggingface/huggingface_hub/blob/main/README_de.md">Deutsch</a> |
166
+ <a href="https://github.com/huggingface/huggingface_hub/blob/main/README_hi.md">हिंदी</a> |
167
+ <a href="https://github.com/huggingface/huggingface_hub/blob/main/README_ko.md">한국어</a> |
168
+ <a href="https://github.com/huggingface/huggingface_hub/blob/main/README_cn.md">中文(简体)</a>
169
+ <p>
170
+ </h4>
171
+
172
+ ---
173
+
174
+ **Documentation**: <a href="https://hf.co/docs/huggingface_hub" target="_blank">https://hf.co/docs/huggingface_hub</a>
175
+
176
+ **Source Code**: <a href="https://github.com/huggingface/huggingface_hub" target="_blank">https://github.com/huggingface/huggingface_hub</a>
177
+
178
+ ---
179
+
180
+ ## Welcome to the huggingface_hub library
181
+
182
+ 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.
183
+
184
+ ## Key features
185
+
186
+ - [Download files](https://huggingface.co/docs/huggingface_hub/en/guides/download) from the Hub.
187
+ - [Upload files](https://huggingface.co/docs/huggingface_hub/en/guides/upload) to the Hub.
188
+ - [Manage your repositories](https://huggingface.co/docs/huggingface_hub/en/guides/repository).
189
+ - [Run Inference](https://huggingface.co/docs/huggingface_hub/en/guides/inference) on deployed models.
190
+ - [Search](https://huggingface.co/docs/huggingface_hub/en/guides/search) for models, datasets and Spaces.
191
+ - [Share Model Cards](https://huggingface.co/docs/huggingface_hub/en/guides/model-cards) to document your models.
192
+ - [Engage with the community](https://huggingface.co/docs/huggingface_hub/en/guides/community) through PRs and comments.
193
+
194
+ ## Installation
195
+
196
+ Install the `huggingface_hub` package with [pip](https://pypi.org/project/huggingface-hub/):
197
+
198
+ ```bash
199
+ pip install huggingface_hub
200
+ ```
201
+
202
+ If you prefer, you can also install it with [conda](https://huggingface.co/docs/huggingface_hub/en/installation#install-with-conda).
203
+
204
+ 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:
205
+
206
+ ```bash
207
+ pip install huggingface_hub[inference]
208
+ ```
209
+
210
+ To learn more installation and optional dependencies, check out the [installation guide](https://huggingface.co/docs/huggingface_hub/en/installation).
211
+
212
+ ## Quick start
213
+
214
+ ### Download files
215
+
216
+ Download a single file
217
+
218
+ ```py
219
+ from huggingface_hub import hf_hub_download
220
+
221
+ hf_hub_download(repo_id="tiiuae/falcon-7b-instruct", filename="config.json")
222
+ ```
223
+
224
+ Or an entire repository
225
+
226
+ ```py
227
+ from huggingface_hub import snapshot_download
228
+
229
+ snapshot_download("stabilityai/stable-diffusion-2-1")
230
+ ```
231
+
232
+ Files will be downloaded in a local cache folder. More details in [this guide](https://huggingface.co/docs/huggingface_hub/en/guides/manage-cache).
233
+
234
+ ### Login
235
+
236
+ The Hugging Face Hub uses tokens to authenticate applications (see [docs](https://huggingface.co/docs/hub/security-tokens)). To log in your machine, run the following CLI:
237
+
238
+ ```bash
239
+ huggingface-cli login
240
+ # or using an environment variable
241
+ huggingface-cli login --token $HUGGINGFACE_TOKEN
242
+ ```
243
+
244
+ ### Create a repository
245
+
246
+ ```py
247
+ from huggingface_hub import create_repo
248
+
249
+ create_repo(repo_id="super-cool-model")
250
+ ```
251
+
252
+ ### Upload files
253
+
254
+ Upload a single file
255
+
256
+ ```py
257
+ from huggingface_hub import upload_file
258
+
259
+ upload_file(
260
+ path_or_fileobj="/home/lysandre/dummy-test/README.md",
261
+ path_in_repo="README.md",
262
+ repo_id="lysandre/test-model",
263
+ )
264
+ ```
265
+
266
+ Or an entire folder
267
+
268
+ ```py
269
+ from huggingface_hub import upload_folder
270
+
271
+ upload_folder(
272
+ folder_path="/path/to/local/space",
273
+ repo_id="username/my-cool-space",
274
+ repo_type="space",
275
+ )
276
+ ```
277
+
278
+ For details in the [upload guide](https://huggingface.co/docs/huggingface_hub/en/guides/upload).
279
+
280
+ ## Integrating to the Hub.
281
+
282
+ 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).
283
+
284
+ The advantages are:
285
+
286
+ - Free model or dataset hosting for libraries and their users.
287
+ - Built-in file versioning, even with very large files, thanks to a git-based approach.
288
+ - Serverless inference API for all models publicly available.
289
+ - In-browser widgets to play with the uploaded models.
290
+ - Anyone can upload a new model for your library, they just need to add the corresponding tag for the model to be discoverable.
291
+ - Fast downloads! We use Cloudfront (a CDN) to geo-replicate downloads so they're blazing fast from anywhere on the globe.
292
+ - Usage stats and more features to come.
293
+
294
+ 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.
295
+
296
+ ## Contributions (feature requests, bugs, etc.) are super welcome 💙💚💛💜🧡❤️
297
+
298
+ Everyone is welcome to contribute, and we value everybody's contribution. Code is not the only way to help the community.
299
+ Answering questions, helping others, reaching out and improving the documentations are immensely valuable to the community.
300
+ We wrote a [contribution guide](https://github.com/huggingface/huggingface_hub/blob/main/CONTRIBUTING.md) to summarize
301
+ how to get started to contribute to this repository.
302
+
303
+
.cache/pip/http-v2/7/1/b/9/d/71b9df22187d5c54f1147d4ac0849d1438ec19aedc20363a3478b854.body ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.1
2
+ Name: docker-pycreds
3
+ Version: 0.4.0
4
+ Summary: Python bindings for the docker credentials store API
5
+ Home-page: https://github.com/shin-/dockerpy-creds
6
+ Author: UNKNOWN
7
+ Author-email: UNKNOWN
8
+ License: Apache License 2.0
9
+ Platform: UNKNOWN
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Environment :: Other Environment
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python
15
+ Classifier: Programming Language :: Python :: 2
16
+ Classifier: Programming Language :: Python :: 2.6
17
+ Classifier: Programming Language :: Python :: 2.7
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.3
20
+ Classifier: Programming Language :: Python :: 3.4
21
+ Classifier: Programming Language :: Python :: 3.5
22
+ Classifier: Programming Language :: Python :: 3.6
23
+ Classifier: Topic :: Utilities
24
+ Classifier: License :: OSI Approved :: Apache Software License
25
+ Requires-Dist: six (>=1.4.0)
26
+
27
+ # docker-pycreds
28
+
29
+ [![CircleCI](https://circleci.com/gh/shin-/dockerpy-creds/tree/master.svg?style=svg)](https://circleci.com/gh/shin-/dockerpy-creds/tree/master)
30
+
31
+ Python bindings for the docker credentials store API
32
+
33
+ ## Credentials store info
34
+
35
+ [Docker documentation page](https://docs.docker.com/engine/reference/commandline/login/#/credentials-store)
36
+
37
+ ## Requirements
38
+
39
+ On top of the dependencies in `requirements.txt`, the `docker-credential`
40
+ executable for the platform must be installed on the user's system.
41
+
42
+ ## API usage
43
+
44
+ ```python
45
+
46
+ import dockerpycreds
47
+
48
+ store = dockerpycreds.Store('secretservice')
49
+ store.store(
50
+ server='https://index.docker.io/v1/', username='johndoe',
51
+ secret='hunter2'
52
+ )
53
+
54
+ print(store.list())
55
+
56
+ print(store.get('https://index.docker.io/v1/'))
57
+
58
+
59
+ store.erase('https://index.docker.io/v1/')
60
+ ```
61
+
62
+
.cache/pip/http-v2/7/2/2/9/f/7229fb50bdca3f16cb03ca953b540cb67fb07fb971b675db32ae3239 ADDED
Binary file (1.17 kB). View file
 
.cache/pip/http-v2/7/2/2/9/f/7229fb50bdca3f16cb03ca953b540cb67fb07fb971b675db32ae3239.body ADDED
@@ -0,0 +1,522 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.1
2
+ Name: xxhash
3
+ Version: 3.5.0
4
+ Summary: Python binding for xxHash
5
+ Home-page: https://github.com/ifduyue/python-xxhash
6
+ Author: Yue Du
7
+ Author-email: [email protected]
8
+ License: BSD
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: License :: OSI Approved :: BSD License
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Programming Language :: Python
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3 :: Only
15
+ Classifier: Programming Language :: Python :: 3.7
16
+ Classifier: Programming Language :: Python :: 3.8
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Programming Language :: Python :: Implementation :: CPython
23
+ Requires-Python: >=3.7
24
+ Description-Content-Type: text/x-rst
25
+ License-File: LICENSE
26
+
27
+ python-xxhash
28
+ =============
29
+
30
+ .. image:: https://github.com/ifduyue/python-xxhash/actions/workflows/test.yml/badge.svg
31
+ :target: https://github.com/ifduyue/python-xxhash/actions/workflows/test.yml
32
+ :alt: Github Actions Status
33
+
34
+ .. image:: https://img.shields.io/pypi/v/xxhash.svg
35
+ :target: https://pypi.org/project/xxhash/
36
+ :alt: Latest Version
37
+
38
+ .. image:: https://img.shields.io/pypi/pyversions/xxhash.svg
39
+ :target: https://pypi.org/project/xxhash/
40
+ :alt: Supported Python versions
41
+
42
+ .. image:: https://img.shields.io/pypi/l/xxhash.svg
43
+ :target: https://pypi.org/project/xxhash/
44
+ :alt: License
45
+
46
+
47
+ .. _HMAC: http://en.wikipedia.org/wiki/Hash-based_message_authentication_code
48
+ .. _xxHash: https://github.com/Cyan4973/xxHash
49
+ .. _Cyan4973: https://github.com/Cyan4973
50
+
51
+
52
+ xxhash is a Python binding for the xxHash_ library by `Yann Collet`__.
53
+
54
+ __ Cyan4973_
55
+
56
+ Installation
57
+ ------------
58
+
59
+ .. code-block:: bash
60
+
61
+ $ pip install xxhash
62
+
63
+ You can also install using conda:
64
+
65
+ .. code-block:: bash
66
+
67
+ $ conda install -c conda-forge python-xxhash
68
+
69
+
70
+ Installing From Source
71
+ ~~~~~~~~~~~~~~~~~~~~~~~
72
+
73
+ .. code-block:: bash
74
+
75
+ $ pip install --no-binary xxhash xxhash
76
+
77
+ Prerequisites
78
+ ++++++++++++++
79
+
80
+ On Debian/Ubuntu:
81
+
82
+ .. code-block:: bash
83
+
84
+ $ apt-get install python-dev gcc
85
+
86
+ On CentOS/Fedora:
87
+
88
+ .. code-block:: bash
89
+
90
+ $ yum install python-devel gcc redhat-rpm-config
91
+
92
+ Linking to libxxhash.so
93
+ ~~~~~~~~~~~~~~~~~~~~~~~~
94
+
95
+ By default python-xxhash will use bundled xxHash,
96
+ we can change this by specifying ENV var ``XXHASH_LINK_SO``:
97
+
98
+ .. code-block:: bash
99
+
100
+ $ XXHASH_LINK_SO=1 pip install --no-binary xxhash xxhash
101
+
102
+ Usage
103
+ --------
104
+
105
+ Module version and its backend xxHash library version can be retrieved using
106
+ the module properties ``VERSION`` AND ``XXHASH_VERSION`` respectively.
107
+
108
+ .. code-block:: python
109
+
110
+ >>> import xxhash
111
+ >>> xxhash.VERSION
112
+ '2.0.0'
113
+ >>> xxhash.XXHASH_VERSION
114
+ '0.8.0'
115
+
116
+ This module is hashlib-compliant, which means you can use it in the same way as ``hashlib.md5``.
117
+
118
+ | update() -- update the current digest with an additional string
119
+ | digest() -- return the current digest value
120
+ | hexdigest() -- return the current digest as a string of hexadecimal digits
121
+ | intdigest() -- return the current digest as an integer
122
+ | copy() -- return a copy of the current xxhash object
123
+ | reset() -- reset state
124
+
125
+ md5 digest returns bytes, but the original xxh32 and xxh64 C APIs return integers.
126
+ While this module is made hashlib-compliant, ``intdigest()`` is also provided to
127
+ get the integer digest.
128
+
129
+ Constructors for hash algorithms provided by this module are ``xxh32()`` and ``xxh64()``.
130
+
131
+ For example, to obtain the digest of the byte string ``b'Nobody inspects the spammish repetition'``:
132
+
133
+ .. code-block:: python
134
+
135
+ >>> import xxhash
136
+ >>> x = xxhash.xxh32()
137
+ >>> x.update(b'Nobody inspects')
138
+ >>> x.update(b' the spammish repetition')
139
+ >>> x.digest()
140
+ b'\xe2);/'
141
+ >>> x.digest_size
142
+ 4
143
+ >>> x.block_size
144
+ 16
145
+
146
+ More condensed:
147
+
148
+ .. code-block:: python
149
+
150
+ >>> xxhash.xxh32(b'Nobody inspects the spammish repetition').hexdigest()
151
+ 'e2293b2f'
152
+ >>> xxhash.xxh32(b'Nobody inspects the spammish repetition').digest() == x.digest()
153
+ True
154
+
155
+ An optional seed (default is 0) can be used to alter the result predictably:
156
+
157
+ .. code-block:: python
158
+
159
+ >>> import xxhash
160
+ >>> xxhash.xxh64('xxhash').hexdigest()
161
+ '32dd38952c4bc720'
162
+ >>> xxhash.xxh64('xxhash', seed=20141025).hexdigest()
163
+ 'b559b98d844e0635'
164
+ >>> x = xxhash.xxh64(seed=20141025)
165
+ >>> x.update('xxhash')
166
+ >>> x.hexdigest()
167
+ 'b559b98d844e0635'
168
+ >>> x.intdigest()
169
+ 13067679811253438005
170
+
171
+ Be careful that xxh32 takes an unsigned 32-bit integer as seed, while xxh64
172
+ takes an unsigned 64-bit integer. Although unsigned integer overflow is
173
+ defined behavior, it's better not to make it happen:
174
+
175
+ .. code-block:: python
176
+
177
+ >>> xxhash.xxh32('I want an unsigned 32-bit seed!', seed=0).hexdigest()
178
+ 'f7a35af8'
179
+ >>> xxhash.xxh32('I want an unsigned 32-bit seed!', seed=2**32).hexdigest()
180
+ 'f7a35af8'
181
+ >>> xxhash.xxh32('I want an unsigned 32-bit seed!', seed=1).hexdigest()
182
+ 'd8d4b4ba'
183
+ >>> xxhash.xxh32('I want an unsigned 32-bit seed!', seed=2**32+1).hexdigest()
184
+ 'd8d4b4ba'
185
+ >>>
186
+ >>> xxhash.xxh64('I want an unsigned 64-bit seed!', seed=0).hexdigest()
187
+ 'd4cb0a70a2b8c7c1'
188
+ >>> xxhash.xxh64('I want an unsigned 64-bit seed!', seed=2**64).hexdigest()
189
+ 'd4cb0a70a2b8c7c1'
190
+ >>> xxhash.xxh64('I want an unsigned 64-bit seed!', seed=1).hexdigest()
191
+ 'ce5087f12470d961'
192
+ >>> xxhash.xxh64('I want an unsigned 64-bit seed!', seed=2**64+1).hexdigest()
193
+ 'ce5087f12470d961'
194
+
195
+
196
+ ``digest()`` returns bytes of the **big-endian** representation of the integer
197
+ digest:
198
+
199
+ .. code-block:: python
200
+
201
+ >>> import xxhash
202
+ >>> h = xxhash.xxh64()
203
+ >>> h.digest()
204
+ b'\xefF\xdb7Q\xd8\xe9\x99'
205
+ >>> h.intdigest().to_bytes(8, 'big')
206
+ b'\xefF\xdb7Q\xd8\xe9\x99'
207
+ >>> h.hexdigest()
208
+ 'ef46db3751d8e999'
209
+ >>> format(h.intdigest(), '016x')
210
+ 'ef46db3751d8e999'
211
+ >>> h.intdigest()
212
+ 17241709254077376921
213
+ >>> int(h.hexdigest(), 16)
214
+ 17241709254077376921
215
+
216
+ Besides xxh32/xxh64 mentioned above, oneshot functions are also provided,
217
+ so we can avoid allocating XXH32/64 state on heap:
218
+
219
+ | xxh32_digest(bytes, seed=0)
220
+ | xxh32_intdigest(bytes, seed=0)
221
+ | xxh32_hexdigest(bytes, seed=0)
222
+ | xxh64_digest(bytes, seed=0)
223
+ | xxh64_intdigest(bytes, seed=0)
224
+ | xxh64_hexdigest(bytes, seed=0)
225
+
226
+ .. code-block:: python
227
+
228
+ >>> import xxhash
229
+ >>> xxhash.xxh64('a').digest() == xxhash.xxh64_digest('a')
230
+ True
231
+ >>> xxhash.xxh64('a').intdigest() == xxhash.xxh64_intdigest('a')
232
+ True
233
+ >>> xxhash.xxh64('a').hexdigest() == xxhash.xxh64_hexdigest('a')
234
+ True
235
+ >>> xxhash.xxh64_hexdigest('xxhash', seed=20141025)
236
+ 'b559b98d844e0635'
237
+ >>> xxhash.xxh64_intdigest('xxhash', seed=20141025)
238
+ 13067679811253438005L
239
+ >>> xxhash.xxh64_digest('xxhash', seed=20141025)
240
+ '\xb5Y\xb9\x8d\x84N\x065'
241
+
242
+ .. code-block:: python
243
+
244
+ In [1]: import xxhash
245
+
246
+ In [2]: %timeit xxhash.xxh64_hexdigest('xxhash')
247
+ 268 ns ± 24.1 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
248
+
249
+ In [3]: %timeit xxhash.xxh64('xxhash').hexdigest()
250
+ 416 ns ± 17.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
251
+
252
+
253
+ XXH3 hashes are available since v2.0.0 (xxHash v0.8.0), they are:
254
+
255
+ Streaming classes:
256
+
257
+ | xxh3_64
258
+ | xxh3_128
259
+
260
+ Oneshot functions:
261
+
262
+ | xxh3_64_digest(bytes, seed=0)
263
+ | xxh3_64_intdigest(bytes, seed=0)
264
+ | xxh3_64_hexdigest(bytes, seed=0)
265
+ | xxh3_128_digest(bytes, seed=0)
266
+ | xxh3_128_intdigest(bytes, seed=0)
267
+ | xxh3_128_hexdigest(bytes, seed=0)
268
+
269
+ And aliases:
270
+
271
+ | xxh128 = xxh3_128
272
+ | xxh128_digest = xxh3_128_digest
273
+ | xxh128_intdigest = xxh3_128_intdigest
274
+ | xxh128_hexdigest = xxh3_128_hexdigest
275
+
276
+ Caveats
277
+ -------
278
+
279
+ SEED OVERFLOW
280
+ ~~~~~~~~~~~~~~
281
+
282
+ xxh32 takes an unsigned 32-bit integer as seed, and xxh64 takes
283
+ an unsigned 64-bit integer as seed. Make sure that the seed is greater than
284
+ or equal to ``0``.
285
+
286
+ ENDIANNESS
287
+ ~~~~~~~~~~~
288
+
289
+ As of python-xxhash 0.3.0, ``digest()`` returns bytes of the
290
+ **big-endian** representation of the integer digest. It used
291
+ to be little-endian.
292
+
293
+ DONT USE XXHASH IN HMAC
294
+ ~~~~~~~~~~~~~~~~~~~~~~~
295
+ Though you can use xxhash as an HMAC_ hash function, but it's
296
+ highly recommended not to.
297
+
298
+ xxhash is **NOT** a cryptographic hash function, it is a
299
+ non-cryptographic hash algorithm aimed at speed and quality.
300
+ Do not put xxhash in any position where cryptographic hash
301
+ functions are required.
302
+
303
+
304
+ Copyright and License
305
+ ---------------------
306
+
307
+ Copyright (c) 2014-2024 Yue Du - https://github.com/ifduyue
308
+
309
+ Licensed under `BSD 2-Clause License <http://opensource.org/licenses/BSD-2-Clause>`_
310
+
311
+ CHANGELOG
312
+ -----------
313
+
314
+ v3.5.0 2024-08-17
315
+ ~~~~~~~~~~~~~~~~~
316
+
317
+ - Build wheels for Python 3.13
318
+
319
+ v3.4.1 2023-10-05
320
+ ~~~~~~~~~~~~~~~~~
321
+
322
+ - Build wheels for Python 3.12
323
+ - Remove setuptools_scm
324
+
325
+ v3.4.0 2023-10-05
326
+ ~~~~~~~~~~~~~~~~~
327
+
328
+ *Yanked* due to wheels building problem.
329
+
330
+ v3.3.0 2023-07-29
331
+ ~~~~~~~~~~~~~~~~~
332
+
333
+ - Upgrade xxHash to v0.8.2
334
+ - Drop support for Python 3.6
335
+
336
+ v3.2.0 2022-12-28
337
+ ~~~~~~~~~~~~~~~~~
338
+
339
+ This is the last version to support Python 3.6
340
+
341
+ - Build Python 3.11 wheels.
342
+ - Remove setup.py test_suites, call unittest directly
343
+
344
+ v3.1.0 2022-10-19
345
+ ~~~~~~~~~~~~~~~~~
346
+
347
+ - Type annotations.
348
+ - Enabled muslinux wheels building.
349
+
350
+ v3.0.0 2022-02-25
351
+ ~~~~~~~~~~~~~~~~~
352
+
353
+ - New set `algorithms_available` lists all implemented algorithms in `xxhash`
354
+ package.
355
+ - Upgrade xxHash to v0.8.1.
356
+ - Drop support for EOL Python versions, require python >= 3.6 from now on.
357
+ - Migrate to github actions and build arm64 wheels for macOS.
358
+ - Always release GIL.
359
+
360
+
361
+ v2.0.2 2021-04-15
362
+ ~~~~~~~~~~~~~~~~~
363
+
364
+ - Fix Travis CI OSX dpl python2.7 get-pip.py error
365
+
366
+ v2.0.1 2021-04-15
367
+ ~~~~~~~~~~~~~~~~~
368
+
369
+ - Only to trigger Python 3.9 wheels building.
370
+
371
+ v2.0.0 2020-08-03
372
+ ~~~~~~~~~~~~~~~~~
373
+
374
+ - **Require xxHash version >= v0.8.0**
375
+ - Upgrade xxHash to v0.8.0
376
+ - XXH3 hashes: `xxh3_64`, `xxh3_128`, and their oneshot functions
377
+
378
+ v1.4.4 2020-06-20
379
+ ~~~~~~~~~~~~~~~~~
380
+
381
+ - Upgrade xxHash to v0.7.3
382
+ - Stop using PEP393 deprecated APIs
383
+ - Use XXH(32|64)_canonicalFromHash to replace u2bytes and ull2bytes
384
+
385
+ v1.4.3 2019-11-12
386
+ ~~~~~~~~~~~~~~~~~
387
+
388
+ - Upgrade xxHash to v0.7.2
389
+ - Python 3.8 wheels
390
+
391
+ v1.4.2 2019-10-13
392
+ ~~~~~~~~~~~~~~~~~
393
+
394
+ - Fixed: setup.py fails when reading README.rst and the default encoding is not UTF-8
395
+
396
+ v1.4.1 2019-08-27
397
+ ~~~~~~~~~~~~~~~~~
398
+
399
+ - Fixed: xxh3.h in missing from source tarball
400
+
401
+ v1.4.0 2019-08-25
402
+ ~~~~~~~~~~~~~~~~~
403
+
404
+ - Upgrade xxHash to v0.7.1
405
+
406
+ v1.3.0 2018-10-21
407
+ ~~~~~~~~~~~~~~~~~
408
+
409
+ - Wheels are now built automatically
410
+ - Split CFFI variant into a separate package `ifduyue/python-xxhash-cffi <https://github.com/ifduyue/python-xxhash-cffi>`_
411
+
412
+ v1.2.0 2018-07-13
413
+ ~~~~~~~~~~~~~~~~~
414
+
415
+ - Add oneshot functions xxh{32,64}_{,int,hex}digest
416
+
417
+ v1.1.0 2018-07-05
418
+ ~~~~~~~~~~~~~~~~~
419
+
420
+ - Allow input larger than 2GB
421
+ - Release the GIL on sufficiently large input
422
+ - Drop support for Python 3.2
423
+
424
+ v1.0.1 2017-03-02
425
+ ~~~~~~~~~~~~~~~~~~
426
+
427
+ - Free state actively, instead of delegating it to ffi.gc
428
+
429
+ v1.0.0 2017-02-10
430
+ ~~~~~~~~~~~~~~~~~~
431
+
432
+ - Fixed copy() segfault
433
+ - Added CFFI variant
434
+
435
+ v0.6.3 2017-02-10
436
+ ~~~~~~~~~~~~~~~~~~
437
+
438
+ - Fixed copy() segfault
439
+
440
+ v0.6.2 2017-02-10
441
+ ~~~~~~~~~~~~~~~~~~
442
+
443
+ - Upgrade xxHash to v0.6.2
444
+
445
+ v0.6.1 2016-06-26
446
+ ~~~~~~~~~~~~~~~~~~
447
+
448
+ - Upgrade xxHash to v0.6.1
449
+
450
+ v0.5.0 2016-03-02
451
+ ~~~~~~~~~~~~~~~~~~
452
+
453
+ - Upgrade xxHash to v0.5.0
454
+
455
+ v0.4.3 2015-08-21
456
+ ~~~~~~~~~~~~~~~~~~
457
+
458
+ - Upgrade xxHash to r42
459
+
460
+ v0.4.1 2015-08-16
461
+ ~~~~~~~~~~~~~~~~~~
462
+
463
+ - Upgrade xxHash to r41
464
+
465
+ v0.4.0 2015-08-05
466
+ ~~~~~~~~~~~~~~~~~~
467
+
468
+ - Added method reset
469
+ - Upgrade xxHash to r40
470
+
471
+ v0.3.2 2015-01-27
472
+ ~~~~~~~~~~~~~~~~~~
473
+
474
+ - Fixed some typos in docstrings
475
+
476
+ v0.3.1 2015-01-24
477
+ ~~~~~~~~~~~~~~~~~~
478
+
479
+ - Upgrade xxHash to r39
480
+
481
+ v0.3.0 2014-11-11
482
+ ~~~~~~~~~~~~~~~~~~
483
+
484
+ - Change digest() from little-endian representation to big-endian representation of the integer digest.
485
+ This change breaks compatibility (digest() results are different).
486
+
487
+ v0.2.0 2014-10-25
488
+ ~~~~~~~~~~~~~~~~~~
489
+
490
+ - Make this package hashlib-compliant
491
+
492
+ v0.1.3 2014-10-23
493
+ ~~~~~~~~~~~~~~~~~~
494
+
495
+ - Update xxHash to r37
496
+
497
+ v0.1.2 2014-10-19
498
+ ~~~~~~~~~~~~~~~~~~
499
+
500
+ - Improve: Check XXHnn_init() return value.
501
+ - Update xxHash to r36
502
+
503
+ v0.1.1 2014-08-07
504
+ ~~~~~~~~~~~~~~~~~~
505
+
506
+ - Improve: Can now be built with Visual C++ Compiler.
507
+
508
+ v0.1.0 2014-08-05
509
+ ~~~~~~~~~~~~~~~~~~
510
+
511
+ - New: XXH32 and XXH64 type, which support partially update.
512
+ - Fix: build under Python 3.4
513
+
514
+ v0.0.2 2014-08-03
515
+ ~~~~~~~~~~~~~~~~~~
516
+
517
+ - NEW: Support Python 3
518
+
519
+ v0.0.1 2014-07-30
520
+ ~~~~~~~~~~~~~~~~~~
521
+
522
+ - NEW: xxh32 and xxh64
.cache/pip/http-v2/7/3/5/4/e/7354e15b7a2b590d713d4782bd16917fac9db3c087fa80d4d8dc0db5 ADDED
Binary file (1.19 kB). View file
 
.cache/pip/http-v2/7/3/5/4/e/7354e15b7a2b590d713d4782bd16917fac9db3c087fa80d4d8dc0db5.body ADDED
@@ -0,0 +1,212 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.1
2
+ Name: pytest
3
+ Version: 8.3.3
4
+ Summary: pytest: simple powerful testing with Python
5
+ Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin, Others (See AUTHORS)
6
+ License: MIT
7
+ Project-URL: Changelog, https://docs.pytest.org/en/stable/changelog.html
8
+ Project-URL: Homepage, https://docs.pytest.org/en/latest/
9
+ Project-URL: Source, https://github.com/pytest-dev/pytest
10
+ Project-URL: Tracker, https://github.com/pytest-dev/pytest/issues
11
+ Project-URL: Twitter, https://twitter.com/pytestdotorg
12
+ Keywords: test,unittest
13
+ Classifier: Development Status :: 6 - Mature
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: MacOS
17
+ Classifier: Operating System :: Microsoft :: Windows
18
+ Classifier: Operating System :: POSIX
19
+ Classifier: Operating System :: Unix
20
+ Classifier: Programming Language :: Python :: 3 :: Only
21
+ Classifier: Programming Language :: Python :: 3.8
22
+ Classifier: Programming Language :: Python :: 3.9
23
+ Classifier: Programming Language :: Python :: 3.10
24
+ Classifier: Programming Language :: Python :: 3.11
25
+ Classifier: Programming Language :: Python :: 3.12
26
+ Classifier: Topic :: Software Development :: Libraries
27
+ Classifier: Topic :: Software Development :: Testing
28
+ Classifier: Topic :: Utilities
29
+ Requires-Python: >=3.8
30
+ Description-Content-Type: text/x-rst
31
+ License-File: LICENSE
32
+ License-File: AUTHORS
33
+ Requires-Dist: iniconfig
34
+ Requires-Dist: packaging
35
+ Requires-Dist: pluggy <2,>=1.5
36
+ Requires-Dist: exceptiongroup >=1.0.0rc8 ; python_version < "3.11"
37
+ Requires-Dist: tomli >=1 ; python_version < "3.11"
38
+ Requires-Dist: colorama ; sys_platform == "win32"
39
+ Provides-Extra: dev
40
+ Requires-Dist: argcomplete ; extra == 'dev'
41
+ Requires-Dist: attrs >=19.2 ; extra == 'dev'
42
+ Requires-Dist: hypothesis >=3.56 ; extra == 'dev'
43
+ Requires-Dist: mock ; extra == 'dev'
44
+ Requires-Dist: pygments >=2.7.2 ; extra == 'dev'
45
+ Requires-Dist: requests ; extra == 'dev'
46
+ Requires-Dist: setuptools ; extra == 'dev'
47
+ Requires-Dist: xmlschema ; extra == 'dev'
48
+
49
+ .. image:: https://github.com/pytest-dev/pytest/raw/main/doc/en/img/pytest_logo_curves.svg
50
+ :target: https://docs.pytest.org/en/stable/
51
+ :align: center
52
+ :height: 200
53
+ :alt: pytest
54
+
55
+
56
+ ------
57
+
58
+ .. image:: https://img.shields.io/pypi/v/pytest.svg
59
+ :target: https://pypi.org/project/pytest/
60
+
61
+ .. image:: https://img.shields.io/conda/vn/conda-forge/pytest.svg
62
+ :target: https://anaconda.org/conda-forge/pytest
63
+
64
+ .. image:: https://img.shields.io/pypi/pyversions/pytest.svg
65
+ :target: https://pypi.org/project/pytest/
66
+
67
+ .. image:: https://codecov.io/gh/pytest-dev/pytest/branch/main/graph/badge.svg
68
+ :target: https://codecov.io/gh/pytest-dev/pytest
69
+ :alt: Code coverage Status
70
+
71
+ .. image:: https://github.com/pytest-dev/pytest/actions/workflows/test.yml/badge.svg
72
+ :target: https://github.com/pytest-dev/pytest/actions?query=workflow%3Atest
73
+
74
+ .. image:: https://results.pre-commit.ci/badge/github/pytest-dev/pytest/main.svg
75
+ :target: https://results.pre-commit.ci/latest/github/pytest-dev/pytest/main
76
+ :alt: pre-commit.ci status
77
+
78
+ .. image:: https://www.codetriage.com/pytest-dev/pytest/badges/users.svg
79
+ :target: https://www.codetriage.com/pytest-dev/pytest
80
+
81
+ .. image:: https://readthedocs.org/projects/pytest/badge/?version=latest
82
+ :target: https://pytest.readthedocs.io/en/latest/?badge=latest
83
+ :alt: Documentation Status
84
+
85
+ .. image:: https://img.shields.io/badge/Discord-pytest--dev-blue
86
+ :target: https://discord.com/invite/pytest-dev
87
+ :alt: Discord
88
+
89
+ .. image:: https://img.shields.io/badge/Libera%20chat-%23pytest-orange
90
+ :target: https://web.libera.chat/#pytest
91
+ :alt: Libera chat
92
+
93
+
94
+ The ``pytest`` framework makes it easy to write small tests, yet
95
+ scales to support complex functional testing for applications and libraries.
96
+
97
+ An example of a simple test:
98
+
99
+ .. code-block:: python
100
+
101
+ # content of test_sample.py
102
+ def inc(x):
103
+ return x + 1
104
+
105
+
106
+ def test_answer():
107
+ assert inc(3) == 5
108
+
109
+
110
+ To execute it::
111
+
112
+ $ pytest
113
+ ============================= test session starts =============================
114
+ collected 1 items
115
+
116
+ test_sample.py F
117
+
118
+ ================================== FAILURES ===================================
119
+ _________________________________ test_answer _________________________________
120
+
121
+ def test_answer():
122
+ > assert inc(3) == 5
123
+ E assert 4 == 5
124
+ E + where 4 = inc(3)
125
+
126
+ test_sample.py:5: AssertionError
127
+ ========================== 1 failed in 0.04 seconds ===========================
128
+
129
+
130
+ Due to ``pytest``'s detailed assertion introspection, only plain ``assert`` statements are used. See `getting-started <https://docs.pytest.org/en/stable/getting-started.html#our-first-test-run>`_ for more examples.
131
+
132
+
133
+ Features
134
+ --------
135
+
136
+ - Detailed info on failing `assert statements <https://docs.pytest.org/en/stable/how-to/assert.html>`_ (no need to remember ``self.assert*`` names)
137
+
138
+ - `Auto-discovery
139
+ <https://docs.pytest.org/en/stable/explanation/goodpractices.html#python-test-discovery>`_
140
+ of test modules and functions
141
+
142
+ - `Modular fixtures <https://docs.pytest.org/en/stable/explanation/fixtures.html>`_ for
143
+ managing small or parametrized long-lived test resources
144
+
145
+ - Can run `unittest <https://docs.pytest.org/en/stable/how-to/unittest.html>`_ (or trial)
146
+ test suites out of the box
147
+
148
+ - Python 3.8+ or PyPy3
149
+
150
+ - Rich plugin architecture, with over 1300+ `external plugins <https://docs.pytest.org/en/latest/reference/plugin_list.html>`_ and thriving community
151
+
152
+
153
+ Documentation
154
+ -------------
155
+
156
+ For full documentation, including installation, tutorials and PDF documents, please see https://docs.pytest.org/en/stable/.
157
+
158
+
159
+ Bugs/Requests
160
+ -------------
161
+
162
+ Please use the `GitHub issue tracker <https://github.com/pytest-dev/pytest/issues>`_ to submit bugs or request features.
163
+
164
+
165
+ Changelog
166
+ ---------
167
+
168
+ Consult the `Changelog <https://docs.pytest.org/en/stable/changelog.html>`__ page for fixes and enhancements of each version.
169
+
170
+
171
+ Support pytest
172
+ --------------
173
+
174
+ `Open Collective`_ is an online funding platform for open and transparent communities.
175
+ It provides tools to raise money and share your finances in full transparency.
176
+
177
+ It is the platform of choice for individuals and companies that want to make one-time or
178
+ monthly donations directly to the project.
179
+
180
+ See more details in the `pytest collective`_.
181
+
182
+ .. _Open Collective: https://opencollective.com
183
+ .. _pytest collective: https://opencollective.com/pytest
184
+
185
+
186
+ pytest for enterprise
187
+ ---------------------
188
+
189
+ Available as part of the Tidelift Subscription.
190
+
191
+ The maintainers of pytest and thousands of other packages are working with Tidelift to deliver commercial support and
192
+ maintenance for the open source dependencies you use to build your applications.
193
+ Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use.
194
+
195
+ `Learn more. <https://tidelift.com/subscription/pkg/pypi-pytest?utm_source=pypi-pytest&utm_medium=referral&utm_campaign=enterprise&utm_term=repo>`_
196
+
197
+ Security
198
+ ^^^^^^^^
199
+
200
+ pytest has never been associated with a security vulnerability, but in any case, to report a
201
+ security vulnerability please use the `Tidelift security contact <https://tidelift.com/security>`_.
202
+ Tidelift will coordinate the fix and disclosure.
203
+
204
+
205
+ License
206
+ -------
207
+
208
+ Copyright Holger Krekel and others, 2004.
209
+
210
+ Distributed under the terms of the `MIT`_ license, pytest is free and open source software.
211
+
212
+ .. _`MIT`: https://github.com/pytest-dev/pytest/blob/main/LICENSE
.cache/pip/http-v2/7/7/6/7/2/7767287c95ec4491394e4204f2ba3be9eb9e3ed9ca0ffd45d421b772 ADDED
Binary file (1.11 kB). View file
 
.cache/pip/http-v2/7/7/6/7/2/7767287c95ec4491394e4204f2ba3be9eb9e3ed9ca0ffd45d421b772.body ADDED
Binary file (307 kB). View file
 
.cache/pip/http-v2/7/c/c/b/9/7ccb994e5cb08d1aee93acb83ae5881083c4a349402f61c9f7d304f8 ADDED
Binary file (1.81 kB). View file
 
.cache/pip/http-v2/7/c/c/b/9/7ccb994e5cb08d1aee93acb83ae5881083c4a349402f61c9f7d304f8.body ADDED
Binary file (4.37 kB). View file
 
.cache/pip/http-v2/a/1/5/a/3/a15a3a227f3412287f03121d8de35a7e4b8889a19d0448af719d96c1 ADDED
Binary file (1.81 kB). View file
 
.cache/pip/http-v2/a/1/5/a/3/a15a3a227f3412287f03121d8de35a7e4b8889a19d0448af719d96c1.body ADDED
Binary file (1.05 kB). View file
 
.cache/pip/http-v2/a/1/9/5/3/a19537d3cf37c122db841d6fe4cd322bc10d1a558bb00d146b85cb9a.body ADDED
Binary file (34.2 kB). View file
 
.cache/pip/http-v2/a/6/6/7/4/a6674e44f8dbb270324765d1fb568b86858877aed299a2428f81e802.body ADDED
Binary file (45.1 kB). View file
 
.cache/pip/http-v2/a/8/1/3/d/a813d38208b26d1643cfecf26bd5ddeb869c95933e4bf304b8f6f1bb.body ADDED
@@ -0,0 +1,1573 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.1
2
+ Name: pandas
3
+ Version: 2.2.3
4
+ Summary: Powerful data structures for data analysis, time series, and statistics
5
+ Home-page: https://pandas.pydata.org
6
+ Author-Email: The Pandas Development Team <[email protected]>
7
+ License: BSD 3-Clause License
8
+
9
+ Copyright (c) 2008-2011, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
10
+ All rights reserved.
11
+
12
+ Copyright (c) 2011-2023, Open source contributors.
13
+
14
+ Redistribution and use in source and binary forms, with or without
15
+ modification, are permitted provided that the following conditions are met:
16
+
17
+ * Redistributions of source code must retain the above copyright notice, this
18
+ list of conditions and the following disclaimer.
19
+
20
+ * Redistributions in binary form must reproduce the above copyright notice,
21
+ this list of conditions and the following disclaimer in the documentation
22
+ and/or other materials provided with the distribution.
23
+
24
+ * Neither the name of the copyright holder nor the names of its
25
+ contributors may be used to endorse or promote products derived from
26
+ this software without specific prior written permission.
27
+
28
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
29
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
30
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
31
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
32
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
35
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
36
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
37
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
+ Copyright (c) 2010-2019 Keith Goodman
39
+ Copyright (c) 2019 Bottleneck Developers
40
+ All rights reserved.
41
+
42
+ Redistribution and use in source and binary forms, with or without
43
+ modification, are permitted provided that the following conditions are met:
44
+
45
+ * Redistributions of source code must retain the above copyright notice,
46
+ this list of conditions and the following disclaimer.
47
+
48
+ * Redistributions in binary form must reproduce the above copyright
49
+ notice, this list of conditions and the following disclaimer in the
50
+ documentation and/or other materials provided with the distribution.
51
+
52
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
53
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
54
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
55
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
56
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
57
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
58
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
59
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
60
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
61
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
62
+ POSSIBILITY OF SUCH DAMAGE.Copyright 2017- Paul Ganssle <[email protected]>
63
+ Copyright 2017- dateutil contributors (see AUTHORS file)
64
+
65
+ Licensed under the Apache License, Version 2.0 (the "License");
66
+ you may not use this file except in compliance with the License.
67
+ You may obtain a copy of the License at
68
+
69
+ http://www.apache.org/licenses/LICENSE-2.0
70
+
71
+ Unless required by applicable law or agreed to in writing, software
72
+ distributed under the License is distributed on an "AS IS" BASIS,
73
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
74
+ See the License for the specific language governing permissions and
75
+ limitations under the License.
76
+
77
+ The above license applies to all contributions after 2017-12-01, as well as
78
+ all contributions that have been re-licensed (see AUTHORS file for the list of
79
+ contributors who have re-licensed their code).
80
+ --------------------------------------------------------------------------------
81
+ dateutil - Extensions to the standard Python datetime module.
82
+
83
+ Copyright (c) 2003-2011 - Gustavo Niemeyer <[email protected]>
84
+ Copyright (c) 2012-2014 - Tomi Pieviläinen <[email protected]>
85
+ Copyright (c) 2014-2016 - Yaron de Leeuw <[email protected]>
86
+ Copyright (c) 2015- - Paul Ganssle <[email protected]>
87
+ Copyright (c) 2015- - dateutil contributors (see AUTHORS file)
88
+
89
+ All rights reserved.
90
+
91
+ Redistribution and use in source and binary forms, with or without
92
+ modification, are permitted provided that the following conditions are met:
93
+
94
+ * Redistributions of source code must retain the above copyright notice,
95
+ this list of conditions and the following disclaimer.
96
+ * Redistributions in binary form must reproduce the above copyright notice,
97
+ this list of conditions and the following disclaimer in the documentation
98
+ and/or other materials provided with the distribution.
99
+ * Neither the name of the copyright holder nor the names of its
100
+ contributors may be used to endorse or promote products derived from
101
+ this software without specific prior written permission.
102
+
103
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
104
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
105
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
106
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
107
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
108
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
109
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
110
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
111
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
112
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
113
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
114
+
115
+ The above BSD License Applies to all code, even that also covered by Apache 2.0.# MIT License
116
+
117
+ Copyright (c) 2019 Hadley Wickham; RStudio; and Evan Miller
118
+
119
+ Permission is hereby granted, free of charge, to any person obtaining a copy
120
+ of this software and associated documentation files (the "Software"), to deal
121
+ in the Software without restriction, including without limitation the rights
122
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
123
+ copies of the Software, and to permit persons to whom the Software is
124
+ furnished to do so, subject to the following conditions:
125
+
126
+ The above copyright notice and this permission notice shall be included in all
127
+ copies or substantial portions of the Software.
128
+
129
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
130
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
131
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
132
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
133
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
134
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
135
+ SOFTWARE.
136
+ Based on http://opensource.org/licenses/MIT
137
+
138
+ This is a template. Complete and ship as file LICENSE the following 2
139
+ lines (only)
140
+
141
+ YEAR:
142
+ COPYRIGHT HOLDER:
143
+
144
+ and specify as
145
+
146
+ License: MIT + file LICENSE
147
+
148
+ Copyright (c) <YEAR>, <COPYRIGHT HOLDER>
149
+
150
+ Permission is hereby granted, free of charge, to any person obtaining
151
+ a copy of this software and associated documentation files (the
152
+ "Software"), to deal in the Software without restriction, including
153
+ without limitation the rights to use, copy, modify, merge, publish,
154
+ distribute, sublicense, and/or sell copies of the Software, and to
155
+ permit persons to whom the Software is furnished to do so, subject to
156
+ the following conditions:
157
+
158
+ The above copyright notice and this permission notice shall be
159
+ included in all copies or substantial portions of the Software.
160
+
161
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
162
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
163
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
164
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
165
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
166
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
167
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
168
+ The MIT License
169
+
170
+ Copyright (c) 2008- Attractive Chaos <[email protected]>
171
+
172
+ Permission is hereby granted, free of charge, to any person obtaining
173
+ a copy of this software and associated documentation files (the
174
+ "Software"), to deal in the Software without restriction, including
175
+ without limitation the rights to use, copy, modify, merge, publish,
176
+ distribute, sublicense, and/or sell copies of the Software, and to
177
+ permit persons to whom the Software is furnished to do so, subject to
178
+ the following conditions:
179
+
180
+ The above copyright notice and this permission notice shall be
181
+ included in all copies or substantial portions of the Software.
182
+
183
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
184
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
185
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
186
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
187
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
188
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
189
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
190
+ SOFTWARE.musl as a whole is licensed under the following standard MIT license:
191
+
192
+ ----------------------------------------------------------------------
193
+ Copyright © 2005-2020 Rich Felker, et al.
194
+
195
+ Permission is hereby granted, free of charge, to any person obtaining
196
+ a copy of this software and associated documentation files (the
197
+ "Software"), to deal in the Software without restriction, including
198
+ without limitation the rights to use, copy, modify, merge, publish,
199
+ distribute, sublicense, and/or sell copies of the Software, and to
200
+ permit persons to whom the Software is furnished to do so, subject to
201
+ the following conditions:
202
+
203
+ The above copyright notice and this permission notice shall be
204
+ included in all copies or substantial portions of the Software.
205
+
206
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
207
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
208
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
209
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
210
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
211
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
212
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
213
+ ----------------------------------------------------------------------
214
+
215
+ Authors/contributors include:
216
+
217
+ A. Wilcox
218
+ Ada Worcester
219
+ Alex Dowad
220
+ Alex Suykov
221
+ Alexander Monakov
222
+ Andre McCurdy
223
+ Andrew Kelley
224
+ Anthony G. Basile
225
+ Aric Belsito
226
+ Arvid Picciani
227
+ Bartosz Brachaczek
228
+ Benjamin Peterson
229
+ Bobby Bingham
230
+ Boris Brezillon
231
+ Brent Cook
232
+ Chris Spiegel
233
+ Clément Vasseur
234
+ Daniel Micay
235
+ Daniel Sabogal
236
+ Daurnimator
237
+ David Carlier
238
+ David Edelsohn
239
+ Denys Vlasenko
240
+ Dmitry Ivanov
241
+ Dmitry V. Levin
242
+ Drew DeVault
243
+ Emil Renner Berthing
244
+ Fangrui Song
245
+ Felix Fietkau
246
+ Felix Janda
247
+ Gianluca Anzolin
248
+ Hauke Mehrtens
249
+ He X
250
+ Hiltjo Posthuma
251
+ Isaac Dunham
252
+ Jaydeep Patil
253
+ Jens Gustedt
254
+ Jeremy Huntwork
255
+ Jo-Philipp Wich
256
+ Joakim Sindholt
257
+ John Spencer
258
+ Julien Ramseier
259
+ Justin Cormack
260
+ Kaarle Ritvanen
261
+ Khem Raj
262
+ Kylie McClain
263
+ Leah Neukirchen
264
+ Luca Barbato
265
+ Luka Perkov
266
+ M Farkas-Dyck (Strake)
267
+ Mahesh Bodapati
268
+ Markus Wichmann
269
+ Masanori Ogino
270
+ Michael Clark
271
+ Michael Forney
272
+ Mikhail Kremnyov
273
+ Natanael Copa
274
+ Nicholas J. Kain
275
+ orc
276
+ Pascal Cuoq
277
+ Patrick Oppenlander
278
+ Petr Hosek
279
+ Petr Skocik
280
+ Pierre Carrier
281
+ Reini Urban
282
+ Rich Felker
283
+ Richard Pennington
284
+ Ryan Fairfax
285
+ Samuel Holland
286
+ Segev Finer
287
+ Shiz
288
+ sin
289
+ Solar Designer
290
+ Stefan Kristiansson
291
+ Stefan O'Rear
292
+ Szabolcs Nagy
293
+ Timo Teräs
294
+ Trutz Behn
295
+ Valentin Ochs
296
+ Will Dietz
297
+ William Haddon
298
+ William Pitcock
299
+
300
+ Portions of this software are derived from third-party works licensed
301
+ under terms compatible with the above MIT license:
302
+
303
+ The TRE regular expression implementation (src/regex/reg* and
304
+ src/regex/tre*) is Copyright © 2001-2008 Ville Laurikari and licensed
305
+ under a 2-clause BSD license (license text in the source files). The
306
+ included version has been heavily modified by Rich Felker in 2012, in
307
+ the interests of size, simplicity, and namespace cleanliness.
308
+
309
+ Much of the math library code (src/math/* and src/complex/*) is
310
+ Copyright © 1993,2004 Sun Microsystems or
311
+ Copyright © 2003-2011 David Schultz or
312
+ Copyright © 2003-2009 Steven G. Kargl or
313
+ Copyright © 2003-2009 Bruce D. Evans or
314
+ Copyright © 2008 Stephen L. Moshier or
315
+ Copyright © 2017-2018 Arm Limited
316
+ and labelled as such in comments in the individual source files. All
317
+ have been licensed under extremely permissive terms.
318
+
319
+ The ARM memcpy code (src/string/arm/memcpy.S) is Copyright © 2008
320
+ The Android Open Source Project and is licensed under a two-clause BSD
321
+ license. It was taken from Bionic libc, used on Android.
322
+
323
+ The AArch64 memcpy and memset code (src/string/aarch64/*) are
324
+ Copyright © 1999-2019, Arm Limited.
325
+
326
+ The implementation of DES for crypt (src/crypt/crypt_des.c) is
327
+ Copyright © 1994 David Burren. It is licensed under a BSD license.
328
+
329
+ The implementation of blowfish crypt (src/crypt/crypt_blowfish.c) was
330
+ originally written by Solar Designer and placed into the public
331
+ domain. The code also comes with a fallback permissive license for use
332
+ in jurisdictions that may not recognize the public domain.
333
+
334
+ The smoothsort implementation (src/stdlib/qsort.c) is Copyright © 2011
335
+ Valentin Ochs and is licensed under an MIT-style license.
336
+
337
+ The x86_64 port was written by Nicholas J. Kain and is licensed under
338
+ the standard MIT terms.
339
+
340
+ The mips and microblaze ports were originally written by Richard
341
+ Pennington for use in the ellcc project. The original code was adapted
342
+ by Rich Felker for build system and code conventions during upstream
343
+ integration. It is licensed under the standard MIT terms.
344
+
345
+ The mips64 port was contributed by Imagination Technologies and is
346
+ licensed under the standard MIT terms.
347
+
348
+ The powerpc port was also originally written by Richard Pennington,
349
+ and later supplemented and integrated by John Spencer. It is licensed
350
+ under the standard MIT terms.
351
+
352
+ All other files which have no copyright comments are original works
353
+ produced specifically for use as part of this library, written either
354
+ by Rich Felker, the main author of the library, or by one or more
355
+ contibutors listed above. Details on authorship of individual files
356
+ can be found in the git version control history of the project. The
357
+ omission of copyright and license comments in each file is in the
358
+ interest of source tree size.
359
+
360
+ In addition, permission is hereby granted for all public header files
361
+ (include/* and arch/*/bits/*) and crt files intended to be linked into
362
+ applications (crt/*, ldso/dlstart.c, and arch/*/crt_arch.h) to omit
363
+ the copyright notice and permission notice otherwise required by the
364
+ license, and to use these files without any requirement of
365
+ attribution. These files include substantial contributions from:
366
+
367
+ Bobby Bingham
368
+ John Spencer
369
+ Nicholas J. Kain
370
+ Rich Felker
371
+ Richard Pennington
372
+ Stefan Kristiansson
373
+ Szabolcs Nagy
374
+
375
+ all of whom have explicitly granted such permission.
376
+
377
+ This file previously contained text expressing a belief that most of
378
+ the files covered by the above exception were sufficiently trivial not
379
+ to be subject to copyright, resulting in confusion over whether it
380
+ negated the permissions granted in the license. In the spirit of
381
+ permissive licensing, and of not having licensing issues being an
382
+ obstacle to adoption, that text has been removed.Copyright (c) 2005-2023, NumPy Developers.
383
+ All rights reserved.
384
+
385
+ Redistribution and use in source and binary forms, with or without
386
+ modification, are permitted provided that the following conditions are
387
+ met:
388
+
389
+ * Redistributions of source code must retain the above copyright
390
+ notice, this list of conditions and the following disclaimer.
391
+
392
+ * Redistributions in binary form must reproduce the above
393
+ copyright notice, this list of conditions and the following
394
+ disclaimer in the documentation and/or other materials provided
395
+ with the distribution.
396
+
397
+ * Neither the name of the NumPy Developers nor the names of any
398
+ contributors may be used to endorse or promote products derived
399
+ from this software without specific prior written permission.
400
+
401
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
402
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
403
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
404
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
405
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
406
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
407
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
408
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
409
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
410
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
411
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
412
+ Apache License
413
+ Version 2.0, January 2004
414
+ http://www.apache.org/licenses/
415
+
416
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
417
+
418
+ 1. Definitions.
419
+
420
+ "License" shall mean the terms and conditions for use, reproduction,
421
+ and distribution as defined by Sections 1 through 9 of this document.
422
+
423
+ "Licensor" shall mean the copyright owner or entity authorized by
424
+ the copyright owner that is granting the License.
425
+
426
+ "Legal Entity" shall mean the union of the acting entity and all
427
+ other entities that control, are controlled by, or are under common
428
+ control with that entity. For the purposes of this definition,
429
+ "control" means (i) the power, direct or indirect, to cause the
430
+ direction or management of such entity, whether by contract or
431
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
432
+ outstanding shares, or (iii) beneficial ownership of such entity.
433
+
434
+ "You" (or "Your") shall mean an individual or Legal Entity
435
+ exercising permissions granted by this License.
436
+
437
+ "Source" form shall mean the preferred form for making modifications,
438
+ including but not limited to software source code, documentation
439
+ source, and configuration files.
440
+
441
+ "Object" form shall mean any form resulting from mechanical
442
+ transformation or translation of a Source form, including but
443
+ not limited to compiled object code, generated documentation,
444
+ and conversions to other media types.
445
+
446
+ "Work" shall mean the work of authorship, whether in Source or
447
+ Object form, made available under the License, as indicated by a
448
+ copyright notice that is included in or attached to the work
449
+ (an example is provided in the Appendix below).
450
+
451
+ "Derivative Works" shall mean any work, whether in Source or Object
452
+ form, that is based on (or derived from) the Work and for which the
453
+ editorial revisions, annotations, elaborations, or other modifications
454
+ represent, as a whole, an original work of authorship. For the purposes
455
+ of this License, Derivative Works shall not include works that remain
456
+ separable from, or merely link (or bind by name) to the interfaces of,
457
+ the Work and Derivative Works thereof.
458
+
459
+ "Contribution" shall mean any work of authorship, including
460
+ the original version of the Work and any modifications or additions
461
+ to that Work or Derivative Works thereof, that is intentionally
462
+ submitted to Licensor for inclusion in the Work by the copyright owner
463
+ or by an individual or Legal Entity authorized to submit on behalf of
464
+ the copyright owner. For the purposes of this definition, "submitted"
465
+ means any form of electronic, verbal, or written communication sent
466
+ to the Licensor or its representatives, including but not limited to
467
+ communication on electronic mailing lists, source code control systems,
468
+ and issue tracking systems that are managed by, or on behalf of, the
469
+ Licensor for the purpose of discussing and improving the Work, but
470
+ excluding communication that is conspicuously marked or otherwise
471
+ designated in writing by the copyright owner as "Not a Contribution."
472
+
473
+ "Contributor" shall mean Licensor and any individual or Legal Entity
474
+ on behalf of whom a Contribution has been received by Licensor and
475
+ subsequently incorporated within the Work.
476
+
477
+ 2. Grant of Copyright License. Subject to the terms and conditions of
478
+ this License, each Contributor hereby grants to You a perpetual,
479
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
480
+ copyright license to reproduce, prepare Derivative Works of,
481
+ publicly display, publicly perform, sublicense, and distribute the
482
+ Work and such Derivative Works in Source or Object form.
483
+
484
+ 3. Grant of Patent License. Subject to the terms and conditions of
485
+ this License, each Contributor hereby grants to You a perpetual,
486
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
487
+ (except as stated in this section) patent license to make, have made,
488
+ use, offer to sell, sell, import, and otherwise transfer the Work,
489
+ where such license applies only to those patent claims licensable
490
+ by such Contributor that are necessarily infringed by their
491
+ Contribution(s) alone or by combination of their Contribution(s)
492
+ with the Work to which such Contribution(s) was submitted. If You
493
+ institute patent litigation against any entity (including a
494
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
495
+ or a Contribution incorporated within the Work constitutes direct
496
+ or contributory patent infringement, then any patent licenses
497
+ granted to You under this License for that Work shall terminate
498
+ as of the date such litigation is filed.
499
+
500
+ 4. Redistribution. You may reproduce and distribute copies of the
501
+ Work or Derivative Works thereof in any medium, with or without
502
+ modifications, and in Source or Object form, provided that You
503
+ meet the following conditions:
504
+
505
+ (a) You must give any other recipients of the Work or
506
+ Derivative Works a copy of this License; and
507
+
508
+ (b) You must cause any modified files to carry prominent notices
509
+ stating that You changed the files; and
510
+
511
+ (c) You must retain, in the Source form of any Derivative Works
512
+ that You distribute, all copyright, patent, trademark, and
513
+ attribution notices from the Source form of the Work,
514
+ excluding those notices that do not pertain to any part of
515
+ the Derivative Works; and
516
+
517
+ (d) If the Work includes a "NOTICE" text file as part of its
518
+ distribution, then any Derivative Works that You distribute must
519
+ include a readable copy of the attribution notices contained
520
+ within such NOTICE file, excluding those notices that do not
521
+ pertain to any part of the Derivative Works, in at least one
522
+ of the following places: within a NOTICE text file distributed
523
+ as part of the Derivative Works; within the Source form or
524
+ documentation, if provided along with the Derivative Works; or,
525
+ within a display generated by the Derivative Works, if and
526
+ wherever such third-party notices normally appear. The contents
527
+ of the NOTICE file are for informational purposes only and
528
+ do not modify the License. You may add Your own attribution
529
+ notices within Derivative Works that You distribute, alongside
530
+ or as an addendum to the NOTICE text from the Work, provided
531
+ that such additional attribution notices cannot be construed
532
+ as modifying the License.
533
+
534
+ You may add Your own copyright statement to Your modifications and
535
+ may provide additional or different license terms and conditions
536
+ for use, reproduction, or distribution of Your modifications, or
537
+ for any such Derivative Works as a whole, provided Your use,
538
+ reproduction, and distribution of the Work otherwise complies with
539
+ the conditions stated in this License.
540
+
541
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
542
+ any Contribution intentionally submitted for inclusion in the Work
543
+ by You to the Licensor shall be under the terms and conditions of
544
+ this License, without any additional terms or conditions.
545
+ Notwithstanding the above, nothing herein shall supersede or modify
546
+ the terms of any separate license agreement you may have executed
547
+ with Licensor regarding such Contributions.
548
+
549
+ 6. Trademarks. This License does not grant permission to use the trade
550
+ names, trademarks, service marks, or product names of the Licensor,
551
+ except as required for reasonable and customary use in describing the
552
+ origin of the Work and reproducing the content of the NOTICE file.
553
+
554
+ 7. Disclaimer of Warranty. Unless required by applicable law or
555
+ agreed to in writing, Licensor provides the Work (and each
556
+ Contributor provides its Contributions) on an "AS IS" BASIS,
557
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
558
+ implied, including, without limitation, any warranties or conditions
559
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
560
+ PARTICULAR PURPOSE. You are solely responsible for determining the
561
+ appropriateness of using or redistributing the Work and assume any
562
+ risks associated with Your exercise of permissions under this License.
563
+
564
+ 8. Limitation of Liability. In no event and under no legal theory,
565
+ whether in tort (including negligence), contract, or otherwise,
566
+ unless required by applicable law (such as deliberate and grossly
567
+ negligent acts) or agreed to in writing, shall any Contributor be
568
+ liable to You for damages, including any direct, indirect, special,
569
+ incidental, or consequential damages of any character arising as a
570
+ result of this License or out of the use or inability to use the
571
+ Work (including but not limited to damages for loss of goodwill,
572
+ work stoppage, computer failure or malfunction, or any and all
573
+ other commercial damages or losses), even if such Contributor
574
+ has been advised of the possibility of such damages.
575
+
576
+ 9. Accepting Warranty or Additional Liability. While redistributing
577
+ the Work or Derivative Works thereof, You may choose to offer,
578
+ and charge a fee for, acceptance of support, warranty, indemnity,
579
+ or other liability obligations and/or rights consistent with this
580
+ License. However, in accepting such obligations, You may act only
581
+ on Your own behalf and on Your sole responsibility, not on behalf
582
+ of any other Contributor, and only if You agree to indemnify,
583
+ defend, and hold each Contributor harmless for any liability
584
+ incurred by, or claims asserted against, such Contributor by reason
585
+ of your accepting any such warranty or additional liability.
586
+
587
+ END OF TERMS AND CONDITIONS
588
+
589
+
590
+ Copyright (c) Donald Stufft and individual contributors.
591
+ All rights reserved.
592
+
593
+ Redistribution and use in source and binary forms, with or without
594
+ modification, are permitted provided that the following conditions are met:
595
+
596
+ 1. Redistributions of source code must retain the above copyright notice,
597
+ this list of conditions and the following disclaimer.
598
+
599
+ 2. Redistributions in binary form must reproduce the above copyright
600
+ notice, this list of conditions and the following disclaimer in the
601
+ documentation and/or other materials provided with the distribution.
602
+
603
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
604
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
605
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
606
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
607
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
608
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
609
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
610
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
611
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
612
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.A. HISTORY OF THE SOFTWARE
613
+ ==========================
614
+
615
+ Python was created in the early 1990s by Guido van Rossum at Stichting
616
+ Mathematisch Centrum (CWI, see https://www.cwi.nl) in the Netherlands
617
+ as a successor of a language called ABC. Guido remains Python's
618
+ principal author, although it includes many contributions from others.
619
+
620
+ In 1995, Guido continued his work on Python at the Corporation for
621
+ National Research Initiatives (CNRI, see https://www.cnri.reston.va.us)
622
+ in Reston, Virginia where he released several versions of the
623
+ software.
624
+
625
+ In May 2000, Guido and the Python core development team moved to
626
+ BeOpen.com to form the BeOpen PythonLabs team. In October of the same
627
+ year, the PythonLabs team moved to Digital Creations, which became
628
+ Zope Corporation. In 2001, the Python Software Foundation (PSF, see
629
+ https://www.python.org/psf/) was formed, a non-profit organization
630
+ created specifically to own Python-related Intellectual Property.
631
+ Zope Corporation was a sponsoring member of the PSF.
632
+
633
+ All Python releases are Open Source (see https://opensource.org for
634
+ the Open Source Definition). Historically, most, but not all, Python
635
+ releases have also been GPL-compatible; the table below summarizes
636
+ the various releases.
637
+
638
+ Release Derived Year Owner GPL-
639
+ from compatible? (1)
640
+
641
+ 0.9.0 thru 1.2 1991-1995 CWI yes
642
+ 1.3 thru 1.5.2 1.2 1995-1999 CNRI yes
643
+ 1.6 1.5.2 2000 CNRI no
644
+ 2.0 1.6 2000 BeOpen.com no
645
+ 1.6.1 1.6 2001 CNRI yes (2)
646
+ 2.1 2.0+1.6.1 2001 PSF no
647
+ 2.0.1 2.0+1.6.1 2001 PSF yes
648
+ 2.1.1 2.1+2.0.1 2001 PSF yes
649
+ 2.1.2 2.1.1 2002 PSF yes
650
+ 2.1.3 2.1.2 2002 PSF yes
651
+ 2.2 and above 2.1.1 2001-now PSF yes
652
+
653
+ Footnotes:
654
+
655
+ (1) GPL-compatible doesn't mean that we're distributing Python under
656
+ the GPL. All Python licenses, unlike the GPL, let you distribute
657
+ a modified version without making your changes open source. The
658
+ GPL-compatible licenses make it possible to combine Python with
659
+ other software that is released under the GPL; the others don't.
660
+
661
+ (2) According to Richard Stallman, 1.6.1 is not GPL-compatible,
662
+ because its license has a choice of law clause. According to
663
+ CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1
664
+ is "not incompatible" with the GPL.
665
+
666
+ Thanks to the many outside volunteers who have worked under Guido's
667
+ direction to make these releases possible.
668
+
669
+
670
+ B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON
671
+ ===============================================================
672
+
673
+ Python software and documentation are licensed under the
674
+ Python Software Foundation License Version 2.
675
+
676
+ Starting with Python 3.8.6, examples, recipes, and other code in
677
+ the documentation are dual licensed under the PSF License Version 2
678
+ and the Zero-Clause BSD license.
679
+
680
+ Some software incorporated into Python is under different licenses.
681
+ The licenses are listed with code falling under that license.
682
+
683
+
684
+ PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
685
+ --------------------------------------------
686
+
687
+ 1. This LICENSE AGREEMENT is between the Python Software Foundation
688
+ ("PSF"), and the Individual or Organization ("Licensee") accessing and
689
+ otherwise using this software ("Python") in source or binary form and
690
+ its associated documentation.
691
+
692
+ 2. Subject to the terms and conditions of this License Agreement, PSF hereby
693
+ grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
694
+ analyze, test, perform and/or display publicly, prepare derivative works,
695
+ distribute, and otherwise use Python alone or in any derivative version,
696
+ provided, however, that PSF's License Agreement and PSF's notice of copyright,
697
+ i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
698
+ 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Python Software Foundation;
699
+ All Rights Reserved" are retained in Python alone or in any derivative version
700
+ prepared by Licensee.
701
+
702
+ 3. In the event Licensee prepares a derivative work that is based on
703
+ or incorporates Python or any part thereof, and wants to make
704
+ the derivative work available to others as provided herein, then
705
+ Licensee hereby agrees to include in any such work a brief summary of
706
+ the changes made to Python.
707
+
708
+ 4. PSF is making Python available to Licensee on an "AS IS"
709
+ basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
710
+ IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
711
+ DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
712
+ FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
713
+ INFRINGE ANY THIRD PARTY RIGHTS.
714
+
715
+ 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
716
+ FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
717
+ A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
718
+ OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
719
+
720
+ 6. This License Agreement will automatically terminate upon a material
721
+ breach of its terms and conditions.
722
+
723
+ 7. Nothing in this License Agreement shall be deemed to create any
724
+ relationship of agency, partnership, or joint venture between PSF and
725
+ Licensee. This License Agreement does not grant permission to use PSF
726
+ trademarks or trade name in a trademark sense to endorse or promote
727
+ products or services of Licensee, or any third party.
728
+
729
+ 8. By copying, installing or otherwise using Python, Licensee
730
+ agrees to be bound by the terms and conditions of this License
731
+ Agreement.
732
+
733
+
734
+ BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0
735
+ -------------------------------------------
736
+
737
+ BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
738
+
739
+ 1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an
740
+ office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the
741
+ Individual or Organization ("Licensee") accessing and otherwise using
742
+ this software in source or binary form and its associated
743
+ documentation ("the Software").
744
+
745
+ 2. Subject to the terms and conditions of this BeOpen Python License
746
+ Agreement, BeOpen hereby grants Licensee a non-exclusive,
747
+ royalty-free, world-wide license to reproduce, analyze, test, perform
748
+ and/or display publicly, prepare derivative works, distribute, and
749
+ otherwise use the Software alone or in any derivative version,
750
+ provided, however, that the BeOpen Python License is retained in the
751
+ Software, alone or in any derivative version prepared by Licensee.
752
+
753
+ 3. BeOpen is making the Software available to Licensee on an "AS IS"
754
+ basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
755
+ IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND
756
+ DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
757
+ FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT
758
+ INFRINGE ANY THIRD PARTY RIGHTS.
759
+
760
+ 4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
761
+ SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
762
+ AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY
763
+ DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
764
+
765
+ 5. This License Agreement will automatically terminate upon a material
766
+ breach of its terms and conditions.
767
+
768
+ 6. This License Agreement shall be governed by and interpreted in all
769
+ respects by the law of the State of California, excluding conflict of
770
+ law provisions. Nothing in this License Agreement shall be deemed to
771
+ create any relationship of agency, partnership, or joint venture
772
+ between BeOpen and Licensee. This License Agreement does not grant
773
+ permission to use BeOpen trademarks or trade names in a trademark
774
+ sense to endorse or promote products or services of Licensee, or any
775
+ third party. As an exception, the "BeOpen Python" logos available at
776
+ http://www.pythonlabs.com/logos.html may be used according to the
777
+ permissions granted on that web page.
778
+
779
+ 7. By copying, installing or otherwise using the software, Licensee
780
+ agrees to be bound by the terms and conditions of this License
781
+ Agreement.
782
+
783
+
784
+ CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1
785
+ ---------------------------------------
786
+
787
+ 1. This LICENSE AGREEMENT is between the Corporation for National
788
+ Research Initiatives, having an office at 1895 Preston White Drive,
789
+ Reston, VA 20191 ("CNRI"), and the Individual or Organization
790
+ ("Licensee") accessing and otherwise using Python 1.6.1 software in
791
+ source or binary form and its associated documentation.
792
+
793
+ 2. Subject to the terms and conditions of this License Agreement, CNRI
794
+ hereby grants Licensee a nonexclusive, royalty-free, world-wide
795
+ license to reproduce, analyze, test, perform and/or display publicly,
796
+ prepare derivative works, distribute, and otherwise use Python 1.6.1
797
+ alone or in any derivative version, provided, however, that CNRI's
798
+ License Agreement and CNRI's notice of copyright, i.e., "Copyright (c)
799
+ 1995-2001 Corporation for National Research Initiatives; All Rights
800
+ Reserved" are retained in Python 1.6.1 alone or in any derivative
801
+ version prepared by Licensee. Alternately, in lieu of CNRI's License
802
+ Agreement, Licensee may substitute the following text (omitting the
803
+ quotes): "Python 1.6.1 is made available subject to the terms and
804
+ conditions in CNRI's License Agreement. This Agreement together with
805
+ Python 1.6.1 may be located on the internet using the following
806
+ unique, persistent identifier (known as a handle): 1895.22/1013. This
807
+ Agreement may also be obtained from a proxy server on the internet
808
+ using the following URL: http://hdl.handle.net/1895.22/1013".
809
+
810
+ 3. In the event Licensee prepares a derivative work that is based on
811
+ or incorporates Python 1.6.1 or any part thereof, and wants to make
812
+ the derivative work available to others as provided herein, then
813
+ Licensee hereby agrees to include in any such work a brief summary of
814
+ the changes made to Python 1.6.1.
815
+
816
+ 4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS"
817
+ basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
818
+ IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND
819
+ DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
820
+ FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT
821
+ INFRINGE ANY THIRD PARTY RIGHTS.
822
+
823
+ 5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
824
+ 1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
825
+ A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1,
826
+ OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
827
+
828
+ 6. This License Agreement will automatically terminate upon a material
829
+ breach of its terms and conditions.
830
+
831
+ 7. This License Agreement shall be governed by the federal
832
+ intellectual property law of the United States, including without
833
+ limitation the federal copyright law, and, to the extent such
834
+ U.S. federal law does not apply, by the law of the Commonwealth of
835
+ Virginia, excluding Virginia's conflict of law provisions.
836
+ Notwithstanding the foregoing, with regard to derivative works based
837
+ on Python 1.6.1 that incorporate non-separable material that was
838
+ previously distributed under the GNU General Public License (GPL), the
839
+ law of the Commonwealth of Virginia shall govern this License
840
+ Agreement only as to issues arising under or with respect to
841
+ Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this
842
+ License Agreement shall be deemed to create any relationship of
843
+ agency, partnership, or joint venture between CNRI and Licensee. This
844
+ License Agreement does not grant permission to use CNRI trademarks or
845
+ trade name in a trademark sense to endorse or promote products or
846
+ services of Licensee, or any third party.
847
+
848
+ 8. By clicking on the "ACCEPT" button where indicated, or by copying,
849
+ installing or otherwise using Python 1.6.1, Licensee agrees to be
850
+ bound by the terms and conditions of this License Agreement.
851
+
852
+ ACCEPT
853
+
854
+
855
+ CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
856
+ --------------------------------------------------
857
+
858
+ Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam,
859
+ The Netherlands. All rights reserved.
860
+
861
+ Permission to use, copy, modify, and distribute this software and its
862
+ documentation for any purpose and without fee is hereby granted,
863
+ provided that the above copyright notice appear in all copies and that
864
+ both that copyright notice and this permission notice appear in
865
+ supporting documentation, and that the name of Stichting Mathematisch
866
+ Centrum or CWI not be used in advertising or publicity pertaining to
867
+ distribution of the software without specific, written prior
868
+ permission.
869
+
870
+ STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
871
+ THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
872
+ FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
873
+ FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
874
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
875
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
876
+ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
877
+
878
+ ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON DOCUMENTATION
879
+ ----------------------------------------------------------------------
880
+
881
+ Permission to use, copy, modify, and/or distribute this software for any
882
+ purpose with or without fee is hereby granted.
883
+
884
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
885
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
886
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
887
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
888
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
889
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
890
+ PERFORMANCE OF THIS SOFTWARE.
891
+ Copyright (c) 2014, Al Sweigart
892
+ All rights reserved.
893
+
894
+ Redistribution and use in source and binary forms, with or without
895
+ modification, are permitted provided that the following conditions are met:
896
+
897
+ * Redistributions of source code must retain the above copyright notice, this
898
+ list of conditions and the following disclaimer.
899
+
900
+ * Redistributions in binary form must reproduce the above copyright notice,
901
+ this list of conditions and the following disclaimer in the documentation
902
+ and/or other materials provided with the distribution.
903
+
904
+ * Neither the name of the {organization} nor the names of its
905
+ contributors may be used to endorse or promote products derived from
906
+ this software without specific prior written permission.
907
+
908
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
909
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
910
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
911
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
912
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
913
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
914
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
915
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
916
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
917
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.Copyright (c) 2017 Anthony Sottile
918
+
919
+ Permission is hereby granted, free of charge, to any person obtaining a copy
920
+ of this software and associated documentation files (the "Software"), to deal
921
+ in the Software without restriction, including without limitation the rights
922
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
923
+ copies of the Software, and to permit persons to whom the Software is
924
+ furnished to do so, subject to the following conditions:
925
+
926
+ The above copyright notice and this permission notice shall be included in
927
+ all copies or substantial portions of the Software.
928
+
929
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
930
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
931
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
932
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
933
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
934
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
935
+ THE SOFTWARE.Copyright (c) 2015-2019 Jared Hobbs
936
+
937
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
938
+ this software and associated documentation files (the "Software"), to deal in
939
+ the Software without restriction, including without limitation the rights to
940
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
941
+ of the Software, and to permit persons to whom the Software is furnished to do
942
+ so, subject to the following conditions:
943
+
944
+ The above copyright notice and this permission notice shall be included in all
945
+ copies or substantial portions of the Software.
946
+
947
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
948
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
949
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
950
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
951
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
952
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
953
+ SOFTWARE.Developed by ESN, an Electronic Arts Inc. studio.
954
+ Copyright (c) 2014, Electronic Arts Inc.
955
+ All rights reserved.
956
+
957
+ Redistribution and use in source and binary forms, with or without
958
+ modification, are permitted provided that the following conditions are met:
959
+ * Redistributions of source code must retain the above copyright
960
+ notice, this list of conditions and the following disclaimer.
961
+ * Redistributions in binary form must reproduce the above copyright
962
+ notice, this list of conditions and the following disclaimer in the
963
+ documentation and/or other materials provided with the distribution.
964
+ * Neither the name of ESN, Electronic Arts Inc. nor the
965
+ names of its contributors may be used to endorse or promote products
966
+ derived from this software without specific prior written permission.
967
+
968
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
969
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
970
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
971
+ DISCLAIMED. IN NO EVENT SHALL ELECTRONIC ARTS INC. BE LIABLE
972
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
973
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
974
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
975
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
976
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
977
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
978
+
979
+ ----
980
+
981
+ Portions of code from MODP_ASCII - Ascii transformations (upper/lower, etc)
982
+ https://github.com/client9/stringencoders
983
+
984
+ Copyright 2005, 2006, 2007
985
+ Nick Galbreath -- nickg [at] modp [dot] com
986
+ All rights reserved.
987
+
988
+ Redistribution and use in source and binary forms, with or without
989
+ modification, are permitted provided that the following conditions are
990
+ met:
991
+
992
+ Redistributions of source code must retain the above copyright
993
+ notice, this list of conditions and the following disclaimer.
994
+
995
+ Redistributions in binary form must reproduce the above copyright
996
+ notice, this list of conditions and the following disclaimer in the
997
+ documentation and/or other materials provided with the distribution.
998
+
999
+ Neither the name of the modp.com nor the names of its
1000
+ contributors may be used to endorse or promote products derived from
1001
+ this software without specific prior written permission.
1002
+
1003
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1004
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1005
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1006
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1007
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
1008
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
1009
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1010
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1011
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1012
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1013
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1014
+
1015
+ This is the standard "new" BSD license:
1016
+ http://www.opensource.org/licenses/bsd-license.php
1017
+
1018
+ https://github.com/client9/stringencoders/blob/cfd5c1507325ae497ea9bacdacba12c0ffd79d30/COPYING
1019
+
1020
+ ----
1021
+
1022
+ Numeric decoder derived from from TCL library
1023
+ https://opensource.apple.com/source/tcl/tcl-14/tcl/license.terms
1024
+ * Copyright (c) 1988-1993 The Regents of the University of California.
1025
+ * Copyright (c) 1994 Sun Microsystems, Inc.
1026
+
1027
+ This software is copyrighted by the Regents of the University of
1028
+ California, Sun Microsystems, Inc., Scriptics Corporation, ActiveState
1029
+ Corporation and other parties. The following terms apply to all files
1030
+ associated with the software unless explicitly disclaimed in
1031
+ individual files.
1032
+
1033
+ The authors hereby grant permission to use, copy, modify, distribute,
1034
+ and license this software and its documentation for any purpose, provided
1035
+ that existing copyright notices are retained in all copies and that this
1036
+ notice is included verbatim in any distributions. No written agreement,
1037
+ license, or royalty fee is required for any of the authorized uses.
1038
+ Modifications to this software may be copyrighted by their authors
1039
+ and need not follow the licensing terms described here, provided that
1040
+ the new terms are clearly indicated on the first page of each file where
1041
+ they apply.
1042
+
1043
+ IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
1044
+ FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
1045
+ ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
1046
+ DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
1047
+ POSSIBILITY OF SUCH DAMAGE.
1048
+
1049
+ THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
1050
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
1051
+ FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
1052
+ IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
1053
+ NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
1054
+ MODIFICATIONS.
1055
+
1056
+ GOVERNMENT USE: If you are acquiring this software on behalf of the
1057
+ U.S. government, the Government shall have only "Restricted Rights"
1058
+ in the software and related documentation as defined in the Federal
1059
+ Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
1060
+ are acquiring the software on behalf of the Department of Defense, the
1061
+ software shall be classified as "Commercial Computer Software" and the
1062
+ Government shall have only "Restricted Rights" as defined in Clause
1063
+ 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the
1064
+ authors grant the U.S. Government and others acting in its behalf
1065
+ permission to use and distribute the software in accordance with the
1066
+ terms specified in this license.Apache License
1067
+ Version 2.0, January 2004
1068
+ http://www.apache.org/licenses/
1069
+
1070
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1071
+
1072
+ 1. Definitions.
1073
+
1074
+ "License" shall mean the terms and conditions for use, reproduction, and
1075
+ distribution as defined by Sections 1 through 9 of this document.
1076
+
1077
+ "Licensor" shall mean the copyright owner or entity authorized by the copyright
1078
+ owner that is granting the License.
1079
+
1080
+ "Legal Entity" shall mean the union of the acting entity and all other entities
1081
+ that control, are controlled by, or are under common control with that entity.
1082
+ For the purposes of this definition, "control" means (i) the power, direct or
1083
+ indirect, to cause the direction or management of such entity, whether by
1084
+ contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
1085
+ outstanding shares, or (iii) beneficial ownership of such entity.
1086
+
1087
+ "You" (or "Your") shall mean an individual or Legal Entity exercising
1088
+ permissions granted by this License.
1089
+
1090
+ "Source" form shall mean the preferred form for making modifications, including
1091
+ but not limited to software source code, documentation source, and configuration
1092
+ files.
1093
+
1094
+ "Object" form shall mean any form resulting from mechanical transformation or
1095
+ translation of a Source form, including but not limited to compiled object code,
1096
+ generated documentation, and conversions to other media types.
1097
+
1098
+ "Work" shall mean the work of authorship, whether in Source or Object form, made
1099
+ available under the License, as indicated by a copyright notice that is included
1100
+ in or attached to the work (an example is provided in the Appendix below).
1101
+
1102
+ "Derivative Works" shall mean any work, whether in Source or Object form, that
1103
+ is based on (or derived from) the Work and for which the editorial revisions,
1104
+ annotations, elaborations, or other modifications represent, as a whole, an
1105
+ original work of authorship. For the purposes of this License, Derivative Works
1106
+ shall not include works that remain separable from, or merely link (or bind by
1107
+ name) to the interfaces of, the Work and Derivative Works thereof.
1108
+
1109
+ "Contribution" shall mean any work of authorship, including the original version
1110
+ of the Work and any modifications or additions to that Work or Derivative Works
1111
+ thereof, that is intentionally submitted to Licensor for inclusion in the Work
1112
+ by the copyright owner or by an individual or Legal Entity authorized to submit
1113
+ on behalf of the copyright owner. For the purposes of this definition,
1114
+ "submitted" means any form of electronic, verbal, or written communication sent
1115
+ to the Licensor or its representatives, including but not limited to
1116
+ communication on electronic mailing lists, source code control systems, and
1117
+ issue tracking systems that are managed by, or on behalf of, the Licensor for
1118
+ the purpose of discussing and improving the Work, but excluding communication
1119
+ that is conspicuously marked or otherwise designated in writing by the copyright
1120
+ owner as "Not a Contribution."
1121
+
1122
+ "Contributor" shall mean Licensor and any individual or Legal Entity on behalf
1123
+ of whom a Contribution has been received by Licensor and subsequently
1124
+ incorporated within the Work.
1125
+
1126
+ 2. Grant of Copyright License.
1127
+
1128
+ Subject to the terms and conditions of this License, each Contributor hereby
1129
+ grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
1130
+ irrevocable copyright license to reproduce, prepare Derivative Works of,
1131
+ publicly display, publicly perform, sublicense, and distribute the Work and such
1132
+ Derivative Works in Source or Object form.
1133
+
1134
+ 3. Grant of Patent License.
1135
+
1136
+ Subject to the terms and conditions of this License, each Contributor hereby
1137
+ grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
1138
+ irrevocable (except as stated in this section) patent license to make, have
1139
+ made, use, offer to sell, sell, import, and otherwise transfer the Work, where
1140
+ such license applies only to those patent claims licensable by such Contributor
1141
+ that are necessarily infringed by their Contribution(s) alone or by combination
1142
+ of their Contribution(s) with the Work to which such Contribution(s) was
1143
+ submitted. If You institute patent litigation against any entity (including a
1144
+ cross-claim or counterclaim in a lawsuit) alleging that the Work or a
1145
+ Contribution incorporated within the Work constitutes direct or contributory
1146
+ patent infringement, then any patent licenses granted to You under this License
1147
+ for that Work shall terminate as of the date such litigation is filed.
1148
+
1149
+ 4. Redistribution.
1150
+
1151
+ You may reproduce and distribute copies of the Work or Derivative Works thereof
1152
+ in any medium, with or without modifications, and in Source or Object form,
1153
+ provided that You meet the following conditions:
1154
+
1155
+ You must give any other recipients of the Work or Derivative Works a copy of
1156
+ this License; and
1157
+ You must cause any modified files to carry prominent notices stating that You
1158
+ changed the files; and
1159
+ You must retain, in the Source form of any Derivative Works that You distribute,
1160
+ all copyright, patent, trademark, and attribution notices from the Source form
1161
+ of the Work, excluding those notices that do not pertain to any part of the
1162
+ Derivative Works; and
1163
+ If the Work includes a "NOTICE" text file as part of its distribution, then any
1164
+ Derivative Works that You distribute must include a readable copy of the
1165
+ attribution notices contained within such NOTICE file, excluding those notices
1166
+ that do not pertain to any part of the Derivative Works, in at least one of the
1167
+ following places: within a NOTICE text file distributed as part of the
1168
+ Derivative Works; within the Source form or documentation, if provided along
1169
+ with the Derivative Works; or, within a display generated by the Derivative
1170
+ Works, if and wherever such third-party notices normally appear. The contents of
1171
+ the NOTICE file are for informational purposes only and do not modify the
1172
+ License. You may add Your own attribution notices within Derivative Works that
1173
+ You distribute, alongside or as an addendum to the NOTICE text from the Work,
1174
+ provided that such additional attribution notices cannot be construed as
1175
+ modifying the License.
1176
+ You may add Your own copyright statement to Your modifications and may provide
1177
+ additional or different license terms and conditions for use, reproduction, or
1178
+ distribution of Your modifications, or for any such Derivative Works as a whole,
1179
+ provided Your use, reproduction, and distribution of the Work otherwise complies
1180
+ with the conditions stated in this License.
1181
+
1182
+ 5. Submission of Contributions.
1183
+
1184
+ Unless You explicitly state otherwise, any Contribution intentionally submitted
1185
+ for inclusion in the Work by You to the Licensor shall be under the terms and
1186
+ conditions of this License, without any additional terms or conditions.
1187
+ Notwithstanding the above, nothing herein shall supersede or modify the terms of
1188
+ any separate license agreement you may have executed with Licensor regarding
1189
+ such Contributions.
1190
+
1191
+ 6. Trademarks.
1192
+
1193
+ This License does not grant permission to use the trade names, trademarks,
1194
+ service marks, or product names of the Licensor, except as required for
1195
+ reasonable and customary use in describing the origin of the Work and
1196
+ reproducing the content of the NOTICE file.
1197
+
1198
+ 7. Disclaimer of Warranty.
1199
+
1200
+ Unless required by applicable law or agreed to in writing, Licensor provides the
1201
+ Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
1202
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
1203
+ including, without limitation, any warranties or conditions of TITLE,
1204
+ NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
1205
+ solely responsible for determining the appropriateness of using or
1206
+ redistributing the Work and assume any risks associated with Your exercise of
1207
+ permissions under this License.
1208
+
1209
+ 8. Limitation of Liability.
1210
+
1211
+ In no event and under no legal theory, whether in tort (including negligence),
1212
+ contract, or otherwise, unless required by applicable law (such as deliberate
1213
+ and grossly negligent acts) or agreed to in writing, shall any Contributor be
1214
+ liable to You for damages, including any direct, indirect, special, incidental,
1215
+ or consequential damages of any character arising as a result of this License or
1216
+ out of the use or inability to use the Work (including but not limited to
1217
+ damages for loss of goodwill, work stoppage, computer failure or malfunction, or
1218
+ any and all other commercial damages or losses), even if such Contributor has
1219
+ been advised of the possibility of such damages.
1220
+
1221
+ 9. Accepting Warranty or Additional Liability.
1222
+
1223
+ While redistributing the Work or Derivative Works thereof, You may choose to
1224
+ offer, and charge a fee for, acceptance of support, warranty, indemnity, or
1225
+ other liability obligations and/or rights consistent with this License. However,
1226
+ in accepting such obligations, You may act only on Your own behalf and on Your
1227
+ sole responsibility, not on behalf of any other Contributor, and only if You
1228
+ agree to indemnify, defend, and hold each Contributor harmless for any liability
1229
+ incurred by, or claims asserted against, such Contributor by reason of your
1230
+ accepting any such warranty or additional liability.
1231
+
1232
+ END OF TERMS AND CONDITIONS
1233
+
1234
+ APPENDIX: How to apply the Apache License to your work
1235
+
1236
+ To apply the Apache License to your work, attach the following boilerplate
1237
+ notice, with the fields enclosed by brackets "[]" replaced with your own
1238
+ identifying information. (Don't include the brackets!) The text should be
1239
+ enclosed in the appropriate comment syntax for the file format. We also
1240
+ recommend that a file or class name and description of purpose be included on
1241
+ the same "printed page" as the copyright notice for easier identification within
1242
+ third-party archives.
1243
+
1244
+ Copyright [yyyy] [name of copyright owner]
1245
+
1246
+ Licensed under the Apache License, Version 2.0 (the "License");
1247
+ you may not use this file except in compliance with the License.
1248
+ You may obtain a copy of the License at
1249
+
1250
+ http://www.apache.org/licenses/LICENSE-2.0
1251
+
1252
+ Unless required by applicable law or agreed to in writing, software
1253
+ distributed under the License is distributed on an "AS IS" BASIS,
1254
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1255
+ See the License for the specific language governing permissions and
1256
+ limitations under the License.
1257
+ Classifier: Development Status :: 5 - Production/Stable
1258
+ Classifier: Environment :: Console
1259
+ Classifier: Intended Audience :: Science/Research
1260
+ Classifier: License :: OSI Approved :: BSD License
1261
+ Classifier: Operating System :: OS Independent
1262
+ Classifier: Programming Language :: Cython
1263
+ Classifier: Programming Language :: Python
1264
+ Classifier: Programming Language :: Python :: 3
1265
+ Classifier: Programming Language :: Python :: 3 :: Only
1266
+ Classifier: Programming Language :: Python :: 3.9
1267
+ Classifier: Programming Language :: Python :: 3.10
1268
+ Classifier: Programming Language :: Python :: 3.11
1269
+ Classifier: Programming Language :: Python :: 3.12
1270
+ Classifier: Topic :: Scientific/Engineering
1271
+ Project-URL: Homepage, https://pandas.pydata.org
1272
+ Project-URL: Documentation, https://pandas.pydata.org/docs/
1273
+ Project-URL: Repository, https://github.com/pandas-dev/pandas
1274
+ Requires-Python: >=3.9
1275
+ Requires-Dist: numpy>=1.22.4; python_version < "3.11"
1276
+ Requires-Dist: numpy>=1.23.2; python_version == "3.11"
1277
+ Requires-Dist: numpy>=1.26.0; python_version >= "3.12"
1278
+ Requires-Dist: python-dateutil>=2.8.2
1279
+ Requires-Dist: pytz>=2020.1
1280
+ Requires-Dist: tzdata>=2022.7
1281
+ Requires-Dist: hypothesis>=6.46.1; extra == "test"
1282
+ Requires-Dist: pytest>=7.3.2; extra == "test"
1283
+ Requires-Dist: pytest-xdist>=2.2.0; extra == "test"
1284
+ Requires-Dist: pyarrow>=10.0.1; extra == "pyarrow"
1285
+ Requires-Dist: bottleneck>=1.3.6; extra == "performance"
1286
+ Requires-Dist: numba>=0.56.4; extra == "performance"
1287
+ Requires-Dist: numexpr>=2.8.4; extra == "performance"
1288
+ Requires-Dist: scipy>=1.10.0; extra == "computation"
1289
+ Requires-Dist: xarray>=2022.12.0; extra == "computation"
1290
+ Requires-Dist: fsspec>=2022.11.0; extra == "fss"
1291
+ Requires-Dist: s3fs>=2022.11.0; extra == "aws"
1292
+ Requires-Dist: gcsfs>=2022.11.0; extra == "gcp"
1293
+ Requires-Dist: pandas-gbq>=0.19.0; extra == "gcp"
1294
+ Requires-Dist: odfpy>=1.4.1; extra == "excel"
1295
+ Requires-Dist: openpyxl>=3.1.0; extra == "excel"
1296
+ Requires-Dist: python-calamine>=0.1.7; extra == "excel"
1297
+ Requires-Dist: pyxlsb>=1.0.10; extra == "excel"
1298
+ Requires-Dist: xlrd>=2.0.1; extra == "excel"
1299
+ Requires-Dist: xlsxwriter>=3.0.5; extra == "excel"
1300
+ Requires-Dist: pyarrow>=10.0.1; extra == "parquet"
1301
+ Requires-Dist: pyarrow>=10.0.1; extra == "feather"
1302
+ Requires-Dist: tables>=3.8.0; extra == "hdf5"
1303
+ Requires-Dist: pyreadstat>=1.2.0; extra == "spss"
1304
+ Requires-Dist: SQLAlchemy>=2.0.0; extra == "postgresql"
1305
+ Requires-Dist: psycopg2>=2.9.6; extra == "postgresql"
1306
+ Requires-Dist: adbc-driver-postgresql>=0.8.0; extra == "postgresql"
1307
+ Requires-Dist: SQLAlchemy>=2.0.0; extra == "mysql"
1308
+ Requires-Dist: pymysql>=1.0.2; extra == "mysql"
1309
+ Requires-Dist: SQLAlchemy>=2.0.0; extra == "sql-other"
1310
+ Requires-Dist: adbc-driver-postgresql>=0.8.0; extra == "sql-other"
1311
+ Requires-Dist: adbc-driver-sqlite>=0.8.0; extra == "sql-other"
1312
+ Requires-Dist: beautifulsoup4>=4.11.2; extra == "html"
1313
+ Requires-Dist: html5lib>=1.1; extra == "html"
1314
+ Requires-Dist: lxml>=4.9.2; extra == "html"
1315
+ Requires-Dist: lxml>=4.9.2; extra == "xml"
1316
+ Requires-Dist: matplotlib>=3.6.3; extra == "plot"
1317
+ Requires-Dist: jinja2>=3.1.2; extra == "output-formatting"
1318
+ Requires-Dist: tabulate>=0.9.0; extra == "output-formatting"
1319
+ Requires-Dist: PyQt5>=5.15.9; extra == "clipboard"
1320
+ Requires-Dist: qtpy>=2.3.0; extra == "clipboard"
1321
+ Requires-Dist: zstandard>=0.19.0; extra == "compression"
1322
+ Requires-Dist: dataframe-api-compat>=0.1.7; extra == "consortium-standard"
1323
+ Requires-Dist: adbc-driver-postgresql>=0.8.0; extra == "all"
1324
+ Requires-Dist: adbc-driver-sqlite>=0.8.0; extra == "all"
1325
+ Requires-Dist: beautifulsoup4>=4.11.2; extra == "all"
1326
+ Requires-Dist: bottleneck>=1.3.6; extra == "all"
1327
+ Requires-Dist: dataframe-api-compat>=0.1.7; extra == "all"
1328
+ Requires-Dist: fastparquet>=2022.12.0; extra == "all"
1329
+ Requires-Dist: fsspec>=2022.11.0; extra == "all"
1330
+ Requires-Dist: gcsfs>=2022.11.0; extra == "all"
1331
+ Requires-Dist: html5lib>=1.1; extra == "all"
1332
+ Requires-Dist: hypothesis>=6.46.1; extra == "all"
1333
+ Requires-Dist: jinja2>=3.1.2; extra == "all"
1334
+ Requires-Dist: lxml>=4.9.2; extra == "all"
1335
+ Requires-Dist: matplotlib>=3.6.3; extra == "all"
1336
+ Requires-Dist: numba>=0.56.4; extra == "all"
1337
+ Requires-Dist: numexpr>=2.8.4; extra == "all"
1338
+ Requires-Dist: odfpy>=1.4.1; extra == "all"
1339
+ Requires-Dist: openpyxl>=3.1.0; extra == "all"
1340
+ Requires-Dist: pandas-gbq>=0.19.0; extra == "all"
1341
+ Requires-Dist: psycopg2>=2.9.6; extra == "all"
1342
+ Requires-Dist: pyarrow>=10.0.1; extra == "all"
1343
+ Requires-Dist: pymysql>=1.0.2; extra == "all"
1344
+ Requires-Dist: PyQt5>=5.15.9; extra == "all"
1345
+ Requires-Dist: pyreadstat>=1.2.0; extra == "all"
1346
+ Requires-Dist: pytest>=7.3.2; extra == "all"
1347
+ Requires-Dist: pytest-xdist>=2.2.0; extra == "all"
1348
+ Requires-Dist: python-calamine>=0.1.7; extra == "all"
1349
+ Requires-Dist: pyxlsb>=1.0.10; extra == "all"
1350
+ Requires-Dist: qtpy>=2.3.0; extra == "all"
1351
+ Requires-Dist: scipy>=1.10.0; extra == "all"
1352
+ Requires-Dist: s3fs>=2022.11.0; extra == "all"
1353
+ Requires-Dist: SQLAlchemy>=2.0.0; extra == "all"
1354
+ Requires-Dist: tables>=3.8.0; extra == "all"
1355
+ Requires-Dist: tabulate>=0.9.0; extra == "all"
1356
+ Requires-Dist: xarray>=2022.12.0; extra == "all"
1357
+ Requires-Dist: xlrd>=2.0.1; extra == "all"
1358
+ Requires-Dist: xlsxwriter>=3.0.5; extra == "all"
1359
+ Requires-Dist: zstandard>=0.19.0; extra == "all"
1360
+ Provides-Extra: test
1361
+ Provides-Extra: pyarrow
1362
+ Provides-Extra: performance
1363
+ Provides-Extra: computation
1364
+ Provides-Extra: fss
1365
+ Provides-Extra: aws
1366
+ Provides-Extra: gcp
1367
+ Provides-Extra: excel
1368
+ Provides-Extra: parquet
1369
+ Provides-Extra: feather
1370
+ Provides-Extra: hdf5
1371
+ Provides-Extra: spss
1372
+ Provides-Extra: postgresql
1373
+ Provides-Extra: mysql
1374
+ Provides-Extra: sql-other
1375
+ Provides-Extra: html
1376
+ Provides-Extra: xml
1377
+ Provides-Extra: plot
1378
+ Provides-Extra: output-formatting
1379
+ Provides-Extra: clipboard
1380
+ Provides-Extra: compression
1381
+ Provides-Extra: consortium-standard
1382
+ Provides-Extra: all
1383
+ Description-Content-Type: text/markdown
1384
+
1385
+ <div align="center">
1386
+ <img src="https://pandas.pydata.org/static/img/pandas.svg"><br>
1387
+ </div>
1388
+
1389
+ -----------------
1390
+
1391
+ # pandas: powerful Python data analysis toolkit
1392
+
1393
+ | | |
1394
+ | --- | --- |
1395
+ | Testing | [![CI - Test](https://github.com/pandas-dev/pandas/actions/workflows/unit-tests.yml/badge.svg)](https://github.com/pandas-dev/pandas/actions/workflows/unit-tests.yml) [![Coverage](https://codecov.io/github/pandas-dev/pandas/coverage.svg?branch=main)](https://codecov.io/gh/pandas-dev/pandas) |
1396
+ | Package | [![PyPI Latest Release](https://img.shields.io/pypi/v/pandas.svg)](https://pypi.org/project/pandas/) [![PyPI Downloads](https://img.shields.io/pypi/dm/pandas.svg?label=PyPI%20downloads)](https://pypi.org/project/pandas/) [![Conda Latest Release](https://anaconda.org/conda-forge/pandas/badges/version.svg)](https://anaconda.org/conda-forge/pandas) [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/pandas.svg?label=Conda%20downloads)](https://anaconda.org/conda-forge/pandas) |
1397
+ | Meta | [![Powered by NumFOCUS](https://img.shields.io/badge/powered%20by-NumFOCUS-orange.svg?style=flat&colorA=E1523D&colorB=007D8A)](https://numfocus.org) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3509134.svg)](https://doi.org/10.5281/zenodo.3509134) [![License - BSD 3-Clause](https://img.shields.io/pypi/l/pandas.svg)](https://github.com/pandas-dev/pandas/blob/main/LICENSE) [![Slack](https://img.shields.io/badge/join_Slack-information-brightgreen.svg?logo=slack)](https://pandas.pydata.org/docs/dev/development/community.html?highlight=slack#community-slack) |
1398
+
1399
+
1400
+ ## What is it?
1401
+
1402
+ **pandas** is a Python package that provides fast, flexible, and expressive data
1403
+ structures designed to make working with "relational" or "labeled" data both
1404
+ easy and intuitive. It aims to be the fundamental high-level building block for
1405
+ doing practical, **real world** data analysis in Python. Additionally, it has
1406
+ the broader goal of becoming **the most powerful and flexible open source data
1407
+ analysis / manipulation tool available in any language**. It is already well on
1408
+ its way towards this goal.
1409
+
1410
+ ## Table of Contents
1411
+
1412
+ - [Main Features](#main-features)
1413
+ - [Where to get it](#where-to-get-it)
1414
+ - [Dependencies](#dependencies)
1415
+ - [Installation from sources](#installation-from-sources)
1416
+ - [License](#license)
1417
+ - [Documentation](#documentation)
1418
+ - [Background](#background)
1419
+ - [Getting Help](#getting-help)
1420
+ - [Discussion and Development](#discussion-and-development)
1421
+ - [Contributing to pandas](#contributing-to-pandas)
1422
+
1423
+ ## Main Features
1424
+ Here are just a few of the things that pandas does well:
1425
+
1426
+ - Easy handling of [**missing data**][missing-data] (represented as
1427
+ `NaN`, `NA`, or `NaT`) in floating point as well as non-floating point data
1428
+ - Size mutability: columns can be [**inserted and
1429
+ deleted**][insertion-deletion] from DataFrame and higher dimensional
1430
+ objects
1431
+ - Automatic and explicit [**data alignment**][alignment]: objects can
1432
+ be explicitly aligned to a set of labels, or the user can simply
1433
+ ignore the labels and let `Series`, `DataFrame`, etc. automatically
1434
+ align the data for you in computations
1435
+ - Powerful, flexible [**group by**][groupby] functionality to perform
1436
+ split-apply-combine operations on data sets, for both aggregating
1437
+ and transforming data
1438
+ - Make it [**easy to convert**][conversion] ragged,
1439
+ differently-indexed data in other Python and NumPy data structures
1440
+ into DataFrame objects
1441
+ - Intelligent label-based [**slicing**][slicing], [**fancy
1442
+ indexing**][fancy-indexing], and [**subsetting**][subsetting] of
1443
+ large data sets
1444
+ - Intuitive [**merging**][merging] and [**joining**][joining] data
1445
+ sets
1446
+ - Flexible [**reshaping**][reshape] and [**pivoting**][pivot-table] of
1447
+ data sets
1448
+ - [**Hierarchical**][mi] labeling of axes (possible to have multiple
1449
+ labels per tick)
1450
+ - Robust IO tools for loading data from [**flat files**][flat-files]
1451
+ (CSV and delimited), [**Excel files**][excel], [**databases**][db],
1452
+ and saving/loading data from the ultrafast [**HDF5 format**][hdfstore]
1453
+ - [**Time series**][timeseries]-specific functionality: date range
1454
+ generation and frequency conversion, moving window statistics,
1455
+ date shifting and lagging
1456
+
1457
+
1458
+ [missing-data]: https://pandas.pydata.org/pandas-docs/stable/user_guide/missing_data.html
1459
+ [insertion-deletion]: https://pandas.pydata.org/pandas-docs/stable/user_guide/dsintro.html#column-selection-addition-deletion
1460
+ [alignment]: https://pandas.pydata.org/pandas-docs/stable/user_guide/dsintro.html?highlight=alignment#intro-to-data-structures
1461
+ [groupby]: https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html#group-by-split-apply-combine
1462
+ [conversion]: https://pandas.pydata.org/pandas-docs/stable/user_guide/dsintro.html#dataframe
1463
+ [slicing]: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#slicing-ranges
1464
+ [fancy-indexing]: https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html#advanced
1465
+ [subsetting]: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#boolean-indexing
1466
+ [merging]: https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html#database-style-dataframe-or-named-series-joining-merging
1467
+ [joining]: https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html#joining-on-index
1468
+ [reshape]: https://pandas.pydata.org/pandas-docs/stable/user_guide/reshaping.html
1469
+ [pivot-table]: https://pandas.pydata.org/pandas-docs/stable/user_guide/reshaping.html
1470
+ [mi]: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#hierarchical-indexing-multiindex
1471
+ [flat-files]: https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#csv-text-files
1472
+ [excel]: https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#excel-files
1473
+ [db]: https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#sql-queries
1474
+ [hdfstore]: https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#hdf5-pytables
1475
+ [timeseries]: https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#time-series-date-functionality
1476
+
1477
+ ## Where to get it
1478
+ The source code is currently hosted on GitHub at:
1479
+ https://github.com/pandas-dev/pandas
1480
+
1481
+ Binary installers for the latest released version are available at the [Python
1482
+ Package Index (PyPI)](https://pypi.org/project/pandas) and on [Conda](https://docs.conda.io/en/latest/).
1483
+
1484
+ ```sh
1485
+ # conda
1486
+ conda install -c conda-forge pandas
1487
+ ```
1488
+
1489
+ ```sh
1490
+ # or PyPI
1491
+ pip install pandas
1492
+ ```
1493
+
1494
+ The list of changes to pandas between each release can be found
1495
+ [here](https://pandas.pydata.org/pandas-docs/stable/whatsnew/index.html). For full
1496
+ details, see the commit logs at https://github.com/pandas-dev/pandas.
1497
+
1498
+ ## Dependencies
1499
+ - [NumPy - Adds support for large, multi-dimensional arrays, matrices and high-level mathematical functions to operate on these arrays](https://www.numpy.org)
1500
+ - [python-dateutil - Provides powerful extensions to the standard datetime module](https://dateutil.readthedocs.io/en/stable/index.html)
1501
+ - [pytz - Brings the Olson tz database into Python which allows accurate and cross platform timezone calculations](https://github.com/stub42/pytz)
1502
+
1503
+ See the [full installation instructions](https://pandas.pydata.org/pandas-docs/stable/install.html#dependencies) for minimum supported versions of required, recommended and optional dependencies.
1504
+
1505
+ ## Installation from sources
1506
+ To install pandas from source you need [Cython](https://cython.org/) in addition to the normal
1507
+ dependencies above. Cython can be installed from PyPI:
1508
+
1509
+ ```sh
1510
+ pip install cython
1511
+ ```
1512
+
1513
+ In the `pandas` directory (same one where you found this file after
1514
+ cloning the git repo), execute:
1515
+
1516
+ ```sh
1517
+ pip install .
1518
+ ```
1519
+
1520
+ or for installing in [development mode](https://pip.pypa.io/en/latest/cli/pip_install/#install-editable):
1521
+
1522
+
1523
+ ```sh
1524
+ python -m pip install -ve . --no-build-isolation --config-settings=editable-verbose=true
1525
+ ```
1526
+
1527
+ See the full instructions for [installing from source](https://pandas.pydata.org/docs/dev/development/contributing_environment.html).
1528
+
1529
+ ## License
1530
+ [BSD 3](LICENSE)
1531
+
1532
+ ## Documentation
1533
+ The official documentation is hosted on [PyData.org](https://pandas.pydata.org/pandas-docs/stable/).
1534
+
1535
+ ## Background
1536
+ Work on ``pandas`` started at [AQR](https://www.aqr.com/) (a quantitative hedge fund) in 2008 and
1537
+ has been under active development since then.
1538
+
1539
+ ## Getting Help
1540
+
1541
+ For usage questions, the best place to go to is [StackOverflow](https://stackoverflow.com/questions/tagged/pandas).
1542
+ Further, general questions and discussions can also take place on the [pydata mailing list](https://groups.google.com/forum/?fromgroups#!forum/pydata).
1543
+
1544
+ ## Discussion and Development
1545
+ Most development discussions take place on GitHub in this repo, via the [GitHub issue tracker](https://github.com/pandas-dev/pandas/issues).
1546
+
1547
+ Further, the [pandas-dev mailing list](https://mail.python.org/mailman/listinfo/pandas-dev) can also be used for specialized discussions or design issues, and a [Slack channel](https://pandas.pydata.org/docs/dev/development/community.html?highlight=slack#community-slack) is available for quick development related questions.
1548
+
1549
+ There are also frequent [community meetings](https://pandas.pydata.org/docs/dev/development/community.html#community-meeting) for project maintainers open to the community as well as monthly [new contributor meetings](https://pandas.pydata.org/docs/dev/development/community.html#new-contributor-meeting) to help support new contributors.
1550
+
1551
+ Additional information on the communication channels can be found on the [contributor community](https://pandas.pydata.org/docs/development/community.html) page.
1552
+
1553
+ ## Contributing to pandas
1554
+
1555
+ [![Open Source Helpers](https://www.codetriage.com/pandas-dev/pandas/badges/users.svg)](https://www.codetriage.com/pandas-dev/pandas)
1556
+
1557
+ All contributions, bug reports, bug fixes, documentation improvements, enhancements, and ideas are welcome.
1558
+
1559
+ A detailed overview on how to contribute can be found in the **[contributing guide](https://pandas.pydata.org/docs/dev/development/contributing.html)**.
1560
+
1561
+ If you are simply looking to start working with the pandas codebase, navigate to the [GitHub "issues" tab](https://github.com/pandas-dev/pandas/issues) and start looking through interesting issues. There are a number of issues listed under [Docs](https://github.com/pandas-dev/pandas/issues?labels=Docs&sort=updated&state=open) and [good first issue](https://github.com/pandas-dev/pandas/issues?labels=good+first+issue&sort=updated&state=open) where you could start out.
1562
+
1563
+ You can also triage issues which may include reproducing bug reports, or asking for vital information such as version numbers or reproduction instructions. If you would like to start triaging issues, one easy way to get started is to [subscribe to pandas on CodeTriage](https://www.codetriage.com/pandas-dev/pandas).
1564
+
1565
+ Or maybe through using pandas you have an idea of your own or are looking for something in the documentation and thinking ‘this can be improved’...you can do something about it!
1566
+
1567
+ Feel free to ask questions on the [mailing list](https://groups.google.com/forum/?fromgroups#!forum/pydata) or on [Slack](https://pandas.pydata.org/docs/dev/development/community.html?highlight=slack#community-slack).
1568
+
1569
+ As contributors and maintainers to this project, you are expected to abide by pandas' code of conduct. More information can be found at: [Contributor Code of Conduct](https://github.com/pandas-dev/.github/blob/master/CODE_OF_CONDUCT.md)
1570
+
1571
+ <hr>
1572
+
1573
+ [Go to Top](#table-of-contents)
.cache/pip/http-v2/a/e/1/3/6/ae1360498e2a7e78c3695d71a4132c94b805a9c41d71ad8f62ad998f.body ADDED
Binary file (5.72 kB). View file
 
.cache/pip/http-v2/a/e/7/a/2/ae7a241673cf118ca18eca030dc29d2715b1980127dd0e2949514433 ADDED
Binary file (1.19 kB). View file
 
.cache/pip/http-v2/b/6/8/7/d/b687d90e2a44328db9c9ecd9af0a9c577a4e68f9d239bbb73aebc319.body ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.1
2
+ Name: wheel
3
+ Version: 0.42.0
4
+ Summary: A built-package format for Python
5
+ Keywords: wheel,packaging
6
+ Author-email: Daniel Holth <[email protected]>
7
+ Maintainer-email: Alex Grönholm <[email protected]>
8
+ Requires-Python: >=3.7
9
+ Description-Content-Type: text/x-rst
10
+ Classifier: Development Status :: 5 - Production/Stable
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Topic :: System :: Archiving :: Packaging
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python
15
+ Classifier: Programming Language :: Python :: 3 :: Only
16
+ Classifier: Programming Language :: Python :: 3.7
17
+ Classifier: Programming Language :: Python :: 3.8
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Requires-Dist: pytest >= 6.0.0 ; extra == "test"
23
+ Requires-Dist: setuptools >= 65 ; extra == "test"
24
+ Project-URL: Changelog, https://wheel.readthedocs.io/en/stable/news.html
25
+ Project-URL: Documentation, https://wheel.readthedocs.io/
26
+ Project-URL: Issue Tracker, https://github.com/pypa/wheel/issues
27
+ Project-URL: Source, https://github.com/pypa/wheel
28
+ Provides-Extra: test
29
+
30
+ wheel
31
+ =====
32
+
33
+ This library is the reference implementation of the Python wheel packaging
34
+ standard, as defined in `PEP 427`_.
35
+
36
+ It has two different roles:
37
+
38
+ #. A setuptools_ extension for building wheels that provides the
39
+ ``bdist_wheel`` setuptools command
40
+ #. A command line tool for working with wheel files
41
+
42
+ It should be noted that wheel is **not** intended to be used as a library, and
43
+ as such there is no stable, public API.
44
+
45
+ .. _PEP 427: https://www.python.org/dev/peps/pep-0427/
46
+ .. _setuptools: https://pypi.org/project/setuptools/
47
+
48
+ Documentation
49
+ -------------
50
+
51
+ The documentation_ can be found on Read The Docs.
52
+
53
+ .. _documentation: https://wheel.readthedocs.io/
54
+
55
+ Code of Conduct
56
+ ---------------
57
+
58
+ Everyone interacting in the wheel project's codebases, issue trackers, chat
59
+ rooms, and mailing lists is expected to follow the `PSF Code of Conduct`_.
60
+
61
+ .. _PSF Code of Conduct: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md
62
+
.config/wandb/settings ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ [default]
2
+
.ipynb_checkpoints/train-checkpoint.py ADDED
@@ -0,0 +1,546 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # torchrun --standalone --nproc_per_node=2 train.py --batch_size=96
2
+
3
+ # train.py
4
+ import os
5
+ import time
6
+ import math
7
+ from contextlib import nullcontext
8
+ import json
9
+
10
+ import numpy as np
11
+ import torch
12
+ from torch.nn.parallel import DistributedDataParallel as DDP
13
+ from torch.distributed import init_process_group, destroy_process_group
14
+ import pandas as pd
15
+
16
+ import tiktoken
17
+ from model import GPTConfig, GPT
18
+
19
+ # Import wandb and tqdm
20
+ import wandb
21
+ from tqdm.auto import tqdm
22
+
23
+ # -----------------------------------------------------------------------------
24
+ # Default configuration with added positional encoding options
25
+ # I/O
26
+ out_dir = 'out'
27
+ eval_interval = 100 # Evaluate every 100 iterations
28
+ log_interval = 1 # Log every iteration
29
+ eval_iters = 100
30
+ eval_only = False
31
+ always_save_checkpoint = True
32
+ init_from = 'scratch' # 'scratch' | 'resume' | 'checkpoint'
33
+ checkpoint_path = '' # Path to a specific checkpoint to load
34
+ # wandb logging
35
+ wandb_log = True
36
+ wandb_project = 'gpt2_positional_encodings_10B'
37
+ wandb_run_name = 'experiment'
38
+ # data
39
+ dataset = 'fineweb'
40
+ gradient_accumulation_steps = 40
41
+ batch_size = 12
42
+ block_size = 512
43
+ # model
44
+ n_layer = 4
45
+ n_head = 4
46
+ n_embd = 256
47
+ dropout = 0.0
48
+ bias = False
49
+ # adamw optimizer
50
+ learning_rate = 6e-4
51
+ max_iters = 10000
52
+ weight_decay = 1e-1
53
+ beta1 = 0.9
54
+ beta2 = 0.95
55
+ grad_clip = 1.0
56
+ # learning rate decay settings
57
+ decay_lr = True
58
+ warmup_iters = 100
59
+ lr_decay_iters = 10000
60
+ min_lr = 6e-5
61
+ # DDP settings
62
+ backend = 'nccl'
63
+ # system
64
+ device = 'cuda'
65
+ dtype = 'bfloat16' if torch.cuda.is_available() and torch.cuda.is_bf16_supported() else 'float16'
66
+ compile = True
67
+ # Positional Encodings
68
+ embedding_types = ['sinusoidal', 'polynomial_legendre',
69
+ 'polynomial_chebyshev']
70
+ attention_types = ['default']
71
+ # Data collection options
72
+ collect_attention_patterns = False # Set to True to collect attention patterns
73
+ collect_activations = False # Set to True to collect activations
74
+ # Evaluation datasets
75
+ eval_datasets = ['wikitext-103-v1', 'ptb', 'lambada'] # WikiText-103 and Penn Treebank
76
+ seed = 1337
77
+ # -----------------------------------------------------------------------------
78
+ config_keys = [k for k, v in globals().items() if not k.startswith('_') and isinstance(v, (int, float, bool, str, list, tuple))]
79
+ exec(open('configurator.py').read())
80
+ config = {k: globals()[k] for k in config_keys}
81
+ # -----------------------------------------------------------------------------
82
+
83
+ def is_compatible(embedding_type, attention_type):
84
+ # Incompatible combinations can be specified here
85
+ incompatible_combinations = [
86
+ # If specific combinations are incompatible
87
+ ]
88
+
89
+ # If embedding_type or attention_type is 'none', some attention methods may not function properly
90
+ if embedding_type == 'none' and attention_type in ['relative', 'rope']:
91
+ return False
92
+
93
+ # 'rope' attention requires even dimension per head
94
+ if attention_type == 'rope' and ((n_embd // n_head) % 2 != 0):
95
+ return False
96
+
97
+ return (embedding_type, attention_type) not in incompatible_combinations
98
+
99
+ def main():
100
+ # Initialize DDP if needed
101
+ global gradient_accumulation_steps
102
+ ddp = int(os.environ.get('RANK', -1)) != -1
103
+ if ddp:
104
+ init_process_group(backend=backend)
105
+ ddp_rank = int(os.environ['RANK'])
106
+ ddp_local_rank = int(os.environ['LOCAL_RANK'])
107
+ ddp_world_size = int(os.environ['WORLD_SIZE'])
108
+ device_local = f'cuda:{ddp_local_rank}'
109
+ torch.cuda.set_device(device_local)
110
+ master_process = ddp_rank == 0
111
+ seed_offset = ddp_rank
112
+ assert gradient_accumulation_steps % ddp_world_size == 0
113
+ gradient_accumulation_steps //= ddp_world_size
114
+ else:
115
+ master_process = True
116
+ seed_offset = 0
117
+ ddp_world_size = 1
118
+ device_local = device # Use the default device
119
+
120
+ tokens_per_iter = gradient_accumulation_steps * ddp_world_size * batch_size * block_size
121
+ if master_process:
122
+ print(f"Tokens per iteration will be: {tokens_per_iter:,}")
123
+
124
+ if master_process:
125
+ os.makedirs(out_dir, exist_ok=True)
126
+
127
+ # Set random seed
128
+ global seed
129
+ seed += seed_offset
130
+ torch.manual_seed(seed)
131
+ np.random.seed(seed)
132
+ torch.backends.cuda.matmul.allow_tf32 = True
133
+ torch.backends.cudnn.allow_tf32 = True
134
+ device_type = 'cuda' if 'cuda' in device_local else 'cpu'
135
+ ptdtype = {'float32': torch.float32, 'bfloat16': torch.bfloat16, 'float16': torch.float16}[dtype]
136
+ ctx = nullcontext() if device_type == 'cpu' else torch.amp.autocast(device_type=device_type, dtype=ptdtype)
137
+
138
+ # Load tokenizer using tiktoken
139
+ tokenizer = tiktoken.get_encoding("gpt2")
140
+
141
+ # Prepare evaluation datasets
142
+ eval_data = {}
143
+ for eval_dataset in eval_datasets:
144
+ eval_data_path = os.path.join('data', eval_dataset)
145
+ if not os.path.exists(eval_data_path):
146
+ raise FileNotFoundError(f"Dataset {eval_dataset} not found. Please run prepare_evaluation_data.py first.")
147
+
148
+ if eval_dataset in ['wikitext-2-v1', 'wikitext-103-v1']:
149
+ train_file = [f for f in os.listdir(eval_data_path) if f.startswith('train')][0]
150
+ val_file = [f for f in os.listdir(eval_data_path) if f.startswith('validation')][0]
151
+
152
+ train_df = pd.read_parquet(os.path.join(eval_data_path, train_file))
153
+ val_df = pd.read_parquet(os.path.join(eval_data_path, val_file))
154
+
155
+ train_text = '\n'.join(train_df['text'])
156
+ val_text = '\n'.join(val_df['text'])
157
+
158
+ elif eval_dataset == 'ptb':
159
+ with open(os.path.join(eval_data_path, 'train.txt'), 'r') as f:
160
+ train_text = f.read()
161
+ with open(os.path.join(eval_data_path, 'valid.txt'), 'r') as f:
162
+ val_text = f.read()
163
+
164
+ elif eval_dataset == 'lambada':
165
+ with open(os.path.join(eval_data_path, 'lambada_test.jsonl'), 'r') as f:
166
+ data = [json.loads(line) for line in f]
167
+ test_text = '\n'.join([item['text'] for item in data])
168
+ train_text = test_text[:len(test_text)//2] # Use first half as pseudo-train
169
+ val_text = test_text[len(test_text)//2:] # Use second half as pseudo-val
170
+
171
+ else:
172
+ raise ValueError(f"Unknown dataset: {eval_dataset}")
173
+
174
+ # Tokenize
175
+ train_ids = tokenizer.encode_ordinary(train_text)
176
+ val_ids = tokenizer.encode_ordinary(val_text)
177
+
178
+ # Convert to numpy arrays
179
+ train_ids = np.array(train_ids, dtype=np.uint16)
180
+ val_ids = np.array(val_ids, dtype=np.uint16)
181
+
182
+ eval_data[eval_dataset] = {'train': train_ids, 'val': val_ids}
183
+
184
+ # Data loading
185
+ data_dir = os.path.join('data', dataset)
186
+ # Update the get_batch function to handle evaluation datasets
187
+ def get_batch(split, dataset='main'):
188
+ if dataset == 'main':
189
+ if split == 'train':
190
+ data = np.memmap(os.path.join(data_dir, 'train.bin'), dtype=np.uint16, mode='r')
191
+ else:
192
+ data = np.memmap(os.path.join(data_dir, 'val.bin'), dtype=np.uint16, mode='r')
193
+ else:
194
+ data = eval_data[dataset][split]
195
+
196
+ ix = torch.randint(len(data) - block_size, (batch_size,))
197
+ x = torch.stack([torch.from_numpy((data[i:i+block_size]).astype(np.int64)) for i in ix])
198
+ y = torch.stack([torch.from_numpy((data[i+1:i+1+block_size]).astype(np.int64)) for i in ix])
199
+ if device_type == 'cuda':
200
+ x, y = x.pin_memory().to(device_local, non_blocking=True), y.pin_memory().to(device_local, non_blocking=True)
201
+ else:
202
+ x, y = x.to(device_local), y.to(device_local)
203
+ return x, y
204
+
205
+ # Attempt to derive vocab_size from the dataset
206
+ meta_path = os.path.join(data_dir, 'meta.json')
207
+ meta_vocab_size = None
208
+ if os.path.exists(meta_path):
209
+ with open(meta_path, 'r') as f:
210
+ meta = json.load(f)
211
+ meta_vocab_size = meta['vocab_size']
212
+ if master_process:
213
+ print(f"Found vocab_size = {meta_vocab_size} (inside {meta_path})")
214
+
215
+ # Helps estimate loss and collect attention patterns and activations
216
+ @torch.no_grad()
217
+ def estimate_loss(model, collect_attention_patterns=False, collect_activations=False, save_dir=None, max_batches_to_save=None):
218
+ out = {}
219
+ model.eval()
220
+ # Access the underlying model if wrapped with DDP
221
+ raw_model = model.module if hasattr(model, 'module') else model
222
+
223
+ # Set tracking flags on the underlying model
224
+ raw_model.config.track_attention_patterns = collect_attention_patterns
225
+ raw_model.config.track_activations = collect_activations
226
+
227
+ if collect_attention_patterns or collect_activations:
228
+ if save_dir is None:
229
+ raise ValueError("save_dir must be specified when collecting attention patterns or activations.")
230
+ if master_process:
231
+ os.makedirs(save_dir, exist_ok=True)
232
+
233
+ for split in ['train', 'val']:
234
+ losses = torch.zeros(eval_iters)
235
+ save_count = 0 # Counter for saved batches
236
+ for k in range(eval_iters):
237
+ X, Y = get_batch(split)
238
+ with ctx:
239
+ logits, loss = model(X, Y)
240
+ losses[k] = loss.item()
241
+ # Collect and save attention patterns and activations
242
+ if (collect_attention_patterns or collect_activations) and save_count < (max_batches_to_save or eval_iters):
243
+ if collect_attention_patterns or collect_activations:
244
+ if master_process:
245
+ batch_dir = os.path.join(save_dir, f"{split}_batch_{k}")
246
+ os.makedirs(batch_dir, exist_ok=True)
247
+ # Save activations
248
+ if collect_activations and hasattr(raw_model, 'activations'):
249
+ for idx, activation in enumerate(raw_model.activations):
250
+ activation_path = os.path.join(batch_dir, f"activation_layer_{idx}.pt")
251
+ torch.save(activation, activation_path)
252
+ # Save attention patterns
253
+ if collect_attention_patterns and hasattr(raw_model, 'attention_patterns'):
254
+ for idx, attention in enumerate(raw_model.attention_patterns):
255
+ attention_path = os.path.join(batch_dir, f"attention_layer_{idx}.pt")
256
+ torch.save(attention, attention_path)
257
+ # Clear activations and attention patterns from the model
258
+ raw_model.activations = []
259
+ raw_model.attention_patterns = []
260
+ save_count += 1
261
+ out[split] = losses.mean().item()
262
+
263
+ # Evaluate on additional datasets
264
+ for eval_dataset in eval_datasets:
265
+ split_losses = {}
266
+ for split in ['train', 'val']:
267
+ losses = torch.zeros(eval_iters)
268
+ save_count = 0 # Counter for saved batches
269
+ for k in range(eval_iters):
270
+ X, Y = get_batch(split, dataset=eval_dataset)
271
+ with ctx:
272
+ logits, loss = model(X, Y)
273
+ losses[k] = loss.item()
274
+ # Collect and save attention patterns and activations
275
+ if (collect_attention_patterns or collect_activations) and save_count < (max_batches_to_save or eval_iters):
276
+ if collect_attention_patterns or collect_activations:
277
+ if master_process:
278
+ batch_dir = os.path.join(save_dir, f"{eval_dataset}_{split}_batch_{k}")
279
+ os.makedirs(batch_dir, exist_ok=True)
280
+ # Save activations
281
+ if collect_activations and hasattr(raw_model, 'activations'):
282
+ for idx, activation in enumerate(raw_model.activations):
283
+ activation_path = os.path.join(batch_dir, f"activation_layer_{idx}.pt")
284
+ torch.save(activation, activation_path)
285
+ # Save attention patterns
286
+ if collect_attention_patterns and hasattr(raw_model, 'attention_patterns'):
287
+ for idx, attention in enumerate(raw_model.attention_patterns):
288
+ attention_path = os.path.join(batch_dir, f"attention_layer_{idx}.pt")
289
+ torch.save(attention, attention_path)
290
+ # Clear activations and attention patterns from the model
291
+ raw_model.activations = []
292
+ raw_model.attention_patterns = []
293
+ save_count += 1
294
+ split_losses[split] = losses.mean().item()
295
+ out[eval_dataset] = split_losses
296
+ model.train()
297
+ # Reset tracking flags
298
+ raw_model.config.track_attention_patterns = False
299
+ raw_model.config.track_activations = False
300
+ return out
301
+
302
+ # Learning rate decay scheduler
303
+ def get_lr(it):
304
+ if it < warmup_iters:
305
+ return learning_rate * it / warmup_iters
306
+ if it > lr_decay_iters:
307
+ return min_lr
308
+ decay_ratio = (it - warmup_iters) / (lr_decay_iters - warmup_iters)
309
+ coeff = 0.5 * (1.0 + math.cos(math.pi * decay_ratio))
310
+ return min_lr + coeff * (learning_rate - min_lr)
311
+
312
+ # Training loop over positional encoding combinations
313
+ for embedding_type in embedding_types:
314
+ for attention_type in attention_types:
315
+ if not is_compatible(embedding_type, attention_type):
316
+ if master_process:
317
+ print(f"Skipping incompatible combination: Embedding={embedding_type}, Attention={attention_type}")
318
+ continue
319
+
320
+ # Configure model arguments
321
+ model_args = dict(
322
+ n_layer=n_layer,
323
+ n_head=n_head,
324
+ n_embd=n_embd,
325
+ block_size=block_size,
326
+ bias=bias,
327
+ vocab_size=None,
328
+ dropout=dropout,
329
+ embedding_type=embedding_type,
330
+ attention_type=attention_type,
331
+ track_activations=False,
332
+ track_attention_patterns=False,
333
+ )
334
+
335
+ # Initialize or resume model
336
+ iter_num = 0
337
+ best_val_loss = 1e9 # initialize best val loss to a high value
338
+ checkpoint = None
339
+ run_id = None # Initialize run_id to None
340
+
341
+ if init_from == 'scratch':
342
+ if master_process:
343
+ print(f"\nInitializing new model with embedding_type={embedding_type}, attention_type={attention_type}")
344
+ if meta_vocab_size is None:
345
+ if master_process:
346
+ print("Defaulting to vocab_size of GPT-2 to 50257")
347
+ model_args['vocab_size'] = meta_vocab_size if meta_vocab_size is not None else 50257
348
+ gptconf = GPTConfig(**model_args)
349
+ model = GPT(gptconf)
350
+ elif init_from == 'resume':
351
+ # Resume from the latest checkpoint
352
+ ckpt_path = os.path.join(out_dir, f"ckpt_{embedding_type}_{attention_type}.pt")
353
+ if not os.path.exists(ckpt_path):
354
+ raise FileNotFoundError(f"Checkpoint not found at {ckpt_path}")
355
+ if master_process:
356
+ print(f"\nResuming training from checkpoint {ckpt_path}")
357
+ checkpoint = torch.load(ckpt_path, map_location=device_local)
358
+ gptconf = GPTConfig(**checkpoint['model_args'])
359
+ model = GPT(gptconf)
360
+ model.load_state_dict(checkpoint['model'])
361
+ iter_num = checkpoint['iter_num']
362
+ best_val_loss = checkpoint['best_val_loss']
363
+ seed = checkpoint.get('seed', seed)
364
+ run_id = checkpoint.get('wandb_run_id', None)
365
+ elif init_from == 'checkpoint':
366
+ # Resume from a specific checkpoint
367
+ if not checkpoint_path or not os.path.exists(checkpoint_path):
368
+ raise FileNotFoundError(f"Checkpoint not found at {checkpoint_path}")
369
+ if master_process:
370
+ print(f"\nLoading model from checkpoint {checkpoint_path}")
371
+ checkpoint = torch.load(checkpoint_path, map_location=device_local)
372
+ gptconf = GPTConfig(**checkpoint['model_args'])
373
+ model = GPT(gptconf)
374
+ model.load_state_dict(checkpoint['model'])
375
+ iter_num = checkpoint['iter_num']
376
+ best_val_loss = checkpoint['best_val_loss']
377
+ seed = checkpoint.get('seed', seed)
378
+ run_id = checkpoint.get('wandb_run_id', None)
379
+ else:
380
+ raise ValueError(f"Unknown init_from '{init_from}'")
381
+
382
+ # Set random seed
383
+ seed += seed_offset
384
+ torch.manual_seed(seed)
385
+ np.random.seed(seed)
386
+
387
+ model.to(device_local)
388
+ scaler = torch.cuda.amp.GradScaler(enabled=(dtype == 'float16'))
389
+ optimizer = model.configure_optimizers(weight_decay, learning_rate, (beta1, beta2), device_type)
390
+
391
+ # Load optimizer state if resuming
392
+ if checkpoint is not None:
393
+ optimizer.load_state_dict(checkpoint['optimizer'])
394
+
395
+ if compile:
396
+ if master_process:
397
+ print("Compiling the model... (takes a ~minute)")
398
+ unoptimized_model = model
399
+ model = torch.compile(model)
400
+
401
+ if ddp:
402
+ model = DDP(model, device_ids=[ddp_local_rank])
403
+
404
+ # Logging with WandB
405
+ if wandb_log and master_process:
406
+ run_name = f"{embedding_type}_{attention_type}_{wandb_run_name}"
407
+ # Initialize WandB
408
+ wandb.init(project=wandb_project, name=run_name, config=config, resume='allow', id=run_id)
409
+ # Save the run ID for resuming later
410
+ run_id = wandb.run.id
411
+ else:
412
+ run_id = None
413
+
414
+ # Training loop
415
+ X, Y = get_batch('train')
416
+ t0 = time.time()
417
+ local_iter_num = 0
418
+ raw_model = model.module if hasattr(model, 'module') else model
419
+ running_mfu = -1.0
420
+ progress_bar = tqdm(total=max_iters, initial=iter_num, desc=f"Training {embedding_type} + {attention_type}", disable=not master_process)
421
+ progress_bar_update_freq = 1 # Update progress bar every iteration
422
+
423
+ while True:
424
+ # Determine learning rate
425
+ lr = get_lr(iter_num) if decay_lr else learning_rate
426
+ for param_group in optimizer.param_groups:
427
+ param_group['lr'] = lr
428
+
429
+ # Evaluate and checkpoint
430
+ if iter_num % eval_interval == 0 and iter_num > 0:
431
+ # Define save_dir for collected data
432
+ eval_data_dir = os.path.join('data', 'eval_data', f"{embedding_type}_{attention_type}", f"step_{iter_num}")
433
+ # Set a limit on the number of batches to save during evaluation
434
+ max_batches_to_save = 10 # Adjust this number as needed to control storage usage
435
+ losses = estimate_loss(model,
436
+ collect_attention_patterns=collect_attention_patterns,
437
+ collect_activations=collect_activations,
438
+ save_dir=eval_data_dir,
439
+ max_batches_to_save=max_batches_to_save)
440
+ if master_process:
441
+ print(f"\nStep {iter_num}:")
442
+ print(f"Train loss: {losses['train']:.4f}, Val loss: {losses['val']:.4f}")
443
+ for eval_dataset in eval_datasets:
444
+ print(f"{eval_dataset} - Train loss: {losses[eval_dataset]['train']:.4f}, Val loss: {losses[eval_dataset]['val']:.4f}")
445
+ # Log to wandb
446
+ if wandb_log:
447
+ wandb_metrics = {
448
+ "iter": iter_num,
449
+ "train/loss": losses['train'],
450
+ "val/loss": losses['val'],
451
+ "lr": lr,
452
+ "mfu": running_mfu * 100,
453
+ }
454
+ for eval_dataset in eval_datasets:
455
+ wandb_metrics[f"{eval_dataset}/train_loss"] = losses[eval_dataset]['train']
456
+ wandb_metrics[f"{eval_dataset}/val_loss"] = losses[eval_dataset]['val']
457
+ wandb.log(wandb_metrics, step=iter_num)
458
+ if losses['val'] < best_val_loss or always_save_checkpoint:
459
+ best_val_loss = losses['val']
460
+ if iter_num > 0:
461
+ checkpoint = {
462
+ 'model': raw_model.state_dict(),
463
+ 'optimizer': optimizer.state_dict(),
464
+ 'model_args': model_args,
465
+ 'iter_num': iter_num,
466
+ 'best_val_loss': best_val_loss,
467
+ 'config': config,
468
+ 'seed': seed,
469
+ 'wandb_run_id': run_id
470
+ }
471
+ ckpt_path = os.path.join(out_dir, f"ckpt_{embedding_type}_{attention_type}.pt")
472
+ if master_process:
473
+ print(f"Saving checkpoint to {ckpt_path}")
474
+ torch.save(checkpoint, ckpt_path)
475
+ # Update progress bar postfix
476
+ if master_process:
477
+ postfix_dict = {
478
+ 'train_loss': f"{losses['train']:.4f}",
479
+ 'val_loss': f"{losses['val']:.4f}"
480
+ }
481
+ for eval_dataset in eval_datasets:
482
+ postfix_dict[f"{eval_dataset}_val_loss"] = f"{losses[eval_dataset]['val']:.4f}"
483
+ progress_bar.set_postfix(postfix_dict)
484
+
485
+ if eval_only:
486
+ break
487
+
488
+ # Forward backward update
489
+ for micro_step in range(gradient_accumulation_steps):
490
+ if ddp:
491
+ model.require_backward_grad_sync = (micro_step == gradient_accumulation_steps - 1)
492
+ with ctx:
493
+ logits, loss = model(X, Y)
494
+ loss = loss / gradient_accumulation_steps
495
+ X, Y = get_batch('train')
496
+ scaler.scale(loss).backward()
497
+ if grad_clip != 0.0:
498
+ scaler.unscale_(optimizer)
499
+ torch.nn.utils.clip_grad_norm_(model.parameters(), grad_clip)
500
+ scaler.step(optimizer)
501
+ scaler.update()
502
+ optimizer.zero_grad(set_to_none=True)
503
+
504
+ # Logging
505
+ t1 = time.time()
506
+ dt = t1 - t0
507
+ t0 = t1
508
+ if iter_num % log_interval == 0:
509
+ lossf = loss.item() * gradient_accumulation_steps
510
+ if local_iter_num >= 5:
511
+ mfu = raw_model.estimate_mfu(batch_size * gradient_accumulation_steps, dt)
512
+ running_mfu = mfu if running_mfu == -1.0 else 0.9 * running_mfu + 0.1 * mfu
513
+ if master_process:
514
+ progress_bar.set_postfix({
515
+ 'loss': f"{lossf:.4f}",
516
+ 'lr': f"{lr:.2e}",
517
+ 'mfu': f"{running_mfu*100:.2f}%",
518
+ 'time_per_iter_ms': f"{dt * 1000:.2f}ms",
519
+ })
520
+ if wandb_log:
521
+ wandb.log({
522
+ "iter": iter_num,
523
+ "train/loss": lossf,
524
+ "lr": lr,
525
+ "mfu": running_mfu * 100,
526
+ "time_per_iter_ms": dt * 1000,
527
+ }, step=iter_num)
528
+ iter_num += 1
529
+ local_iter_num += 1
530
+ if master_process:
531
+ progress_bar.update(progress_bar_update_freq)
532
+ # Termination conditions
533
+ if iter_num > max_iters:
534
+ break
535
+
536
+ if master_process:
537
+ progress_bar.close()
538
+ if wandb_log and master_process:
539
+ wandb.finish()
540
+
541
+ # Destroy the process group after all models have been trained
542
+ if ddp:
543
+ destroy_process_group()
544
+
545
+ if __name__ == '__main__':
546
+ main()
.launchpadlib/api.launchpad.net/cache/api.launchpad.net,devel,-application,json,fc4e1e3a03117146fb1e9d492ab76690 ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ status: 200
2
+ date: Mon, 05 Feb 2024 23:25:35 GMT
3
+ server: Apache/2.4.41 (Ubuntu)
4
+ content-location: index.json
5
+ vary: negotiate,accept,Accept-Encoding
6
+ tcn: choice
7
+ last-modified: Wed, 31 Jan 2024 08:46:52 GMT
8
+ etag: "8fa-61039eb973700-gzip"
9
+ accept-ranges: bytes
10
+ content-type: application/json; qs=0.9
11
+ x-cache: MISS from juju-98d295-prod-launchpad-30
12
+ x-cache-lookup: MISS from juju-98d295-prod-launchpad-30:3128
13
+ via: 1.1 juju-98d295-prod-launchpad-30 (squid/4.10)
14
+ content-length: 2298
15
+ -content-encoding: gzip
16
+ -varied-accept: application/json
17
+ -varied-accept-encoding: gzip, deflate
18
+
19
+ {"resource_type_link": "https://api.launchpad.net/devel/#service-root", "temporary_blobs_collection_link": "https://api.launchpad.net/devel/temporary-blobs", "countries_collection_link": "https://api.launchpad.net/devel/+countries", "languages_collection_link": "https://api.launchpad.net/devel/+languages", "questions_collection_link": "https://api.launchpad.net/devel/questions", "specifications_collection_link": "https://api.launchpad.net/devel/", "bug_trackers_collection_link": "https://api.launchpad.net/devel/bugs/bugtrackers", "cves_collection_link": "https://api.launchpad.net/devel/bugs/cve", "bugs_collection_link": "https://api.launchpad.net/devel/bugs", "builders_collection_link": "https://api.launchpad.net/devel/builders", "processors_collection_link": "https://api.launchpad.net/devel/+processors", "charm_bases_collection_link": "https://api.launchpad.net/devel/+charm-bases", "charm_recipes_collection_link": "https://api.launchpad.net/devel/+charm-recipes", "branches_collection_link": "https://api.launchpad.net/devel/branches", "git_repositories_collection_link": "https://api.launchpad.net/devel/+git", "snap_bases_collection_link": "https://api.launchpad.net/devel/+snap-bases", "snaps_collection_link": "https://api.launchpad.net/devel/+snaps", "snappy_serieses_collection_link": "https://api.launchpad.net/devel/+snappy-series", "archives_collection_link": "https://api.launchpad.net/devel/archives", "livefses_collection_link": "https://api.launchpad.net/devel/livefses", "packagesets_collection_link": "https://api.launchpad.net/devel/package-sets", "translation_groups_collection_link": "https://api.launchpad.net/devel/+groups", "translation_import_queue_entries_collection_link": "https://api.launchpad.net/devel/+imports", "distributions_collection_link": "https://api.launchpad.net/devel/distros", "people_collection_link": "https://api.launchpad.net/devel/people", "polls_collection_link": "https://api.launchpad.net/devel/+polls", "projects_collection_link": "https://api.launchpad.net/devel/projects", "project_groups_collection_link": "https://api.launchpad.net/devel/projectgroups", "services_link": "https://api.launchpad.net/devel/services", "pillars_link": "https://api.launchpad.net/devel/pillars", "me_link": "https://api.launchpad.net/devel/people/+me"}