Parechan commited on
Commit
cbfb9dc
·
verified ·
1 Parent(s): f134294

Upload 5542 files

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +8 -0
  2. .venv/.gitignore +2 -0
  3. .venv/Lib/site-packages/Faker-24.4.0.dist-info/INSTALLER +1 -0
  4. .venv/Lib/site-packages/Faker-24.4.0.dist-info/LICENSE.txt +19 -0
  5. .venv/Lib/site-packages/Faker-24.4.0.dist-info/METADATA +523 -0
  6. .venv/Lib/site-packages/Faker-24.4.0.dist-info/RECORD +0 -0
  7. .venv/Lib/site-packages/Faker-24.4.0.dist-info/REQUESTED +0 -0
  8. .venv/Lib/site-packages/Faker-24.4.0.dist-info/WHEEL +5 -0
  9. .venv/Lib/site-packages/Faker-24.4.0.dist-info/entry_points.txt +5 -0
  10. .venv/Lib/site-packages/Faker-24.4.0.dist-info/top_level.txt +1 -0
  11. .venv/Lib/site-packages/Faker-24.4.0.dist-info/zip-safe +1 -0
  12. .venv/Lib/site-packages/GitPython-3.1.43.dist-info/AUTHORS +58 -0
  13. .venv/Lib/site-packages/GitPython-3.1.43.dist-info/INSTALLER +1 -0
  14. .venv/Lib/site-packages/GitPython-3.1.43.dist-info/LICENSE +29 -0
  15. .venv/Lib/site-packages/GitPython-3.1.43.dist-info/METADATA +297 -0
  16. .venv/Lib/site-packages/GitPython-3.1.43.dist-info/RECORD +82 -0
  17. .venv/Lib/site-packages/GitPython-3.1.43.dist-info/WHEEL +5 -0
  18. .venv/Lib/site-packages/GitPython-3.1.43.dist-info/top_level.txt +1 -0
  19. .venv/Lib/site-packages/Jinja2-3.1.3.dist-info/INSTALLER +1 -0
  20. .venv/Lib/site-packages/Jinja2-3.1.3.dist-info/LICENSE.rst +28 -0
  21. .venv/Lib/site-packages/Jinja2-3.1.3.dist-info/METADATA +105 -0
  22. .venv/Lib/site-packages/Jinja2-3.1.3.dist-info/RECORD +58 -0
  23. .venv/Lib/site-packages/Jinja2-3.1.3.dist-info/WHEEL +5 -0
  24. .venv/Lib/site-packages/Jinja2-3.1.3.dist-info/entry_points.txt +2 -0
  25. .venv/Lib/site-packages/Jinja2-3.1.3.dist-info/top_level.txt +1 -0
  26. .venv/Lib/site-packages/Markdown-3.6.dist-info/INSTALLER +1 -0
  27. .venv/Lib/site-packages/Markdown-3.6.dist-info/LICENSE.md +30 -0
  28. .venv/Lib/site-packages/Markdown-3.6.dist-info/METADATA +146 -0
  29. .venv/Lib/site-packages/Markdown-3.6.dist-info/RECORD +74 -0
  30. .venv/Lib/site-packages/Markdown-3.6.dist-info/WHEEL +5 -0
  31. .venv/Lib/site-packages/Markdown-3.6.dist-info/entry_points.txt +22 -0
  32. .venv/Lib/site-packages/Markdown-3.6.dist-info/top_level.txt +1 -0
  33. .venv/Lib/site-packages/absl/__init__.py +13 -0
  34. .venv/Lib/site-packages/absl/__pycache__/__init__.cpython-312.pyc +0 -0
  35. .venv/Lib/site-packages/absl/__pycache__/app.cpython-312.pyc +0 -0
  36. .venv/Lib/site-packages/absl/__pycache__/command_name.cpython-312.pyc +0 -0
  37. .venv/Lib/site-packages/absl/app.py +480 -0
  38. .venv/Lib/site-packages/absl/app.pyi +99 -0
  39. .venv/Lib/site-packages/absl/command_name.py +63 -0
  40. .venv/Lib/site-packages/absl/flags/__init__.py +225 -0
  41. .venv/Lib/site-packages/absl/flags/__pycache__/__init__.cpython-312.pyc +0 -0
  42. .venv/Lib/site-packages/absl/flags/__pycache__/_argument_parser.cpython-312.pyc +0 -0
  43. .venv/Lib/site-packages/absl/flags/__pycache__/_defines.cpython-312.pyc +0 -0
  44. .venv/Lib/site-packages/absl/flags/__pycache__/_exceptions.cpython-312.pyc +0 -0
  45. .venv/Lib/site-packages/absl/flags/__pycache__/_flag.cpython-312.pyc +0 -0
  46. .venv/Lib/site-packages/absl/flags/__pycache__/_flagvalues.cpython-312.pyc +0 -0
  47. .venv/Lib/site-packages/absl/flags/__pycache__/_helpers.cpython-312.pyc +0 -0
  48. .venv/Lib/site-packages/absl/flags/__pycache__/_validators.cpython-312.pyc +0 -0
  49. .venv/Lib/site-packages/absl/flags/__pycache__/_validators_classes.cpython-312.pyc +0 -0
  50. .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
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
+ ![Python package](https://github.com/gitpython-developers/GitPython/workflows/Python%20package/badge.svg)
55
+ [![Documentation Status](https://readthedocs.org/projects/gitpython/badge/?version=stable)](https://readthedocs.org/projects/gitpython/?badge=stable)
56
+ [![Packaging status](https://repology.org/badge/tiny-repos/python:gitpython.svg)](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