Upload 5542 files
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitattributes +8 -0
- .venv/.gitignore +2 -0
- .venv/Lib/site-packages/Faker-24.4.0.dist-info/INSTALLER +1 -0
- .venv/Lib/site-packages/Faker-24.4.0.dist-info/LICENSE.txt +19 -0
- .venv/Lib/site-packages/Faker-24.4.0.dist-info/METADATA +523 -0
- .venv/Lib/site-packages/Faker-24.4.0.dist-info/RECORD +0 -0
- .venv/Lib/site-packages/Faker-24.4.0.dist-info/REQUESTED +0 -0
- .venv/Lib/site-packages/Faker-24.4.0.dist-info/WHEEL +5 -0
- .venv/Lib/site-packages/Faker-24.4.0.dist-info/entry_points.txt +5 -0
- .venv/Lib/site-packages/Faker-24.4.0.dist-info/top_level.txt +1 -0
- .venv/Lib/site-packages/Faker-24.4.0.dist-info/zip-safe +1 -0
- .venv/Lib/site-packages/GitPython-3.1.43.dist-info/AUTHORS +58 -0
- .venv/Lib/site-packages/GitPython-3.1.43.dist-info/INSTALLER +1 -0
- .venv/Lib/site-packages/GitPython-3.1.43.dist-info/LICENSE +29 -0
- .venv/Lib/site-packages/GitPython-3.1.43.dist-info/METADATA +297 -0
- .venv/Lib/site-packages/GitPython-3.1.43.dist-info/RECORD +82 -0
- .venv/Lib/site-packages/GitPython-3.1.43.dist-info/WHEEL +5 -0
- .venv/Lib/site-packages/GitPython-3.1.43.dist-info/top_level.txt +1 -0
- .venv/Lib/site-packages/Jinja2-3.1.3.dist-info/INSTALLER +1 -0
- .venv/Lib/site-packages/Jinja2-3.1.3.dist-info/LICENSE.rst +28 -0
- .venv/Lib/site-packages/Jinja2-3.1.3.dist-info/METADATA +105 -0
- .venv/Lib/site-packages/Jinja2-3.1.3.dist-info/RECORD +58 -0
- .venv/Lib/site-packages/Jinja2-3.1.3.dist-info/WHEEL +5 -0
- .venv/Lib/site-packages/Jinja2-3.1.3.dist-info/entry_points.txt +2 -0
- .venv/Lib/site-packages/Jinja2-3.1.3.dist-info/top_level.txt +1 -0
- .venv/Lib/site-packages/Markdown-3.6.dist-info/INSTALLER +1 -0
- .venv/Lib/site-packages/Markdown-3.6.dist-info/LICENSE.md +30 -0
- .venv/Lib/site-packages/Markdown-3.6.dist-info/METADATA +146 -0
- .venv/Lib/site-packages/Markdown-3.6.dist-info/RECORD +74 -0
- .venv/Lib/site-packages/Markdown-3.6.dist-info/WHEEL +5 -0
- .venv/Lib/site-packages/Markdown-3.6.dist-info/entry_points.txt +22 -0
- .venv/Lib/site-packages/Markdown-3.6.dist-info/top_level.txt +1 -0
- .venv/Lib/site-packages/absl/__init__.py +13 -0
- .venv/Lib/site-packages/absl/__pycache__/__init__.cpython-312.pyc +0 -0
- .venv/Lib/site-packages/absl/__pycache__/app.cpython-312.pyc +0 -0
- .venv/Lib/site-packages/absl/__pycache__/command_name.cpython-312.pyc +0 -0
- .venv/Lib/site-packages/absl/app.py +480 -0
- .venv/Lib/site-packages/absl/app.pyi +99 -0
- .venv/Lib/site-packages/absl/command_name.py +63 -0
- .venv/Lib/site-packages/absl/flags/__init__.py +225 -0
- .venv/Lib/site-packages/absl/flags/__pycache__/__init__.cpython-312.pyc +0 -0
- .venv/Lib/site-packages/absl/flags/__pycache__/_argument_parser.cpython-312.pyc +0 -0
- .venv/Lib/site-packages/absl/flags/__pycache__/_defines.cpython-312.pyc +0 -0
- .venv/Lib/site-packages/absl/flags/__pycache__/_exceptions.cpython-312.pyc +0 -0
- .venv/Lib/site-packages/absl/flags/__pycache__/_flag.cpython-312.pyc +0 -0
- .venv/Lib/site-packages/absl/flags/__pycache__/_flagvalues.cpython-312.pyc +0 -0
- .venv/Lib/site-packages/absl/flags/__pycache__/_helpers.cpython-312.pyc +0 -0
- .venv/Lib/site-packages/absl/flags/__pycache__/_validators.cpython-312.pyc +0 -0
- .venv/Lib/site-packages/absl/flags/__pycache__/_validators_classes.cpython-312.pyc +0 -0
- .venv/Lib/site-packages/absl/flags/__pycache__/argparse_flags.cpython-312.pyc +0 -0
.gitattributes
CHANGED
@@ -63,3 +63,11 @@ models/word-clas/en/SeqRNN/Classifier.data-00000-of-00001 filter=lfs diff=lfs me
|
|
63 |
models/word-clas/en/SeqRNN/Classifier.meta filter=lfs diff=lfs merge=lfs -text
|
64 |
models/word-clas/en/WordClassifier2.data-00000-of-00001 filter=lfs diff=lfs merge=lfs -text
|
65 |
models/word-clas/en/WordClassifier2.meta filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
models/word-clas/en/SeqRNN/Classifier.meta filter=lfs diff=lfs merge=lfs -text
|
64 |
models/word-clas/en/WordClassifier2.data-00000-of-00001 filter=lfs diff=lfs merge=lfs -text
|
65 |
models/word-clas/en/WordClassifier2.meta filter=lfs diff=lfs merge=lfs -text
|
66 |
+
.venv/Lib/site-packages/altair/vegalite/v5/schema/__pycache__/channels.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
67 |
+
.venv/Lib/site-packages/altair/vegalite/v5/schema/__pycache__/core.cpython-312.pyc filter=lfs diff=lfs merge=lfs -text
|
68 |
+
.venv/Lib/site-packages/clang/native/libclang.dll filter=lfs diff=lfs merge=lfs -text
|
69 |
+
.venv/Lib/site-packages/cv2/cv2.pyd filter=lfs diff=lfs merge=lfs -text
|
70 |
+
.venv/Lib/site-packages/cv2/opencv_videoio_ffmpeg490_64.dll filter=lfs diff=lfs merge=lfs -text
|
71 |
+
.venv/Lib/site-packages/grpc/_cython/cygrpc.cp312-win_amd64.pyd filter=lfs diff=lfs merge=lfs -text
|
72 |
+
.venv/Lib/site-packages/h5py/hdf5.dll filter=lfs diff=lfs merge=lfs -text
|
73 |
+
.venv/Lib/site-packages/llvmlite/binding/llvmlite.dll filter=lfs diff=lfs merge=lfs -text
|
.venv/.gitignore
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
# created by virtualenv automatically
|
2 |
+
*
|
.venv/Lib/site-packages/Faker-24.4.0.dist-info/INSTALLER
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
pip
|
.venv/Lib/site-packages/Faker-24.4.0.dist-info/LICENSE.txt
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Copyright (c) 2012 Daniele Faraglia
|
2 |
+
|
3 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4 |
+
of this software and associated documentation files (the "Software"), to deal
|
5 |
+
in the Software without restriction, including without limitation the rights
|
6 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7 |
+
copies of the Software, and to permit persons to whom the Software is
|
8 |
+
furnished to do so, subject to the following conditions:
|
9 |
+
|
10 |
+
The above copyright notice and this permission notice shall be included in
|
11 |
+
all copies or substantial portions of the Software.
|
12 |
+
|
13 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19 |
+
THE SOFTWARE.
|
.venv/Lib/site-packages/Faker-24.4.0.dist-info/METADATA
ADDED
@@ -0,0 +1,523 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Metadata-Version: 2.1
|
2 |
+
Name: Faker
|
3 |
+
Version: 24.4.0
|
4 |
+
Summary: Faker is a Python package that generates fake data for you.
|
5 |
+
Home-page: https://github.com/joke2k/faker
|
6 |
+
Author: joke2k
|
7 |
+
Author-email: [email protected]
|
8 |
+
License: MIT License
|
9 |
+
Project-URL: Bug Tracker, https://github.com/joke2k/faker/issues
|
10 |
+
Project-URL: Changes, https://github.com/joke2k/faker/blob/master/CHANGELOG.md
|
11 |
+
Project-URL: Documentation, http://faker.rtfd.org/
|
12 |
+
Project-URL: Source Code, https://github.com/joke2k/faker
|
13 |
+
Keywords: faker fixtures data test mock generator
|
14 |
+
Platform: any
|
15 |
+
Classifier: Development Status :: 5 - Production/Stable
|
16 |
+
Classifier: Environment :: Console
|
17 |
+
Classifier: Intended Audience :: Developers
|
18 |
+
Classifier: Programming Language :: Python
|
19 |
+
Classifier: Programming Language :: Python :: 3
|
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: Programming Language :: Python :: Implementation :: CPython
|
27 |
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
28 |
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
29 |
+
Classifier: Topic :: Software Development :: Testing
|
30 |
+
Classifier: Topic :: Utilities
|
31 |
+
Classifier: License :: OSI Approved :: MIT License
|
32 |
+
Requires-Python: >=3.8
|
33 |
+
License-File: LICENSE.txt
|
34 |
+
Requires-Dist: python-dateutil (>=2.4)
|
35 |
+
Requires-Dist: typing-extensions (>=3.10.0.1) ; python_version <= "3.8"
|
36 |
+
|
37 |
+
*Faker* is a Python package that generates fake data for you. Whether
|
38 |
+
you need to bootstrap your database, create good-looking XML documents,
|
39 |
+
fill-in your persistence to stress test it, or anonymize data taken from
|
40 |
+
a production service, Faker is for you.
|
41 |
+
|
42 |
+
Faker is heavily inspired by `PHP Faker`_, `Perl Faker`_, and by `Ruby Faker`_.
|
43 |
+
|
44 |
+
----
|
45 |
+
|
46 |
+
::
|
47 |
+
|
48 |
+
_|_|_|_| _|
|
49 |
+
_| _|_|_| _| _| _|_| _| _|_|
|
50 |
+
_|_|_| _| _| _|_| _|_|_|_| _|_|
|
51 |
+
_| _| _| _| _| _| _|
|
52 |
+
_| _|_|_| _| _| _|_|_| _|
|
53 |
+
|
54 |
+
|pypi| |build| |coverage| |license|
|
55 |
+
|
56 |
+
----
|
57 |
+
|
58 |
+
Compatibility
|
59 |
+
-------------
|
60 |
+
|
61 |
+
Starting from version ``4.0.0``, ``Faker`` dropped support for Python 2 and from version ``5.0.0``
|
62 |
+
only supports Python 3.7 and above. If you still need Python 2 compatibility, please install version ``3.0.1`` in the
|
63 |
+
meantime, and please consider updating your codebase to support Python 3 so you can enjoy the
|
64 |
+
latest features ``Faker`` has to offer. Please see the `extended docs`_ for more details, especially
|
65 |
+
if you are upgrading from version ``2.0.4`` and below as there might be breaking changes.
|
66 |
+
|
67 |
+
This package was also previously called ``fake-factory`` which was already deprecated by the end
|
68 |
+
of 2016, and much has changed since then, so please ensure that your project and its dependencies
|
69 |
+
do not depend on the old package.
|
70 |
+
|
71 |
+
Basic Usage
|
72 |
+
-----------
|
73 |
+
|
74 |
+
Install with pip:
|
75 |
+
|
76 |
+
.. code:: bash
|
77 |
+
|
78 |
+
pip install Faker
|
79 |
+
|
80 |
+
Use ``faker.Faker()`` to create and initialize a faker
|
81 |
+
generator, which can generate data by accessing properties named after
|
82 |
+
the type of data you want.
|
83 |
+
|
84 |
+
.. code:: python
|
85 |
+
|
86 |
+
from faker import Faker
|
87 |
+
fake = Faker()
|
88 |
+
|
89 |
+
fake.name()
|
90 |
+
# 'Lucy Cechtelar'
|
91 |
+
|
92 |
+
fake.address()
|
93 |
+
# '426 Jordy Lodge
|
94 |
+
# Cartwrightshire, SC 88120-6700'
|
95 |
+
|
96 |
+
fake.text()
|
97 |
+
# 'Sint velit eveniet. Rerum atque repellat voluptatem quia rerum. Numquam excepturi
|
98 |
+
# beatae sint laudantium consequatur. Magni occaecati itaque sint et sit tempore. Nesciunt
|
99 |
+
# amet quidem. Iusto deleniti cum autem ad quia aperiam.
|
100 |
+
# A consectetur quos aliquam. In iste aliquid et aut similique suscipit. Consequatur qui
|
101 |
+
# quaerat iste minus hic expedita. Consequuntur error magni et laboriosam. Aut aspernatur
|
102 |
+
# voluptatem sit aliquam. Dolores voluptatum est.
|
103 |
+
# Aut molestias et maxime. Fugit autem facilis quos vero. Eius quibusdam possimus est.
|
104 |
+
# Ea quaerat et quisquam. Deleniti sunt quam. Adipisci consequatur id in occaecati.
|
105 |
+
# Et sint et. Ut ducimus quod nemo ab voluptatum.'
|
106 |
+
|
107 |
+
Each call to method ``fake.name()`` yields a different (random) result.
|
108 |
+
This is because faker forwards ``faker.Generator.method_name()`` calls
|
109 |
+
to ``faker.Generator.format(method_name)``.
|
110 |
+
|
111 |
+
.. code:: python
|
112 |
+
|
113 |
+
for _ in range(10):
|
114 |
+
print(fake.name())
|
115 |
+
|
116 |
+
# 'Adaline Reichel'
|
117 |
+
# 'Dr. Santa Prosacco DVM'
|
118 |
+
# 'Noemy Vandervort V'
|
119 |
+
# 'Lexi O'Conner'
|
120 |
+
# 'Gracie Weber'
|
121 |
+
# 'Roscoe Johns'
|
122 |
+
# 'Emmett Lebsack'
|
123 |
+
# 'Keegan Thiel'
|
124 |
+
# 'Wellington Koelpin II'
|
125 |
+
# 'Ms. Karley Kiehn V'
|
126 |
+
|
127 |
+
Pytest fixtures
|
128 |
+
---------------
|
129 |
+
|
130 |
+
``Faker`` also has its own ``pytest`` plugin which provides a ``faker`` fixture you can use in your
|
131 |
+
tests. Please check out the `pytest fixture docs` to learn more.
|
132 |
+
|
133 |
+
Providers
|
134 |
+
---------
|
135 |
+
|
136 |
+
Each of the generator properties (like ``name``, ``address``, and
|
137 |
+
``lorem``) are called "fake". A faker generator has many of them,
|
138 |
+
packaged in "providers".
|
139 |
+
|
140 |
+
.. code:: python
|
141 |
+
|
142 |
+
from faker import Faker
|
143 |
+
from faker.providers import internet
|
144 |
+
|
145 |
+
fake = Faker()
|
146 |
+
fake.add_provider(internet)
|
147 |
+
|
148 |
+
print(fake.ipv4_private())
|
149 |
+
|
150 |
+
|
151 |
+
Check the `extended docs`_ for a list of `bundled providers`_ and a list of
|
152 |
+
`community providers`_.
|
153 |
+
|
154 |
+
Localization
|
155 |
+
------------
|
156 |
+
|
157 |
+
``faker.Faker`` can take a locale as an argument, to return localized
|
158 |
+
data. If no localized provider is found, the factory falls back to the
|
159 |
+
default LCID string for US english, ie: ``en_US``.
|
160 |
+
|
161 |
+
.. code:: python
|
162 |
+
|
163 |
+
from faker import Faker
|
164 |
+
fake = Faker('it_IT')
|
165 |
+
for _ in range(10):
|
166 |
+
print(fake.name())
|
167 |
+
|
168 |
+
# 'Elda Palumbo'
|
169 |
+
# 'Pacifico Giordano'
|
170 |
+
# 'Sig. Avide Guerra'
|
171 |
+
# 'Yago Amato'
|
172 |
+
# 'Eustachio Messina'
|
173 |
+
# 'Dott. Violante Lombardo'
|
174 |
+
# 'Sig. Alighieri Monti'
|
175 |
+
# 'Costanzo Costa'
|
176 |
+
# 'Nazzareno Barbieri'
|
177 |
+
# 'Max Coppola'
|
178 |
+
|
179 |
+
``faker.Faker`` also supports multiple locales. New in v3.0.0.
|
180 |
+
|
181 |
+
.. code:: python
|
182 |
+
|
183 |
+
from faker import Faker
|
184 |
+
fake = Faker(['it_IT', 'en_US', 'ja_JP'])
|
185 |
+
for _ in range(10):
|
186 |
+
print(fake.name())
|
187 |
+
|
188 |
+
# 鈴木 陽一
|
189 |
+
# Leslie Moreno
|
190 |
+
# Emma Williams
|
191 |
+
# 渡辺 裕美子
|
192 |
+
# Marcantonio Galuppi
|
193 |
+
# Martha Davis
|
194 |
+
# Kristen Turner
|
195 |
+
# 中津川 春香
|
196 |
+
# Ashley Castillo
|
197 |
+
# 山田 桃子
|
198 |
+
|
199 |
+
You can check available Faker locales in the source code, under the
|
200 |
+
providers package. The localization of Faker is an ongoing process, for
|
201 |
+
which we need your help. Please don't hesitate to create a localized
|
202 |
+
provider for your own locale and submit a Pull Request (PR).
|
203 |
+
|
204 |
+
Optimizations
|
205 |
+
-------------
|
206 |
+
The Faker constructor takes a performance-related argument called
|
207 |
+
``use_weighting``. It specifies whether to attempt to have the frequency
|
208 |
+
of values match real-world frequencies (e.g. the English name Gary would
|
209 |
+
be much more frequent than the name Lorimer). If ``use_weighting`` is ``False``,
|
210 |
+
then all items have an equal chance of being selected, and the selection
|
211 |
+
process is much faster. The default is ``True``.
|
212 |
+
|
213 |
+
Command line usage
|
214 |
+
------------------
|
215 |
+
|
216 |
+
When installed, you can invoke faker from the command-line:
|
217 |
+
|
218 |
+
.. code:: console
|
219 |
+
|
220 |
+
faker [-h] [--version] [-o output]
|
221 |
+
[-l {bg_BG,cs_CZ,...,zh_CN,zh_TW}]
|
222 |
+
[-r REPEAT] [-s SEP]
|
223 |
+
[-i {package.containing.custom_provider otherpkg.containing.custom_provider}]
|
224 |
+
[fake] [fake argument [fake argument ...]]
|
225 |
+
|
226 |
+
Where:
|
227 |
+
|
228 |
+
- ``faker``: is the script when installed in your environment, in
|
229 |
+
development you could use ``python -m faker`` instead
|
230 |
+
|
231 |
+
- ``-h``, ``--help``: shows a help message
|
232 |
+
|
233 |
+
- ``--version``: shows the program's version number
|
234 |
+
|
235 |
+
- ``-o FILENAME``: redirects the output to the specified filename
|
236 |
+
|
237 |
+
- ``-l {bg_BG,cs_CZ,...,zh_CN,zh_TW}``: allows use of a localized
|
238 |
+
provider
|
239 |
+
|
240 |
+
- ``-r REPEAT``: will generate a specified number of outputs
|
241 |
+
|
242 |
+
- ``-s SEP``: will generate the specified separator after each
|
243 |
+
generated output
|
244 |
+
|
245 |
+
- ``-i {my.custom_provider other.custom_provider}`` list of additional custom
|
246 |
+
providers to use. Note that is the import path of the package containing
|
247 |
+
your Provider class, not the custom Provider class itself.
|
248 |
+
|
249 |
+
- ``fake``: is the name of the fake to generate an output for, such as
|
250 |
+
``name``, ``address``, or ``text``
|
251 |
+
|
252 |
+
- ``[fake argument ...]``: optional arguments to pass to the fake (e.g. the
|
253 |
+
profile fake takes an optional list of comma separated field names as the
|
254 |
+
first argument)
|
255 |
+
|
256 |
+
Examples:
|
257 |
+
|
258 |
+
.. code:: console
|
259 |
+
|
260 |
+
$ faker address
|
261 |
+
968 Bahringer Garden Apt. 722
|
262 |
+
Kristinaland, NJ 09890
|
263 |
+
|
264 |
+
$ faker -l de_DE address
|
265 |
+
Samira-Niemeier-Allee 56
|
266 |
+
94812 Biedenkopf
|
267 |
+
|
268 |
+
$ faker profile ssn,birthdate
|
269 |
+
{'ssn': '628-10-1085', 'birthdate': '2008-03-29'}
|
270 |
+
|
271 |
+
$ faker -r=3 -s=";" name
|
272 |
+
Willam Kertzmann;
|
273 |
+
Josiah Maggio;
|
274 |
+
Gayla Schmitt;
|
275 |
+
|
276 |
+
How to create a Provider
|
277 |
+
------------------------
|
278 |
+
|
279 |
+
.. code:: python
|
280 |
+
|
281 |
+
from faker import Faker
|
282 |
+
fake = Faker()
|
283 |
+
|
284 |
+
# first, import a similar Provider or use the default one
|
285 |
+
from faker.providers import BaseProvider
|
286 |
+
|
287 |
+
# create new provider class
|
288 |
+
class MyProvider(BaseProvider):
|
289 |
+
def foo(self) -> str:
|
290 |
+
return 'bar'
|
291 |
+
|
292 |
+
# then add new provider to faker instance
|
293 |
+
fake.add_provider(MyProvider)
|
294 |
+
|
295 |
+
# now you can use:
|
296 |
+
fake.foo()
|
297 |
+
# 'bar'
|
298 |
+
|
299 |
+
|
300 |
+
How to create a Dynamic Provider
|
301 |
+
--------------------------------
|
302 |
+
|
303 |
+
Dynamic providers can read elements from an external source.
|
304 |
+
|
305 |
+
.. code:: python
|
306 |
+
|
307 |
+
from faker import Faker
|
308 |
+
from faker.providers import DynamicProvider
|
309 |
+
|
310 |
+
medical_professions_provider = DynamicProvider(
|
311 |
+
provider_name="medical_profession",
|
312 |
+
elements=["dr.", "doctor", "nurse", "surgeon", "clerk"],
|
313 |
+
)
|
314 |
+
|
315 |
+
fake = Faker()
|
316 |
+
|
317 |
+
# then add new provider to faker instance
|
318 |
+
fake.add_provider(medical_professions_provider)
|
319 |
+
|
320 |
+
# now you can use:
|
321 |
+
fake.medical_profession()
|
322 |
+
# 'dr.'
|
323 |
+
|
324 |
+
How to customize the Lorem Provider
|
325 |
+
-----------------------------------
|
326 |
+
|
327 |
+
You can provide your own sets of words if you don't want to use the
|
328 |
+
default lorem ipsum one. The following example shows how to do it with a list of words picked from `cakeipsum <http://www.cupcakeipsum.com/>`__ :
|
329 |
+
|
330 |
+
.. code:: python
|
331 |
+
|
332 |
+
from faker import Faker
|
333 |
+
fake = Faker()
|
334 |
+
|
335 |
+
my_word_list = [
|
336 |
+
'danish','cheesecake','sugar',
|
337 |
+
'Lollipop','wafer','Gummies',
|
338 |
+
'sesame','Jelly','beans',
|
339 |
+
'pie','bar','Ice','oat' ]
|
340 |
+
|
341 |
+
fake.sentence()
|
342 |
+
# 'Expedita at beatae voluptatibus nulla omnis.'
|
343 |
+
|
344 |
+
fake.sentence(ext_word_list=my_word_list)
|
345 |
+
# 'Oat beans oat Lollipop bar cheesecake.'
|
346 |
+
|
347 |
+
|
348 |
+
How to use with Factory Boy
|
349 |
+
---------------------------
|
350 |
+
|
351 |
+
`Factory Boy` already ships with integration with ``Faker``. Simply use the
|
352 |
+
``factory.Faker`` method of ``factory_boy``:
|
353 |
+
|
354 |
+
.. code:: python
|
355 |
+
|
356 |
+
import factory
|
357 |
+
from myapp.models import Book
|
358 |
+
|
359 |
+
class BookFactory(factory.Factory):
|
360 |
+
class Meta:
|
361 |
+
model = Book
|
362 |
+
|
363 |
+
title = factory.Faker('sentence', nb_words=4)
|
364 |
+
author_name = factory.Faker('name')
|
365 |
+
|
366 |
+
Accessing the `random` instance
|
367 |
+
-------------------------------
|
368 |
+
|
369 |
+
The ``.random`` property on the generator returns the instance of
|
370 |
+
``random.Random`` used to generate the values:
|
371 |
+
|
372 |
+
.. code:: python
|
373 |
+
|
374 |
+
from faker import Faker
|
375 |
+
fake = Faker()
|
376 |
+
fake.random
|
377 |
+
fake.random.getstate()
|
378 |
+
|
379 |
+
By default all generators share the same instance of ``random.Random``, which
|
380 |
+
can be accessed with ``from faker.generator import random``. Using this may
|
381 |
+
be useful for plugins that want to affect all faker instances.
|
382 |
+
|
383 |
+
Unique values
|
384 |
+
-------------
|
385 |
+
|
386 |
+
Through use of the ``.unique`` property on the generator, you can guarantee
|
387 |
+
that any generated values are unique for this specific instance.
|
388 |
+
|
389 |
+
.. code:: python
|
390 |
+
|
391 |
+
from faker import Faker
|
392 |
+
fake = Faker()
|
393 |
+
names = [fake.unique.first_name() for i in range(500)]
|
394 |
+
assert len(set(names)) == len(names)
|
395 |
+
|
396 |
+
Calling ``fake.unique.clear()`` clears the already seen values.
|
397 |
+
Note, to avoid infinite loops, after a number of attempts to find a unique
|
398 |
+
value, Faker will throw a ``UniquenessException``. Beware of the `birthday
|
399 |
+
paradox <https://en.wikipedia.org/wiki/Birthday_problem>`_, collisions
|
400 |
+
are more likely than you'd think.
|
401 |
+
|
402 |
+
|
403 |
+
.. code:: python
|
404 |
+
|
405 |
+
from faker import Faker
|
406 |
+
|
407 |
+
fake = Faker()
|
408 |
+
for i in range(3):
|
409 |
+
# Raises a UniquenessException
|
410 |
+
fake.unique.boolean()
|
411 |
+
|
412 |
+
In addition, only hashable arguments and return values can be used
|
413 |
+
with ``.unique``.
|
414 |
+
|
415 |
+
Seeding the Generator
|
416 |
+
---------------------
|
417 |
+
|
418 |
+
When using Faker for unit testing, you will often want to generate the same
|
419 |
+
data set. For convenience, the generator also provides a ``seed()`` method,
|
420 |
+
which seeds the shared random number generator. A Seed produces the same result
|
421 |
+
when the same methods with the same version of faker are called.
|
422 |
+
|
423 |
+
.. code:: python
|
424 |
+
|
425 |
+
from faker import Faker
|
426 |
+
fake = Faker()
|
427 |
+
Faker.seed(4321)
|
428 |
+
|
429 |
+
print(fake.name())
|
430 |
+
# 'Margaret Boehm'
|
431 |
+
|
432 |
+
Each generator can also be switched to use its own instance of ``random.Random``,
|
433 |
+
separated from the shared one, by using the ``seed_instance()`` method, which acts
|
434 |
+
the same way. For example:
|
435 |
+
|
436 |
+
.. code:: python
|
437 |
+
|
438 |
+
from faker import Faker
|
439 |
+
fake = Faker()
|
440 |
+
fake.seed_instance(4321)
|
441 |
+
|
442 |
+
print(fake.name())
|
443 |
+
# 'Margaret Boehm'
|
444 |
+
|
445 |
+
Please note that as we keep updating datasets, results are not guaranteed to be
|
446 |
+
consistent across patch versions. If you hardcode results in your test, make sure
|
447 |
+
you pinned the version of ``Faker`` down to the patch number.
|
448 |
+
|
449 |
+
If you are using ``pytest``, you can seed the ``faker`` fixture by defining a ``faker_seed``
|
450 |
+
fixture. Please check out the `pytest fixture docs` to learn more.
|
451 |
+
|
452 |
+
Tests
|
453 |
+
-----
|
454 |
+
|
455 |
+
Run tests:
|
456 |
+
|
457 |
+
.. code:: bash
|
458 |
+
|
459 |
+
$ tox
|
460 |
+
|
461 |
+
Write documentation for the providers of the default locale:
|
462 |
+
|
463 |
+
.. code:: bash
|
464 |
+
|
465 |
+
$ python -m faker > docs.txt
|
466 |
+
|
467 |
+
Write documentation for the providers of a specific locale:
|
468 |
+
|
469 |
+
.. code:: bash
|
470 |
+
|
471 |
+
$ python -m faker --lang=de_DE > docs_de.txt
|
472 |
+
|
473 |
+
|
474 |
+
Contribute
|
475 |
+
----------
|
476 |
+
|
477 |
+
Please see `CONTRIBUTING`_.
|
478 |
+
|
479 |
+
License
|
480 |
+
-------
|
481 |
+
|
482 |
+
Faker is released under the MIT License. See the bundled `LICENSE`_ file
|
483 |
+
for details.
|
484 |
+
|
485 |
+
Credits
|
486 |
+
-------
|
487 |
+
|
488 |
+
- `FZaninotto`_ / `PHP Faker`_
|
489 |
+
- `Distribute`_
|
490 |
+
- `Buildout`_
|
491 |
+
- `modern-package-template`_
|
492 |
+
|
493 |
+
|
494 |
+
.. _FZaninotto: https://github.com/fzaninotto
|
495 |
+
.. _PHP Faker: https://github.com/fzaninotto/Faker
|
496 |
+
.. _Perl Faker: http://search.cpan.org/~jasonk/Data-Faker-0.07/
|
497 |
+
.. _Ruby Faker: https://github.com/stympy/faker
|
498 |
+
.. _Distribute: https://pypi.org/project/distribute/
|
499 |
+
.. _Buildout: http://www.buildout.org/
|
500 |
+
.. _modern-package-template: https://pypi.org/project/modern-package-template/
|
501 |
+
.. _extended docs: https://faker.readthedocs.io/en/stable/
|
502 |
+
.. _bundled providers: https://faker.readthedocs.io/en/stable/providers.html
|
503 |
+
.. _community providers: https://faker.readthedocs.io/en/stable/communityproviders.html
|
504 |
+
.. _pytest fixture docs: https://faker.readthedocs.io/en/master/pytest-fixtures.html
|
505 |
+
.. _LICENSE: https://github.com/joke2k/faker/blob/master/LICENSE.txt
|
506 |
+
.. _CONTRIBUTING: https://github.com/joke2k/faker/blob/master/CONTRIBUTING.rst
|
507 |
+
.. _Factory Boy: https://github.com/FactoryBoy/factory_boy
|
508 |
+
|
509 |
+
.. |pypi| image:: https://img.shields.io/pypi/v/Faker.svg?style=flat-square&label=version
|
510 |
+
:target: https://pypi.org/project/Faker/
|
511 |
+
:alt: Latest version released on PyPI
|
512 |
+
|
513 |
+
.. |coverage| image:: https://img.shields.io/coveralls/joke2k/faker/master.svg?style=flat-square
|
514 |
+
:target: https://coveralls.io/r/joke2k/faker?branch=master
|
515 |
+
:alt: Test coverage
|
516 |
+
|
517 |
+
.. |build| image:: https://github.com/joke2k/faker/actions/workflows/ci.yml/badge.svg
|
518 |
+
:target: https://github.com/joke2k/faker/actions/workflows/ci.yml
|
519 |
+
:alt: Build status of the master branch
|
520 |
+
|
521 |
+
.. |license| image:: https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square
|
522 |
+
:target: https://raw.githubusercontent.com/joke2k/faker/master/LICENSE.txt
|
523 |
+
:alt: Package license
|
.venv/Lib/site-packages/Faker-24.4.0.dist-info/RECORD
ADDED
The diff for this file is too large to render.
See raw diff
|
|
.venv/Lib/site-packages/Faker-24.4.0.dist-info/REQUESTED
ADDED
File without changes
|
.venv/Lib/site-packages/Faker-24.4.0.dist-info/WHEEL
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Wheel-Version: 1.0
|
2 |
+
Generator: bdist_wheel (0.40.0)
|
3 |
+
Root-Is-Purelib: true
|
4 |
+
Tag: py3-none-any
|
5 |
+
|
.venv/Lib/site-packages/Faker-24.4.0.dist-info/entry_points.txt
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[console_scripts]
|
2 |
+
faker = faker.cli:execute_from_command_line
|
3 |
+
|
4 |
+
[pytest11]
|
5 |
+
faker = faker.contrib.pytest.plugin
|
.venv/Lib/site-packages/Faker-24.4.0.dist-info/top_level.txt
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
faker
|
.venv/Lib/site-packages/Faker-24.4.0.dist-info/zip-safe
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
|
.venv/Lib/site-packages/GitPython-3.1.43.dist-info/AUTHORS
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
GitPython was originally written by Michael Trier.
|
2 |
+
GitPython 0.2 was partially (re)written by Sebastian Thiel, based on 0.1.6 and git-dulwich.
|
3 |
+
|
4 |
+
Contributors are:
|
5 |
+
|
6 |
+
-Michael Trier <mtrier _at_ gmail.com>
|
7 |
+
-Alan Briolat
|
8 |
+
-Florian Apolloner <florian _at_ apolloner.eu>
|
9 |
+
-David Aguilar <davvid _at_ gmail.com>
|
10 |
+
-Jelmer Vernooij <jelmer _at_ samba.org>
|
11 |
+
-Steve Frécinaux <code _at_ istique.net>
|
12 |
+
-Kai Lautaportti <kai _at_ lautaportti.fi>
|
13 |
+
-Paul Sowden <paul _at_ idontsmoke.co.uk>
|
14 |
+
-Sebastian Thiel <byronimo _at_ gmail.com>
|
15 |
+
-Jonathan Chu <jonathan.chu _at_ me.com>
|
16 |
+
-Vincent Driessen <me _at_ nvie.com>
|
17 |
+
-Phil Elson <pelson _dot_ pub _at_ gmail.com>
|
18 |
+
-Bernard `Guyzmo` Pratz <[email protected]>
|
19 |
+
-Timothy B. Hartman <tbhartman _at_ gmail.com>
|
20 |
+
-Konstantin Popov <konstantin.popov.89 _at_ yandex.ru>
|
21 |
+
-Peter Jones <pjones _at_ redhat.com>
|
22 |
+
-Anson Mansfield <anson.mansfield _at_ gmail.com>
|
23 |
+
-Ken Odegard <ken.odegard _at_ gmail.com>
|
24 |
+
-Alexis Horgix Chotard
|
25 |
+
-Piotr Babij <piotr.babij _at_ gmail.com>
|
26 |
+
-Mikuláš Poul <mikulaspoul _at_ gmail.com>
|
27 |
+
-Charles Bouchard-Légaré <cblegare.atl _at_ ntis.ca>
|
28 |
+
-Yaroslav Halchenko <debian _at_ onerussian.com>
|
29 |
+
-Tim Swast <swast _at_ google.com>
|
30 |
+
-William Luc Ritchie
|
31 |
+
-David Host <hostdm _at_ outlook.com>
|
32 |
+
-A. Jesse Jiryu Davis <jesse _at_ emptysquare.net>
|
33 |
+
-Steven Whitman <ninloot _at_ gmail.com>
|
34 |
+
-Stefan Stancu <stefan.stancu _at_ gmail.com>
|
35 |
+
-César Izurieta <cesar _at_ caih.org>
|
36 |
+
-Arthur Milchior <arthur _at_ milchior.fr>
|
37 |
+
-Anil Khatri <anil.soccer.khatri _at_ gmail.com>
|
38 |
+
-JJ Graham <thetwoj _at_ gmail.com>
|
39 |
+
-Ben Thayer <ben _at_ benthayer.com>
|
40 |
+
-Dries Kennes <admin _at_ dries007.net>
|
41 |
+
-Pratik Anurag <panurag247365 _at_ gmail.com>
|
42 |
+
-Harmon <harmon.public _at_ gmail.com>
|
43 |
+
-Liam Beguin <liambeguin _at_ gmail.com>
|
44 |
+
-Ram Rachum <ram _at_ rachum.com>
|
45 |
+
-Alba Mendez <me _at_ alba.sh>
|
46 |
+
-Robert Westman <robert _at_ byteflux.io>
|
47 |
+
-Hugo van Kemenade
|
48 |
+
-Hiroki Tokunaga <tokusan441 _at_ gmail.com>
|
49 |
+
-Julien Mauroy <pro.julien.mauroy _at_ gmail.com>
|
50 |
+
-Patrick Gerard
|
51 |
+
-Luke Twist <[email protected]>
|
52 |
+
-Joseph Hale <me _at_ jhale.dev>
|
53 |
+
-Santos Gallegos <stsewd _at_ proton.me>
|
54 |
+
-Wenhan Zhu <wzhu.cosmos _at_ gmail.com>
|
55 |
+
-Eliah Kagan <eliah.kagan _at_ gmail.com>
|
56 |
+
-Ethan Lin <et.repositories _at_ gmail.com>
|
57 |
+
|
58 |
+
Portions derived from other open source works and are clearly marked.
|
.venv/Lib/site-packages/GitPython-3.1.43.dist-info/INSTALLER
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
pip
|
.venv/Lib/site-packages/GitPython-3.1.43.dist-info/LICENSE
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Copyright (C) 2008, 2009 Michael Trier and contributors
|
2 |
+
All rights reserved.
|
3 |
+
|
4 |
+
Redistribution and use in source and binary forms, with or without
|
5 |
+
modification, are permitted provided that the following conditions
|
6 |
+
are met:
|
7 |
+
|
8 |
+
* Redistributions of source code must retain the above copyright
|
9 |
+
notice, this list of conditions and the following disclaimer.
|
10 |
+
|
11 |
+
* Redistributions in binary form must reproduce the above copyright
|
12 |
+
notice, this list of conditions and the following disclaimer in the
|
13 |
+
documentation and/or other materials provided with the distribution.
|
14 |
+
|
15 |
+
* Neither the name of the GitPython project nor the names of
|
16 |
+
its contributors may be used to endorse or promote products derived
|
17 |
+
from this software without specific prior written permission.
|
18 |
+
|
19 |
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
20 |
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
21 |
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
22 |
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
23 |
+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
24 |
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
25 |
+
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
26 |
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
27 |
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
28 |
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
29 |
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
.venv/Lib/site-packages/GitPython-3.1.43.dist-info/METADATA
ADDED
@@ -0,0 +1,297 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Metadata-Version: 2.1
|
2 |
+
Name: GitPython
|
3 |
+
Version: 3.1.43
|
4 |
+
Summary: GitPython is a Python library used to interact with Git repositories
|
5 |
+
Home-page: https://github.com/gitpython-developers/GitPython
|
6 |
+
Author: Sebastian Thiel, Michael Trier
|
7 |
+
Author-email: [email protected], [email protected]
|
8 |
+
License: BSD-3-Clause
|
9 |
+
Classifier: Development Status :: 5 - Production/Stable
|
10 |
+
Classifier: Environment :: Console
|
11 |
+
Classifier: Intended Audience :: Developers
|
12 |
+
Classifier: License :: OSI Approved :: BSD License
|
13 |
+
Classifier: Operating System :: OS Independent
|
14 |
+
Classifier: Operating System :: POSIX
|
15 |
+
Classifier: Operating System :: Microsoft :: Windows
|
16 |
+
Classifier: Operating System :: MacOS :: MacOS X
|
17 |
+
Classifier: Typing :: Typed
|
18 |
+
Classifier: Programming Language :: Python
|
19 |
+
Classifier: Programming Language :: Python :: 3
|
20 |
+
Classifier: Programming Language :: Python :: 3.7
|
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 |
+
Requires-Python: >=3.7
|
27 |
+
Description-Content-Type: text/markdown
|
28 |
+
License-File: LICENSE
|
29 |
+
License-File: AUTHORS
|
30 |
+
Requires-Dist: gitdb <5,>=4.0.1
|
31 |
+
Requires-Dist: typing-extensions >=3.7.4.3 ; python_version < "3.8"
|
32 |
+
Provides-Extra: doc
|
33 |
+
Requires-Dist: sphinx ==4.3.2 ; extra == 'doc'
|
34 |
+
Requires-Dist: sphinx-rtd-theme ; extra == 'doc'
|
35 |
+
Requires-Dist: sphinxcontrib-applehelp <=1.0.4,>=1.0.2 ; extra == 'doc'
|
36 |
+
Requires-Dist: sphinxcontrib-devhelp ==1.0.2 ; extra == 'doc'
|
37 |
+
Requires-Dist: sphinxcontrib-htmlhelp <=2.0.1,>=2.0.0 ; extra == 'doc'
|
38 |
+
Requires-Dist: sphinxcontrib-qthelp ==1.0.3 ; extra == 'doc'
|
39 |
+
Requires-Dist: sphinxcontrib-serializinghtml ==1.1.5 ; extra == 'doc'
|
40 |
+
Requires-Dist: sphinx-autodoc-typehints ; extra == 'doc'
|
41 |
+
Provides-Extra: test
|
42 |
+
Requires-Dist: coverage[toml] ; extra == 'test'
|
43 |
+
Requires-Dist: ddt !=1.4.3,>=1.1.1 ; extra == 'test'
|
44 |
+
Requires-Dist: mypy ; extra == 'test'
|
45 |
+
Requires-Dist: pre-commit ; extra == 'test'
|
46 |
+
Requires-Dist: pytest >=7.3.1 ; extra == 'test'
|
47 |
+
Requires-Dist: pytest-cov ; extra == 'test'
|
48 |
+
Requires-Dist: pytest-instafail ; extra == 'test'
|
49 |
+
Requires-Dist: pytest-mock ; extra == 'test'
|
50 |
+
Requires-Dist: pytest-sugar ; extra == 'test'
|
51 |
+
Requires-Dist: typing-extensions ; (python_version < "3.11") and extra == 'test'
|
52 |
+
Requires-Dist: mock ; (python_version < "3.8") and extra == 'test'
|
53 |
+
|
54 |
+

|
55 |
+
[](https://readthedocs.org/projects/gitpython/?badge=stable)
|
56 |
+
[](https://repology.org/metapackage/python:gitpython/versions)
|
57 |
+
|
58 |
+
## [Gitoxide](https://github.com/Byron/gitoxide): A peek into the future…
|
59 |
+
|
60 |
+
I started working on GitPython in 2009, back in the days when Python was 'my thing' and I had great plans with it.
|
61 |
+
Of course, back in the days, I didn't really know what I was doing and this shows in many places. Somewhat similar to
|
62 |
+
Python this happens to be 'good enough', but at the same time is deeply flawed and broken beyond repair.
|
63 |
+
|
64 |
+
By now, GitPython is widely used and I am sure there is a good reason for that, it's something to be proud of and happy about.
|
65 |
+
The community is maintaining the software and is keeping it relevant for which I am absolutely grateful. For the time to come I am happy to continue maintaining GitPython, remaining hopeful that one day it won't be needed anymore.
|
66 |
+
|
67 |
+
More than 15 years after my first meeting with 'git' I am still in excited about it, and am happy to finally have the tools and
|
68 |
+
probably the skills to scratch that itch of mine: implement `git` in a way that makes tool creation a piece of cake for most.
|
69 |
+
|
70 |
+
If you like the idea and want to learn more, please head over to [gitoxide](https://github.com/Byron/gitoxide), an
|
71 |
+
implementation of 'git' in [Rust](https://www.rust-lang.org).
|
72 |
+
|
73 |
+
*(Please note that `gitoxide` is not currently available for use in Python, and that Rust is required.)*
|
74 |
+
|
75 |
+
## GitPython
|
76 |
+
|
77 |
+
GitPython is a python library used to interact with git repositories, high-level like git-porcelain,
|
78 |
+
or low-level like git-plumbing.
|
79 |
+
|
80 |
+
It provides abstractions of git objects for easy access of repository data often backed by calling the `git`
|
81 |
+
command-line program.
|
82 |
+
|
83 |
+
### DEVELOPMENT STATUS
|
84 |
+
|
85 |
+
This project is in **maintenance mode**, which means that
|
86 |
+
|
87 |
+
- …there will be no feature development, unless these are contributed
|
88 |
+
- …there will be no bug fixes, unless they are relevant to the safety of users, or contributed
|
89 |
+
- …issues will be responded to with waiting times of up to a month
|
90 |
+
|
91 |
+
The project is open to contributions of all kinds, as well as new maintainers.
|
92 |
+
|
93 |
+
### REQUIREMENTS
|
94 |
+
|
95 |
+
GitPython needs the `git` executable to be installed on the system and available in your
|
96 |
+
`PATH` for most operations. If it is not in your `PATH`, you can help GitPython find it
|
97 |
+
by setting the `GIT_PYTHON_GIT_EXECUTABLE=<path/to/git>` environment variable.
|
98 |
+
|
99 |
+
- Git (1.7.x or newer)
|
100 |
+
- Python >= 3.7
|
101 |
+
|
102 |
+
The list of dependencies are listed in `./requirements.txt` and `./test-requirements.txt`.
|
103 |
+
The installer takes care of installing them for you.
|
104 |
+
|
105 |
+
### INSTALL
|
106 |
+
|
107 |
+
GitPython and its required package dependencies can be installed in any of the following ways, all of which should typically be done in a [virtual environment](https://docs.python.org/3/tutorial/venv.html).
|
108 |
+
|
109 |
+
#### From PyPI
|
110 |
+
|
111 |
+
To obtain and install a copy [from PyPI](https://pypi.org/project/GitPython/), run:
|
112 |
+
|
113 |
+
```sh
|
114 |
+
pip install GitPython
|
115 |
+
```
|
116 |
+
|
117 |
+
(A distribution package can also be downloaded for manual installation at [the PyPI page](https://pypi.org/project/GitPython/).)
|
118 |
+
|
119 |
+
#### From downloaded source code
|
120 |
+
|
121 |
+
If you have downloaded the source code, run this from inside the unpacked `GitPython` directory:
|
122 |
+
|
123 |
+
```sh
|
124 |
+
pip install .
|
125 |
+
```
|
126 |
+
|
127 |
+
#### By cloning the source code repository
|
128 |
+
|
129 |
+
To clone the [the GitHub repository](https://github.com/gitpython-developers/GitPython) from source to work on the code, you can do it like so:
|
130 |
+
|
131 |
+
```sh
|
132 |
+
git clone https://github.com/gitpython-developers/GitPython
|
133 |
+
cd GitPython
|
134 |
+
./init-tests-after-clone.sh
|
135 |
+
```
|
136 |
+
|
137 |
+
On Windows, `./init-tests-after-clone.sh` can be run in a Git Bash shell.
|
138 |
+
|
139 |
+
If you are cloning [your own fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks), then replace the above `git clone` command with one that gives the URL of your fork. Or use this [`gh`](https://cli.github.com/) command (assuming you have `gh` and your fork is called `GitPython`):
|
140 |
+
|
141 |
+
```sh
|
142 |
+
gh repo clone GitPython
|
143 |
+
```
|
144 |
+
|
145 |
+
Having cloned the repo, create and activate your [virtual environment](https://docs.python.org/3/tutorial/venv.html).
|
146 |
+
|
147 |
+
Then make an [editable install](https://pip.pypa.io/en/stable/topics/local-project-installs/#editable-installs):
|
148 |
+
|
149 |
+
```sh
|
150 |
+
pip install -e ".[test]"
|
151 |
+
```
|
152 |
+
|
153 |
+
In the less common case that you do not want to install test dependencies, `pip install -e .` can be used instead.
|
154 |
+
|
155 |
+
#### With editable *dependencies* (not preferred, and rarely needed)
|
156 |
+
|
157 |
+
In rare cases, you may want to work on GitPython and one or both of its [gitdb](https://github.com/gitpython-developers/gitdb) and [smmap](https://github.com/gitpython-developers/smmap) dependencies at the same time, with changes in your local working copy of gitdb or smmap immediatley reflected in the behavior of your local working copy of GitPython. This can be done by making editable installations of those dependencies in the same virtual environment where you install GitPython.
|
158 |
+
|
159 |
+
If you want to do that *and* you want the versions in GitPython's git submodules to be used, then pass `-e git/ext/gitdb` and/or `-e git/ext/gitdb/gitdb/ext/smmap` to `pip install`. This can be done in any order, and in separate `pip install` commands or the same one, so long as `-e` appears before *each* path. For example, you can install GitPython, gitdb, and smmap editably in the currently active virtual environment this way:
|
160 |
+
|
161 |
+
```sh
|
162 |
+
pip install -e ".[test]" -e git/ext/gitdb -e git/ext/gitdb/gitdb/ext/smmap
|
163 |
+
```
|
164 |
+
|
165 |
+
The submodules must have been cloned for that to work, but that will already be the case if you have run `./init-tests-after-clone.sh`. You can use `pip list` to check which packages are installed editably and which are installed normally.
|
166 |
+
|
167 |
+
To reiterate, this approach should only rarely be used. For most development it is preferable to allow the gitdb and smmap dependencices to be retrieved automatically from PyPI in their latest stable packaged versions.
|
168 |
+
|
169 |
+
### Limitations
|
170 |
+
|
171 |
+
#### Leakage of System Resources
|
172 |
+
|
173 |
+
GitPython is not suited for long-running processes (like daemons) as it tends to
|
174 |
+
leak system resources. It was written in a time where destructors (as implemented
|
175 |
+
in the `__del__` method) still ran deterministically.
|
176 |
+
|
177 |
+
In case you still want to use it in such a context, you will want to search the
|
178 |
+
codebase for `__del__` implementations and call these yourself when you see fit.
|
179 |
+
|
180 |
+
Another way assure proper cleanup of resources is to factor out GitPython into a
|
181 |
+
separate process which can be dropped periodically.
|
182 |
+
|
183 |
+
#### Windows support
|
184 |
+
|
185 |
+
See [Issue #525](https://github.com/gitpython-developers/GitPython/issues/525).
|
186 |
+
|
187 |
+
### RUNNING TESTS
|
188 |
+
|
189 |
+
_Important_: Right after cloning this repository, please be sure to have executed
|
190 |
+
the `./init-tests-after-clone.sh` script in the repository root. Otherwise
|
191 |
+
you will encounter test failures.
|
192 |
+
|
193 |
+
#### Install test dependencies
|
194 |
+
|
195 |
+
Ensure testing libraries are installed. This is taken care of already if you installed with:
|
196 |
+
|
197 |
+
```sh
|
198 |
+
pip install -e ".[test]"
|
199 |
+
```
|
200 |
+
|
201 |
+
If you had installed with a command like `pip install -e .` instead, you can still run
|
202 |
+
the above command to add the testing dependencies.
|
203 |
+
|
204 |
+
#### Test commands
|
205 |
+
|
206 |
+
To test, run:
|
207 |
+
|
208 |
+
```sh
|
209 |
+
pytest
|
210 |
+
```
|
211 |
+
|
212 |
+
To lint, and apply some linting fixes as well as automatic code formatting, run:
|
213 |
+
|
214 |
+
```sh
|
215 |
+
pre-commit run --all-files
|
216 |
+
```
|
217 |
+
|
218 |
+
This includes the linting and autoformatting done by Ruff, as well as some other checks.
|
219 |
+
|
220 |
+
To typecheck, run:
|
221 |
+
|
222 |
+
```sh
|
223 |
+
mypy
|
224 |
+
```
|
225 |
+
|
226 |
+
#### CI (and tox)
|
227 |
+
|
228 |
+
Style and formatting checks, and running tests on all the different supported Python versions, will be performed:
|
229 |
+
|
230 |
+
- Upon submitting a pull request.
|
231 |
+
- On each push, *if* you have a fork with GitHub Actions enabled.
|
232 |
+
- Locally, if you run [`tox`](https://tox.wiki/) (this skips any Python versions you don't have installed).
|
233 |
+
|
234 |
+
#### Configuration files
|
235 |
+
|
236 |
+
Specific tools are all configured in the `./pyproject.toml` file:
|
237 |
+
|
238 |
+
- `pytest` (test runner)
|
239 |
+
- `coverage.py` (code coverage)
|
240 |
+
- `ruff` (linter and formatter)
|
241 |
+
- `mypy` (type checker)
|
242 |
+
|
243 |
+
Orchestration tools:
|
244 |
+
|
245 |
+
- Configuration for `pre-commit` is in the `./.pre-commit-config.yaml` file.
|
246 |
+
- Configuration for `tox` is in `./tox.ini`.
|
247 |
+
- Configuration for GitHub Actions (CI) is in files inside `./.github/workflows/`.
|
248 |
+
|
249 |
+
### Contributions
|
250 |
+
|
251 |
+
Please have a look at the [contributions file][contributing].
|
252 |
+
|
253 |
+
### INFRASTRUCTURE
|
254 |
+
|
255 |
+
- [User Documentation](http://gitpython.readthedocs.org)
|
256 |
+
- [Questions and Answers](http://stackexchange.com/filters/167317/gitpython)
|
257 |
+
- Please post on Stack Overflow and use the `gitpython` tag
|
258 |
+
- [Issue Tracker](https://github.com/gitpython-developers/GitPython/issues)
|
259 |
+
- Post reproducible bugs and feature requests as a new issue.
|
260 |
+
Please be sure to provide the following information if posting bugs:
|
261 |
+
- GitPython version (e.g. `import git; git.__version__`)
|
262 |
+
- Python version (e.g. `python --version`)
|
263 |
+
- The encountered stack-trace, if applicable
|
264 |
+
- Enough information to allow reproducing the issue
|
265 |
+
|
266 |
+
### How to make a new release
|
267 |
+
|
268 |
+
1. Update/verify the **version** in the `VERSION` file.
|
269 |
+
2. Update/verify that the `doc/source/changes.rst` changelog file was updated. It should include a link to the forthcoming release page: `https://github.com/gitpython-developers/GitPython/releases/tag/<version>`
|
270 |
+
3. Commit everything.
|
271 |
+
4. Run `git tag -s <version>` to tag the version in Git.
|
272 |
+
5. _Optionally_ create and activate a [virtual environment](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/#creating-a-virtual-environment). (Then the next step can install `build` and `twine`.)
|
273 |
+
6. Run `make release`.
|
274 |
+
7. Go to [GitHub Releases](https://github.com/gitpython-developers/GitPython/releases) and publish a new one with the recently pushed tag. Generate the changelog.
|
275 |
+
|
276 |
+
### Projects using GitPython
|
277 |
+
|
278 |
+
- [PyDriller](https://github.com/ishepard/pydriller)
|
279 |
+
- [Kivy Designer](https://github.com/kivy/kivy-designer)
|
280 |
+
- [Prowl](https://github.com/nettitude/Prowl)
|
281 |
+
- [Python Taint](https://github.com/python-security/pyt)
|
282 |
+
- [Buster](https://github.com/axitkhurana/buster)
|
283 |
+
- [git-ftp](https://github.com/ezyang/git-ftp)
|
284 |
+
- [Git-Pandas](https://github.com/wdm0006/git-pandas)
|
285 |
+
- [PyGitUp](https://github.com/msiemens/PyGitUp)
|
286 |
+
- [PyJFuzz](https://github.com/mseclab/PyJFuzz)
|
287 |
+
- [Loki](https://github.com/Neo23x0/Loki)
|
288 |
+
- [Omniwallet](https://github.com/OmniLayer/omniwallet)
|
289 |
+
- [GitViper](https://github.com/BeayemX/GitViper)
|
290 |
+
- [Git Gud](https://github.com/bthayer2365/git-gud)
|
291 |
+
|
292 |
+
### LICENSE
|
293 |
+
|
294 |
+
[3-Clause BSD License](https://opensource.org/license/bsd-3-clause/), also known as the New BSD License. See the [LICENSE file][license].
|
295 |
+
|
296 |
+
[contributing]: https://github.com/gitpython-developers/GitPython/blob/main/CONTRIBUTING.md
|
297 |
+
[license]: https://github.com/gitpython-developers/GitPython/blob/main/LICENSE
|
.venv/Lib/site-packages/GitPython-3.1.43.dist-info/RECORD
ADDED
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
GitPython-3.1.43.dist-info/AUTHORS,sha256=h1TlPKfp05GA1eKQ15Yl4biR0C0FgivuGSeRA6Q1dz0,2286
|
2 |
+
GitPython-3.1.43.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
3 |
+
GitPython-3.1.43.dist-info/LICENSE,sha256=hvyUwyGpr7wRUUcTURuv3tIl8lEA3MD3NQ6CvCMbi-s,1503
|
4 |
+
GitPython-3.1.43.dist-info/METADATA,sha256=sAh3r1BMVw5_olGgDmpMS69zBpVr7UEOeRivNHKznfU,13376
|
5 |
+
GitPython-3.1.43.dist-info/RECORD,,
|
6 |
+
GitPython-3.1.43.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
7 |
+
GitPython-3.1.43.dist-info/top_level.txt,sha256=0hzDuIp8obv624V3GmbqsagBWkk8ohtGU-Bc1PmTT0o,4
|
8 |
+
git/__init__.py,sha256=w6fnS0QmwTfEFUSL6rfnpP0lUId2goSguZFOvVX3N3U,8899
|
9 |
+
git/__pycache__/__init__.cpython-312.pyc,,
|
10 |
+
git/__pycache__/cmd.cpython-312.pyc,,
|
11 |
+
git/__pycache__/compat.cpython-312.pyc,,
|
12 |
+
git/__pycache__/config.cpython-312.pyc,,
|
13 |
+
git/__pycache__/db.cpython-312.pyc,,
|
14 |
+
git/__pycache__/diff.cpython-312.pyc,,
|
15 |
+
git/__pycache__/exc.cpython-312.pyc,,
|
16 |
+
git/__pycache__/remote.cpython-312.pyc,,
|
17 |
+
git/__pycache__/types.cpython-312.pyc,,
|
18 |
+
git/__pycache__/util.cpython-312.pyc,,
|
19 |
+
git/cmd.py,sha256=qd-gIHSk4mfsYjd9YA08cPyO8TMxaibTXAbFnHK71uc,67659
|
20 |
+
git/compat.py,sha256=y1E6y6O2q5r8clSlr8ZNmuIWG9nmHuehQEsVsmBffs8,4526
|
21 |
+
git/config.py,sha256=Ald8Xc-G9Shcgx3QCISyXTkL4a6nbc3qll-xUw4YdyY,34924
|
22 |
+
git/db.py,sha256=vIW9uWSbqu99zbuU2ZDmOhVOv1UPTmxrnqiCtRHCfjE,2368
|
23 |
+
git/diff.py,sha256=IE5aeHL7aP9yxBluYj06IX8nZjoJ_TOM3gG31-Evf_8,27058
|
24 |
+
git/exc.py,sha256=Gc7g1pHpn8OmTse30NHmJVsBJ2CYH8LxaR8y8UA3lIM,7119
|
25 |
+
git/index/__init__.py,sha256=i-Nqb8Lufp9aFbmxpQBORmmQnjEVVM1Pn58fsQkyGgQ,406
|
26 |
+
git/index/__pycache__/__init__.cpython-312.pyc,,
|
27 |
+
git/index/__pycache__/base.cpython-312.pyc,,
|
28 |
+
git/index/__pycache__/fun.cpython-312.pyc,,
|
29 |
+
git/index/__pycache__/typ.cpython-312.pyc,,
|
30 |
+
git/index/__pycache__/util.cpython-312.pyc,,
|
31 |
+
git/index/base.py,sha256=A4q4cN_Ifxi8CsAR-7h4KsQ2d3JazBNFZ1ltbAKttgs,60734
|
32 |
+
git/index/fun.py,sha256=37cA3DBC9vpAnSVu5TGA072SnoF5XZOkOukExwlejHs,16736
|
33 |
+
git/index/typ.py,sha256=uuKNwitUw83FhVaLSwo4pY7PHDQudtZTLJrLGym4jcI,6570
|
34 |
+
git/index/util.py,sha256=fULi7GPG-MvprKrRCD5c15GNdzku_1E38We0d97WB3A,3659
|
35 |
+
git/objects/__init__.py,sha256=O6ZL_olX7e5-8iIbKviRPkVSJxN37WA-EC0q9d48U5Y,637
|
36 |
+
git/objects/__pycache__/__init__.cpython-312.pyc,,
|
37 |
+
git/objects/__pycache__/base.cpython-312.pyc,,
|
38 |
+
git/objects/__pycache__/blob.cpython-312.pyc,,
|
39 |
+
git/objects/__pycache__/commit.cpython-312.pyc,,
|
40 |
+
git/objects/__pycache__/fun.cpython-312.pyc,,
|
41 |
+
git/objects/__pycache__/tag.cpython-312.pyc,,
|
42 |
+
git/objects/__pycache__/tree.cpython-312.pyc,,
|
43 |
+
git/objects/__pycache__/util.cpython-312.pyc,,
|
44 |
+
git/objects/base.py,sha256=0dqNkSRVH0mk0-7ZKIkGBK7iNYrzLTVxwQFUd6CagsE,10277
|
45 |
+
git/objects/blob.py,sha256=zwwq0KfOMYeP5J2tW5CQatoLyeqFRlfkxP1Vwx1h07s,1215
|
46 |
+
git/objects/commit.py,sha256=vLZNl1I9zp17Rpge7J66CvsryirEs90jyPTQzoP0JJs,30208
|
47 |
+
git/objects/fun.py,sha256=B4jCqhAjm6Hl79GK58FPzW1H9K6Wc7Tx0rssyWmAcEE,8935
|
48 |
+
git/objects/submodule/__init__.py,sha256=6xySp767LVz3UylWgUalntS_nGXRuVzXxDuFAv_Wc2c,303
|
49 |
+
git/objects/submodule/__pycache__/__init__.cpython-312.pyc,,
|
50 |
+
git/objects/submodule/__pycache__/base.cpython-312.pyc,,
|
51 |
+
git/objects/submodule/__pycache__/root.cpython-312.pyc,,
|
52 |
+
git/objects/submodule/__pycache__/util.cpython-312.pyc,,
|
53 |
+
git/objects/submodule/base.py,sha256=MQ-2xV8JznGwy2hLQv1aeQNgAkhBhgc5tdtClFL3DmE,63901
|
54 |
+
git/objects/submodule/root.py,sha256=5eTtYNHasqdPq6q0oDCPr7IaO6uAHL3b4DxMoiO2LhE,20246
|
55 |
+
git/objects/submodule/util.py,sha256=sQqAYaiSJdFkZa9NlAuK_wTsMNiS-kkQnQjvIoJtc_o,3509
|
56 |
+
git/objects/tag.py,sha256=gAx8i-DEwy_Z3R2zLkvetYRV8A56BCcTr3iLuTUTfEM,4467
|
57 |
+
git/objects/tree.py,sha256=jJH888SHiP4dGzE-ra1yenQOyya_0C_MkHr06c1gHpM,13849
|
58 |
+
git/objects/util.py,sha256=Ml2eqZPKO4y9Hc2vWbXJgpsK3nkN3KGMzbn8AlzLyYQ,23834
|
59 |
+
git/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
60 |
+
git/refs/__init__.py,sha256=DWlJNnsx-4jM_E-VycbP-FZUdn6iWhjnH_uZ_pZXBro,509
|
61 |
+
git/refs/__pycache__/__init__.cpython-312.pyc,,
|
62 |
+
git/refs/__pycache__/head.cpython-312.pyc,,
|
63 |
+
git/refs/__pycache__/log.cpython-312.pyc,,
|
64 |
+
git/refs/__pycache__/reference.cpython-312.pyc,,
|
65 |
+
git/refs/__pycache__/remote.cpython-312.pyc,,
|
66 |
+
git/refs/__pycache__/symbolic.cpython-312.pyc,,
|
67 |
+
git/refs/__pycache__/tag.cpython-312.pyc,,
|
68 |
+
git/refs/head.py,sha256=GAZpD5EfqSciDXPtgjHY8ZbBixKExJRhojUB-HrrJPg,10491
|
69 |
+
git/refs/log.py,sha256=kXiuAgTo1DIuM_BfbDUk9gQ0YO-mutIMVdHv1_ES90o,12493
|
70 |
+
git/refs/reference.py,sha256=l6mhF4YLSEwtjz6b9PpOQH-fkng7EYWMaJhkjn-2jXA,5630
|
71 |
+
git/refs/remote.py,sha256=WwqV9T7BbYf3F_WZNUQivu9xktIIKGklCjDpwQrhD-A,2806
|
72 |
+
git/refs/symbolic.py,sha256=c8zOwaqzcg-J-rGrpuWdvh8zwMvSUqAHghd4vJoYG_s,34552
|
73 |
+
git/refs/tag.py,sha256=kgzV2vhpL4FD2TqHb0BJuMRAHgAvJF-TcoyWlaB-djQ,5010
|
74 |
+
git/remote.py,sha256=IHQ3BvXgoIN1EvHlyH3vrSaQoDkLOE6nooSC0w183sU,46561
|
75 |
+
git/repo/__init__.py,sha256=CILSVH36fX_WxVFSjD9o1WF5LgsNedPiJvSngKZqfVU,210
|
76 |
+
git/repo/__pycache__/__init__.cpython-312.pyc,,
|
77 |
+
git/repo/__pycache__/base.cpython-312.pyc,,
|
78 |
+
git/repo/__pycache__/fun.cpython-312.pyc,,
|
79 |
+
git/repo/base.py,sha256=mitfJ8u99CsMpDd7_VRyx-SF8omu2tpf3lqzSaQkKoQ,59353
|
80 |
+
git/repo/fun.py,sha256=tEsClpmbOrKMSNIdncOB_6JdikrL1-AfkOFd7xMpD8k,13582
|
81 |
+
git/types.py,sha256=xCwpp2Y01lhS0MapHhj04m0P_x34kwSD1Gsou_ZPWj8,10251
|
82 |
+
git/util.py,sha256=1E883mnPAFLyFk7ivwnEremsp-uJOTc3ks_QypyLung,43651
|
.venv/Lib/site-packages/GitPython-3.1.43.dist-info/WHEEL
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Wheel-Version: 1.0
|
2 |
+
Generator: bdist_wheel (0.43.0)
|
3 |
+
Root-Is-Purelib: true
|
4 |
+
Tag: py3-none-any
|
5 |
+
|
.venv/Lib/site-packages/GitPython-3.1.43.dist-info/top_level.txt
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
git
|
.venv/Lib/site-packages/Jinja2-3.1.3.dist-info/INSTALLER
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
pip
|
.venv/Lib/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.
|
.venv/Lib/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
|
.venv/Lib/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
|
.venv/Lib/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 |
+
|
.venv/Lib/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]
|
.venv/Lib/site-packages/Jinja2-3.1.3.dist-info/top_level.txt
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
jinja2
|
.venv/Lib/site-packages/Markdown-3.6.dist-info/INSTALLER
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
pip
|
.venv/Lib/site-packages/Markdown-3.6.dist-info/LICENSE.md
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
BSD 3-Clause License
|
2 |
+
|
3 |
+
Copyright 2007, 2008 The Python Markdown Project (v. 1.7 and later)
|
4 |
+
Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
|
5 |
+
Copyright 2004 Manfred Stienstra (the original version)
|
6 |
+
|
7 |
+
Redistribution and use in source and binary forms, with or without
|
8 |
+
modification, are permitted provided that the following conditions are met:
|
9 |
+
|
10 |
+
1. Redistributions of source code must retain the above copyright notice, this
|
11 |
+
list of conditions and the following disclaimer.
|
12 |
+
|
13 |
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
14 |
+
this list of conditions and the following disclaimer in the documentation
|
15 |
+
and/or other materials provided with the distribution.
|
16 |
+
|
17 |
+
3. Neither the name of the copyright holder nor the names of its
|
18 |
+
contributors may be used to endorse or promote products derived from
|
19 |
+
this software without specific prior written permission.
|
20 |
+
|
21 |
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
22 |
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
23 |
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
24 |
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
25 |
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
26 |
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
27 |
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
28 |
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
29 |
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
30 |
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
.venv/Lib/site-packages/Markdown-3.6.dist-info/METADATA
ADDED
@@ -0,0 +1,146 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Metadata-Version: 2.1
|
2 |
+
Name: Markdown
|
3 |
+
Version: 3.6
|
4 |
+
Summary: Python implementation of John Gruber's Markdown.
|
5 |
+
Author: Manfred Stienstra, Yuri Takhteyev
|
6 |
+
Author-email: Waylan limberg <[email protected]>
|
7 |
+
Maintainer: Isaac Muse
|
8 |
+
Maintainer-email: Waylan Limberg <[email protected]>
|
9 |
+
License: BSD 3-Clause License
|
10 |
+
|
11 |
+
Copyright 2007, 2008 The Python Markdown Project (v. 1.7 and later)
|
12 |
+
Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
|
13 |
+
Copyright 2004 Manfred Stienstra (the original version)
|
14 |
+
|
15 |
+
Redistribution and use in source and binary forms, with or without
|
16 |
+
modification, are permitted provided that the following conditions are met:
|
17 |
+
|
18 |
+
1. Redistributions of source code must retain the above copyright notice, this
|
19 |
+
list of conditions and the following disclaimer.
|
20 |
+
|
21 |
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
22 |
+
this list of conditions and the following disclaimer in the documentation
|
23 |
+
and/or other materials provided with the distribution.
|
24 |
+
|
25 |
+
3. Neither the name of the copyright holder nor the names of its
|
26 |
+
contributors may be used to endorse or promote products derived from
|
27 |
+
this software without specific prior written permission.
|
28 |
+
|
29 |
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
30 |
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
31 |
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
32 |
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
33 |
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
34 |
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
35 |
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
36 |
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
37 |
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
38 |
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
39 |
+
|
40 |
+
Project-URL: Homepage, https://Python-Markdown.github.io/
|
41 |
+
Project-URL: Documentation, https://Python-Markdown.github.io/
|
42 |
+
Project-URL: Repository, https://github.com/Python-Markdown/markdown
|
43 |
+
Project-URL: Issue Tracker, https://github.com/Python-Markdown/markdown/issues
|
44 |
+
Project-URL: Changelog, https://python-markdown.github.io/changelog/
|
45 |
+
Keywords: markdown,markdown-parser,python-markdown,markdown-to-html
|
46 |
+
Classifier: Development Status :: 5 - Production/Stable
|
47 |
+
Classifier: License :: OSI Approved :: BSD License
|
48 |
+
Classifier: Operating System :: OS Independent
|
49 |
+
Classifier: Programming Language :: Python
|
50 |
+
Classifier: Programming Language :: Python :: 3
|
51 |
+
Classifier: Programming Language :: Python :: 3.8
|
52 |
+
Classifier: Programming Language :: Python :: 3.9
|
53 |
+
Classifier: Programming Language :: Python :: 3.10
|
54 |
+
Classifier: Programming Language :: Python :: 3.11
|
55 |
+
Classifier: Programming Language :: Python :: 3.12
|
56 |
+
Classifier: Programming Language :: Python :: 3 :: Only
|
57 |
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
58 |
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
59 |
+
Classifier: Topic :: Communications :: Email :: Filters
|
60 |
+
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries
|
61 |
+
Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
|
62 |
+
Classifier: Topic :: Software Development :: Documentation
|
63 |
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
64 |
+
Classifier: Topic :: Text Processing :: Filters
|
65 |
+
Classifier: Topic :: Text Processing :: Markup :: HTML
|
66 |
+
Classifier: Topic :: Text Processing :: Markup :: Markdown
|
67 |
+
Requires-Python: >=3.8
|
68 |
+
Description-Content-Type: text/markdown
|
69 |
+
License-File: LICENSE.md
|
70 |
+
Requires-Dist: importlib-metadata >=4.4 ; python_version < "3.10"
|
71 |
+
Provides-Extra: docs
|
72 |
+
Requires-Dist: mkdocs >=1.5 ; extra == 'docs'
|
73 |
+
Requires-Dist: mkdocs-nature >=0.6 ; extra == 'docs'
|
74 |
+
Requires-Dist: mdx-gh-links >=0.2 ; extra == 'docs'
|
75 |
+
Requires-Dist: mkdocstrings[python] ; extra == 'docs'
|
76 |
+
Requires-Dist: mkdocs-gen-files ; extra == 'docs'
|
77 |
+
Requires-Dist: mkdocs-section-index ; extra == 'docs'
|
78 |
+
Requires-Dist: mkdocs-literate-nav ; extra == 'docs'
|
79 |
+
Provides-Extra: testing
|
80 |
+
Requires-Dist: coverage ; extra == 'testing'
|
81 |
+
Requires-Dist: pyyaml ; extra == 'testing'
|
82 |
+
|
83 |
+
[Python-Markdown][]
|
84 |
+
===================
|
85 |
+
|
86 |
+
[![Build Status][build-button]][build]
|
87 |
+
[![Coverage Status][codecov-button]][codecov]
|
88 |
+
[![Latest Version][mdversion-button]][md-pypi]
|
89 |
+
[![Python Versions][pyversion-button]][md-pypi]
|
90 |
+
[![BSD License][bsdlicense-button]][bsdlicense]
|
91 |
+
[![Code of Conduct][codeofconduct-button]][Code of Conduct]
|
92 |
+
|
93 |
+
[build-button]: https://github.com/Python-Markdown/markdown/workflows/CI/badge.svg?event=push
|
94 |
+
[build]: https://github.com/Python-Markdown/markdown/actions?query=workflow%3ACI+event%3Apush
|
95 |
+
[codecov-button]: https://codecov.io/gh/Python-Markdown/markdown/branch/master/graph/badge.svg
|
96 |
+
[codecov]: https://codecov.io/gh/Python-Markdown/markdown
|
97 |
+
[mdversion-button]: https://img.shields.io/pypi/v/Markdown.svg
|
98 |
+
[md-pypi]: https://pypi.org/project/Markdown/
|
99 |
+
[pyversion-button]: https://img.shields.io/pypi/pyversions/Markdown.svg
|
100 |
+
[bsdlicense-button]: https://img.shields.io/badge/license-BSD-yellow.svg
|
101 |
+
[bsdlicense]: https://opensource.org/licenses/BSD-3-Clause
|
102 |
+
[codeofconduct-button]: https://img.shields.io/badge/code%20of%20conduct-contributor%20covenant-green.svg?style=flat-square
|
103 |
+
[Code of Conduct]: https://github.com/Python-Markdown/markdown/blob/master/CODE_OF_CONDUCT.md
|
104 |
+
|
105 |
+
This is a Python implementation of John Gruber's [Markdown][].
|
106 |
+
It is almost completely compliant with the reference implementation,
|
107 |
+
though there are a few known issues. See [Features][] for information
|
108 |
+
on what exactly is supported and what is not. Additional features are
|
109 |
+
supported by the [Available Extensions][].
|
110 |
+
|
111 |
+
[Python-Markdown]: https://Python-Markdown.github.io/
|
112 |
+
[Markdown]: https://daringfireball.net/projects/markdown/
|
113 |
+
[Features]: https://Python-Markdown.github.io#Features
|
114 |
+
[Available Extensions]: https://Python-Markdown.github.io/extensions
|
115 |
+
|
116 |
+
Documentation
|
117 |
+
-------------
|
118 |
+
|
119 |
+
```bash
|
120 |
+
pip install markdown
|
121 |
+
```
|
122 |
+
```python
|
123 |
+
import markdown
|
124 |
+
html = markdown.markdown(your_text_string)
|
125 |
+
```
|
126 |
+
|
127 |
+
For more advanced [installation] and [usage] documentation, see the `docs/` directory
|
128 |
+
of the distribution or the project website at <https://Python-Markdown.github.io/>.
|
129 |
+
|
130 |
+
[installation]: https://python-markdown.github.io/install/
|
131 |
+
[usage]: https://python-markdown.github.io/reference/
|
132 |
+
|
133 |
+
See the change log at <https://python-markdown.github.io/changelog/>.
|
134 |
+
|
135 |
+
Support
|
136 |
+
-------
|
137 |
+
|
138 |
+
You may report bugs, ask for help, and discuss various other issues on the [bug tracker][].
|
139 |
+
|
140 |
+
[bug tracker]: https://github.com/Python-Markdown/markdown/issues
|
141 |
+
|
142 |
+
Code of Conduct
|
143 |
+
---------------
|
144 |
+
|
145 |
+
Everyone interacting in the Python-Markdown project's code bases, issue trackers,
|
146 |
+
and mailing lists is expected to follow the [Code of Conduct].
|
.venv/Lib/site-packages/Markdown-3.6.dist-info/RECORD
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
../../Scripts/markdown_py.exe,sha256=v28gCA3zzRuAF9HD2Ir0H7OwQGvXx_Aj0oFSxTdzuiQ,108421
|
2 |
+
Markdown-3.6.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
3 |
+
Markdown-3.6.dist-info/LICENSE.md,sha256=e6TrbRCzKy0R3OE4ITQDUc27swuozMZ4Qdsv_Ybnmso,1650
|
4 |
+
Markdown-3.6.dist-info/METADATA,sha256=8_ETqzTxcOemQXj7ujUabMFcDBDGtsRrccFDr1-XWvc,7040
|
5 |
+
Markdown-3.6.dist-info/RECORD,,
|
6 |
+
Markdown-3.6.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
7 |
+
Markdown-3.6.dist-info/entry_points.txt,sha256=lMEyiiA_ZZyfPCBlDviBl-SiU0cfoeuEKpwxw361sKQ,1102
|
8 |
+
Markdown-3.6.dist-info/top_level.txt,sha256=IAxs8x618RXoH1uCqeLLxXsDefJvE_mIibr_M4sOlyk,9
|
9 |
+
markdown/__init__.py,sha256=dfzwwdpG9L8QLEPBpLFPIHx_BN056aZXp9xZifTxYIU,1777
|
10 |
+
markdown/__main__.py,sha256=innFBxRqwPBNxG1zhKktJji4bnRKtVyYYd30ID13Tcw,5859
|
11 |
+
markdown/__meta__.py,sha256=DqtqnYYLznrkvI1G4JalBc4WpgOp48naNoG9zlMWZas,1712
|
12 |
+
markdown/__pycache__/__init__.cpython-312.pyc,,
|
13 |
+
markdown/__pycache__/__main__.cpython-312.pyc,,
|
14 |
+
markdown/__pycache__/__meta__.cpython-312.pyc,,
|
15 |
+
markdown/__pycache__/blockparser.cpython-312.pyc,,
|
16 |
+
markdown/__pycache__/blockprocessors.cpython-312.pyc,,
|
17 |
+
markdown/__pycache__/core.cpython-312.pyc,,
|
18 |
+
markdown/__pycache__/htmlparser.cpython-312.pyc,,
|
19 |
+
markdown/__pycache__/inlinepatterns.cpython-312.pyc,,
|
20 |
+
markdown/__pycache__/postprocessors.cpython-312.pyc,,
|
21 |
+
markdown/__pycache__/preprocessors.cpython-312.pyc,,
|
22 |
+
markdown/__pycache__/serializers.cpython-312.pyc,,
|
23 |
+
markdown/__pycache__/test_tools.cpython-312.pyc,,
|
24 |
+
markdown/__pycache__/treeprocessors.cpython-312.pyc,,
|
25 |
+
markdown/__pycache__/util.cpython-312.pyc,,
|
26 |
+
markdown/blockparser.py,sha256=j4CQImVpiq7g9pz8wCxvzT61X_T2iSAjXupHJk8P3eA,5728
|
27 |
+
markdown/blockprocessors.py,sha256=koY5rq8DixzBCHcquvZJp6x2JYyBGjrwxMWNZhd6D2U,27013
|
28 |
+
markdown/core.py,sha256=DyyzDsmd-KcuEp8ZWUKJAeUCt7B7G3J3NeqZqp3LphI,21335
|
29 |
+
markdown/extensions/__init__.py,sha256=9z1khsdKCVrmrJ_2GfxtPAdjD3FyMe5vhC7wmM4O9m0,4822
|
30 |
+
markdown/extensions/__pycache__/__init__.cpython-312.pyc,,
|
31 |
+
markdown/extensions/__pycache__/abbr.cpython-312.pyc,,
|
32 |
+
markdown/extensions/__pycache__/admonition.cpython-312.pyc,,
|
33 |
+
markdown/extensions/__pycache__/attr_list.cpython-312.pyc,,
|
34 |
+
markdown/extensions/__pycache__/codehilite.cpython-312.pyc,,
|
35 |
+
markdown/extensions/__pycache__/def_list.cpython-312.pyc,,
|
36 |
+
markdown/extensions/__pycache__/extra.cpython-312.pyc,,
|
37 |
+
markdown/extensions/__pycache__/fenced_code.cpython-312.pyc,,
|
38 |
+
markdown/extensions/__pycache__/footnotes.cpython-312.pyc,,
|
39 |
+
markdown/extensions/__pycache__/legacy_attrs.cpython-312.pyc,,
|
40 |
+
markdown/extensions/__pycache__/legacy_em.cpython-312.pyc,,
|
41 |
+
markdown/extensions/__pycache__/md_in_html.cpython-312.pyc,,
|
42 |
+
markdown/extensions/__pycache__/meta.cpython-312.pyc,,
|
43 |
+
markdown/extensions/__pycache__/nl2br.cpython-312.pyc,,
|
44 |
+
markdown/extensions/__pycache__/sane_lists.cpython-312.pyc,,
|
45 |
+
markdown/extensions/__pycache__/smarty.cpython-312.pyc,,
|
46 |
+
markdown/extensions/__pycache__/tables.cpython-312.pyc,,
|
47 |
+
markdown/extensions/__pycache__/toc.cpython-312.pyc,,
|
48 |
+
markdown/extensions/__pycache__/wikilinks.cpython-312.pyc,,
|
49 |
+
markdown/extensions/abbr.py,sha256=JqFOfU7JlhIFY06-nZnSU0wDqneFKKWMe95eXB-iLtc,3250
|
50 |
+
markdown/extensions/admonition.py,sha256=Hqcn3I8JG0i-OPWdoqI189TmlQRgH6bs5PmpCANyLlg,6547
|
51 |
+
markdown/extensions/attr_list.py,sha256=t3PrgAr5Ebldnq3nJNbteBt79bN0ccXS5RemmQfUZ9g,7820
|
52 |
+
markdown/extensions/codehilite.py,sha256=ChlmpM6S--j-UK7t82859UpYjm8EftdiLqmgDnknyes,13503
|
53 |
+
markdown/extensions/def_list.py,sha256=J3NVa6CllfZPsboJCEycPyRhtjBHnOn8ET6omEvVlDo,4029
|
54 |
+
markdown/extensions/extra.py,sha256=1vleT284kued4HQBtF83IjSumJVo0q3ng6MjTkVNfNQ,2163
|
55 |
+
markdown/extensions/fenced_code.py,sha256=-fYSmRZ9DTYQ8HO9b_78i47kVyVu6mcVJlqVTMdzvo4,8300
|
56 |
+
markdown/extensions/footnotes.py,sha256=bRFlmIBOKDI5efG1jZfDkMoV2osfqWip1rN1j2P-mMg,16710
|
57 |
+
markdown/extensions/legacy_attrs.py,sha256=oWcyNrfP0F6zsBoBOaD5NiwrJyy4kCpgQLl12HA7JGU,2788
|
58 |
+
markdown/extensions/legacy_em.py,sha256=-Z_w4PEGSS-Xg-2-BtGAnXwwy5g5GDgv2tngASnPgxg,1693
|
59 |
+
markdown/extensions/md_in_html.py,sha256=y4HEWEnkvfih22fojcaJeAmjx1AtF8N-a_jb6IDFfts,16546
|
60 |
+
markdown/extensions/meta.py,sha256=v_4Uq7nbcQ76V1YAvqVPiNLbRLIQHJsnfsk-tN70RmY,2600
|
61 |
+
markdown/extensions/nl2br.py,sha256=9KKcrPs62c3ENNnmOJZs0rrXXqUtTCfd43j1_OPpmgU,1090
|
62 |
+
markdown/extensions/sane_lists.py,sha256=ogAKcm7gEpcXV7fSTf8JZH5YdKAssPCEOUzdGM3C9Tw,2150
|
63 |
+
markdown/extensions/smarty.py,sha256=yqT0OiE2AqYrqqZtcUFFmp2eJsQHomiKzgyG2JFb9rI,11048
|
64 |
+
markdown/extensions/tables.py,sha256=oTDvGD1qp9xjVWPGYNgDBWe9NqsX5gS6UU5wUsQ1bC8,8741
|
65 |
+
markdown/extensions/toc.py,sha256=PGg-EqbBubm3n0b633r8Xa9kc6JIdbo20HGAOZ6GEl8,18322
|
66 |
+
markdown/extensions/wikilinks.py,sha256=j7D2sozica6sqXOUa_GuAXqIzxp-7Hi60bfXymiuma8,3285
|
67 |
+
markdown/htmlparser.py,sha256=dEr6IE7i9b6Tc1gdCLZGeWw6g6-E-jK1Z4KPj8yGk8Q,14332
|
68 |
+
markdown/inlinepatterns.py,sha256=7_HF5nTOyQag_CyBgU4wwmuI6aMjtadvGadyS9IP21w,38256
|
69 |
+
markdown/postprocessors.py,sha256=eYi6eW0mGudmWpmsW45hduLwX66Zr8Bf44WyU9vKp-I,4807
|
70 |
+
markdown/preprocessors.py,sha256=pq5NnHKkOSVQeIo-ajC-Yt44kvyMV97D04FBOQXctJM,3224
|
71 |
+
markdown/serializers.py,sha256=YtAFYQoOdp_TAmYGow6nBo0eB6I-Sl4PTLdLDfQJHwQ,7174
|
72 |
+
markdown/test_tools.py,sha256=MtN4cf3ZPDtb83wXLTol-3q3aIGRIkJ2zWr6fd-RgVE,8662
|
73 |
+
markdown/treeprocessors.py,sha256=o4dnoZZsIeVV8qR45Njr8XgwKleWYDS5pv8dKQhJvv8,17651
|
74 |
+
markdown/util.py,sha256=vJ1E0xjMzDAlTqLUSJWgdEvxdQfLXDEYUssOQMw9kPQ,13929
|
.venv/Lib/site-packages/Markdown-3.6.dist-info/WHEEL
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Wheel-Version: 1.0
|
2 |
+
Generator: bdist_wheel (0.43.0)
|
3 |
+
Root-Is-Purelib: true
|
4 |
+
Tag: py3-none-any
|
5 |
+
|
.venv/Lib/site-packages/Markdown-3.6.dist-info/entry_points.txt
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[console_scripts]
|
2 |
+
markdown_py = markdown.__main__:run
|
3 |
+
|
4 |
+
[markdown.extensions]
|
5 |
+
abbr = markdown.extensions.abbr:AbbrExtension
|
6 |
+
admonition = markdown.extensions.admonition:AdmonitionExtension
|
7 |
+
attr_list = markdown.extensions.attr_list:AttrListExtension
|
8 |
+
codehilite = markdown.extensions.codehilite:CodeHiliteExtension
|
9 |
+
def_list = markdown.extensions.def_list:DefListExtension
|
10 |
+
extra = markdown.extensions.extra:ExtraExtension
|
11 |
+
fenced_code = markdown.extensions.fenced_code:FencedCodeExtension
|
12 |
+
footnotes = markdown.extensions.footnotes:FootnoteExtension
|
13 |
+
legacy_attrs = markdown.extensions.legacy_attrs:LegacyAttrExtension
|
14 |
+
legacy_em = markdown.extensions.legacy_em:LegacyEmExtension
|
15 |
+
md_in_html = markdown.extensions.md_in_html:MarkdownInHtmlExtension
|
16 |
+
meta = markdown.extensions.meta:MetaExtension
|
17 |
+
nl2br = markdown.extensions.nl2br:Nl2BrExtension
|
18 |
+
sane_lists = markdown.extensions.sane_lists:SaneListExtension
|
19 |
+
smarty = markdown.extensions.smarty:SmartyExtension
|
20 |
+
tables = markdown.extensions.tables:TableExtension
|
21 |
+
toc = markdown.extensions.toc:TocExtension
|
22 |
+
wikilinks = markdown.extensions.wikilinks:WikiLinkExtension
|
.venv/Lib/site-packages/Markdown-3.6.dist-info/top_level.txt
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
markdown
|
.venv/Lib/site-packages/absl/__init__.py
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright 2017 The Abseil Authors.
|
2 |
+
#
|
3 |
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4 |
+
# you may not use this file except in compliance with the License.
|
5 |
+
# You may obtain a copy of the License at
|
6 |
+
#
|
7 |
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8 |
+
#
|
9 |
+
# Unless required by applicable law or agreed to in writing, software
|
10 |
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11 |
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12 |
+
# See the License for the specific language governing permissions and
|
13 |
+
# limitations under the License.
|
.venv/Lib/site-packages/absl/__pycache__/__init__.cpython-312.pyc
ADDED
Binary file (182 Bytes). View file
|
|
.venv/Lib/site-packages/absl/__pycache__/app.cpython-312.pyc
ADDED
Binary file (19.3 kB). View file
|
|
.venv/Lib/site-packages/absl/__pycache__/command_name.cpython-312.pyc
ADDED
Binary file (2.36 kB). View file
|
|
.venv/Lib/site-packages/absl/app.py
ADDED
@@ -0,0 +1,480 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright 2017 The Abseil Authors.
|
2 |
+
#
|
3 |
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4 |
+
# you may not use this file except in compliance with the License.
|
5 |
+
# You may obtain a copy of the License at
|
6 |
+
#
|
7 |
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8 |
+
#
|
9 |
+
# Unless required by applicable law or agreed to in writing, software
|
10 |
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11 |
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12 |
+
# See the License for the specific language governing permissions and
|
13 |
+
# limitations under the License.
|
14 |
+
|
15 |
+
"""Generic entry point for Abseil Python applications.
|
16 |
+
|
17 |
+
To use this module, define a ``main`` function with a single ``argv`` argument
|
18 |
+
and call ``app.run(main)``. For example::
|
19 |
+
|
20 |
+
def main(argv):
|
21 |
+
if len(argv) > 1:
|
22 |
+
raise app.UsageError('Too many command-line arguments.')
|
23 |
+
|
24 |
+
if __name__ == '__main__':
|
25 |
+
app.run(main)
|
26 |
+
"""
|
27 |
+
|
28 |
+
import collections
|
29 |
+
import errno
|
30 |
+
import os
|
31 |
+
import pdb
|
32 |
+
import sys
|
33 |
+
import textwrap
|
34 |
+
import traceback
|
35 |
+
|
36 |
+
from absl import command_name
|
37 |
+
from absl import flags
|
38 |
+
from absl import logging
|
39 |
+
|
40 |
+
try:
|
41 |
+
import faulthandler
|
42 |
+
except ImportError:
|
43 |
+
faulthandler = None
|
44 |
+
|
45 |
+
FLAGS = flags.FLAGS
|
46 |
+
|
47 |
+
flags.DEFINE_boolean('run_with_pdb', False, 'Set to true for PDB debug mode')
|
48 |
+
flags.DEFINE_boolean('pdb_post_mortem', False,
|
49 |
+
'Set to true to handle uncaught exceptions with PDB '
|
50 |
+
'post mortem.')
|
51 |
+
flags.DEFINE_alias('pdb', 'pdb_post_mortem')
|
52 |
+
flags.DEFINE_boolean('run_with_profiling', False,
|
53 |
+
'Set to true for profiling the script. '
|
54 |
+
'Execution will be slower, and the output format might '
|
55 |
+
'change over time.')
|
56 |
+
flags.DEFINE_string('profile_file', None,
|
57 |
+
'Dump profile information to a file (for python -m '
|
58 |
+
'pstats). Implies --run_with_profiling.')
|
59 |
+
flags.DEFINE_boolean('use_cprofile_for_profiling', True,
|
60 |
+
'Use cProfile instead of the profile module for '
|
61 |
+
'profiling. This has no effect unless '
|
62 |
+
'--run_with_profiling is set.')
|
63 |
+
flags.DEFINE_boolean('only_check_args', False,
|
64 |
+
'Set to true to validate args and exit.',
|
65 |
+
allow_hide_cpp=True)
|
66 |
+
|
67 |
+
|
68 |
+
# If main() exits via an abnormal exception, call into these
|
69 |
+
# handlers before exiting.
|
70 |
+
EXCEPTION_HANDLERS = []
|
71 |
+
|
72 |
+
|
73 |
+
class Error(Exception):
|
74 |
+
pass
|
75 |
+
|
76 |
+
|
77 |
+
class UsageError(Error):
|
78 |
+
"""Exception raised when the arguments supplied by the user are invalid.
|
79 |
+
|
80 |
+
Raise this when the arguments supplied are invalid from the point of
|
81 |
+
view of the application. For example when two mutually exclusive
|
82 |
+
flags have been supplied or when there are not enough non-flag
|
83 |
+
arguments. It is distinct from flags.Error which covers the lower
|
84 |
+
level of parsing and validating individual flags.
|
85 |
+
"""
|
86 |
+
|
87 |
+
def __init__(self, message, exitcode=1):
|
88 |
+
super(UsageError, self).__init__(message)
|
89 |
+
self.exitcode = exitcode
|
90 |
+
|
91 |
+
|
92 |
+
class HelpFlag(flags.BooleanFlag):
|
93 |
+
"""Special boolean flag that displays usage and raises SystemExit."""
|
94 |
+
NAME = 'help'
|
95 |
+
SHORT_NAME = '?'
|
96 |
+
|
97 |
+
def __init__(self):
|
98 |
+
super(HelpFlag, self).__init__(
|
99 |
+
self.NAME, False, 'show this help',
|
100 |
+
short_name=self.SHORT_NAME, allow_hide_cpp=True)
|
101 |
+
|
102 |
+
def parse(self, arg):
|
103 |
+
if self._parse(arg):
|
104 |
+
usage(shorthelp=True, writeto_stdout=True)
|
105 |
+
# Advertise --helpfull on stdout, since usage() was on stdout.
|
106 |
+
print()
|
107 |
+
print('Try --helpfull to get a list of all flags.')
|
108 |
+
sys.exit(1)
|
109 |
+
|
110 |
+
|
111 |
+
class HelpshortFlag(HelpFlag):
|
112 |
+
"""--helpshort is an alias for --help."""
|
113 |
+
NAME = 'helpshort'
|
114 |
+
SHORT_NAME = None
|
115 |
+
|
116 |
+
|
117 |
+
class HelpfullFlag(flags.BooleanFlag):
|
118 |
+
"""Display help for flags in the main module and all dependent modules."""
|
119 |
+
|
120 |
+
def __init__(self):
|
121 |
+
super(HelpfullFlag, self).__init__(
|
122 |
+
'helpfull', False, 'show full help', allow_hide_cpp=True)
|
123 |
+
|
124 |
+
def parse(self, arg):
|
125 |
+
if self._parse(arg):
|
126 |
+
usage(writeto_stdout=True)
|
127 |
+
sys.exit(1)
|
128 |
+
|
129 |
+
|
130 |
+
class HelpXMLFlag(flags.BooleanFlag):
|
131 |
+
"""Similar to HelpfullFlag, but generates output in XML format."""
|
132 |
+
|
133 |
+
def __init__(self):
|
134 |
+
super(HelpXMLFlag, self).__init__(
|
135 |
+
'helpxml', False, 'like --helpfull, but generates XML output',
|
136 |
+
allow_hide_cpp=True)
|
137 |
+
|
138 |
+
def parse(self, arg):
|
139 |
+
if self._parse(arg):
|
140 |
+
flags.FLAGS.write_help_in_xml_format(sys.stdout)
|
141 |
+
sys.exit(1)
|
142 |
+
|
143 |
+
|
144 |
+
def parse_flags_with_usage(args):
|
145 |
+
"""Tries to parse the flags, print usage, and exit if unparsable.
|
146 |
+
|
147 |
+
Args:
|
148 |
+
args: [str], a non-empty list of the command line arguments including
|
149 |
+
program name.
|
150 |
+
|
151 |
+
Returns:
|
152 |
+
[str], a non-empty list of remaining command line arguments after parsing
|
153 |
+
flags, including program name.
|
154 |
+
"""
|
155 |
+
try:
|
156 |
+
return FLAGS(args)
|
157 |
+
except flags.Error as error:
|
158 |
+
message = str(error)
|
159 |
+
if '\n' in message:
|
160 |
+
final_message = 'FATAL Flags parsing error:\n%s\n' % textwrap.indent(
|
161 |
+
message, ' ')
|
162 |
+
else:
|
163 |
+
final_message = 'FATAL Flags parsing error: %s\n' % message
|
164 |
+
sys.stderr.write(final_message)
|
165 |
+
sys.stderr.write('Pass --helpshort or --helpfull to see help on flags.\n')
|
166 |
+
sys.exit(1)
|
167 |
+
|
168 |
+
|
169 |
+
_define_help_flags_called = False
|
170 |
+
|
171 |
+
|
172 |
+
def define_help_flags():
|
173 |
+
"""Registers help flags. Idempotent."""
|
174 |
+
# Use a global to ensure idempotence.
|
175 |
+
global _define_help_flags_called
|
176 |
+
|
177 |
+
if not _define_help_flags_called:
|
178 |
+
flags.DEFINE_flag(HelpFlag())
|
179 |
+
flags.DEFINE_flag(HelpshortFlag()) # alias for --help
|
180 |
+
flags.DEFINE_flag(HelpfullFlag())
|
181 |
+
flags.DEFINE_flag(HelpXMLFlag())
|
182 |
+
_define_help_flags_called = True
|
183 |
+
|
184 |
+
|
185 |
+
def _register_and_parse_flags_with_usage(
|
186 |
+
argv=None,
|
187 |
+
flags_parser=parse_flags_with_usage,
|
188 |
+
):
|
189 |
+
"""Registers help flags, parses arguments and shows usage if appropriate.
|
190 |
+
|
191 |
+
This also calls sys.exit(0) if flag --only_check_args is True.
|
192 |
+
|
193 |
+
Args:
|
194 |
+
argv: [str], a non-empty list of the command line arguments including
|
195 |
+
program name, sys.argv is used if None.
|
196 |
+
flags_parser: Callable[[List[Text]], Any], the function used to parse flags.
|
197 |
+
The return value of this function is passed to `main` untouched.
|
198 |
+
It must guarantee FLAGS is parsed after this function is called.
|
199 |
+
|
200 |
+
Returns:
|
201 |
+
The return value of `flags_parser`. When using the default `flags_parser`,
|
202 |
+
it returns the following:
|
203 |
+
[str], a non-empty list of remaining command line arguments after parsing
|
204 |
+
flags, including program name.
|
205 |
+
|
206 |
+
Raises:
|
207 |
+
Error: Raised when flags_parser is called, but FLAGS is not parsed.
|
208 |
+
SystemError: Raised when it's called more than once.
|
209 |
+
"""
|
210 |
+
if _register_and_parse_flags_with_usage.done:
|
211 |
+
raise SystemError('Flag registration can be done only once.')
|
212 |
+
|
213 |
+
define_help_flags()
|
214 |
+
|
215 |
+
original_argv = sys.argv if argv is None else argv
|
216 |
+
args_to_main = flags_parser(original_argv)
|
217 |
+
if not FLAGS.is_parsed():
|
218 |
+
raise Error('FLAGS must be parsed after flags_parser is called.')
|
219 |
+
|
220 |
+
# Exit when told so.
|
221 |
+
if FLAGS.only_check_args:
|
222 |
+
sys.exit(0)
|
223 |
+
# Immediately after flags are parsed, bump verbosity to INFO if the flag has
|
224 |
+
# not been set.
|
225 |
+
if FLAGS['verbosity'].using_default_value:
|
226 |
+
FLAGS.verbosity = 0
|
227 |
+
_register_and_parse_flags_with_usage.done = True
|
228 |
+
|
229 |
+
return args_to_main
|
230 |
+
|
231 |
+
_register_and_parse_flags_with_usage.done = False
|
232 |
+
|
233 |
+
|
234 |
+
def _run_main(main, argv):
|
235 |
+
"""Calls main, optionally with pdb or profiler."""
|
236 |
+
if FLAGS.run_with_pdb:
|
237 |
+
sys.exit(pdb.runcall(main, argv))
|
238 |
+
elif FLAGS.run_with_profiling or FLAGS.profile_file:
|
239 |
+
# Avoid import overhead since most apps (including performance-sensitive
|
240 |
+
# ones) won't be run with profiling.
|
241 |
+
# pylint: disable=g-import-not-at-top
|
242 |
+
import atexit
|
243 |
+
if FLAGS.use_cprofile_for_profiling:
|
244 |
+
import cProfile as profile
|
245 |
+
else:
|
246 |
+
import profile
|
247 |
+
profiler = profile.Profile()
|
248 |
+
if FLAGS.profile_file:
|
249 |
+
atexit.register(profiler.dump_stats, FLAGS.profile_file)
|
250 |
+
else:
|
251 |
+
atexit.register(profiler.print_stats)
|
252 |
+
sys.exit(profiler.runcall(main, argv))
|
253 |
+
else:
|
254 |
+
sys.exit(main(argv))
|
255 |
+
|
256 |
+
|
257 |
+
def _call_exception_handlers(exception):
|
258 |
+
"""Calls any installed exception handlers."""
|
259 |
+
for handler in EXCEPTION_HANDLERS:
|
260 |
+
try:
|
261 |
+
if handler.wants(exception):
|
262 |
+
handler.handle(exception)
|
263 |
+
except: # pylint: disable=bare-except
|
264 |
+
try:
|
265 |
+
# We don't want to stop for exceptions in the exception handlers but
|
266 |
+
# we shouldn't hide them either.
|
267 |
+
logging.error(traceback.format_exc())
|
268 |
+
except: # pylint: disable=bare-except
|
269 |
+
# In case even the logging statement fails, ignore.
|
270 |
+
pass
|
271 |
+
|
272 |
+
|
273 |
+
def run(
|
274 |
+
main,
|
275 |
+
argv=None,
|
276 |
+
flags_parser=parse_flags_with_usage,
|
277 |
+
):
|
278 |
+
"""Begins executing the program.
|
279 |
+
|
280 |
+
Args:
|
281 |
+
main: The main function to execute. It takes an single argument "argv",
|
282 |
+
which is a list of command line arguments with parsed flags removed.
|
283 |
+
The return value is passed to `sys.exit`, and so for example
|
284 |
+
a return value of 0 or None results in a successful termination, whereas
|
285 |
+
a return value of 1 results in abnormal termination.
|
286 |
+
For more details, see https://docs.python.org/3/library/sys#sys.exit
|
287 |
+
argv: A non-empty list of the command line arguments including program name,
|
288 |
+
sys.argv is used if None.
|
289 |
+
flags_parser: Callable[[List[Text]], Any], the function used to parse flags.
|
290 |
+
The return value of this function is passed to `main` untouched.
|
291 |
+
It must guarantee FLAGS is parsed after this function is called.
|
292 |
+
Should be passed as a keyword-only arg which will become mandatory in a
|
293 |
+
future release.
|
294 |
+
- Parses command line flags with the flag module.
|
295 |
+
- If there are any errors, prints usage().
|
296 |
+
- Calls main() with the remaining arguments.
|
297 |
+
- If main() raises a UsageError, prints usage and the error message.
|
298 |
+
"""
|
299 |
+
try:
|
300 |
+
args = _run_init(
|
301 |
+
sys.argv if argv is None else argv,
|
302 |
+
flags_parser,
|
303 |
+
)
|
304 |
+
while _init_callbacks:
|
305 |
+
callback = _init_callbacks.popleft()
|
306 |
+
callback()
|
307 |
+
try:
|
308 |
+
_run_main(main, args)
|
309 |
+
except UsageError as error:
|
310 |
+
usage(shorthelp=True, detailed_error=error, exitcode=error.exitcode)
|
311 |
+
except:
|
312 |
+
exc = sys.exc_info()[1]
|
313 |
+
# Don't try to post-mortem debug successful SystemExits, since those
|
314 |
+
# mean there wasn't actually an error. In particular, the test framework
|
315 |
+
# raises SystemExit(False) even if all tests passed.
|
316 |
+
if isinstance(exc, SystemExit) and not exc.code:
|
317 |
+
raise
|
318 |
+
|
319 |
+
# Check the tty so that we don't hang waiting for input in an
|
320 |
+
# non-interactive scenario.
|
321 |
+
if FLAGS.pdb_post_mortem and sys.stdout.isatty():
|
322 |
+
traceback.print_exc()
|
323 |
+
print()
|
324 |
+
print(' *** Entering post-mortem debugging ***')
|
325 |
+
print()
|
326 |
+
pdb.post_mortem()
|
327 |
+
raise
|
328 |
+
except Exception as e:
|
329 |
+
_call_exception_handlers(e)
|
330 |
+
raise
|
331 |
+
|
332 |
+
# Callbacks which have been deferred until after _run_init has been called.
|
333 |
+
_init_callbacks = collections.deque()
|
334 |
+
|
335 |
+
|
336 |
+
def call_after_init(callback):
|
337 |
+
"""Calls the given callback only once ABSL has finished initialization.
|
338 |
+
|
339 |
+
If ABSL has already finished initialization when ``call_after_init`` is
|
340 |
+
called then the callback is executed immediately, otherwise `callback` is
|
341 |
+
stored to be executed after ``app.run`` has finished initializing (aka. just
|
342 |
+
before the main function is called).
|
343 |
+
|
344 |
+
If called after ``app.run``, this is equivalent to calling ``callback()`` in
|
345 |
+
the caller thread. If called before ``app.run``, callbacks are run
|
346 |
+
sequentially (in an undefined order) in the same thread as ``app.run``.
|
347 |
+
|
348 |
+
Args:
|
349 |
+
callback: a callable to be called once ABSL has finished initialization.
|
350 |
+
This may be immediate if initialization has already finished. It
|
351 |
+
takes no arguments and returns nothing.
|
352 |
+
"""
|
353 |
+
if _run_init.done:
|
354 |
+
callback()
|
355 |
+
else:
|
356 |
+
_init_callbacks.append(callback)
|
357 |
+
|
358 |
+
|
359 |
+
def _run_init(
|
360 |
+
argv,
|
361 |
+
flags_parser,
|
362 |
+
):
|
363 |
+
"""Does one-time initialization and re-parses flags on rerun."""
|
364 |
+
if _run_init.done:
|
365 |
+
return flags_parser(argv)
|
366 |
+
command_name.make_process_name_useful()
|
367 |
+
# Set up absl logging handler.
|
368 |
+
logging.use_absl_handler()
|
369 |
+
args = _register_and_parse_flags_with_usage(
|
370 |
+
argv=argv,
|
371 |
+
flags_parser=flags_parser,
|
372 |
+
)
|
373 |
+
if faulthandler:
|
374 |
+
try:
|
375 |
+
faulthandler.enable()
|
376 |
+
except Exception: # pylint: disable=broad-except
|
377 |
+
# Some tests verify stderr output very closely, so don't print anything.
|
378 |
+
# Disabled faulthandler is a low-impact error.
|
379 |
+
pass
|
380 |
+
_run_init.done = True
|
381 |
+
return args
|
382 |
+
|
383 |
+
|
384 |
+
_run_init.done = False
|
385 |
+
|
386 |
+
|
387 |
+
def usage(shorthelp=False, writeto_stdout=False, detailed_error=None,
|
388 |
+
exitcode=None):
|
389 |
+
"""Writes __main__'s docstring to stderr with some help text.
|
390 |
+
|
391 |
+
Args:
|
392 |
+
shorthelp: bool, if True, prints only flags from the main module,
|
393 |
+
rather than all flags.
|
394 |
+
writeto_stdout: bool, if True, writes help message to stdout,
|
395 |
+
rather than to stderr.
|
396 |
+
detailed_error: str, additional detail about why usage info was presented.
|
397 |
+
exitcode: optional integer, if set, exits with this status code after
|
398 |
+
writing help.
|
399 |
+
"""
|
400 |
+
if writeto_stdout:
|
401 |
+
stdfile = sys.stdout
|
402 |
+
else:
|
403 |
+
stdfile = sys.stderr
|
404 |
+
|
405 |
+
doc = sys.modules['__main__'].__doc__
|
406 |
+
if not doc:
|
407 |
+
doc = '\nUSAGE: %s [flags]\n' % sys.argv[0]
|
408 |
+
doc = flags.text_wrap(doc, indent=' ', firstline_indent='')
|
409 |
+
else:
|
410 |
+
# Replace all '%s' with sys.argv[0], and all '%%' with '%'.
|
411 |
+
num_specifiers = doc.count('%') - 2 * doc.count('%%')
|
412 |
+
try:
|
413 |
+
doc %= (sys.argv[0],) * num_specifiers
|
414 |
+
except (OverflowError, TypeError, ValueError):
|
415 |
+
# Just display the docstring as-is.
|
416 |
+
pass
|
417 |
+
if shorthelp:
|
418 |
+
flag_str = FLAGS.main_module_help()
|
419 |
+
else:
|
420 |
+
flag_str = FLAGS.get_help()
|
421 |
+
try:
|
422 |
+
stdfile.write(doc)
|
423 |
+
if flag_str:
|
424 |
+
stdfile.write('\nflags:\n')
|
425 |
+
stdfile.write(flag_str)
|
426 |
+
stdfile.write('\n')
|
427 |
+
if detailed_error is not None:
|
428 |
+
stdfile.write('\n%s\n' % detailed_error)
|
429 |
+
except IOError as e:
|
430 |
+
# We avoid printing a huge backtrace if we get EPIPE, because
|
431 |
+
# "foo.par --help | less" is a frequent use case.
|
432 |
+
if e.errno != errno.EPIPE:
|
433 |
+
raise
|
434 |
+
if exitcode is not None:
|
435 |
+
sys.exit(exitcode)
|
436 |
+
|
437 |
+
|
438 |
+
class ExceptionHandler(object):
|
439 |
+
"""Base exception handler from which other may inherit."""
|
440 |
+
|
441 |
+
def wants(self, exc):
|
442 |
+
"""Returns whether this handler wants to handle the exception or not.
|
443 |
+
|
444 |
+
This base class returns True for all exceptions by default. Override in
|
445 |
+
subclass if it wants to be more selective.
|
446 |
+
|
447 |
+
Args:
|
448 |
+
exc: Exception, the current exception.
|
449 |
+
"""
|
450 |
+
del exc # Unused.
|
451 |
+
return True
|
452 |
+
|
453 |
+
def handle(self, exc):
|
454 |
+
"""Do something with the current exception.
|
455 |
+
|
456 |
+
Args:
|
457 |
+
exc: Exception, the current exception
|
458 |
+
|
459 |
+
This method must be overridden.
|
460 |
+
"""
|
461 |
+
raise NotImplementedError()
|
462 |
+
|
463 |
+
|
464 |
+
def install_exception_handler(handler):
|
465 |
+
"""Installs an exception handler.
|
466 |
+
|
467 |
+
Args:
|
468 |
+
handler: ExceptionHandler, the exception handler to install.
|
469 |
+
|
470 |
+
Raises:
|
471 |
+
TypeError: Raised when the handler was not of the correct type.
|
472 |
+
|
473 |
+
All installed exception handlers will be called if main() exits via
|
474 |
+
an abnormal exception, i.e. not one of SystemExit, KeyboardInterrupt,
|
475 |
+
FlagsError or UsageError.
|
476 |
+
"""
|
477 |
+
if not isinstance(handler, ExceptionHandler):
|
478 |
+
raise TypeError('handler of type %s does not inherit from ExceptionHandler'
|
479 |
+
% type(handler))
|
480 |
+
EXCEPTION_HANDLERS.append(handler)
|
.venv/Lib/site-packages/absl/app.pyi
ADDED
@@ -0,0 +1,99 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
from typing import Any, Callable, Collection, Iterable, List, NoReturn, Optional, Text, TypeVar, Union, overload
|
3 |
+
|
4 |
+
from absl.flags import _flag
|
5 |
+
|
6 |
+
|
7 |
+
_MainArgs = TypeVar('_MainArgs')
|
8 |
+
_Exc = TypeVar('_Exc', bound=Exception)
|
9 |
+
|
10 |
+
|
11 |
+
class ExceptionHandler():
|
12 |
+
|
13 |
+
def wants(self, exc: _Exc) -> bool:
|
14 |
+
...
|
15 |
+
|
16 |
+
def handle(self, exc: _Exc):
|
17 |
+
...
|
18 |
+
|
19 |
+
|
20 |
+
EXCEPTION_HANDLERS: List[ExceptionHandler] = ...
|
21 |
+
|
22 |
+
|
23 |
+
class HelpFlag(_flag.BooleanFlag):
|
24 |
+
def __init__(self):
|
25 |
+
...
|
26 |
+
|
27 |
+
|
28 |
+
class HelpshortFlag(HelpFlag):
|
29 |
+
...
|
30 |
+
|
31 |
+
|
32 |
+
class HelpfullFlag(_flag.BooleanFlag):
|
33 |
+
def __init__(self):
|
34 |
+
...
|
35 |
+
|
36 |
+
|
37 |
+
class HelpXMLFlag(_flag.BooleanFlag):
|
38 |
+
def __init__(self):
|
39 |
+
...
|
40 |
+
|
41 |
+
|
42 |
+
def define_help_flags() -> None:
|
43 |
+
...
|
44 |
+
|
45 |
+
|
46 |
+
@overload
|
47 |
+
def usage(shorthelp: Union[bool, int] = ...,
|
48 |
+
writeto_stdout: Union[bool, int] = ...,
|
49 |
+
detailed_error: Optional[Any] = ...,
|
50 |
+
exitcode: None = ...) -> None:
|
51 |
+
...
|
52 |
+
|
53 |
+
|
54 |
+
@overload
|
55 |
+
def usage(shorthelp: Union[bool, int] = ...,
|
56 |
+
writeto_stdout: Union[bool, int] = ...,
|
57 |
+
detailed_error: Optional[Any] = ...,
|
58 |
+
exitcode: int = ...) -> NoReturn:
|
59 |
+
...
|
60 |
+
|
61 |
+
|
62 |
+
def install_exception_handler(handler: ExceptionHandler) -> None:
|
63 |
+
...
|
64 |
+
|
65 |
+
|
66 |
+
class Error(Exception):
|
67 |
+
...
|
68 |
+
|
69 |
+
|
70 |
+
class UsageError(Error):
|
71 |
+
exitcode: int
|
72 |
+
|
73 |
+
|
74 |
+
def parse_flags_with_usage(args: List[Text]) -> List[Text]:
|
75 |
+
...
|
76 |
+
|
77 |
+
|
78 |
+
def call_after_init(callback: Callable[[], Any]) -> None:
|
79 |
+
...
|
80 |
+
|
81 |
+
|
82 |
+
# Without the flag_parser argument, `main` should require a List[Text].
|
83 |
+
@overload
|
84 |
+
def run(
|
85 |
+
main: Callable[[List[Text]], Any],
|
86 |
+
argv: Optional[List[Text]] = ...,
|
87 |
+
*,
|
88 |
+
) -> NoReturn:
|
89 |
+
...
|
90 |
+
|
91 |
+
|
92 |
+
@overload
|
93 |
+
def run(
|
94 |
+
main: Callable[[_MainArgs], Any],
|
95 |
+
argv: Optional[List[Text]] = ...,
|
96 |
+
*,
|
97 |
+
flags_parser: Callable[[List[Text]], _MainArgs],
|
98 |
+
) -> NoReturn:
|
99 |
+
...
|
.venv/Lib/site-packages/absl/command_name.py
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright 2017 The Abseil Authors.
|
2 |
+
#
|
3 |
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4 |
+
# you may not use this file except in compliance with the License.
|
5 |
+
# You may obtain a copy of the License at
|
6 |
+
#
|
7 |
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8 |
+
#
|
9 |
+
# Unless required by applicable law or agreed to in writing, software
|
10 |
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11 |
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12 |
+
# See the License for the specific language governing permissions and
|
13 |
+
# limitations under the License.
|
14 |
+
|
15 |
+
"""A tiny stand alone library to change the kernel process name on Linux."""
|
16 |
+
|
17 |
+
import os
|
18 |
+
import sys
|
19 |
+
|
20 |
+
# This library must be kept small and stand alone. It is used by small things
|
21 |
+
# that require no extension modules.
|
22 |
+
|
23 |
+
|
24 |
+
def make_process_name_useful():
|
25 |
+
"""Sets the process name to something better than 'python' if possible."""
|
26 |
+
set_kernel_process_name(os.path.basename(sys.argv[0]))
|
27 |
+
|
28 |
+
|
29 |
+
def set_kernel_process_name(name):
|
30 |
+
"""Changes the Kernel's /proc/self/status process name on Linux.
|
31 |
+
|
32 |
+
The kernel name is NOT what will be shown by the ps or top command.
|
33 |
+
It is a 15 character string stored in the kernel's process table that
|
34 |
+
is included in the kernel log when a process is OOM killed.
|
35 |
+
The first 15 bytes of name are used. Non-ASCII unicode is replaced with '?'.
|
36 |
+
|
37 |
+
Does nothing if /proc/self/comm cannot be written or prctl() fails.
|
38 |
+
|
39 |
+
Args:
|
40 |
+
name: bytes|unicode, the Linux kernel's command name to set.
|
41 |
+
"""
|
42 |
+
if not isinstance(name, bytes):
|
43 |
+
name = name.encode('ascii', 'replace')
|
44 |
+
try:
|
45 |
+
# This is preferred to using ctypes to try and call prctl() when possible.
|
46 |
+
with open('/proc/self/comm', 'wb') as proc_comm:
|
47 |
+
proc_comm.write(name[:15])
|
48 |
+
except EnvironmentError:
|
49 |
+
try:
|
50 |
+
import ctypes # pylint: disable=g-import-not-at-top
|
51 |
+
except ImportError:
|
52 |
+
return # No ctypes.
|
53 |
+
try:
|
54 |
+
libc = ctypes.CDLL('libc.so.6')
|
55 |
+
except EnvironmentError:
|
56 |
+
return # No libc.so.6.
|
57 |
+
pr_set_name = ctypes.c_ulong(15) # linux/prctl.h PR_SET_NAME value.
|
58 |
+
zero = ctypes.c_ulong(0)
|
59 |
+
try:
|
60 |
+
libc.prctl(pr_set_name, name, zero, zero, zero)
|
61 |
+
# Ignore the prctl return value. Nothing we can do if it errored.
|
62 |
+
except AttributeError:
|
63 |
+
return # No prctl.
|
.venv/Lib/site-packages/absl/flags/__init__.py
ADDED
@@ -0,0 +1,225 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright 2017 The Abseil Authors.
|
2 |
+
#
|
3 |
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4 |
+
# you may not use this file except in compliance with the License.
|
5 |
+
# You may obtain a copy of the License at
|
6 |
+
#
|
7 |
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8 |
+
#
|
9 |
+
# Unless required by applicable law or agreed to in writing, software
|
10 |
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11 |
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12 |
+
# See the License for the specific language governing permissions and
|
13 |
+
# limitations under the License.
|
14 |
+
"""This package is used to define and parse command line flags.
|
15 |
+
|
16 |
+
This package defines a *distributed* flag-definition policy: rather than
|
17 |
+
an application having to define all flags in or near main(), each Python
|
18 |
+
module defines flags that are useful to it. When one Python module
|
19 |
+
imports another, it gains access to the other's flags. (This is
|
20 |
+
implemented by having all modules share a common, global registry object
|
21 |
+
containing all the flag information.)
|
22 |
+
|
23 |
+
Flags are defined through the use of one of the DEFINE_xxx functions.
|
24 |
+
The specific function used determines how the flag is parsed, checked,
|
25 |
+
and optionally type-converted, when it's seen on the command line.
|
26 |
+
"""
|
27 |
+
|
28 |
+
import getopt
|
29 |
+
import os
|
30 |
+
import re
|
31 |
+
import sys
|
32 |
+
import types
|
33 |
+
import warnings
|
34 |
+
|
35 |
+
from absl.flags import _argument_parser
|
36 |
+
from absl.flags import _defines
|
37 |
+
from absl.flags import _exceptions
|
38 |
+
from absl.flags import _flag
|
39 |
+
from absl.flags import _flagvalues
|
40 |
+
from absl.flags import _helpers
|
41 |
+
from absl.flags import _validators
|
42 |
+
|
43 |
+
__all__ = (
|
44 |
+
'DEFINE',
|
45 |
+
'DEFINE_flag',
|
46 |
+
'DEFINE_string',
|
47 |
+
'DEFINE_boolean',
|
48 |
+
'DEFINE_bool',
|
49 |
+
'DEFINE_float',
|
50 |
+
'DEFINE_integer',
|
51 |
+
'DEFINE_enum',
|
52 |
+
'DEFINE_enum_class',
|
53 |
+
'DEFINE_list',
|
54 |
+
'DEFINE_spaceseplist',
|
55 |
+
'DEFINE_multi',
|
56 |
+
'DEFINE_multi_string',
|
57 |
+
'DEFINE_multi_integer',
|
58 |
+
'DEFINE_multi_float',
|
59 |
+
'DEFINE_multi_enum',
|
60 |
+
'DEFINE_multi_enum_class',
|
61 |
+
'DEFINE_alias',
|
62 |
+
# Flag validators.
|
63 |
+
'register_validator',
|
64 |
+
'validator',
|
65 |
+
'register_multi_flags_validator',
|
66 |
+
'multi_flags_validator',
|
67 |
+
'mark_flag_as_required',
|
68 |
+
'mark_flags_as_required',
|
69 |
+
'mark_flags_as_mutual_exclusive',
|
70 |
+
'mark_bool_flags_as_mutual_exclusive',
|
71 |
+
# Flag modifiers.
|
72 |
+
'set_default',
|
73 |
+
'override_value',
|
74 |
+
# Key flag related functions.
|
75 |
+
'declare_key_flag',
|
76 |
+
'adopt_module_key_flags',
|
77 |
+
'disclaim_key_flags',
|
78 |
+
# Module exceptions.
|
79 |
+
'Error',
|
80 |
+
'CantOpenFlagFileError',
|
81 |
+
'DuplicateFlagError',
|
82 |
+
'IllegalFlagValueError',
|
83 |
+
'UnrecognizedFlagError',
|
84 |
+
'UnparsedFlagAccessError',
|
85 |
+
'ValidationError',
|
86 |
+
'FlagNameConflictsWithMethodError',
|
87 |
+
# Public classes.
|
88 |
+
'Flag',
|
89 |
+
'BooleanFlag',
|
90 |
+
'EnumFlag',
|
91 |
+
'EnumClassFlag',
|
92 |
+
'MultiFlag',
|
93 |
+
'MultiEnumClassFlag',
|
94 |
+
'FlagHolder',
|
95 |
+
'FlagValues',
|
96 |
+
'ArgumentParser',
|
97 |
+
'BooleanParser',
|
98 |
+
'EnumParser',
|
99 |
+
'EnumClassParser',
|
100 |
+
'ArgumentSerializer',
|
101 |
+
'FloatParser',
|
102 |
+
'IntegerParser',
|
103 |
+
'BaseListParser',
|
104 |
+
'ListParser',
|
105 |
+
'ListSerializer',
|
106 |
+
'EnumClassListSerializer',
|
107 |
+
'CsvListSerializer',
|
108 |
+
'WhitespaceSeparatedListParser',
|
109 |
+
'EnumClassSerializer',
|
110 |
+
# Helper functions.
|
111 |
+
'get_help_width',
|
112 |
+
'text_wrap',
|
113 |
+
'flag_dict_to_args',
|
114 |
+
'doc_to_help',
|
115 |
+
# The global FlagValues instance.
|
116 |
+
'FLAGS',
|
117 |
+
)
|
118 |
+
|
119 |
+
# Initialize the FLAGS_MODULE as early as possible.
|
120 |
+
# It's only used by adopt_module_key_flags to take SPECIAL_FLAGS into account.
|
121 |
+
_helpers.FLAGS_MODULE = sys.modules[__name__]
|
122 |
+
|
123 |
+
# Add current module to disclaimed module ids.
|
124 |
+
_helpers.disclaim_module_ids.add(id(sys.modules[__name__]))
|
125 |
+
|
126 |
+
# DEFINE functions. They are explained in more details in the module doc string.
|
127 |
+
# pylint: disable=invalid-name
|
128 |
+
DEFINE = _defines.DEFINE
|
129 |
+
DEFINE_flag = _defines.DEFINE_flag
|
130 |
+
DEFINE_string = _defines.DEFINE_string
|
131 |
+
DEFINE_boolean = _defines.DEFINE_boolean
|
132 |
+
DEFINE_bool = DEFINE_boolean # Match C++ API.
|
133 |
+
DEFINE_float = _defines.DEFINE_float
|
134 |
+
DEFINE_integer = _defines.DEFINE_integer
|
135 |
+
DEFINE_enum = _defines.DEFINE_enum
|
136 |
+
DEFINE_enum_class = _defines.DEFINE_enum_class
|
137 |
+
DEFINE_list = _defines.DEFINE_list
|
138 |
+
DEFINE_spaceseplist = _defines.DEFINE_spaceseplist
|
139 |
+
DEFINE_multi = _defines.DEFINE_multi
|
140 |
+
DEFINE_multi_string = _defines.DEFINE_multi_string
|
141 |
+
DEFINE_multi_integer = _defines.DEFINE_multi_integer
|
142 |
+
DEFINE_multi_float = _defines.DEFINE_multi_float
|
143 |
+
DEFINE_multi_enum = _defines.DEFINE_multi_enum
|
144 |
+
DEFINE_multi_enum_class = _defines.DEFINE_multi_enum_class
|
145 |
+
DEFINE_alias = _defines.DEFINE_alias
|
146 |
+
# pylint: enable=invalid-name
|
147 |
+
|
148 |
+
# Flag validators.
|
149 |
+
register_validator = _validators.register_validator
|
150 |
+
validator = _validators.validator
|
151 |
+
register_multi_flags_validator = _validators.register_multi_flags_validator
|
152 |
+
multi_flags_validator = _validators.multi_flags_validator
|
153 |
+
mark_flag_as_required = _validators.mark_flag_as_required
|
154 |
+
mark_flags_as_required = _validators.mark_flags_as_required
|
155 |
+
mark_flags_as_mutual_exclusive = _validators.mark_flags_as_mutual_exclusive
|
156 |
+
mark_bool_flags_as_mutual_exclusive = _validators.mark_bool_flags_as_mutual_exclusive
|
157 |
+
|
158 |
+
# Flag modifiers.
|
159 |
+
set_default = _defines.set_default
|
160 |
+
override_value = _defines.override_value
|
161 |
+
|
162 |
+
# Key flag related functions.
|
163 |
+
declare_key_flag = _defines.declare_key_flag
|
164 |
+
adopt_module_key_flags = _defines.adopt_module_key_flags
|
165 |
+
disclaim_key_flags = _defines.disclaim_key_flags
|
166 |
+
|
167 |
+
# Module exceptions.
|
168 |
+
# pylint: disable=invalid-name
|
169 |
+
Error = _exceptions.Error
|
170 |
+
CantOpenFlagFileError = _exceptions.CantOpenFlagFileError
|
171 |
+
DuplicateFlagError = _exceptions.DuplicateFlagError
|
172 |
+
IllegalFlagValueError = _exceptions.IllegalFlagValueError
|
173 |
+
UnrecognizedFlagError = _exceptions.UnrecognizedFlagError
|
174 |
+
UnparsedFlagAccessError = _exceptions.UnparsedFlagAccessError
|
175 |
+
ValidationError = _exceptions.ValidationError
|
176 |
+
FlagNameConflictsWithMethodError = _exceptions.FlagNameConflictsWithMethodError
|
177 |
+
|
178 |
+
# Public classes.
|
179 |
+
Flag = _flag.Flag
|
180 |
+
BooleanFlag = _flag.BooleanFlag
|
181 |
+
EnumFlag = _flag.EnumFlag
|
182 |
+
EnumClassFlag = _flag.EnumClassFlag
|
183 |
+
MultiFlag = _flag.MultiFlag
|
184 |
+
MultiEnumClassFlag = _flag.MultiEnumClassFlag
|
185 |
+
FlagHolder = _flagvalues.FlagHolder
|
186 |
+
FlagValues = _flagvalues.FlagValues
|
187 |
+
ArgumentParser = _argument_parser.ArgumentParser
|
188 |
+
BooleanParser = _argument_parser.BooleanParser
|
189 |
+
EnumParser = _argument_parser.EnumParser
|
190 |
+
EnumClassParser = _argument_parser.EnumClassParser
|
191 |
+
ArgumentSerializer = _argument_parser.ArgumentSerializer
|
192 |
+
FloatParser = _argument_parser.FloatParser
|
193 |
+
IntegerParser = _argument_parser.IntegerParser
|
194 |
+
BaseListParser = _argument_parser.BaseListParser
|
195 |
+
ListParser = _argument_parser.ListParser
|
196 |
+
ListSerializer = _argument_parser.ListSerializer
|
197 |
+
EnumClassListSerializer = _argument_parser.EnumClassListSerializer
|
198 |
+
CsvListSerializer = _argument_parser.CsvListSerializer
|
199 |
+
WhitespaceSeparatedListParser = _argument_parser.WhitespaceSeparatedListParser
|
200 |
+
EnumClassSerializer = _argument_parser.EnumClassSerializer
|
201 |
+
# pylint: enable=invalid-name
|
202 |
+
|
203 |
+
# Helper functions.
|
204 |
+
get_help_width = _helpers.get_help_width
|
205 |
+
text_wrap = _helpers.text_wrap
|
206 |
+
flag_dict_to_args = _helpers.flag_dict_to_args
|
207 |
+
doc_to_help = _helpers.doc_to_help
|
208 |
+
|
209 |
+
# Special flags.
|
210 |
+
_helpers.SPECIAL_FLAGS = FlagValues()
|
211 |
+
|
212 |
+
DEFINE_string(
|
213 |
+
'flagfile', '',
|
214 |
+
'Insert flag definitions from the given file into the command line.',
|
215 |
+
_helpers.SPECIAL_FLAGS) # pytype: disable=wrong-arg-types
|
216 |
+
|
217 |
+
DEFINE_string('undefok', '',
|
218 |
+
'comma-separated list of flag names that it is okay to specify '
|
219 |
+
'on the command line even if the program does not define a flag '
|
220 |
+
'with that name. IMPORTANT: flags in this list that have '
|
221 |
+
'arguments MUST use the --flag=value format.',
|
222 |
+
_helpers.SPECIAL_FLAGS) # pytype: disable=wrong-arg-types
|
223 |
+
|
224 |
+
#: The global FlagValues instance.
|
225 |
+
FLAGS = _flagvalues.FLAGS
|
.venv/Lib/site-packages/absl/flags/__pycache__/__init__.cpython-312.pyc
ADDED
Binary file (5.84 kB). View file
|
|
.venv/Lib/site-packages/absl/flags/__pycache__/_argument_parser.cpython-312.pyc
ADDED
Binary file (30.7 kB). View file
|
|
.venv/Lib/site-packages/absl/flags/__pycache__/_defines.cpython-312.pyc
ADDED
Binary file (53.5 kB). View file
|
|
.venv/Lib/site-packages/absl/flags/__pycache__/_exceptions.cpython-312.pyc
ADDED
Binary file (4.55 kB). View file
|
|
.venv/Lib/site-packages/absl/flags/__pycache__/_flag.cpython-312.pyc
ADDED
Binary file (26.1 kB). View file
|
|
.venv/Lib/site-packages/absl/flags/__pycache__/_flagvalues.cpython-312.pyc
ADDED
Binary file (62 kB). View file
|
|
.venv/Lib/site-packages/absl/flags/__pycache__/_helpers.cpython-312.pyc
ADDED
Binary file (14.2 kB). View file
|
|
.venv/Lib/site-packages/absl/flags/__pycache__/_validators.cpython-312.pyc
ADDED
Binary file (15.5 kB). View file
|
|
.venv/Lib/site-packages/absl/flags/__pycache__/_validators_classes.cpython-312.pyc
ADDED
Binary file (7.97 kB). View file
|
|
.venv/Lib/site-packages/absl/flags/__pycache__/argparse_flags.cpython-312.pyc
ADDED
Binary file (15.3 kB). View file
|
|