geored commited on
Commit
add8f0b
1 Parent(s): fe41391

Upload folder using huggingface_hub

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +12 -0
  2. gtm/bin/gradio +8 -0
  3. gtm/bin/httpx +8 -0
  4. gtm/bin/jsonschema +8 -0
  5. gtm/bin/markdown-it +8 -0
  6. gtm/bin/pygmentize +8 -0
  7. gtm/bin/ruff +3 -0
  8. gtm/bin/transformers-cli +8 -0
  9. gtm/bin/upload_theme +8 -0
  10. gtm/bin/uvicorn +8 -0
  11. gtm/lib/python3.12/site-packages/Jinja2-3.1.3.dist-info/INSTALLER +1 -0
  12. gtm/lib/python3.12/site-packages/Jinja2-3.1.3.dist-info/LICENSE.rst +28 -0
  13. gtm/lib/python3.12/site-packages/Jinja2-3.1.3.dist-info/METADATA +105 -0
  14. gtm/lib/python3.12/site-packages/Jinja2-3.1.3.dist-info/RECORD +58 -0
  15. gtm/lib/python3.12/site-packages/Jinja2-3.1.3.dist-info/WHEEL +5 -0
  16. gtm/lib/python3.12/site-packages/Jinja2-3.1.3.dist-info/entry_points.txt +2 -0
  17. gtm/lib/python3.12/site-packages/Jinja2-3.1.3.dist-info/top_level.txt +1 -0
  18. gtm/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/INSTALLER +1 -0
  19. gtm/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/LICENSE.rst +28 -0
  20. gtm/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/METADATA +93 -0
  21. gtm/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/RECORD +14 -0
  22. gtm/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/WHEEL +5 -0
  23. gtm/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/top_level.txt +1 -0
  24. gtm/lib/python3.12/site-packages/__pycache__/ffmpy.cpython-312.pyc +0 -0
  25. gtm/lib/python3.12/site-packages/aiofiles-23.2.1.dist-info/INSTALLER +1 -0
  26. gtm/lib/python3.12/site-packages/aiofiles-23.2.1.dist-info/METADATA +291 -0
  27. gtm/lib/python3.12/site-packages/aiofiles-23.2.1.dist-info/RECORD +26 -0
  28. gtm/lib/python3.12/site-packages/aiofiles-23.2.1.dist-info/WHEEL +4 -0
  29. gtm/lib/python3.12/site-packages/aiofiles-23.2.1.dist-info/licenses/LICENSE +202 -0
  30. gtm/lib/python3.12/site-packages/aiofiles-23.2.1.dist-info/licenses/NOTICE +2 -0
  31. gtm/lib/python3.12/site-packages/aiofiles/__init__.py +22 -0
  32. gtm/lib/python3.12/site-packages/aiofiles/__pycache__/__init__.cpython-312.pyc +0 -0
  33. gtm/lib/python3.12/site-packages/aiofiles/__pycache__/base.cpython-312.pyc +0 -0
  34. gtm/lib/python3.12/site-packages/aiofiles/__pycache__/os.cpython-312.pyc +0 -0
  35. gtm/lib/python3.12/site-packages/aiofiles/__pycache__/ospath.cpython-312.pyc +0 -0
  36. gtm/lib/python3.12/site-packages/aiofiles/base.py +113 -0
  37. gtm/lib/python3.12/site-packages/aiofiles/os.py +51 -0
  38. gtm/lib/python3.12/site-packages/aiofiles/ospath.py +28 -0
  39. gtm/lib/python3.12/site-packages/aiofiles/tempfile/__init__.py +357 -0
  40. gtm/lib/python3.12/site-packages/aiofiles/tempfile/__pycache__/__init__.cpython-312.pyc +0 -0
  41. gtm/lib/python3.12/site-packages/aiofiles/tempfile/__pycache__/temptypes.cpython-312.pyc +0 -0
  42. gtm/lib/python3.12/site-packages/aiofiles/tempfile/temptypes.py +69 -0
  43. gtm/lib/python3.12/site-packages/aiofiles/threadpool/__init__.py +141 -0
  44. gtm/lib/python3.12/site-packages/aiofiles/threadpool/__pycache__/__init__.cpython-312.pyc +0 -0
  45. gtm/lib/python3.12/site-packages/aiofiles/threadpool/__pycache__/binary.cpython-312.pyc +0 -0
  46. gtm/lib/python3.12/site-packages/aiofiles/threadpool/__pycache__/text.cpython-312.pyc +0 -0
  47. gtm/lib/python3.12/site-packages/aiofiles/threadpool/__pycache__/utils.cpython-312.pyc +0 -0
  48. gtm/lib/python3.12/site-packages/aiofiles/threadpool/binary.py +104 -0
  49. gtm/lib/python3.12/site-packages/aiofiles/threadpool/text.py +64 -0
  50. gtm/lib/python3.12/site-packages/aiofiles/threadpool/utils.py +72 -0
.gitattributes CHANGED
@@ -43,3 +43,15 @@ gtm/lib/python3.12/site-packages/pysam/libcbcf.cpython-312-darwin.so filter=lfs
43
  gtm/lib/python3.12/site-packages/pysam/libcbcftools.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
44
  gtm/lib/python3.12/site-packages/pysam/libchtslib.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
45
  gtm/lib/python3.12/site-packages/tokenizers/tokenizers.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  gtm/lib/python3.12/site-packages/pysam/libcbcftools.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
44
  gtm/lib/python3.12/site-packages/pysam/libchtslib.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
45
  gtm/lib/python3.12/site-packages/tokenizers/tokenizers.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
46
+ gtm/bin/ruff filter=lfs diff=lfs merge=lfs -text
47
+ gtm/lib/python3.12/site-packages/altair/vegalite/v5/schema/__pycache__/channels.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
48
+ gtm/lib/python3.12/site-packages/altair/vegalite/v5/schema/__pycache__/core.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
49
+ gtm/lib/python3.12/site-packages/gradio/templates/frontend/assets/Index-232ce73d.js.map filter=lfs diff=lfs merge=lfs -text
50
+ gtm/lib/python3.12/site-packages/pandas/_libs/algos.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
51
+ gtm/lib/python3.12/site-packages/pandas/_libs/groupby.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
52
+ gtm/lib/python3.12/site-packages/pandas/_libs/hashtable.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
53
+ gtm/lib/python3.12/site-packages/pandas/_libs/interval.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
54
+ gtm/lib/python3.12/site-packages/pandas/_libs/join.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
55
+ gtm/lib/python3.12/site-packages/pandas/_libs/tslibs/offsets.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
56
+ gtm/lib/python3.12/site-packages/pydantic_core/_pydantic_core.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
57
+ gtm/lib/python3.12/site-packages/safetensors/_safetensors_rust.cpython-312-darwin.so filter=lfs diff=lfs merge=lfs -text
gtm/bin/gradio ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ #!/Users/gorgigeorgievski/code/ai/gtmio/gtm/bin/python3.12
2
+ # -*- coding: utf-8 -*-
3
+ import re
4
+ import sys
5
+ from gradio.cli import cli
6
+ if __name__ == '__main__':
7
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
8
+ sys.exit(cli())
gtm/bin/httpx ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ #!/Users/gorgigeorgievski/code/ai/gtmio/gtm/bin/python3.12
2
+ # -*- coding: utf-8 -*-
3
+ import re
4
+ import sys
5
+ from httpx import main
6
+ if __name__ == '__main__':
7
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
8
+ sys.exit(main())
gtm/bin/jsonschema ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ #!/Users/gorgigeorgievski/code/ai/gtmio/gtm/bin/python3.12
2
+ # -*- coding: utf-8 -*-
3
+ import re
4
+ import sys
5
+ from jsonschema.cli import main
6
+ if __name__ == '__main__':
7
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
8
+ sys.exit(main())
gtm/bin/markdown-it ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ #!/Users/gorgigeorgievski/code/ai/gtmio/gtm/bin/python3.12
2
+ # -*- coding: utf-8 -*-
3
+ import re
4
+ import sys
5
+ from markdown_it.cli.parse import main
6
+ if __name__ == '__main__':
7
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
8
+ sys.exit(main())
gtm/bin/pygmentize ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ #!/Users/gorgigeorgievski/code/ai/gtmio/gtm/bin/python3.12
2
+ # -*- coding: utf-8 -*-
3
+ import re
4
+ import sys
5
+ from pygments.cmdline import main
6
+ if __name__ == '__main__':
7
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
8
+ sys.exit(main())
gtm/bin/ruff ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f63f420adb132fb53bda0781f1682f53845afbe8ca0385de8828971aa03d5b70
3
+ size 19903280
gtm/bin/transformers-cli ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ #!/Users/gorgigeorgievski/code/ai/gtmio/gtm/bin/python3.12
2
+ # -*- coding: utf-8 -*-
3
+ import re
4
+ import sys
5
+ from transformers.commands.transformers_cli import main
6
+ if __name__ == '__main__':
7
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
8
+ sys.exit(main())
gtm/bin/upload_theme ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ #!/Users/gorgigeorgievski/code/ai/gtmio/gtm/bin/python3.12
2
+ # -*- coding: utf-8 -*-
3
+ import re
4
+ import sys
5
+ from gradio.themes.upload_theme import main
6
+ if __name__ == '__main__':
7
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
8
+ sys.exit(main())
gtm/bin/uvicorn ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ #!/Users/gorgigeorgievski/code/ai/gtmio/gtm/bin/python3.12
2
+ # -*- coding: utf-8 -*-
3
+ import re
4
+ import sys
5
+ from uvicorn.main import main
6
+ if __name__ == '__main__':
7
+ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
8
+ sys.exit(main())
gtm/lib/python3.12/site-packages/Jinja2-3.1.3.dist-info/INSTALLER ADDED
@@ -0,0 +1 @@
 
 
1
+ pip
gtm/lib/python3.12/site-packages/Jinja2-3.1.3.dist-info/LICENSE.rst ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright 2007 Pallets
2
+
3
+ Redistribution and use in source and binary forms, with or without
4
+ modification, are permitted provided that the following conditions are
5
+ met:
6
+
7
+ 1. Redistributions of source code must retain the above copyright
8
+ notice, this list of conditions and the following disclaimer.
9
+
10
+ 2. Redistributions in binary form must reproduce the above copyright
11
+ notice, this list of conditions and the following disclaimer in the
12
+ documentation and/or other materials provided with the distribution.
13
+
14
+ 3. Neither the name of the copyright holder nor the names of its
15
+ contributors may be used to endorse or promote products derived from
16
+ this software without specific prior written permission.
17
+
18
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
21
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
24
+ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
26
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
gtm/lib/python3.12/site-packages/Jinja2-3.1.3.dist-info/METADATA ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.1
2
+ Name: Jinja2
3
+ Version: 3.1.3
4
+ Summary: A very fast and expressive template engine.
5
+ Home-page: https://palletsprojects.com/p/jinja/
6
+ Maintainer: Pallets
7
+ Maintainer-email: [email protected]
8
+ License: BSD-3-Clause
9
+ Project-URL: Donate, https://palletsprojects.com/donate
10
+ Project-URL: Documentation, https://jinja.palletsprojects.com/
11
+ Project-URL: Changes, https://jinja.palletsprojects.com/changes/
12
+ Project-URL: Source Code, https://github.com/pallets/jinja/
13
+ Project-URL: Issue Tracker, https://github.com/pallets/jinja/issues/
14
+ Project-URL: Chat, https://discord.gg/pallets
15
+ Classifier: Development Status :: 5 - Production/Stable
16
+ Classifier: Environment :: Web Environment
17
+ Classifier: Intended Audience :: Developers
18
+ Classifier: License :: OSI Approved :: BSD License
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: Python
21
+ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
22
+ Classifier: Topic :: Text Processing :: Markup :: HTML
23
+ Requires-Python: >=3.7
24
+ Description-Content-Type: text/x-rst
25
+ License-File: LICENSE.rst
26
+ Requires-Dist: MarkupSafe >=2.0
27
+ Provides-Extra: i18n
28
+ Requires-Dist: Babel >=2.7 ; extra == 'i18n'
29
+
30
+ Jinja
31
+ =====
32
+
33
+ Jinja is a fast, expressive, extensible templating engine. Special
34
+ placeholders in the template allow writing code similar to Python
35
+ syntax. Then the template is passed data to render the final document.
36
+
37
+ It includes:
38
+
39
+ - Template inheritance and inclusion.
40
+ - Define and import macros within templates.
41
+ - HTML templates can use autoescaping to prevent XSS from untrusted
42
+ user input.
43
+ - A sandboxed environment can safely render untrusted templates.
44
+ - AsyncIO support for generating templates and calling async
45
+ functions.
46
+ - I18N support with Babel.
47
+ - Templates are compiled to optimized Python code just-in-time and
48
+ cached, or can be compiled ahead-of-time.
49
+ - Exceptions point to the correct line in templates to make debugging
50
+ easier.
51
+ - Extensible filters, tests, functions, and even syntax.
52
+
53
+ Jinja's philosophy is that while application logic belongs in Python if
54
+ possible, it shouldn't make the template designer's job difficult by
55
+ restricting functionality too much.
56
+
57
+
58
+ Installing
59
+ ----------
60
+
61
+ Install and update using `pip`_:
62
+
63
+ .. code-block:: text
64
+
65
+ $ pip install -U Jinja2
66
+
67
+ .. _pip: https://pip.pypa.io/en/stable/getting-started/
68
+
69
+
70
+ In A Nutshell
71
+ -------------
72
+
73
+ .. code-block:: jinja
74
+
75
+ {% extends "base.html" %}
76
+ {% block title %}Members{% endblock %}
77
+ {% block content %}
78
+ <ul>
79
+ {% for user in users %}
80
+ <li><a href="{{ user.url }}">{{ user.username }}</a></li>
81
+ {% endfor %}
82
+ </ul>
83
+ {% endblock %}
84
+
85
+
86
+ Donate
87
+ ------
88
+
89
+ The Pallets organization develops and supports Jinja and other popular
90
+ packages. In order to grow the community of contributors and users, and
91
+ allow the maintainers to devote more time to the projects, `please
92
+ donate today`_.
93
+
94
+ .. _please donate today: https://palletsprojects.com/donate
95
+
96
+
97
+ Links
98
+ -----
99
+
100
+ - Documentation: https://jinja.palletsprojects.com/
101
+ - Changes: https://jinja.palletsprojects.com/changes/
102
+ - PyPI Releases: https://pypi.org/project/Jinja2/
103
+ - Source Code: https://github.com/pallets/jinja/
104
+ - Issue Tracker: https://github.com/pallets/jinja/issues/
105
+ - Chat: https://discord.gg/pallets
gtm/lib/python3.12/site-packages/Jinja2-3.1.3.dist-info/RECORD ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Jinja2-3.1.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
2
+ Jinja2-3.1.3.dist-info/LICENSE.rst,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475
3
+ Jinja2-3.1.3.dist-info/METADATA,sha256=0cLNbRCI91jytc7Bzv3XAQfZzFDF2gxkJuH46eF5vew,3301
4
+ Jinja2-3.1.3.dist-info/RECORD,,
5
+ Jinja2-3.1.3.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
6
+ Jinja2-3.1.3.dist-info/entry_points.txt,sha256=zRd62fbqIyfUpsRtU7EVIFyiu1tPwfgO7EvPErnxgTE,59
7
+ Jinja2-3.1.3.dist-info/top_level.txt,sha256=PkeVWtLb3-CqjWi1fO29OCbj55EhX_chhKrCdrVe_zs,7
8
+ jinja2/__init__.py,sha256=NTBwMwsECrdHmxeXF7seusHLzrh6Ldn1A9qhS5cDuf0,1927
9
+ jinja2/__pycache__/__init__.cpython-312.pyc,,
10
+ jinja2/__pycache__/_identifier.cpython-312.pyc,,
11
+ jinja2/__pycache__/async_utils.cpython-312.pyc,,
12
+ jinja2/__pycache__/bccache.cpython-312.pyc,,
13
+ jinja2/__pycache__/compiler.cpython-312.pyc,,
14
+ jinja2/__pycache__/constants.cpython-312.pyc,,
15
+ jinja2/__pycache__/debug.cpython-312.pyc,,
16
+ jinja2/__pycache__/defaults.cpython-312.pyc,,
17
+ jinja2/__pycache__/environment.cpython-312.pyc,,
18
+ jinja2/__pycache__/exceptions.cpython-312.pyc,,
19
+ jinja2/__pycache__/ext.cpython-312.pyc,,
20
+ jinja2/__pycache__/filters.cpython-312.pyc,,
21
+ jinja2/__pycache__/idtracking.cpython-312.pyc,,
22
+ jinja2/__pycache__/lexer.cpython-312.pyc,,
23
+ jinja2/__pycache__/loaders.cpython-312.pyc,,
24
+ jinja2/__pycache__/meta.cpython-312.pyc,,
25
+ jinja2/__pycache__/nativetypes.cpython-312.pyc,,
26
+ jinja2/__pycache__/nodes.cpython-312.pyc,,
27
+ jinja2/__pycache__/optimizer.cpython-312.pyc,,
28
+ jinja2/__pycache__/parser.cpython-312.pyc,,
29
+ jinja2/__pycache__/runtime.cpython-312.pyc,,
30
+ jinja2/__pycache__/sandbox.cpython-312.pyc,,
31
+ jinja2/__pycache__/tests.cpython-312.pyc,,
32
+ jinja2/__pycache__/utils.cpython-312.pyc,,
33
+ jinja2/__pycache__/visitor.cpython-312.pyc,,
34
+ jinja2/_identifier.py,sha256=_zYctNKzRqlk_murTNlzrju1FFJL7Va_Ijqqd7ii2lU,1958
35
+ jinja2/async_utils.py,sha256=dFcmh6lMNfbh7eLKrBio8JqAKLHdZbpCuurFN4OERtY,2447
36
+ jinja2/bccache.py,sha256=mhz5xtLxCcHRAa56azOhphIAe19u1we0ojifNMClDio,14061
37
+ jinja2/compiler.py,sha256=PJzYdRLStlEOqmnQs1YxlizPrJoj3jTZuUleREn6AIQ,72199
38
+ jinja2/constants.py,sha256=GMoFydBF_kdpaRKPoM5cl5MviquVRLVyZtfp5-16jg0,1433
39
+ jinja2/debug.py,sha256=iWJ432RadxJNnaMOPrjIDInz50UEgni3_HKuFXi2vuQ,6299
40
+ jinja2/defaults.py,sha256=boBcSw78h-lp20YbaXSJsqkAI2uN_mD_TtCydpeq5wU,1267
41
+ jinja2/environment.py,sha256=0qldX3VQKZcm6lgn7zHz94oRFow7YPYERiqkquomNjU,61253
42
+ jinja2/exceptions.py,sha256=ioHeHrWwCWNaXX1inHmHVblvc4haO7AXsjCp3GfWvx0,5071
43
+ jinja2/ext.py,sha256=5fnMpllaXkfm2P_93RIvi-OnK7Tk8mCW8Du-GcD12Hc,31844
44
+ jinja2/filters.py,sha256=vYjKb2zaPShvYtn_LpSmqfS8SScbrA_KOanNibsMDIE,53862
45
+ jinja2/idtracking.py,sha256=GfNmadir4oDALVxzn3DL9YInhJDr69ebXeA2ygfuCGA,10704
46
+ jinja2/lexer.py,sha256=DW2nX9zk-6MWp65YR2bqqj0xqCvLtD-u9NWT8AnFRxQ,29726
47
+ jinja2/loaders.py,sha256=ayAwxfrA1SAffQta0nwSDm3TDT4KYiIGN_D9Z45B310,23085
48
+ jinja2/meta.py,sha256=GNPEvifmSaU3CMxlbheBOZjeZ277HThOPUTf1RkppKQ,4396
49
+ jinja2/nativetypes.py,sha256=7GIGALVJgdyL80oZJdQUaUfwSt5q2lSSZbXt0dNf_M4,4210
50
+ jinja2/nodes.py,sha256=i34GPRAZexXMT6bwuf5SEyvdmS-bRCy9KMjwN5O6pjk,34550
51
+ jinja2/optimizer.py,sha256=tHkMwXxfZkbfA1KmLcqmBMSaz7RLIvvItrJcPoXTyD8,1650
52
+ jinja2/parser.py,sha256=Y199wPL-G67gJoi5G_5sHuu9uEP1PJkjjLEW_xTH8-k,39736
53
+ jinja2/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
+ jinja2/runtime.py,sha256=_6LkKIWFJjQdqlrgA3K39zBFQ-7Orm3wGDm96RwxQoE,33406
55
+ jinja2/sandbox.py,sha256=Y0xZeXQnH6EX5VjaV2YixESxoepnRbW_3UeQosaBU3M,14584
56
+ jinja2/tests.py,sha256=Am5Z6Lmfr2XaH_npIfJJ8MdXtWsbLjMULZJulTAj30E,5905
57
+ jinja2/utils.py,sha256=IMwRIcN1SsTw2-jdQtlH2KzNABsXZBW_-tnFXafQBvY,23933
58
+ jinja2/visitor.py,sha256=MH14C6yq24G_KVtWzjwaI7Wg14PCJIYlWW1kpkxYak0,3568
gtm/lib/python3.12/site-packages/Jinja2-3.1.3.dist-info/WHEEL ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.42.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
gtm/lib/python3.12/site-packages/Jinja2-3.1.3.dist-info/entry_points.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ [babel.extractors]
2
+ jinja2 = jinja2.ext:babel_extract[i18n]
gtm/lib/python3.12/site-packages/Jinja2-3.1.3.dist-info/top_level.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ jinja2
gtm/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/INSTALLER ADDED
@@ -0,0 +1 @@
 
 
1
+ pip
gtm/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/LICENSE.rst ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright 2010 Pallets
2
+
3
+ Redistribution and use in source and binary forms, with or without
4
+ modification, are permitted provided that the following conditions are
5
+ met:
6
+
7
+ 1. Redistributions of source code must retain the above copyright
8
+ notice, this list of conditions and the following disclaimer.
9
+
10
+ 2. Redistributions in binary form must reproduce the above copyright
11
+ notice, this list of conditions and the following disclaimer in the
12
+ documentation and/or other materials provided with the distribution.
13
+
14
+ 3. Neither the name of the copyright holder nor the names of its
15
+ contributors may be used to endorse or promote products derived from
16
+ this software without specific prior written permission.
17
+
18
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
21
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22
+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
24
+ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
26
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
gtm/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/METADATA ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.1
2
+ Name: MarkupSafe
3
+ Version: 2.1.5
4
+ Summary: Safely add untrusted strings to HTML/XML markup.
5
+ Home-page: https://palletsprojects.com/p/markupsafe/
6
+ Maintainer: Pallets
7
+ Maintainer-email: [email protected]
8
+ License: BSD-3-Clause
9
+ Project-URL: Donate, https://palletsprojects.com/donate
10
+ Project-URL: Documentation, https://markupsafe.palletsprojects.com/
11
+ Project-URL: Changes, https://markupsafe.palletsprojects.com/changes/
12
+ Project-URL: Source Code, https://github.com/pallets/markupsafe/
13
+ Project-URL: Issue Tracker, https://github.com/pallets/markupsafe/issues/
14
+ Project-URL: Chat, https://discord.gg/pallets
15
+ Classifier: Development Status :: 5 - Production/Stable
16
+ Classifier: Environment :: Web Environment
17
+ Classifier: Intended Audience :: Developers
18
+ Classifier: License :: OSI Approved :: BSD License
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Programming Language :: Python
21
+ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
22
+ Classifier: Topic :: Text Processing :: Markup :: HTML
23
+ Requires-Python: >=3.7
24
+ Description-Content-Type: text/x-rst
25
+ License-File: LICENSE.rst
26
+
27
+ MarkupSafe
28
+ ==========
29
+
30
+ MarkupSafe implements a text object that escapes characters so it is
31
+ safe to use in HTML and XML. Characters that have special meanings are
32
+ replaced so that they display as the actual characters. This mitigates
33
+ injection attacks, meaning untrusted user input can safely be displayed
34
+ on a page.
35
+
36
+
37
+ Installing
38
+ ----------
39
+
40
+ Install and update using `pip`_:
41
+
42
+ .. code-block:: text
43
+
44
+ pip install -U MarkupSafe
45
+
46
+ .. _pip: https://pip.pypa.io/en/stable/getting-started/
47
+
48
+
49
+ Examples
50
+ --------
51
+
52
+ .. code-block:: pycon
53
+
54
+ >>> from markupsafe import Markup, escape
55
+
56
+ >>> # escape replaces special characters and wraps in Markup
57
+ >>> escape("<script>alert(document.cookie);</script>")
58
+ Markup('&lt;script&gt;alert(document.cookie);&lt;/script&gt;')
59
+
60
+ >>> # wrap in Markup to mark text "safe" and prevent escaping
61
+ >>> Markup("<strong>Hello</strong>")
62
+ Markup('<strong>hello</strong>')
63
+
64
+ >>> escape(Markup("<strong>Hello</strong>"))
65
+ Markup('<strong>hello</strong>')
66
+
67
+ >>> # Markup is a str subclass
68
+ >>> # methods and operators escape their arguments
69
+ >>> template = Markup("Hello <em>{name}</em>")
70
+ >>> template.format(name='"World"')
71
+ Markup('Hello <em>&#34;World&#34;</em>')
72
+
73
+
74
+ Donate
75
+ ------
76
+
77
+ The Pallets organization develops and supports MarkupSafe and other
78
+ popular packages. In order to grow the community of contributors and
79
+ users, and allow the maintainers to devote more time to the projects,
80
+ `please donate today`_.
81
+
82
+ .. _please donate today: https://palletsprojects.com/donate
83
+
84
+
85
+ Links
86
+ -----
87
+
88
+ - Documentation: https://markupsafe.palletsprojects.com/
89
+ - Changes: https://markupsafe.palletsprojects.com/changes/
90
+ - PyPI Releases: https://pypi.org/project/MarkupSafe/
91
+ - Source Code: https://github.com/pallets/markupsafe/
92
+ - Issue Tracker: https://github.com/pallets/markupsafe/issues/
93
+ - Chat: https://discord.gg/pallets
gtm/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/RECORD ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MarkupSafe-2.1.5.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
2
+ MarkupSafe-2.1.5.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475
3
+ MarkupSafe-2.1.5.dist-info/METADATA,sha256=2dRDPam6OZLfpX0wg1JN5P3u9arqACxVSfdGmsJU7o8,3003
4
+ MarkupSafe-2.1.5.dist-info/RECORD,,
5
+ MarkupSafe-2.1.5.dist-info/WHEEL,sha256=1_erwh2TCU3TrYzgBQGCtZskLEmw2vbfn7Xu2mHHvyU,111
6
+ MarkupSafe-2.1.5.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11
7
+ markupsafe/__init__.py,sha256=r7VOTjUq7EMQ4v3p4R1LoVOGJg6ysfYRncLr34laRBs,10958
8
+ markupsafe/__pycache__/__init__.cpython-312.pyc,,
9
+ markupsafe/__pycache__/_native.cpython-312.pyc,,
10
+ markupsafe/_native.py,sha256=GR86Qvo_GcgKmKreA1WmYN9ud17OFwkww8E-fiW-57s,1713
11
+ markupsafe/_speedups.c,sha256=X2XvQVtIdcK4Usz70BvkzoOfjTCmQlDkkjYSn-swE0g,7083
12
+ markupsafe/_speedups.cpython-312-darwin.so,sha256=zO55W2sOSohVnMko0CD2bITP4v6UpfeRj-x2I_8pGkA,35208
13
+ markupsafe/_speedups.pyi,sha256=vfMCsOgbAXRNLUXkyuyonG8uEWKYU4PDqNuMaDELAYw,229
14
+ markupsafe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
gtm/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/WHEEL ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.42.0)
3
+ Root-Is-Purelib: false
4
+ Tag: cp312-cp312-macosx_10_9_x86_64
5
+
gtm/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/top_level.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ markupsafe
gtm/lib/python3.12/site-packages/__pycache__/ffmpy.cpython-312.pyc ADDED
Binary file (10.6 kB). View file
 
gtm/lib/python3.12/site-packages/aiofiles-23.2.1.dist-info/INSTALLER ADDED
@@ -0,0 +1 @@
 
 
1
+ pip
gtm/lib/python3.12/site-packages/aiofiles-23.2.1.dist-info/METADATA ADDED
@@ -0,0 +1,291 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.1
2
+ Name: aiofiles
3
+ Version: 23.2.1
4
+ Summary: File support for asyncio.
5
+ Project-URL: Changelog, https://github.com/Tinche/aiofiles#history
6
+ Project-URL: Bug Tracker, https://github.com/Tinche/aiofiles/issues
7
+ Project-URL: repository, https://github.com/Tinche/aiofiles
8
+ Author-email: Tin Tvrtkovic <[email protected]>
9
+ License: Apache-2.0
10
+ License-File: LICENSE
11
+ License-File: NOTICE
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Framework :: AsyncIO
14
+ Classifier: License :: OSI Approved :: Apache Software License
15
+ Classifier: Operating System :: OS Independent
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
+ Classifier: Programming Language :: Python :: Implementation :: CPython
23
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
24
+ Requires-Python: >=3.7
25
+ Description-Content-Type: text/markdown
26
+
27
+ # aiofiles: file support for asyncio
28
+
29
+ [![PyPI](https://img.shields.io/pypi/v/aiofiles.svg)](https://pypi.python.org/pypi/aiofiles)
30
+ [![Build](https://github.com/Tinche/aiofiles/workflows/CI/badge.svg)](https://github.com/Tinche/aiofiles/actions)
31
+ [![Coverage](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Tinche/882f02e3df32136c847ba90d2688f06e/raw/covbadge.json)](https://github.com/Tinche/aiofiles/actions/workflows/main.yml)
32
+ [![Supported Python versions](https://img.shields.io/pypi/pyversions/aiofiles.svg)](https://github.com/Tinche/aiofiles)
33
+ [![Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
34
+
35
+ **aiofiles** is an Apache2 licensed library, written in Python, for handling local
36
+ disk files in asyncio applications.
37
+
38
+ Ordinary local file IO is blocking, and cannot easily and portably be made
39
+ asynchronous. This means doing file IO may interfere with asyncio applications,
40
+ which shouldn't block the executing thread. aiofiles helps with this by
41
+ introducing asynchronous versions of files that support delegating operations to
42
+ a separate thread pool.
43
+
44
+ ```python
45
+ async with aiofiles.open('filename', mode='r') as f:
46
+ contents = await f.read()
47
+ print(contents)
48
+ 'My file contents'
49
+ ```
50
+
51
+ Asynchronous iteration is also supported.
52
+
53
+ ```python
54
+ async with aiofiles.open('filename') as f:
55
+ async for line in f:
56
+ ...
57
+ ```
58
+
59
+ Asynchronous interface to tempfile module.
60
+
61
+ ```python
62
+ async with aiofiles.tempfile.TemporaryFile('wb') as f:
63
+ await f.write(b'Hello, World!')
64
+ ```
65
+
66
+ ## Features
67
+
68
+ - a file API very similar to Python's standard, blocking API
69
+ - support for buffered and unbuffered binary files, and buffered text files
70
+ - support for `async`/`await` ([PEP 492](https://peps.python.org/pep-0492/)) constructs
71
+ - async interface to tempfile module
72
+
73
+ ## Installation
74
+
75
+ To install aiofiles, simply:
76
+
77
+ ```bash
78
+ $ pip install aiofiles
79
+ ```
80
+
81
+ ## Usage
82
+
83
+ Files are opened using the `aiofiles.open()` coroutine, which in addition to
84
+ mirroring the builtin `open` accepts optional `loop` and `executor`
85
+ arguments. If `loop` is absent, the default loop will be used, as per the
86
+ set asyncio policy. If `executor` is not specified, the default event loop
87
+ executor will be used.
88
+
89
+ In case of success, an asynchronous file object is returned with an
90
+ API identical to an ordinary file, except the following methods are coroutines
91
+ and delegate to an executor:
92
+
93
+ - `close`
94
+ - `flush`
95
+ - `isatty`
96
+ - `read`
97
+ - `readall`
98
+ - `read1`
99
+ - `readinto`
100
+ - `readline`
101
+ - `readlines`
102
+ - `seek`
103
+ - `seekable`
104
+ - `tell`
105
+ - `truncate`
106
+ - `writable`
107
+ - `write`
108
+ - `writelines`
109
+
110
+ In case of failure, one of the usual exceptions will be raised.
111
+
112
+ `aiofiles.stdin`, `aiofiles.stdout`, `aiofiles.stderr`,
113
+ `aiofiles.stdin_bytes`, `aiofiles.stdout_bytes`, and
114
+ `aiofiles.stderr_bytes` provide async access to `sys.stdin`,
115
+ `sys.stdout`, `sys.stderr`, and their corresponding `.buffer` properties.
116
+
117
+ The `aiofiles.os` module contains executor-enabled coroutine versions of
118
+ several useful `os` functions that deal with files:
119
+
120
+ - `stat`
121
+ - `statvfs`
122
+ - `sendfile`
123
+ - `rename`
124
+ - `renames`
125
+ - `replace`
126
+ - `remove`
127
+ - `unlink`
128
+ - `mkdir`
129
+ - `makedirs`
130
+ - `rmdir`
131
+ - `removedirs`
132
+ - `link`
133
+ - `symlink`
134
+ - `readlink`
135
+ - `listdir`
136
+ - `scandir`
137
+ - `access`
138
+ - `path.exists`
139
+ - `path.isfile`
140
+ - `path.isdir`
141
+ - `path.islink`
142
+ - `path.ismount`
143
+ - `path.getsize`
144
+ - `path.getatime`
145
+ - `path.getctime`
146
+ - `path.samefile`
147
+ - `path.sameopenfile`
148
+
149
+ ### Tempfile
150
+
151
+ **aiofiles.tempfile** implements the following interfaces:
152
+
153
+ - TemporaryFile
154
+ - NamedTemporaryFile
155
+ - SpooledTemporaryFile
156
+ - TemporaryDirectory
157
+
158
+ Results return wrapped with a context manager allowing use with async with and async for.
159
+
160
+ ```python
161
+ async with aiofiles.tempfile.NamedTemporaryFile('wb+') as f:
162
+ await f.write(b'Line1\n Line2')
163
+ await f.seek(0)
164
+ async for line in f:
165
+ print(line)
166
+
167
+ async with aiofiles.tempfile.TemporaryDirectory() as d:
168
+ filename = os.path.join(d, "file.ext")
169
+ ```
170
+
171
+ ### Writing tests for aiofiles
172
+
173
+ Real file IO can be mocked by patching `aiofiles.threadpool.sync_open`
174
+ as desired. The return type also needs to be registered with the
175
+ `aiofiles.threadpool.wrap` dispatcher:
176
+
177
+ ```python
178
+ aiofiles.threadpool.wrap.register(mock.MagicMock)(
179
+ lambda *args, **kwargs: threadpool.AsyncBufferedIOBase(*args, **kwargs))
180
+
181
+ async def test_stuff():
182
+ data = 'data'
183
+ mock_file = mock.MagicMock()
184
+
185
+ with mock.patch('aiofiles.threadpool.sync_open', return_value=mock_file) as mock_open:
186
+ async with aiofiles.open('filename', 'w') as f:
187
+ await f.write(data)
188
+
189
+ mock_file.write.assert_called_once_with(data)
190
+ ```
191
+
192
+ ### History
193
+
194
+ #### 23.2.1 (2023-08-09)
195
+
196
+ - Import `os.statvfs` conditionally to fix importing on non-UNIX systems.
197
+ [#171](https://github.com/Tinche/aiofiles/issues/171) [#172](https://github.com/Tinche/aiofiles/pull/172)
198
+
199
+ #### 23.2.0 (2023-08-09)
200
+
201
+ - aiofiles is now tested on Python 3.12 too.
202
+ [#166](https://github.com/Tinche/aiofiles/issues/166) [#168](https://github.com/Tinche/aiofiles/pull/168)
203
+ - On Python 3.12, `aiofiles.tempfile.NamedTemporaryFile` now accepts a `delete_on_close` argument, just like the stdlib version.
204
+ - On Python 3.12, `aiofiles.tempfile.NamedTemporaryFile` no longer exposes a `delete` attribute, just like the stdlib version.
205
+ - Added `aiofiles.os.statvfs` and `aiofiles.os.path.ismount`.
206
+ [#162](https://github.com/Tinche/aiofiles/pull/162)
207
+ - Use [PDM](https://pdm.fming.dev/latest/) instead of Poetry.
208
+ [#169](https://github.com/Tinche/aiofiles/pull/169)
209
+
210
+ #### 23.1.0 (2023-02-09)
211
+
212
+ - Added `aiofiles.os.access`.
213
+ [#146](https://github.com/Tinche/aiofiles/pull/146)
214
+ - Removed `aiofiles.tempfile.temptypes.AsyncSpooledTemporaryFile.softspace`.
215
+ [#151](https://github.com/Tinche/aiofiles/pull/151)
216
+ - Added `aiofiles.stdin`, `aiofiles.stdin_bytes`, and other stdio streams.
217
+ [#154](https://github.com/Tinche/aiofiles/pull/154)
218
+ - Transition to `asyncio.get_running_loop` (vs `asyncio.get_event_loop`) internally.
219
+
220
+ #### 22.1.0 (2022-09-04)
221
+
222
+ - Added `aiofiles.os.path.islink`.
223
+ [#126](https://github.com/Tinche/aiofiles/pull/126)
224
+ - Added `aiofiles.os.readlink`.
225
+ [#125](https://github.com/Tinche/aiofiles/pull/125)
226
+ - Added `aiofiles.os.symlink`.
227
+ [#124](https://github.com/Tinche/aiofiles/pull/124)
228
+ - Added `aiofiles.os.unlink`.
229
+ [#123](https://github.com/Tinche/aiofiles/pull/123)
230
+ - Added `aiofiles.os.link`.
231
+ [#121](https://github.com/Tinche/aiofiles/pull/121)
232
+ - Added `aiofiles.os.renames`.
233
+ [#120](https://github.com/Tinche/aiofiles/pull/120)
234
+ - Added `aiofiles.os.{listdir, scandir}`.
235
+ [#143](https://github.com/Tinche/aiofiles/pull/143)
236
+ - Switched to CalVer.
237
+ - Dropped Python 3.6 support. If you require it, use version 0.8.0.
238
+ - aiofiles is now tested on Python 3.11.
239
+
240
+ #### 0.8.0 (2021-11-27)
241
+
242
+ - aiofiles is now tested on Python 3.10.
243
+ - Added `aiofiles.os.replace`.
244
+ [#107](https://github.com/Tinche/aiofiles/pull/107)
245
+ - Added `aiofiles.os.{makedirs, removedirs}`.
246
+ - Added `aiofiles.os.path.{exists, isfile, isdir, getsize, getatime, getctime, samefile, sameopenfile}`.
247
+ [#63](https://github.com/Tinche/aiofiles/pull/63)
248
+ - Added `suffix`, `prefix`, `dir` args to `aiofiles.tempfile.TemporaryDirectory`.
249
+ [#116](https://github.com/Tinche/aiofiles/pull/116)
250
+
251
+ #### 0.7.0 (2021-05-17)
252
+
253
+ - Added the `aiofiles.tempfile` module for async temporary files.
254
+ [#56](https://github.com/Tinche/aiofiles/pull/56)
255
+ - Switched to Poetry and GitHub actions.
256
+ - Dropped 3.5 support.
257
+
258
+ #### 0.6.0 (2020-10-27)
259
+
260
+ - `aiofiles` is now tested on ppc64le.
261
+ - Added `name` and `mode` properties to async file objects.
262
+ [#82](https://github.com/Tinche/aiofiles/pull/82)
263
+ - Fixed a DeprecationWarning internally.
264
+ [#75](https://github.com/Tinche/aiofiles/pull/75)
265
+ - Python 3.9 support and tests.
266
+
267
+ #### 0.5.0 (2020-04-12)
268
+
269
+ - Python 3.8 support. Code base modernization (using `async/await` instead of `asyncio.coroutine`/`yield from`).
270
+ - Added `aiofiles.os.remove`, `aiofiles.os.rename`, `aiofiles.os.mkdir`, `aiofiles.os.rmdir`.
271
+ [#62](https://github.com/Tinche/aiofiles/pull/62)
272
+
273
+ #### 0.4.0 (2018-08-11)
274
+
275
+ - Python 3.7 support.
276
+ - Removed Python 3.3/3.4 support. If you use these versions, stick to aiofiles 0.3.x.
277
+
278
+ #### 0.3.2 (2017-09-23)
279
+
280
+ - The LICENSE is now included in the sdist.
281
+ [#31](https://github.com/Tinche/aiofiles/pull/31)
282
+
283
+ #### 0.3.1 (2017-03-10)
284
+
285
+ - Introduced a changelog.
286
+ - `aiofiles.os.sendfile` will now work if the standard `os` module contains a `sendfile` function.
287
+
288
+ ### Contributing
289
+
290
+ Contributions are very welcome. Tests can be run with `tox`, please ensure
291
+ the coverage at least stays the same before you submit a pull request.
gtm/lib/python3.12/site-packages/aiofiles-23.2.1.dist-info/RECORD ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ aiofiles-23.2.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
2
+ aiofiles-23.2.1.dist-info/METADATA,sha256=cot28p_PNjdl_MK--l9Qu2e6QOv9OxdHrKbjLmYf9Uw,9673
3
+ aiofiles-23.2.1.dist-info/RECORD,,
4
+ aiofiles-23.2.1.dist-info/WHEEL,sha256=KGYbc1zXlYddvwxnNty23BeaKzh7YuoSIvIMO4jEhvw,87
5
+ aiofiles-23.2.1.dist-info/licenses/LICENSE,sha256=y16Ofl9KOYjhBjwULGDcLfdWBfTEZRXnduOspt-XbhQ,11325
6
+ aiofiles-23.2.1.dist-info/licenses/NOTICE,sha256=EExY0dRQvWR0wJ2LZLwBgnM6YKw9jCU-M0zegpRSD_E,55
7
+ aiofiles/__init__.py,sha256=1iAMJQyJtX3LGIS0AoFTJeO1aJ_RK2jpBSBhg0VoIrE,344
8
+ aiofiles/__pycache__/__init__.cpython-312.pyc,,
9
+ aiofiles/__pycache__/base.cpython-312.pyc,,
10
+ aiofiles/__pycache__/os.cpython-312.pyc,,
11
+ aiofiles/__pycache__/ospath.cpython-312.pyc,,
12
+ aiofiles/base.py,sha256=rZwA151Ji8XlBkzvDmcF1CgDTY2iKNuJMfvNlM0s0E0,2684
13
+ aiofiles/os.py,sha256=zuFGaIyGCGUuFb7trFFEm6SLdCRqTFsSV0mY6SO8z3M,970
14
+ aiofiles/ospath.py,sha256=zqG2VFzRb6yYiIOWipqsdgvZmoMTFvZmBdkxkAl1FT4,764
15
+ aiofiles/tempfile/__init__.py,sha256=hFSNTOjOUv371Ozdfy6FIxeln46Nm3xOVh4ZR3Q94V0,10244
16
+ aiofiles/tempfile/__pycache__/__init__.cpython-312.pyc,,
17
+ aiofiles/tempfile/__pycache__/temptypes.cpython-312.pyc,,
18
+ aiofiles/tempfile/temptypes.py,sha256=ddEvNjMLVlr7WUILCe6ypTqw77yREeIonTk16Uw_NVs,2093
19
+ aiofiles/threadpool/__init__.py,sha256=c_aexl1t193iKdPZaolPEEbHDrQ0RrsH_HTAToMPQBo,3171
20
+ aiofiles/threadpool/__pycache__/__init__.cpython-312.pyc,,
21
+ aiofiles/threadpool/__pycache__/binary.cpython-312.pyc,,
22
+ aiofiles/threadpool/__pycache__/text.cpython-312.pyc,,
23
+ aiofiles/threadpool/__pycache__/utils.cpython-312.pyc,,
24
+ aiofiles/threadpool/binary.py,sha256=hp-km9VCRu0MLz_wAEUfbCz7OL7xtn9iGAawabpnp5U,2315
25
+ aiofiles/threadpool/text.py,sha256=fNmpw2PEkj0BZSldipJXAgZqVGLxALcfOMiuDQ54Eas,1223
26
+ aiofiles/threadpool/utils.py,sha256=B59dSZwO_WZs2dFFycKeA91iD2Xq2nNw1EFF8YMBI5k,1868
gtm/lib/python3.12/site-packages/aiofiles-23.2.1.dist-info/WHEEL ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.17.1
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
gtm/lib/python3.12/site-packages/aiofiles-23.2.1.dist-info/licenses/LICENSE ADDED
@@ -0,0 +1,202 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "{}"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright {yyyy} {name of copyright owner}
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
202
+
gtm/lib/python3.12/site-packages/aiofiles-23.2.1.dist-info/licenses/NOTICE ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ Asyncio support for files
2
+ Copyright 2016 Tin Tvrtkovic
gtm/lib/python3.12/site-packages/aiofiles/__init__.py ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Utilities for asyncio-friendly file handling."""
2
+ from .threadpool import (
3
+ open,
4
+ stdin,
5
+ stdout,
6
+ stderr,
7
+ stdin_bytes,
8
+ stdout_bytes,
9
+ stderr_bytes,
10
+ )
11
+ from . import tempfile
12
+
13
+ __all__ = [
14
+ "open",
15
+ "tempfile",
16
+ "stdin",
17
+ "stdout",
18
+ "stderr",
19
+ "stdin_bytes",
20
+ "stdout_bytes",
21
+ "stderr_bytes",
22
+ ]
gtm/lib/python3.12/site-packages/aiofiles/__pycache__/__init__.cpython-312.pyc ADDED
Binary file (525 Bytes). View file
 
gtm/lib/python3.12/site-packages/aiofiles/__pycache__/base.cpython-312.pyc ADDED
Binary file (6.43 kB). View file
 
gtm/lib/python3.12/site-packages/aiofiles/__pycache__/os.cpython-312.pyc ADDED
Binary file (1.61 kB). View file
 
gtm/lib/python3.12/site-packages/aiofiles/__pycache__/ospath.cpython-312.pyc ADDED
Binary file (1.65 kB). View file
 
gtm/lib/python3.12/site-packages/aiofiles/base.py ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Various base classes."""
2
+ from types import coroutine
3
+ from collections.abc import Coroutine
4
+ from asyncio import get_running_loop
5
+
6
+
7
+ class AsyncBase:
8
+ def __init__(self, file, loop, executor):
9
+ self._file = file
10
+ self._executor = executor
11
+ self._ref_loop = loop
12
+
13
+ @property
14
+ def _loop(self):
15
+ return self._ref_loop or get_running_loop()
16
+
17
+ def __aiter__(self):
18
+ """We are our own iterator."""
19
+ return self
20
+
21
+ def __repr__(self):
22
+ return super().__repr__() + " wrapping " + repr(self._file)
23
+
24
+ async def __anext__(self):
25
+ """Simulate normal file iteration."""
26
+ line = await self.readline()
27
+ if line:
28
+ return line
29
+ else:
30
+ raise StopAsyncIteration
31
+
32
+
33
+ class AsyncIndirectBase(AsyncBase):
34
+ def __init__(self, name, loop, executor, indirect):
35
+ self._indirect = indirect
36
+ self._name = name
37
+ super().__init__(None, loop, executor)
38
+
39
+ @property
40
+ def _file(self):
41
+ return self._indirect()
42
+
43
+ @_file.setter
44
+ def _file(self, v):
45
+ pass # discard writes
46
+
47
+
48
+ class _ContextManager(Coroutine):
49
+ __slots__ = ("_coro", "_obj")
50
+
51
+ def __init__(self, coro):
52
+ self._coro = coro
53
+ self._obj = None
54
+
55
+ def send(self, value):
56
+ return self._coro.send(value)
57
+
58
+ def throw(self, typ, val=None, tb=None):
59
+ if val is None:
60
+ return self._coro.throw(typ)
61
+ elif tb is None:
62
+ return self._coro.throw(typ, val)
63
+ else:
64
+ return self._coro.throw(typ, val, tb)
65
+
66
+ def close(self):
67
+ return self._coro.close()
68
+
69
+ @property
70
+ def gi_frame(self):
71
+ return self._coro.gi_frame
72
+
73
+ @property
74
+ def gi_running(self):
75
+ return self._coro.gi_running
76
+
77
+ @property
78
+ def gi_code(self):
79
+ return self._coro.gi_code
80
+
81
+ def __next__(self):
82
+ return self.send(None)
83
+
84
+ @coroutine
85
+ def __iter__(self):
86
+ resp = yield from self._coro
87
+ return resp
88
+
89
+ def __await__(self):
90
+ resp = yield from self._coro
91
+ return resp
92
+
93
+ async def __anext__(self):
94
+ resp = await self._coro
95
+ return resp
96
+
97
+ async def __aenter__(self):
98
+ self._obj = await self._coro
99
+ return self._obj
100
+
101
+ async def __aexit__(self, exc_type, exc, tb):
102
+ self._obj.close()
103
+ self._obj = None
104
+
105
+
106
+ class AiofilesContextManager(_ContextManager):
107
+ """An adjusted async context manager for aiofiles."""
108
+
109
+ async def __aexit__(self, exc_type, exc_val, exc_tb):
110
+ await get_running_loop().run_in_executor(
111
+ None, self._obj._file.__exit__, exc_type, exc_val, exc_tb
112
+ )
113
+ self._obj = None
gtm/lib/python3.12/site-packages/aiofiles/os.py ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Async executor versions of file functions from the os module."""
2
+ import os
3
+
4
+ from . import ospath as path
5
+ from .ospath import wrap
6
+
7
+ __all__ = [
8
+ "path",
9
+ "stat",
10
+ "statvfs",
11
+ "rename",
12
+ "renames",
13
+ "replace",
14
+ "remove",
15
+ "unlink",
16
+ "mkdir",
17
+ "makedirs",
18
+ "rmdir",
19
+ "removedirs",
20
+ "link",
21
+ "symlink",
22
+ "readlink",
23
+ "listdir",
24
+ "scandir",
25
+ "access",
26
+ "sendfile",
27
+ "wrap",
28
+ ]
29
+
30
+
31
+ stat = wrap(os.stat)
32
+ rename = wrap(os.rename)
33
+ renames = wrap(os.renames)
34
+ replace = wrap(os.replace)
35
+ remove = wrap(os.remove)
36
+ unlink = wrap(os.unlink)
37
+ mkdir = wrap(os.mkdir)
38
+ makedirs = wrap(os.makedirs)
39
+ rmdir = wrap(os.rmdir)
40
+ removedirs = wrap(os.removedirs)
41
+ link = wrap(os.link)
42
+ symlink = wrap(os.symlink)
43
+ readlink = wrap(os.readlink)
44
+ listdir = wrap(os.listdir)
45
+ scandir = wrap(os.scandir)
46
+ access = wrap(os.access)
47
+
48
+ if hasattr(os, "sendfile"):
49
+ sendfile = wrap(os.sendfile)
50
+ if hasattr(os, "statvfs"):
51
+ statvfs = wrap(os.statvfs)
gtm/lib/python3.12/site-packages/aiofiles/ospath.py ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Async executor versions of file functions from the os.path module."""
2
+ import asyncio
3
+ from functools import partial, wraps
4
+ from os import path
5
+
6
+
7
+ def wrap(func):
8
+ @wraps(func)
9
+ async def run(*args, loop=None, executor=None, **kwargs):
10
+ if loop is None:
11
+ loop = asyncio.get_running_loop()
12
+ pfunc = partial(func, *args, **kwargs)
13
+ return await loop.run_in_executor(executor, pfunc)
14
+
15
+ return run
16
+
17
+
18
+ exists = wrap(path.exists)
19
+ isfile = wrap(path.isfile)
20
+ isdir = wrap(path.isdir)
21
+ islink = wrap(path.islink)
22
+ ismount = wrap(path.ismount)
23
+ getsize = wrap(path.getsize)
24
+ getmtime = wrap(path.getmtime)
25
+ getatime = wrap(path.getatime)
26
+ getctime = wrap(path.getctime)
27
+ samefile = wrap(path.samefile)
28
+ sameopenfile = wrap(path.sameopenfile)
gtm/lib/python3.12/site-packages/aiofiles/tempfile/__init__.py ADDED
@@ -0,0 +1,357 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import asyncio
2
+ from functools import partial, singledispatch
3
+ from io import BufferedRandom, BufferedReader, BufferedWriter, FileIO, TextIOBase
4
+ from tempfile import NamedTemporaryFile as syncNamedTemporaryFile
5
+ from tempfile import SpooledTemporaryFile as syncSpooledTemporaryFile
6
+ from tempfile import TemporaryDirectory as syncTemporaryDirectory
7
+ from tempfile import TemporaryFile as syncTemporaryFile
8
+ from tempfile import _TemporaryFileWrapper as syncTemporaryFileWrapper
9
+
10
+ from ..base import AiofilesContextManager
11
+ from ..threadpool.binary import AsyncBufferedIOBase, AsyncBufferedReader, AsyncFileIO
12
+ from ..threadpool.text import AsyncTextIOWrapper
13
+ from .temptypes import AsyncSpooledTemporaryFile, AsyncTemporaryDirectory
14
+ import sys
15
+
16
+ __all__ = [
17
+ "NamedTemporaryFile",
18
+ "TemporaryFile",
19
+ "SpooledTemporaryFile",
20
+ "TemporaryDirectory",
21
+ ]
22
+
23
+
24
+ # ================================================================
25
+ # Public methods for async open and return of temp file/directory
26
+ # objects with async interface
27
+ # ================================================================
28
+ if sys.version_info >= (3, 12):
29
+
30
+ def NamedTemporaryFile(
31
+ mode="w+b",
32
+ buffering=-1,
33
+ encoding=None,
34
+ newline=None,
35
+ suffix=None,
36
+ prefix=None,
37
+ dir=None,
38
+ delete=True,
39
+ delete_on_close=True,
40
+ loop=None,
41
+ executor=None,
42
+ ):
43
+ """Async open a named temporary file"""
44
+ return AiofilesContextManager(
45
+ _temporary_file(
46
+ named=True,
47
+ mode=mode,
48
+ buffering=buffering,
49
+ encoding=encoding,
50
+ newline=newline,
51
+ suffix=suffix,
52
+ prefix=prefix,
53
+ dir=dir,
54
+ delete=delete,
55
+ delete_on_close=delete_on_close,
56
+ loop=loop,
57
+ executor=executor,
58
+ )
59
+ )
60
+
61
+ else:
62
+
63
+ def NamedTemporaryFile(
64
+ mode="w+b",
65
+ buffering=-1,
66
+ encoding=None,
67
+ newline=None,
68
+ suffix=None,
69
+ prefix=None,
70
+ dir=None,
71
+ delete=True,
72
+ loop=None,
73
+ executor=None,
74
+ ):
75
+ """Async open a named temporary file"""
76
+ return AiofilesContextManager(
77
+ _temporary_file(
78
+ named=True,
79
+ mode=mode,
80
+ buffering=buffering,
81
+ encoding=encoding,
82
+ newline=newline,
83
+ suffix=suffix,
84
+ prefix=prefix,
85
+ dir=dir,
86
+ delete=delete,
87
+ loop=loop,
88
+ executor=executor,
89
+ )
90
+ )
91
+
92
+
93
+ def TemporaryFile(
94
+ mode="w+b",
95
+ buffering=-1,
96
+ encoding=None,
97
+ newline=None,
98
+ suffix=None,
99
+ prefix=None,
100
+ dir=None,
101
+ loop=None,
102
+ executor=None,
103
+ ):
104
+ """Async open an unnamed temporary file"""
105
+ return AiofilesContextManager(
106
+ _temporary_file(
107
+ named=False,
108
+ mode=mode,
109
+ buffering=buffering,
110
+ encoding=encoding,
111
+ newline=newline,
112
+ suffix=suffix,
113
+ prefix=prefix,
114
+ dir=dir,
115
+ loop=loop,
116
+ executor=executor,
117
+ )
118
+ )
119
+
120
+
121
+ def SpooledTemporaryFile(
122
+ max_size=0,
123
+ mode="w+b",
124
+ buffering=-1,
125
+ encoding=None,
126
+ newline=None,
127
+ suffix=None,
128
+ prefix=None,
129
+ dir=None,
130
+ loop=None,
131
+ executor=None,
132
+ ):
133
+ """Async open a spooled temporary file"""
134
+ return AiofilesContextManager(
135
+ _spooled_temporary_file(
136
+ max_size=max_size,
137
+ mode=mode,
138
+ buffering=buffering,
139
+ encoding=encoding,
140
+ newline=newline,
141
+ suffix=suffix,
142
+ prefix=prefix,
143
+ dir=dir,
144
+ loop=loop,
145
+ executor=executor,
146
+ )
147
+ )
148
+
149
+
150
+ def TemporaryDirectory(suffix=None, prefix=None, dir=None, loop=None, executor=None):
151
+ """Async open a temporary directory"""
152
+ return AiofilesContextManagerTempDir(
153
+ _temporary_directory(
154
+ suffix=suffix, prefix=prefix, dir=dir, loop=loop, executor=executor
155
+ )
156
+ )
157
+
158
+
159
+ # =========================================================
160
+ # Internal coroutines to open new temp files/directories
161
+ # =========================================================
162
+ if sys.version_info >= (3, 12):
163
+
164
+ async def _temporary_file(
165
+ named=True,
166
+ mode="w+b",
167
+ buffering=-1,
168
+ encoding=None,
169
+ newline=None,
170
+ suffix=None,
171
+ prefix=None,
172
+ dir=None,
173
+ delete=True,
174
+ delete_on_close=True,
175
+ loop=None,
176
+ executor=None,
177
+ max_size=0,
178
+ ):
179
+ """Async method to open a temporary file with async interface"""
180
+ if loop is None:
181
+ loop = asyncio.get_running_loop()
182
+
183
+ if named:
184
+ cb = partial(
185
+ syncNamedTemporaryFile,
186
+ mode=mode,
187
+ buffering=buffering,
188
+ encoding=encoding,
189
+ newline=newline,
190
+ suffix=suffix,
191
+ prefix=prefix,
192
+ dir=dir,
193
+ delete=delete,
194
+ delete_on_close=delete_on_close,
195
+ )
196
+ else:
197
+ cb = partial(
198
+ syncTemporaryFile,
199
+ mode=mode,
200
+ buffering=buffering,
201
+ encoding=encoding,
202
+ newline=newline,
203
+ suffix=suffix,
204
+ prefix=prefix,
205
+ dir=dir,
206
+ )
207
+
208
+ f = await loop.run_in_executor(executor, cb)
209
+
210
+ # Wrap based on type of underlying IO object
211
+ if type(f) is syncTemporaryFileWrapper:
212
+ # _TemporaryFileWrapper was used (named files)
213
+ result = wrap(f.file, f, loop=loop, executor=executor)
214
+ result._closer = f._closer
215
+ return result
216
+ else:
217
+ # IO object was returned directly without wrapper
218
+ return wrap(f, f, loop=loop, executor=executor)
219
+
220
+ else:
221
+
222
+ async def _temporary_file(
223
+ named=True,
224
+ mode="w+b",
225
+ buffering=-1,
226
+ encoding=None,
227
+ newline=None,
228
+ suffix=None,
229
+ prefix=None,
230
+ dir=None,
231
+ delete=True,
232
+ loop=None,
233
+ executor=None,
234
+ max_size=0,
235
+ ):
236
+ """Async method to open a temporary file with async interface"""
237
+ if loop is None:
238
+ loop = asyncio.get_running_loop()
239
+
240
+ if named:
241
+ cb = partial(
242
+ syncNamedTemporaryFile,
243
+ mode=mode,
244
+ buffering=buffering,
245
+ encoding=encoding,
246
+ newline=newline,
247
+ suffix=suffix,
248
+ prefix=prefix,
249
+ dir=dir,
250
+ delete=delete,
251
+ )
252
+ else:
253
+ cb = partial(
254
+ syncTemporaryFile,
255
+ mode=mode,
256
+ buffering=buffering,
257
+ encoding=encoding,
258
+ newline=newline,
259
+ suffix=suffix,
260
+ prefix=prefix,
261
+ dir=dir,
262
+ )
263
+
264
+ f = await loop.run_in_executor(executor, cb)
265
+
266
+ # Wrap based on type of underlying IO object
267
+ if type(f) is syncTemporaryFileWrapper:
268
+ # _TemporaryFileWrapper was used (named files)
269
+ result = wrap(f.file, f, loop=loop, executor=executor)
270
+ # add delete property
271
+ result.delete = f.delete
272
+ return result
273
+ else:
274
+ # IO object was returned directly without wrapper
275
+ return wrap(f, f, loop=loop, executor=executor)
276
+
277
+
278
+ async def _spooled_temporary_file(
279
+ max_size=0,
280
+ mode="w+b",
281
+ buffering=-1,
282
+ encoding=None,
283
+ newline=None,
284
+ suffix=None,
285
+ prefix=None,
286
+ dir=None,
287
+ loop=None,
288
+ executor=None,
289
+ ):
290
+ """Open a spooled temporary file with async interface"""
291
+ if loop is None:
292
+ loop = asyncio.get_running_loop()
293
+
294
+ cb = partial(
295
+ syncSpooledTemporaryFile,
296
+ max_size=max_size,
297
+ mode=mode,
298
+ buffering=buffering,
299
+ encoding=encoding,
300
+ newline=newline,
301
+ suffix=suffix,
302
+ prefix=prefix,
303
+ dir=dir,
304
+ )
305
+
306
+ f = await loop.run_in_executor(executor, cb)
307
+
308
+ # Single interface provided by SpooledTemporaryFile for all modes
309
+ return AsyncSpooledTemporaryFile(f, loop=loop, executor=executor)
310
+
311
+
312
+ async def _temporary_directory(
313
+ suffix=None, prefix=None, dir=None, loop=None, executor=None
314
+ ):
315
+ """Async method to open a temporary directory with async interface"""
316
+ if loop is None:
317
+ loop = asyncio.get_running_loop()
318
+
319
+ cb = partial(syncTemporaryDirectory, suffix, prefix, dir)
320
+ f = await loop.run_in_executor(executor, cb)
321
+
322
+ return AsyncTemporaryDirectory(f, loop=loop, executor=executor)
323
+
324
+
325
+ class AiofilesContextManagerTempDir(AiofilesContextManager):
326
+ """With returns the directory location, not the object (matching sync lib)"""
327
+
328
+ async def __aenter__(self):
329
+ self._obj = await self._coro
330
+ return self._obj.name
331
+
332
+
333
+ @singledispatch
334
+ def wrap(base_io_obj, file, *, loop=None, executor=None):
335
+ """Wrap the object with interface based on type of underlying IO"""
336
+ raise TypeError("Unsupported IO type: {}".format(base_io_obj))
337
+
338
+
339
+ @wrap.register(TextIOBase)
340
+ def _(base_io_obj, file, *, loop=None, executor=None):
341
+ return AsyncTextIOWrapper(file, loop=loop, executor=executor)
342
+
343
+
344
+ @wrap.register(BufferedWriter)
345
+ def _(base_io_obj, file, *, loop=None, executor=None):
346
+ return AsyncBufferedIOBase(file, loop=loop, executor=executor)
347
+
348
+
349
+ @wrap.register(BufferedReader)
350
+ @wrap.register(BufferedRandom)
351
+ def _(base_io_obj, file, *, loop=None, executor=None):
352
+ return AsyncBufferedReader(file, loop=loop, executor=executor)
353
+
354
+
355
+ @wrap.register(FileIO)
356
+ def _(base_io_obj, file, *, loop=None, executor=None):
357
+ return AsyncFileIO(file, loop=loop, executor=executor)
gtm/lib/python3.12/site-packages/aiofiles/tempfile/__pycache__/__init__.cpython-312.pyc ADDED
Binary file (8.39 kB). View file
 
gtm/lib/python3.12/site-packages/aiofiles/tempfile/__pycache__/temptypes.cpython-312.pyc ADDED
Binary file (3.75 kB). View file
 
gtm/lib/python3.12/site-packages/aiofiles/tempfile/temptypes.py ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Async wrappers for spooled temp files and temp directory objects"""
2
+ from functools import partial
3
+
4
+ from ..base import AsyncBase
5
+ from ..threadpool.utils import (
6
+ cond_delegate_to_executor,
7
+ delegate_to_executor,
8
+ proxy_property_directly,
9
+ )
10
+
11
+
12
+ @delegate_to_executor("fileno", "rollover")
13
+ @cond_delegate_to_executor(
14
+ "close",
15
+ "flush",
16
+ "isatty",
17
+ "read",
18
+ "readline",
19
+ "readlines",
20
+ "seek",
21
+ "tell",
22
+ "truncate",
23
+ )
24
+ @proxy_property_directly("closed", "encoding", "mode", "name", "newlines")
25
+ class AsyncSpooledTemporaryFile(AsyncBase):
26
+ """Async wrapper for SpooledTemporaryFile class"""
27
+
28
+ async def _check(self):
29
+ if self._file._rolled:
30
+ return
31
+ max_size = self._file._max_size
32
+ if max_size and self._file.tell() > max_size:
33
+ await self.rollover()
34
+
35
+ async def write(self, s):
36
+ """Implementation to anticipate rollover"""
37
+ if self._file._rolled:
38
+ cb = partial(self._file.write, s)
39
+ return await self._loop.run_in_executor(self._executor, cb)
40
+ else:
41
+ file = self._file._file # reference underlying base IO object
42
+ rv = file.write(s)
43
+ await self._check()
44
+ return rv
45
+
46
+ async def writelines(self, iterable):
47
+ """Implementation to anticipate rollover"""
48
+ if self._file._rolled:
49
+ cb = partial(self._file.writelines, iterable)
50
+ return await self._loop.run_in_executor(self._executor, cb)
51
+ else:
52
+ file = self._file._file # reference underlying base IO object
53
+ rv = file.writelines(iterable)
54
+ await self._check()
55
+ return rv
56
+
57
+
58
+ @delegate_to_executor("cleanup")
59
+ @proxy_property_directly("name")
60
+ class AsyncTemporaryDirectory:
61
+ """Async wrapper for TemporaryDirectory class"""
62
+
63
+ def __init__(self, file, loop, executor):
64
+ self._file = file
65
+ self._loop = loop
66
+ self._executor = executor
67
+
68
+ async def close(self):
69
+ await self.cleanup()
gtm/lib/python3.12/site-packages/aiofiles/threadpool/__init__.py ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Handle files using a thread pool executor."""
2
+ import asyncio
3
+ import sys
4
+ from functools import partial, singledispatch
5
+ from io import (
6
+ BufferedIOBase,
7
+ BufferedRandom,
8
+ BufferedReader,
9
+ BufferedWriter,
10
+ FileIO,
11
+ TextIOBase,
12
+ )
13
+ from types import coroutine
14
+
15
+ from ..base import AiofilesContextManager
16
+ from .binary import (
17
+ AsyncBufferedIOBase,
18
+ AsyncBufferedReader,
19
+ AsyncFileIO,
20
+ AsyncIndirectBufferedIOBase,
21
+ )
22
+ from .text import AsyncTextIndirectIOWrapper, AsyncTextIOWrapper
23
+
24
+ sync_open = open
25
+
26
+ __all__ = (
27
+ "open",
28
+ "stdin",
29
+ "stdout",
30
+ "stderr",
31
+ "stdin_bytes",
32
+ "stdout_bytes",
33
+ "stderr_bytes",
34
+ )
35
+
36
+
37
+ def open(
38
+ file,
39
+ mode="r",
40
+ buffering=-1,
41
+ encoding=None,
42
+ errors=None,
43
+ newline=None,
44
+ closefd=True,
45
+ opener=None,
46
+ *,
47
+ loop=None,
48
+ executor=None,
49
+ ):
50
+ return AiofilesContextManager(
51
+ _open(
52
+ file,
53
+ mode=mode,
54
+ buffering=buffering,
55
+ encoding=encoding,
56
+ errors=errors,
57
+ newline=newline,
58
+ closefd=closefd,
59
+ opener=opener,
60
+ loop=loop,
61
+ executor=executor,
62
+ )
63
+ )
64
+
65
+
66
+ @coroutine
67
+ def _open(
68
+ file,
69
+ mode="r",
70
+ buffering=-1,
71
+ encoding=None,
72
+ errors=None,
73
+ newline=None,
74
+ closefd=True,
75
+ opener=None,
76
+ *,
77
+ loop=None,
78
+ executor=None,
79
+ ):
80
+ """Open an asyncio file."""
81
+ if loop is None:
82
+ loop = asyncio.get_running_loop()
83
+ cb = partial(
84
+ sync_open,
85
+ file,
86
+ mode=mode,
87
+ buffering=buffering,
88
+ encoding=encoding,
89
+ errors=errors,
90
+ newline=newline,
91
+ closefd=closefd,
92
+ opener=opener,
93
+ )
94
+ f = yield from loop.run_in_executor(executor, cb)
95
+
96
+ return wrap(f, loop=loop, executor=executor)
97
+
98
+
99
+ @singledispatch
100
+ def wrap(file, *, loop=None, executor=None):
101
+ raise TypeError("Unsupported io type: {}.".format(file))
102
+
103
+
104
+ @wrap.register(TextIOBase)
105
+ def _(file, *, loop=None, executor=None):
106
+ return AsyncTextIOWrapper(file, loop=loop, executor=executor)
107
+
108
+
109
+ @wrap.register(BufferedWriter)
110
+ @wrap.register(BufferedIOBase)
111
+ def _(file, *, loop=None, executor=None):
112
+ return AsyncBufferedIOBase(file, loop=loop, executor=executor)
113
+
114
+
115
+ @wrap.register(BufferedReader)
116
+ @wrap.register(BufferedRandom)
117
+ def _(file, *, loop=None, executor=None):
118
+ return AsyncBufferedReader(file, loop=loop, executor=executor)
119
+
120
+
121
+ @wrap.register(FileIO)
122
+ def _(file, *, loop=None, executor=None):
123
+ return AsyncFileIO(file, loop=loop, executor=executor)
124
+
125
+
126
+ stdin = AsyncTextIndirectIOWrapper("sys.stdin", None, None, indirect=lambda: sys.stdin)
127
+ stdout = AsyncTextIndirectIOWrapper(
128
+ "sys.stdout", None, None, indirect=lambda: sys.stdout
129
+ )
130
+ stderr = AsyncTextIndirectIOWrapper(
131
+ "sys.stderr", None, None, indirect=lambda: sys.stderr
132
+ )
133
+ stdin_bytes = AsyncIndirectBufferedIOBase(
134
+ "sys.stdin.buffer", None, None, indirect=lambda: sys.stdin.buffer
135
+ )
136
+ stdout_bytes = AsyncIndirectBufferedIOBase(
137
+ "sys.stdout.buffer", None, None, indirect=lambda: sys.stdout.buffer
138
+ )
139
+ stderr_bytes = AsyncIndirectBufferedIOBase(
140
+ "sys.stderr.buffer", None, None, indirect=lambda: sys.stderr.buffer
141
+ )
gtm/lib/python3.12/site-packages/aiofiles/threadpool/__pycache__/__init__.cpython-312.pyc ADDED
Binary file (4.58 kB). View file
 
gtm/lib/python3.12/site-packages/aiofiles/threadpool/__pycache__/binary.cpython-312.pyc ADDED
Binary file (2.89 kB). View file
 
gtm/lib/python3.12/site-packages/aiofiles/threadpool/__pycache__/text.cpython-312.pyc ADDED
Binary file (1.54 kB). View file
 
gtm/lib/python3.12/site-packages/aiofiles/threadpool/__pycache__/utils.cpython-312.pyc ADDED
Binary file (3.93 kB). View file
 
gtm/lib/python3.12/site-packages/aiofiles/threadpool/binary.py ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from ..base import AsyncBase, AsyncIndirectBase
2
+ from .utils import delegate_to_executor, proxy_method_directly, proxy_property_directly
3
+
4
+
5
+ @delegate_to_executor(
6
+ "close",
7
+ "flush",
8
+ "isatty",
9
+ "read",
10
+ "read1",
11
+ "readinto",
12
+ "readline",
13
+ "readlines",
14
+ "seek",
15
+ "seekable",
16
+ "tell",
17
+ "truncate",
18
+ "writable",
19
+ "write",
20
+ "writelines",
21
+ )
22
+ @proxy_method_directly("detach", "fileno", "readable")
23
+ @proxy_property_directly("closed", "raw", "name", "mode")
24
+ class AsyncBufferedIOBase(AsyncBase):
25
+ """The asyncio executor version of io.BufferedWriter and BufferedIOBase."""
26
+
27
+
28
+ @delegate_to_executor("peek")
29
+ class AsyncBufferedReader(AsyncBufferedIOBase):
30
+ """The asyncio executor version of io.BufferedReader and Random."""
31
+
32
+
33
+ @delegate_to_executor(
34
+ "close",
35
+ "flush",
36
+ "isatty",
37
+ "read",
38
+ "readall",
39
+ "readinto",
40
+ "readline",
41
+ "readlines",
42
+ "seek",
43
+ "seekable",
44
+ "tell",
45
+ "truncate",
46
+ "writable",
47
+ "write",
48
+ "writelines",
49
+ )
50
+ @proxy_method_directly("fileno", "readable")
51
+ @proxy_property_directly("closed", "name", "mode")
52
+ class AsyncFileIO(AsyncBase):
53
+ """The asyncio executor version of io.FileIO."""
54
+
55
+
56
+ @delegate_to_executor(
57
+ "close",
58
+ "flush",
59
+ "isatty",
60
+ "read",
61
+ "read1",
62
+ "readinto",
63
+ "readline",
64
+ "readlines",
65
+ "seek",
66
+ "seekable",
67
+ "tell",
68
+ "truncate",
69
+ "writable",
70
+ "write",
71
+ "writelines",
72
+ )
73
+ @proxy_method_directly("detach", "fileno", "readable")
74
+ @proxy_property_directly("closed", "raw", "name", "mode")
75
+ class AsyncIndirectBufferedIOBase(AsyncIndirectBase):
76
+ """The indirect asyncio executor version of io.BufferedWriter and BufferedIOBase."""
77
+
78
+
79
+ @delegate_to_executor("peek")
80
+ class AsyncIndirectBufferedReader(AsyncIndirectBufferedIOBase):
81
+ """The indirect asyncio executor version of io.BufferedReader and Random."""
82
+
83
+
84
+ @delegate_to_executor(
85
+ "close",
86
+ "flush",
87
+ "isatty",
88
+ "read",
89
+ "readall",
90
+ "readinto",
91
+ "readline",
92
+ "readlines",
93
+ "seek",
94
+ "seekable",
95
+ "tell",
96
+ "truncate",
97
+ "writable",
98
+ "write",
99
+ "writelines",
100
+ )
101
+ @proxy_method_directly("fileno", "readable")
102
+ @proxy_property_directly("closed", "name", "mode")
103
+ class AsyncIndirectFileIO(AsyncIndirectBase):
104
+ """The indirect asyncio executor version of io.FileIO."""
gtm/lib/python3.12/site-packages/aiofiles/threadpool/text.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from ..base import AsyncBase, AsyncIndirectBase
2
+ from .utils import delegate_to_executor, proxy_method_directly, proxy_property_directly
3
+
4
+
5
+ @delegate_to_executor(
6
+ "close",
7
+ "flush",
8
+ "isatty",
9
+ "read",
10
+ "readable",
11
+ "readline",
12
+ "readlines",
13
+ "seek",
14
+ "seekable",
15
+ "tell",
16
+ "truncate",
17
+ "write",
18
+ "writable",
19
+ "writelines",
20
+ )
21
+ @proxy_method_directly("detach", "fileno", "readable")
22
+ @proxy_property_directly(
23
+ "buffer",
24
+ "closed",
25
+ "encoding",
26
+ "errors",
27
+ "line_buffering",
28
+ "newlines",
29
+ "name",
30
+ "mode",
31
+ )
32
+ class AsyncTextIOWrapper(AsyncBase):
33
+ """The asyncio executor version of io.TextIOWrapper."""
34
+
35
+
36
+ @delegate_to_executor(
37
+ "close",
38
+ "flush",
39
+ "isatty",
40
+ "read",
41
+ "readable",
42
+ "readline",
43
+ "readlines",
44
+ "seek",
45
+ "seekable",
46
+ "tell",
47
+ "truncate",
48
+ "write",
49
+ "writable",
50
+ "writelines",
51
+ )
52
+ @proxy_method_directly("detach", "fileno", "readable")
53
+ @proxy_property_directly(
54
+ "buffer",
55
+ "closed",
56
+ "encoding",
57
+ "errors",
58
+ "line_buffering",
59
+ "newlines",
60
+ "name",
61
+ "mode",
62
+ )
63
+ class AsyncTextIndirectIOWrapper(AsyncIndirectBase):
64
+ """The indirect asyncio executor version of io.TextIOWrapper."""
gtm/lib/python3.12/site-packages/aiofiles/threadpool/utils.py ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import functools
2
+
3
+
4
+ def delegate_to_executor(*attrs):
5
+ def cls_builder(cls):
6
+ for attr_name in attrs:
7
+ setattr(cls, attr_name, _make_delegate_method(attr_name))
8
+ return cls
9
+
10
+ return cls_builder
11
+
12
+
13
+ def proxy_method_directly(*attrs):
14
+ def cls_builder(cls):
15
+ for attr_name in attrs:
16
+ setattr(cls, attr_name, _make_proxy_method(attr_name))
17
+ return cls
18
+
19
+ return cls_builder
20
+
21
+
22
+ def proxy_property_directly(*attrs):
23
+ def cls_builder(cls):
24
+ for attr_name in attrs:
25
+ setattr(cls, attr_name, _make_proxy_property(attr_name))
26
+ return cls
27
+
28
+ return cls_builder
29
+
30
+
31
+ def cond_delegate_to_executor(*attrs):
32
+ def cls_builder(cls):
33
+ for attr_name in attrs:
34
+ setattr(cls, attr_name, _make_cond_delegate_method(attr_name))
35
+ return cls
36
+
37
+ return cls_builder
38
+
39
+
40
+ def _make_delegate_method(attr_name):
41
+ async def method(self, *args, **kwargs):
42
+ cb = functools.partial(getattr(self._file, attr_name), *args, **kwargs)
43
+ return await self._loop.run_in_executor(self._executor, cb)
44
+
45
+ return method
46
+
47
+
48
+ def _make_proxy_method(attr_name):
49
+ def method(self, *args, **kwargs):
50
+ return getattr(self._file, attr_name)(*args, **kwargs)
51
+
52
+ return method
53
+
54
+
55
+ def _make_proxy_property(attr_name):
56
+ def proxy_property(self):
57
+ return getattr(self._file, attr_name)
58
+
59
+ return property(proxy_property)
60
+
61
+
62
+ def _make_cond_delegate_method(attr_name):
63
+ """For spooled temp files, delegate only if rolled to file object"""
64
+
65
+ async def method(self, *args, **kwargs):
66
+ if self._file._rolled:
67
+ cb = functools.partial(getattr(self._file, attr_name), *args, **kwargs)
68
+ return await self._loop.run_in_executor(self._executor, cb)
69
+ else:
70
+ return getattr(self._file, attr_name)(*args, **kwargs)
71
+
72
+ return method