├── .gitignore
├── .pre-commit-config.yaml
├── LICENSE
├── README.md
├── banner.png
├── data
└── .gitignore
├── poetry.lock
├── pyproject.toml
├── pytorch_pqrnn
├── __init__.py
├── dataset.py
├── model.py
└── utils.py
├── requirements.txt
└── run.py
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | pip-wheel-metadata/
24 | share/python-wheels/
25 | *.egg-info/
26 | .installed.cfg
27 | *.egg
28 | MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | *.manifest
34 | *.spec
35 |
36 | # Installer logs
37 | pip-log.txt
38 | pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | htmlcov/
42 | .tox/
43 | .nox/
44 | .coverage
45 | .coverage.*
46 | .cache
47 | nosetests.xml
48 | coverage.xml
49 | *.cover
50 | *.py,cover
51 | .hypothesis/
52 | .pytest_cache/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | target/
76 |
77 | # Jupyter Notebook
78 | .ipynb_checkpoints
79 |
80 | # IPython
81 | profile_default/
82 | ipython_config.py
83 |
84 | # pyenv
85 | .python-version
86 |
87 | # pipenv
88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
91 | # install all needed dependencies.
92 | #Pipfile.lock
93 |
94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95 | __pypackages__/
96 |
97 | # Celery stuff
98 | celerybeat-schedule
99 | celerybeat.pid
100 |
101 | # SageMath parsed files
102 | *.sage.py
103 |
104 | # Environments
105 | .env
106 | .venv
107 | env/
108 | venv/
109 | ENV/
110 | env.bak/
111 | venv.bak/
112 |
113 | # Spyder project settings
114 | .spyderproject
115 | .spyproject
116 |
117 | # Rope project settings
118 | .ropeproject
119 |
120 | # mkdocs documentation
121 | /site
122 |
123 | # mypy
124 | .mypy_cache/
125 | .dmypy.json
126 | dmypy.json
127 |
128 | # Pyre type checker
129 | .pyre/
130 |
131 | *logs
132 | *bz2
133 |
134 | .vscode
135 | *ckpt
136 | data/*
137 | grid.yaml
138 |
--------------------------------------------------------------------------------
/.pre-commit-config.yaml:
--------------------------------------------------------------------------------
1 | default_language_version:
2 | python: python3.8
3 |
4 | default_stages: [commit, push]
5 |
6 | repos:
7 | - repo: https://github.com/pre-commit/pre-commit-hooks
8 | rev: v2.5.0
9 | hooks:
10 | - id: check-yaml
11 | - id: end-of-file-fixer
12 |
13 | - repo: local
14 | hooks:
15 | - id: pyupgrade
16 | name: pyupgrade
17 | entry: pyupgrade --py37-plus
18 | types: [python]
19 | language: system
20 |
21 | - repo: local
22 | hooks:
23 | - id: isort
24 | name: isort
25 | entry: isort --settings-path pyproject.toml
26 | types: [python]
27 | language: system
28 |
29 | - repo: local
30 | hooks:
31 | - id: black
32 | name: black
33 | entry: black --config pyproject.toml
34 | types: [python]
35 | language: system
36 | - repo: https://github.com/Lucas-C/pre-commit-hooks-bandit
37 | rev: v1.0.4
38 | hooks:
39 | - id: python-bandit-vulnerability-check
40 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Chenghao MOU
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 |    [](https://doi.org/10.5281/zenodo.4661601)
4 |
5 | ## Installation
6 |
7 | ```bash
8 | # install with pypi
9 | pip install pytorch-pqrnn
10 | # or install locally with poetry
11 | poetry install
12 | ```
13 |
14 | ## Environment
15 |
16 | Because of [this issue](https://github.com/salesforce/pytorch-qrnn/issues/29), `pytorch-qrnn` is no longer compatible with pytorch and it is also not actively maintained. If you want to use a QRNN layer in this model, you have install `pytorch-qrnn` with `torch <= 1.4` first.
17 |
18 | ## Usage
19 |
20 | ```python
21 | from pytorch_pqrnn.dataset import create_dataloaders
22 | from pytorch_pqrnn.model import PQRNN
23 |
24 | model = PQRNN(
25 | b=128,
26 | d=96,
27 | lr=1e-3,
28 | num_layers=2,
29 | dropout=0.5,
30 | output_size=5,
31 | rnn_type="GRU",
32 | multilabel=False,
33 | nhead=2, # used when rnn_type == "Transformer"
34 | )
35 |
36 | # Or load the model from your checkpoint
37 | # model = PQRNN.load_from_checkpoint(checkpoint_path="example.ckpt")
38 |
39 | # Text data has to be pre-processed with DummyDataset
40 | dataset = DummyDataset(
41 | df[["text", "label"]].to_dict("records"),
42 | has_label=True,
43 | feature_size=128 * 2,
44 | add_eos_tag=True,
45 | add_bos_tag=True,
46 | max_seq_len=512,
47 | label2index={"pos": 1, "neg": 0},
48 | )
49 |
50 | # Explicit train/val loop
51 | # Add model.eval() when necessary
52 | dataloader = create_dataloaders(dataset)
53 | for batch in dataloader:
54 | # labels could be an empty tensor if has_label is False when creating the dataset.
55 | # To change what are included in a batch, feel free to change the collate_fn function
56 | # in dataset.py
57 | projections, lengths, labels = batch
58 | logits = model.forward(projections)
59 |
60 | # do your magic
61 | ```
62 |
63 | ## CLI Usage
64 |
65 | ```bash
66 | Usage: run.py [OPTIONS]
67 |
68 | Options:
69 | --task [yelp2|yelp5|toxic] [default: yelp5]
70 | --b INTEGER [default: 128]
71 | --d INTEGER [default: 96]
72 | --num_layers INTEGER [default: 2]
73 | --batch_size INTEGER [default: 512]
74 | --dropout FLOAT [default: 0.5]
75 | --lr FLOAT [default: 0.001]
76 | --nhead INTEGER [default: 4]
77 | --rnn_type [LSTM|GRU|QRNN|Transformer]
78 | [default: GRU]
79 | --data_path TEXT
80 | --help Show this message and exit.
81 | ```
82 |
83 | Datasets
84 |
85 | - yelp2(polarity): it will be downloaded w/ huggingface/datasets automatically
86 | - yelp5: [json file](https://www.kaggle.com/luisfredgs/hahnn-for-document-classification?select=yelp_reviews.json) should be downloaded to into `data_path`
87 | - toxic: [dataset](https://www.kaggle.com/c/jigsaw-toxic-comment-classification-challenge) should be downloaded and unzipped to into `data_path`
88 |
89 | ### Example: Yelp Polarity
90 |
91 | python -W ignore run.py --task yelp2 --b 128 --d 64 --num_layers 4 --data_path data/
92 |
93 | ## Benchmarks(not optimized)
94 |
95 | | Model | Model Size | Yelp Polarity (error rate) | Yelp-5 (accuracy) | Civil Comments (mean auroc) | Command |
96 | | ------------------------ | ---------- | -------------------------- | ----------------- | --------------------------- | ---------------------------------------------------------------- |
97 | | ~~PQRNN (this repo)~~0 | ~~78K~~ | ~~6.3~~ | ~~70.4~~ | ~~TODO~~ | `--b 128 --d 64 --num_layers 4 --rnn_type QRNN` |
98 | | PRNN (this repo) | 90K | 5.5 | **70.7** | 95.57 | `--b 128 --d 64 --num_layers 1 --rnn_type GRU` |
99 | | PTransformer (this repo) | 618K | 10.8 | 68 | 92.4 | `--b 128 --d 64 --num_layers 1 --rnn_type Transformer --nhead 8` |
100 | | PRADO1 | 175K | | 65.9 | | |
101 | | BERT | 335M | **1.81** | 70.58 | **98.856**2 | |
102 | 0. Not supported with `torch >= 1.7`
103 | 1. [Paper](https://www.aclweb.org/anthology/D19-1506.pdf)
104 | 2. Best Kaggle Submission
105 |
106 | ## Credits
107 |
108 | - [original tensorflow source code for PRADO](https://github.com/tensorflow/models/tree/master/research/sequence_projection/prado)
109 |
110 | - Powered by [pytorch-lightning](https://github.com/PyTorchLightning/pytorch-lightning) and [grid.ai](https://www.grid.ai/)
111 |
112 | ## Citation
113 |
114 | ```
115 | @software{chenghao_mou_2021_4661601,
116 | author = {Chenghao MOU},
117 | title = {ChenghaoMou/pytorch-pQRNN: Add DOI},
118 | month = apr,
119 | year = 2021,
120 | publisher = {Zenodo},
121 | version = {0.0.3},
122 | doi = {10.5281/zenodo.4661601},
123 | url = {https://doi.org/10.5281/zenodo.4661601}
124 | }
125 | ```
126 |
--------------------------------------------------------------------------------
/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenghaoMou/pytorch-pQRNN/888d794251a483322ced54b3396d9e32214b32a6/banner.png
--------------------------------------------------------------------------------
/data/.gitignore:
--------------------------------------------------------------------------------
1 | !.gitignore
2 |
--------------------------------------------------------------------------------
/poetry.lock:
--------------------------------------------------------------------------------
1 | [[package]]
2 | name = "absl-py"
3 | version = "0.14.1"
4 | description = "Abseil Python Common Libraries, see https://github.com/abseil/abseil-py."
5 | category = "main"
6 | optional = false
7 | python-versions = "*"
8 |
9 | [package.dependencies]
10 | six = "*"
11 |
12 | [[package]]
13 | name = "aiohttp"
14 | version = "3.7.4.post0"
15 | description = "Async http client/server framework (asyncio)"
16 | category = "main"
17 | optional = false
18 | python-versions = ">=3.6"
19 |
20 | [package.dependencies]
21 | async-timeout = ">=3.0,<4.0"
22 | attrs = ">=17.3.0"
23 | chardet = ">=2.0,<5.0"
24 | multidict = ">=4.5,<7.0"
25 | typing-extensions = ">=3.6.5"
26 | yarl = ">=1.0,<2.0"
27 |
28 | [package.extras]
29 | speedups = ["aiodns", "brotlipy", "cchardet"]
30 |
31 | [[package]]
32 | name = "appdirs"
33 | version = "1.4.4"
34 | description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
35 | category = "dev"
36 | optional = false
37 | python-versions = "*"
38 |
39 | [[package]]
40 | name = "astroid"
41 | version = "2.8.2"
42 | description = "An abstract syntax tree for Python with inference support."
43 | category = "dev"
44 | optional = false
45 | python-versions = "~=3.6"
46 |
47 | [package.dependencies]
48 | lazy-object-proxy = ">=1.4.0"
49 | typed-ast = {version = ">=1.4.0,<1.5", markers = "implementation_name == \"cpython\" and python_version < \"3.8\""}
50 | typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""}
51 | wrapt = ">=1.11,<1.13"
52 |
53 | [[package]]
54 | name = "async-timeout"
55 | version = "3.0.1"
56 | description = "Timeout context manager for asyncio programs"
57 | category = "main"
58 | optional = false
59 | python-versions = ">=3.5.3"
60 |
61 | [[package]]
62 | name = "atomicwrites"
63 | version = "1.4.0"
64 | description = "Atomic file writes."
65 | category = "dev"
66 | optional = false
67 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
68 |
69 | [[package]]
70 | name = "attrs"
71 | version = "21.2.0"
72 | description = "Classes Without Boilerplate"
73 | category = "main"
74 | optional = false
75 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
76 |
77 | [package.extras]
78 | dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit"]
79 | docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
80 | tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"]
81 | tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"]
82 |
83 | [[package]]
84 | name = "backports.entry-points-selectable"
85 | version = "1.1.0"
86 | description = "Compatibility shim providing selectable entry points for older implementations"
87 | category = "dev"
88 | optional = false
89 | python-versions = ">=2.7"
90 |
91 | [package.dependencies]
92 | importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
93 |
94 | [package.extras]
95 | docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
96 | testing = ["pytest (>=4.6)", "pytest-flake8", "pytest-cov", "pytest-black (>=0.3.7)", "pytest-mypy", "pytest-checkdocs (>=2.4)", "pytest-enabler (>=1.0.1)"]
97 |
98 | [[package]]
99 | name = "bandit"
100 | version = "1.7.0"
101 | description = "Security oriented static analyser for python code."
102 | category = "main"
103 | optional = false
104 | python-versions = ">=3.5"
105 |
106 | [package.dependencies]
107 | colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""}
108 | GitPython = ">=1.0.1"
109 | PyYAML = ">=5.3.1"
110 | six = ">=1.10.0"
111 | stevedore = ">=1.20.0"
112 |
113 | [[package]]
114 | name = "bitstring"
115 | version = "3.1.9"
116 | description = "Simple construction, analysis and modification of binary data."
117 | category = "main"
118 | optional = false
119 | python-versions = "*"
120 |
121 | [[package]]
122 | name = "black"
123 | version = "20.8b1"
124 | description = "The uncompromising code formatter."
125 | category = "dev"
126 | optional = false
127 | python-versions = ">=3.6"
128 |
129 | [package.dependencies]
130 | appdirs = "*"
131 | click = ">=7.1.2"
132 | mypy-extensions = ">=0.4.3"
133 | pathspec = ">=0.6,<1"
134 | regex = ">=2020.1.8"
135 | toml = ">=0.10.1"
136 | typed-ast = ">=1.4.0"
137 | typing-extensions = ">=3.7.4"
138 |
139 | [package.extras]
140 | colorama = ["colorama (>=0.4.3)"]
141 | d = ["aiohttp (>=3.3.2)", "aiohttp-cors"]
142 |
143 | [[package]]
144 | name = "cachetools"
145 | version = "4.2.4"
146 | description = "Extensible memoizing collections and decorators"
147 | category = "main"
148 | optional = false
149 | python-versions = "~=3.5"
150 |
151 | [[package]]
152 | name = "certifi"
153 | version = "2021.10.8"
154 | description = "Python package for providing Mozilla's CA Bundle."
155 | category = "main"
156 | optional = false
157 | python-versions = "*"
158 |
159 | [[package]]
160 | name = "cfgv"
161 | version = "3.3.1"
162 | description = "Validate configuration and produce human readable error messages."
163 | category = "dev"
164 | optional = false
165 | python-versions = ">=3.6.1"
166 |
167 | [[package]]
168 | name = "chardet"
169 | version = "4.0.0"
170 | description = "Universal encoding detector for Python 2 and 3"
171 | category = "main"
172 | optional = false
173 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
174 |
175 | [[package]]
176 | name = "charset-normalizer"
177 | version = "2.0.6"
178 | description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
179 | category = "main"
180 | optional = false
181 | python-versions = ">=3.5.0"
182 |
183 | [package.extras]
184 | unicode_backport = ["unicodedata2"]
185 |
186 | [[package]]
187 | name = "click"
188 | version = "7.1.2"
189 | description = "Composable command line interface toolkit"
190 | category = "main"
191 | optional = false
192 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
193 |
194 | [[package]]
195 | name = "colorama"
196 | version = "0.4.4"
197 | description = "Cross-platform colored terminal text."
198 | category = "main"
199 | optional = false
200 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
201 |
202 | [[package]]
203 | name = "commonmark"
204 | version = "0.9.1"
205 | description = "Python parser for the CommonMark Markdown spec"
206 | category = "main"
207 | optional = false
208 | python-versions = "*"
209 |
210 | [package.extras]
211 | test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"]
212 |
213 | [[package]]
214 | name = "darglint"
215 | version = "1.8.0"
216 | description = "A utility for ensuring Google-style docstrings stay up to date with the source code."
217 | category = "dev"
218 | optional = false
219 | python-versions = ">=3.6,<4.0"
220 |
221 | [[package]]
222 | name = "datasets"
223 | version = "1.12.1"
224 | description = "HuggingFace/Datasets is an open library of NLP datasets."
225 | category = "main"
226 | optional = false
227 | python-versions = "*"
228 |
229 | [package.dependencies]
230 | aiohttp = "*"
231 | dill = "*"
232 | fsspec = {version = ">=2021.05.0", extras = ["http"]}
233 | huggingface-hub = ">=0.0.14,<0.1.0"
234 | importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
235 | multiprocess = "*"
236 | numpy = ">=1.17"
237 | packaging = "*"
238 | pandas = "*"
239 | pyarrow = ">=1.0.0,<4.0.0 || >4.0.0"
240 | requests = ">=2.19.0"
241 | tqdm = ">=4.62.1"
242 | xxhash = "*"
243 |
244 | [package.extras]
245 | apache-beam = ["apache-beam (>=2.26.0)"]
246 | benchmarks = ["numpy (==1.18.5)", "tensorflow (==2.3.0)", "torch (==1.6.0)", "transformers (==3.0.2)"]
247 | dev = ["absl-py", "pytest", "pytest-xdist", "apache-beam (>=2.26.0)", "elasticsearch", "aiobotocore", "boto3", "botocore", "faiss-cpu", "fsspec", "moto[server,s3] (==2.0.4)", "rarfile (>=4.0)", "s3fs (==2021.08.1)", "tensorflow (>=2.3)", "torch", "transformers", "bs4", "conllu", "langdetect", "lxml", "mwparserfromhell", "nltk", "openpyxl", "py7zr", "tldextract", "zstandard", "bert-score (>=0.3.6)", "rouge-score", "sacrebleu", "scipy", "seqeval", "scikit-learn", "jiwer", "sentencepiece", "toml (>=0.10.1)", "requests-file (>=1.5.1)", "tldextract (>=3.1.0)", "texttable (>=1.6.3)", "Werkzeug (>=1.0.1)", "six (>=1.15.0,<1.16.0)", "wget (>=3.2)", "pytorch-nlp (==0.5.0)", "pytorch-lightning", "fastBPE (==0.1.0)", "fairseq", "black (==21.4b0)", "flake8 (==3.7.9)", "isort", "pyyaml (>=5.3.1)", "importlib-resources"]
248 | docs = ["docutils (==0.16.0)", "recommonmark", "sphinx (==3.1.2)", "sphinx-markdown-tables", "sphinx-rtd-theme (==0.4.3)", "sphinxext-opengraph (==0.4.1)", "sphinx-copybutton", "fsspec", "s3fs", "sphinx-panels", "sphinx-inline-tabs", "myst-parser"]
249 | quality = ["black (==21.4b0)", "flake8 (==3.7.9)", "isort", "pyyaml (>=5.3.1)"]
250 | s3 = ["fsspec", "boto3", "botocore", "s3fs"]
251 | tensorflow = ["tensorflow (>=2.2.0)"]
252 | tensorflow_gpu = ["tensorflow-gpu (>=2.2.0)"]
253 | tests = ["absl-py", "pytest", "pytest-xdist", "apache-beam (>=2.26.0)", "elasticsearch", "aiobotocore", "boto3", "botocore", "faiss-cpu", "fsspec", "moto[server,s3] (==2.0.4)", "rarfile (>=4.0)", "s3fs (==2021.08.1)", "tensorflow (>=2.3)", "torch", "transformers", "bs4", "conllu", "langdetect", "lxml", "mwparserfromhell", "nltk", "openpyxl", "py7zr", "tldextract", "zstandard", "bert-score (>=0.3.6)", "rouge-score", "sacrebleu", "scipy", "seqeval", "scikit-learn", "jiwer", "sentencepiece", "toml (>=0.10.1)", "requests-file (>=1.5.1)", "tldextract (>=3.1.0)", "texttable (>=1.6.3)", "Werkzeug (>=1.0.1)", "six (>=1.15.0,<1.16.0)", "wget (>=3.2)", "pytorch-nlp (==0.5.0)", "pytorch-lightning", "fastBPE (==0.1.0)", "fairseq", "importlib-resources"]
254 | torch = ["torch"]
255 |
256 | [[package]]
257 | name = "dill"
258 | version = "0.3.4"
259 | description = "serialize all of python"
260 | category = "main"
261 | optional = false
262 | python-versions = ">=2.7, !=3.0.*"
263 |
264 | [package.extras]
265 | graph = ["objgraph (>=1.7.2)"]
266 |
267 | [[package]]
268 | name = "distlib"
269 | version = "0.3.3"
270 | description = "Distribution utilities"
271 | category = "dev"
272 | optional = false
273 | python-versions = "*"
274 |
275 | [[package]]
276 | name = "dparse"
277 | version = "0.5.1"
278 | description = "A parser for Python dependency files"
279 | category = "dev"
280 | optional = false
281 | python-versions = ">=3.5"
282 |
283 | [package.dependencies]
284 | packaging = "*"
285 | pyyaml = "*"
286 | toml = "*"
287 |
288 | [package.extras]
289 | pipenv = ["pipenv"]
290 |
291 | [[package]]
292 | name = "filelock"
293 | version = "3.3.0"
294 | description = "A platform independent file lock."
295 | category = "main"
296 | optional = false
297 | python-versions = ">=3.6"
298 |
299 | [package.extras]
300 | docs = ["furo (>=2021.8.17b43)", "sphinx (>=4.1)", "sphinx-autodoc-typehints (>=1.12)"]
301 | testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-cov", "pytest-timeout (>=1.4.2)"]
302 |
303 | [[package]]
304 | name = "fsspec"
305 | version = "2021.10.0"
306 | description = "File-system specification"
307 | category = "main"
308 | optional = false
309 | python-versions = ">=3.6"
310 |
311 | [package.dependencies]
312 | aiohttp = {version = "*", optional = true, markers = "extra == \"http\""}
313 | requests = {version = "*", optional = true, markers = "extra == \"http\""}
314 |
315 | [package.extras]
316 | abfs = ["adlfs"]
317 | adl = ["adlfs"]
318 | arrow = ["pyarrow (>=1)"]
319 | dask = ["dask", "distributed"]
320 | dropbox = ["dropboxdrivefs", "requests", "dropbox"]
321 | entrypoints = ["importlib-metadata"]
322 | fuse = ["fusepy"]
323 | gcs = ["gcsfs"]
324 | git = ["pygit2"]
325 | github = ["requests"]
326 | gs = ["gcsfs"]
327 | gui = ["panel"]
328 | hdfs = ["pyarrow (>=1)"]
329 | http = ["requests", "aiohttp"]
330 | libarchive = ["libarchive-c"]
331 | oci = ["ocifs"]
332 | s3 = ["s3fs"]
333 | sftp = ["paramiko"]
334 | smb = ["smbprotocol"]
335 | ssh = ["paramiko"]
336 |
337 | [[package]]
338 | name = "future"
339 | version = "0.18.2"
340 | description = "Clean single-source support for Python 3 and 2"
341 | category = "main"
342 | optional = false
343 | python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
344 |
345 | [[package]]
346 | name = "gitdb"
347 | version = "4.0.7"
348 | description = "Git Object Database"
349 | category = "main"
350 | optional = false
351 | python-versions = ">=3.4"
352 |
353 | [package.dependencies]
354 | smmap = ">=3.0.1,<5"
355 |
356 | [[package]]
357 | name = "gitpython"
358 | version = "3.1.24"
359 | description = "GitPython is a python library used to interact with Git repositories"
360 | category = "main"
361 | optional = false
362 | python-versions = ">=3.7"
363 |
364 | [package.dependencies]
365 | gitdb = ">=4.0.1,<5"
366 | typing-extensions = {version = ">=3.7.4.3", markers = "python_version < \"3.10\""}
367 |
368 | [[package]]
369 | name = "google-auth"
370 | version = "1.35.0"
371 | description = "Google Authentication Library"
372 | category = "main"
373 | optional = false
374 | python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*"
375 |
376 | [package.dependencies]
377 | cachetools = ">=2.0.0,<5.0"
378 | pyasn1-modules = ">=0.2.1"
379 | rsa = {version = ">=3.1.4,<5", markers = "python_version >= \"3.6\""}
380 | six = ">=1.9.0"
381 |
382 | [package.extras]
383 | aiohttp = ["requests (>=2.20.0,<3.0.0dev)", "aiohttp (>=3.6.2,<4.0.0dev)"]
384 | pyopenssl = ["pyopenssl (>=20.0.0)"]
385 | reauth = ["pyu2f (>=0.1.5)"]
386 |
387 | [[package]]
388 | name = "google-auth-oauthlib"
389 | version = "0.4.6"
390 | description = "Google Authentication Library"
391 | category = "main"
392 | optional = false
393 | python-versions = ">=3.6"
394 |
395 | [package.dependencies]
396 | google-auth = ">=1.0.0"
397 | requests-oauthlib = ">=0.7.0"
398 |
399 | [package.extras]
400 | tool = ["click (>=6.0.0)"]
401 |
402 | [[package]]
403 | name = "grpcio"
404 | version = "1.38.1"
405 | description = "HTTP/2-based RPC framework"
406 | category = "main"
407 | optional = false
408 | python-versions = "*"
409 |
410 | [package.dependencies]
411 | six = ">=1.5.2"
412 |
413 | [package.extras]
414 | protobuf = ["grpcio-tools (>=1.38.1)"]
415 |
416 | [[package]]
417 | name = "huggingface-hub"
418 | version = "0.0.19"
419 | description = "Client library to download and publish models on the huggingface.co hub"
420 | category = "main"
421 | optional = false
422 | python-versions = ">=3.6.0"
423 |
424 | [package.dependencies]
425 | filelock = "*"
426 | importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
427 | packaging = ">=20.9"
428 | pyyaml = "*"
429 | requests = "*"
430 | tqdm = "*"
431 | typing-extensions = "*"
432 |
433 | [package.extras]
434 | all = ["pytest", "datasets", "black (>=20.8b1)", "isort (>=5.5.4)", "flake8 (>=3.8.3)"]
435 | dev = ["pytest", "datasets", "black (>=20.8b1)", "isort (>=5.5.4)", "flake8 (>=3.8.3)"]
436 | quality = ["black (>=20.8b1)", "isort (>=5.5.4)", "flake8 (>=3.8.3)"]
437 | tensorflow = ["tensorflow"]
438 | testing = ["pytest", "datasets"]
439 | torch = ["torch"]
440 |
441 | [[package]]
442 | name = "identify"
443 | version = "2.3.0"
444 | description = "File identification library for Python"
445 | category = "dev"
446 | optional = false
447 | python-versions = ">=3.6.1"
448 |
449 | [package.extras]
450 | license = ["editdistance-s"]
451 |
452 | [[package]]
453 | name = "idna"
454 | version = "3.2"
455 | description = "Internationalized Domain Names in Applications (IDNA)"
456 | category = "main"
457 | optional = false
458 | python-versions = ">=3.5"
459 |
460 | [[package]]
461 | name = "importlib-metadata"
462 | version = "1.7.0"
463 | description = "Read metadata from Python packages"
464 | category = "main"
465 | optional = false
466 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
467 |
468 | [package.dependencies]
469 | zipp = ">=0.5"
470 |
471 | [package.extras]
472 | docs = ["sphinx", "rst.linker"]
473 | testing = ["packaging", "pep517", "importlib-resources (>=1.3)"]
474 |
475 | [[package]]
476 | name = "iniconfig"
477 | version = "1.1.1"
478 | description = "iniconfig: brain-dead simple config-ini parsing"
479 | category = "dev"
480 | optional = false
481 | python-versions = "*"
482 |
483 | [[package]]
484 | name = "isort"
485 | version = "5.9.3"
486 | description = "A Python utility / library to sort Python imports."
487 | category = "dev"
488 | optional = false
489 | python-versions = ">=3.6.1,<4.0"
490 |
491 | [package.extras]
492 | pipfile_deprecated_finder = ["pipreqs", "requirementslib"]
493 | requirements_deprecated_finder = ["pipreqs", "pip-api"]
494 | colors = ["colorama (>=0.4.3,<0.5.0)"]
495 | plugins = ["setuptools"]
496 |
497 | [[package]]
498 | name = "joblib"
499 | version = "1.1.0"
500 | description = "Lightweight pipelining with Python functions"
501 | category = "main"
502 | optional = false
503 | python-versions = ">=3.6"
504 |
505 | [[package]]
506 | name = "lazy-object-proxy"
507 | version = "1.6.0"
508 | description = "A fast and thorough lazy object proxy."
509 | category = "dev"
510 | optional = false
511 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
512 |
513 | [[package]]
514 | name = "markdown"
515 | version = "3.3.4"
516 | description = "Python implementation of Markdown."
517 | category = "main"
518 | optional = false
519 | python-versions = ">=3.6"
520 |
521 | [package.dependencies]
522 | importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
523 |
524 | [package.extras]
525 | testing = ["coverage", "pyyaml"]
526 |
527 | [[package]]
528 | name = "mccabe"
529 | version = "0.6.1"
530 | description = "McCabe checker, plugin for flake8"
531 | category = "dev"
532 | optional = false
533 | python-versions = "*"
534 |
535 | [[package]]
536 | name = "mmh3"
537 | version = "2.5.1"
538 | description = "Python wrapper for MurmurHash (MurmurHash3), a set of fast and robust hash functions."
539 | category = "main"
540 | optional = false
541 | python-versions = "*"
542 |
543 | [[package]]
544 | name = "multidict"
545 | version = "5.2.0"
546 | description = "multidict implementation"
547 | category = "main"
548 | optional = false
549 | python-versions = ">=3.6"
550 |
551 | [[package]]
552 | name = "multiprocess"
553 | version = "0.70.12.2"
554 | description = "better multiprocessing and multithreading in python"
555 | category = "main"
556 | optional = false
557 | python-versions = "*"
558 |
559 | [package.dependencies]
560 | dill = ">=0.3.4"
561 |
562 | [[package]]
563 | name = "mypy"
564 | version = "0.782"
565 | description = "Optional static typing for Python"
566 | category = "dev"
567 | optional = false
568 | python-versions = ">=3.5"
569 |
570 | [package.dependencies]
571 | mypy-extensions = ">=0.4.3,<0.5.0"
572 | typed-ast = ">=1.4.0,<1.5.0"
573 | typing-extensions = ">=3.7.4"
574 |
575 | [package.extras]
576 | dmypy = ["psutil (>=4.0)"]
577 |
578 | [[package]]
579 | name = "mypy-extensions"
580 | version = "0.4.3"
581 | description = "Experimental type system extensions for programs checked with the mypy typechecker."
582 | category = "dev"
583 | optional = false
584 | python-versions = "*"
585 |
586 | [[package]]
587 | name = "nltk"
588 | version = "3.6.4"
589 | description = "Natural Language Toolkit"
590 | category = "main"
591 | optional = false
592 | python-versions = ">=3.6"
593 |
594 | [package.dependencies]
595 | click = "*"
596 | joblib = "*"
597 | regex = "*"
598 | tqdm = "*"
599 |
600 | [package.extras]
601 | all = ["scipy", "gensim (<4.0.0)", "pyparsing", "python-crfsuite", "matplotlib", "requests", "numpy", "twython", "scikit-learn"]
602 | corenlp = ["requests"]
603 | machine_learning = ["gensim (<4.0.0)", "numpy", "python-crfsuite", "scikit-learn", "scipy"]
604 | plot = ["matplotlib"]
605 | tgrep = ["pyparsing"]
606 | twitter = ["twython"]
607 |
608 | [[package]]
609 | name = "nodeenv"
610 | version = "1.6.0"
611 | description = "Node.js virtual environment builder"
612 | category = "dev"
613 | optional = false
614 | python-versions = "*"
615 |
616 | [[package]]
617 | name = "numpy"
618 | version = "1.21.1"
619 | description = "NumPy is the fundamental package for array computing with Python."
620 | category = "main"
621 | optional = false
622 | python-versions = ">=3.7"
623 |
624 | [[package]]
625 | name = "oauthlib"
626 | version = "3.1.1"
627 | description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic"
628 | category = "main"
629 | optional = false
630 | python-versions = ">=3.6"
631 |
632 | [package.extras]
633 | rsa = ["cryptography (>=3.0.0,<4)"]
634 | signals = ["blinker (>=1.4.0)"]
635 | signedtoken = ["cryptography (>=3.0.0,<4)", "pyjwt (>=2.0.0,<3)"]
636 |
637 | [[package]]
638 | name = "packaging"
639 | version = "21.0"
640 | description = "Core utilities for Python packages"
641 | category = "main"
642 | optional = false
643 | python-versions = ">=3.6"
644 |
645 | [package.dependencies]
646 | pyparsing = ">=2.0.2"
647 |
648 | [[package]]
649 | name = "pandas"
650 | version = "1.1.5"
651 | description = "Powerful data structures for data analysis, time series, and statistics"
652 | category = "main"
653 | optional = false
654 | python-versions = ">=3.6.1"
655 |
656 | [package.dependencies]
657 | numpy = ">=1.15.4"
658 | python-dateutil = ">=2.7.3"
659 | pytz = ">=2017.2"
660 |
661 | [package.extras]
662 | test = ["pytest (>=4.0.2)", "pytest-xdist", "hypothesis (>=3.58)"]
663 |
664 | [[package]]
665 | name = "pathspec"
666 | version = "0.9.0"
667 | description = "Utility library for gitignore style pattern matching of file paths."
668 | category = "dev"
669 | optional = false
670 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
671 |
672 | [[package]]
673 | name = "pbr"
674 | version = "5.6.0"
675 | description = "Python Build Reasonableness"
676 | category = "main"
677 | optional = false
678 | python-versions = ">=2.6"
679 |
680 | [[package]]
681 | name = "platformdirs"
682 | version = "2.4.0"
683 | description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
684 | category = "dev"
685 | optional = false
686 | python-versions = ">=3.6"
687 |
688 | [package.extras]
689 | docs = ["Sphinx (>=4)", "furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)"]
690 | test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"]
691 |
692 | [[package]]
693 | name = "pluggy"
694 | version = "1.0.0"
695 | description = "plugin and hook calling mechanisms for python"
696 | category = "dev"
697 | optional = false
698 | python-versions = ">=3.6"
699 |
700 | [package.dependencies]
701 | importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
702 |
703 | [package.extras]
704 | dev = ["pre-commit", "tox"]
705 | testing = ["pytest", "pytest-benchmark"]
706 |
707 | [[package]]
708 | name = "pre-commit"
709 | version = "2.15.0"
710 | description = "A framework for managing and maintaining multi-language pre-commit hooks."
711 | category = "dev"
712 | optional = false
713 | python-versions = ">=3.6.1"
714 |
715 | [package.dependencies]
716 | cfgv = ">=2.0.0"
717 | identify = ">=1.0.0"
718 | importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
719 | nodeenv = ">=0.11.1"
720 | pyyaml = ">=5.1"
721 | toml = "*"
722 | virtualenv = ">=20.0.8"
723 |
724 | [[package]]
725 | name = "protobuf"
726 | version = "3.18.1"
727 | description = "Protocol Buffers"
728 | category = "main"
729 | optional = false
730 | python-versions = ">=3.5"
731 |
732 | [[package]]
733 | name = "py"
734 | version = "1.10.0"
735 | description = "library with cross-python path, ini-parsing, io, code, log facilities"
736 | category = "dev"
737 | optional = false
738 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
739 |
740 | [[package]]
741 | name = "pyarrow"
742 | version = "5.0.0"
743 | description = "Python library for Apache Arrow"
744 | category = "main"
745 | optional = false
746 | python-versions = ">=3.6"
747 |
748 | [package.dependencies]
749 | numpy = ">=1.16.6"
750 |
751 | [[package]]
752 | name = "pyasn1"
753 | version = "0.4.8"
754 | description = "ASN.1 types and codecs"
755 | category = "main"
756 | optional = false
757 | python-versions = "*"
758 |
759 | [[package]]
760 | name = "pyasn1-modules"
761 | version = "0.2.8"
762 | description = "A collection of ASN.1-based protocols modules."
763 | category = "main"
764 | optional = false
765 | python-versions = "*"
766 |
767 | [package.dependencies]
768 | pyasn1 = ">=0.4.6,<0.5.0"
769 |
770 | [[package]]
771 | name = "pydeprecate"
772 | version = "0.3.1"
773 | description = "Deprecation tooling"
774 | category = "main"
775 | optional = false
776 | python-versions = ">=3.6"
777 |
778 | [[package]]
779 | name = "pydocstyle"
780 | version = "5.1.1"
781 | description = "Python docstring style checker"
782 | category = "dev"
783 | optional = false
784 | python-versions = ">=3.5"
785 |
786 | [package.dependencies]
787 | snowballstemmer = "*"
788 |
789 | [[package]]
790 | name = "pygments"
791 | version = "2.10.0"
792 | description = "Pygments is a syntax highlighting package written in Python."
793 | category = "main"
794 | optional = false
795 | python-versions = ">=3.5"
796 |
797 | [[package]]
798 | name = "pylint"
799 | version = "2.11.1"
800 | description = "python code static checker"
801 | category = "dev"
802 | optional = false
803 | python-versions = "~=3.6"
804 |
805 | [package.dependencies]
806 | astroid = ">=2.8.0,<2.9"
807 | colorama = {version = "*", markers = "sys_platform == \"win32\""}
808 | isort = ">=4.2.5,<6"
809 | mccabe = ">=0.6,<0.7"
810 | platformdirs = ">=2.2.0"
811 | toml = ">=0.7.1"
812 | typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""}
813 |
814 | [[package]]
815 | name = "pyparsing"
816 | version = "2.4.7"
817 | description = "Python parsing module"
818 | category = "main"
819 | optional = false
820 | python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
821 |
822 | [[package]]
823 | name = "pytest"
824 | version = "6.2.5"
825 | description = "pytest: simple powerful testing with Python"
826 | category = "dev"
827 | optional = false
828 | python-versions = ">=3.6"
829 |
830 | [package.dependencies]
831 | atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
832 | attrs = ">=19.2.0"
833 | colorama = {version = "*", markers = "sys_platform == \"win32\""}
834 | importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
835 | iniconfig = "*"
836 | packaging = "*"
837 | pluggy = ">=0.12,<2.0"
838 | py = ">=1.8.2"
839 | toml = "*"
840 |
841 | [package.extras]
842 | testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
843 |
844 | [[package]]
845 | name = "python-dateutil"
846 | version = "2.8.2"
847 | description = "Extensions to the standard Python datetime module"
848 | category = "main"
849 | optional = false
850 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
851 |
852 | [package.dependencies]
853 | six = ">=1.5"
854 |
855 | [[package]]
856 | name = "pytorch-lightning"
857 | version = "1.4.9"
858 | description = "PyTorch Lightning is the lightweight PyTorch wrapper for ML researchers. Scale your models. Write less boilerplate."
859 | category = "main"
860 | optional = false
861 | python-versions = ">=3.6"
862 |
863 | [package.dependencies]
864 | fsspec = {version = ">=2021.05.0,<2021.06.0 || >2021.06.0", extras = ["http"]}
865 | future = ">=0.17.1"
866 | numpy = ">=1.17.2"
867 | packaging = ">=17.0"
868 | pyDeprecate = "0.3.1"
869 | PyYAML = ">=5.1"
870 | tensorboard = ">=2.2.0"
871 | torch = ">=1.6"
872 | torchmetrics = ">=0.4.0"
873 | tqdm = ">=4.41.0"
874 | typing-extensions = "*"
875 |
876 | [package.extras]
877 | all = ["matplotlib (>3.1)", "horovod (>=0.21.2)", "omegaconf (>=2.0.1)", "torchtext (>=0.7)", "onnx (>=1.7.0)", "onnxruntime (>=1.3.0)", "hydra-core (>=1.0)", "jsonargparse[signatures] (>=3.17.0)", "gcsfs (>=2021.5.0)", "neptune-client (>=0.4.109)", "comet-ml (>=3.1.12)", "mlflow (>=1.0.0)", "test-tube (>=0.7.5)", "wandb (>=0.8.21)", "coverage (>5.2.0)", "codecov (>=2.1)", "pytest (>=6.0)", "check-manifest", "twine (==3.2)", "mypy (>=0.900)", "pre-commit (>=1.0)", "cloudpickle (>=1.3)", "scikit-learn (>0.22.1)", "scikit-image (>0.17.1)", "nltk (>=3.3)", "pandas", "torchvision (>=0.7)", "gym (>=0.17.0)", "ipython"]
878 | cpu = ["matplotlib (>3.1)", "omegaconf (>=2.0.1)", "torchtext (>=0.7)", "onnx (>=1.7.0)", "onnxruntime (>=1.3.0)", "hydra-core (>=1.0)", "jsonargparse[signatures] (>=3.17.0)", "gcsfs (>=2021.5.0)", "neptune-client (>=0.4.109)", "comet-ml (>=3.1.12)", "mlflow (>=1.0.0)", "test-tube (>=0.7.5)", "wandb (>=0.8.21)", "coverage (>5.2.0)", "codecov (>=2.1)", "pytest (>=6.0)", "check-manifest", "twine (==3.2)", "mypy (>=0.900)", "pre-commit (>=1.0)", "cloudpickle (>=1.3)", "scikit-learn (>0.22.1)", "scikit-image (>0.17.1)", "nltk (>=3.3)", "pandas", "torchvision (>=0.7)", "gym (>=0.17.0)", "ipython"]
879 | cpu-extra = ["matplotlib (>3.1)", "omegaconf (>=2.0.1)", "torchtext (>=0.7)", "onnx (>=1.7.0)", "onnxruntime (>=1.3.0)", "hydra-core (>=1.0)", "jsonargparse[signatures] (>=3.17.0)", "gcsfs (>=2021.5.0)"]
880 | dev = ["matplotlib (>3.1)", "horovod (>=0.21.2)", "omegaconf (>=2.0.1)", "torchtext (>=0.7)", "onnx (>=1.7.0)", "onnxruntime (>=1.3.0)", "hydra-core (>=1.0)", "jsonargparse[signatures] (>=3.17.0)", "gcsfs (>=2021.5.0)", "neptune-client (>=0.4.109)", "comet-ml (>=3.1.12)", "mlflow (>=1.0.0)", "test-tube (>=0.7.5)", "wandb (>=0.8.21)", "coverage (>5.2.0)", "codecov (>=2.1)", "pytest (>=6.0)", "check-manifest", "twine (==3.2)", "mypy (>=0.900)", "pre-commit (>=1.0)", "cloudpickle (>=1.3)", "scikit-learn (>0.22.1)", "scikit-image (>0.17.1)", "nltk (>=3.3)", "pandas"]
881 | examples = ["torchvision (>=0.7)", "gym (>=0.17.0)", "ipython"]
882 | extra = ["matplotlib (>3.1)", "horovod (>=0.21.2)", "omegaconf (>=2.0.1)", "torchtext (>=0.7)", "onnx (>=1.7.0)", "onnxruntime (>=1.3.0)", "hydra-core (>=1.0)", "jsonargparse[signatures] (>=3.17.0)", "gcsfs (>=2021.5.0)"]
883 | loggers = ["neptune-client (>=0.4.109)", "comet-ml (>=3.1.12)", "mlflow (>=1.0.0)", "test-tube (>=0.7.5)", "wandb (>=0.8.21)"]
884 | test = ["coverage (>5.2.0)", "codecov (>=2.1)", "pytest (>=6.0)", "check-manifest", "twine (==3.2)", "mypy (>=0.900)", "pre-commit (>=1.0)", "cloudpickle (>=1.3)", "scikit-learn (>0.22.1)", "scikit-image (>0.17.1)", "nltk (>=3.3)", "pandas"]
885 |
886 | [[package]]
887 | name = "pytz"
888 | version = "2021.3"
889 | description = "World timezone definitions, modern and historical"
890 | category = "main"
891 | optional = false
892 | python-versions = "*"
893 |
894 | [[package]]
895 | name = "pyupgrade"
896 | version = "2.29.0"
897 | description = "A tool to automatically upgrade syntax for newer versions."
898 | category = "dev"
899 | optional = false
900 | python-versions = ">=3.6.1"
901 |
902 | [package.dependencies]
903 | tokenize-rt = ">=3.2.0"
904 |
905 | [[package]]
906 | name = "pyyaml"
907 | version = "5.4.1"
908 | description = "YAML parser and emitter for Python"
909 | category = "main"
910 | optional = false
911 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
912 |
913 | [[package]]
914 | name = "regex"
915 | version = "2021.10.8"
916 | description = "Alternative regular expression module, to replace re."
917 | category = "main"
918 | optional = false
919 | python-versions = "*"
920 |
921 | [[package]]
922 | name = "requests"
923 | version = "2.26.0"
924 | description = "Python HTTP for Humans."
925 | category = "main"
926 | optional = false
927 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
928 |
929 | [package.dependencies]
930 | certifi = ">=2017.4.17"
931 | charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""}
932 | idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""}
933 | urllib3 = ">=1.21.1,<1.27"
934 |
935 | [package.extras]
936 | socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]
937 | use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"]
938 |
939 | [[package]]
940 | name = "requests-oauthlib"
941 | version = "1.3.0"
942 | description = "OAuthlib authentication support for Requests."
943 | category = "main"
944 | optional = false
945 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
946 |
947 | [package.dependencies]
948 | oauthlib = ">=3.0.0"
949 | requests = ">=2.0.0"
950 |
951 | [package.extras]
952 | rsa = ["oauthlib[signedtoken] (>=3.0.0)"]
953 |
954 | [[package]]
955 | name = "rich"
956 | version = "8.0.0"
957 | description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
958 | category = "main"
959 | optional = false
960 | python-versions = ">=3.6,<4.0"
961 |
962 | [package.dependencies]
963 | colorama = ">=0.4.0,<0.5.0"
964 | commonmark = ">=0.9.0,<0.10.0"
965 | pygments = ">=2.6.0,<3.0.0"
966 | typing-extensions = ">=3.7.4,<4.0.0"
967 |
968 | [package.extras]
969 | jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"]
970 |
971 | [[package]]
972 | name = "rsa"
973 | version = "4.7.2"
974 | description = "Pure-Python RSA implementation"
975 | category = "main"
976 | optional = false
977 | python-versions = ">=3.5, <4"
978 |
979 | [package.dependencies]
980 | pyasn1 = ">=0.1.3"
981 |
982 | [[package]]
983 | name = "safety"
984 | version = "1.10.3"
985 | description = "Checks installed dependencies for known vulnerabilities."
986 | category = "dev"
987 | optional = false
988 | python-versions = ">=3.5"
989 |
990 | [package.dependencies]
991 | Click = ">=6.0"
992 | dparse = ">=0.5.1"
993 | packaging = "*"
994 | requests = "*"
995 |
996 | [[package]]
997 | name = "scikit-learn"
998 | version = "0.23.2"
999 | description = "A set of python modules for machine learning and data mining"
1000 | category = "main"
1001 | optional = false
1002 | python-versions = ">=3.6"
1003 |
1004 | [package.dependencies]
1005 | joblib = ">=0.11"
1006 | numpy = ">=1.13.3"
1007 | scipy = ">=0.19.1"
1008 | threadpoolctl = ">=2.0.0"
1009 |
1010 | [package.extras]
1011 | alldeps = ["numpy (>=1.13.3)", "scipy (>=0.19.1)"]
1012 |
1013 | [[package]]
1014 | name = "scipy"
1015 | version = "1.6.1"
1016 | description = "SciPy: Scientific Library for Python"
1017 | category = "main"
1018 | optional = false
1019 | python-versions = ">=3.7"
1020 |
1021 | [package.dependencies]
1022 | numpy = ">=1.16.5"
1023 |
1024 | [[package]]
1025 | name = "shellingham"
1026 | version = "1.4.0"
1027 | description = "Tool to Detect Surrounding Shell"
1028 | category = "main"
1029 | optional = false
1030 | python-versions = "!=3.0,!=3.1,!=3.2,!=3.3,>=2.6"
1031 |
1032 | [[package]]
1033 | name = "six"
1034 | version = "1.16.0"
1035 | description = "Python 2 and 3 compatibility utilities"
1036 | category = "main"
1037 | optional = false
1038 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
1039 |
1040 | [[package]]
1041 | name = "smmap"
1042 | version = "4.0.0"
1043 | description = "A pure Python implementation of a sliding window memory map manager"
1044 | category = "main"
1045 | optional = false
1046 | python-versions = ">=3.5"
1047 |
1048 | [[package]]
1049 | name = "snowballstemmer"
1050 | version = "2.1.0"
1051 | description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms."
1052 | category = "dev"
1053 | optional = false
1054 | python-versions = "*"
1055 |
1056 | [[package]]
1057 | name = "stevedore"
1058 | version = "3.4.0"
1059 | description = "Manage dynamic plugins for Python applications"
1060 | category = "main"
1061 | optional = false
1062 | python-versions = ">=3.6"
1063 |
1064 | [package.dependencies]
1065 | importlib-metadata = {version = ">=1.7.0", markers = "python_version < \"3.8\""}
1066 | pbr = ">=2.0.0,<2.1.0 || >2.1.0"
1067 |
1068 | [[package]]
1069 | name = "tensorboard"
1070 | version = "2.6.0"
1071 | description = "TensorBoard lets you watch Tensors Flow"
1072 | category = "main"
1073 | optional = false
1074 | python-versions = ">=3.6"
1075 |
1076 | [package.dependencies]
1077 | absl-py = ">=0.4"
1078 | google-auth = ">=1.6.3,<2"
1079 | google-auth-oauthlib = ">=0.4.1,<0.5"
1080 | grpcio = ">=1.24.3"
1081 | markdown = ">=2.6.8"
1082 | numpy = ">=1.12.0"
1083 | protobuf = ">=3.6.0"
1084 | requests = ">=2.21.0,<3"
1085 | tensorboard-data-server = ">=0.6.0,<0.7.0"
1086 | tensorboard-plugin-wit = ">=1.6.0"
1087 | werkzeug = ">=0.11.15"
1088 |
1089 | [[package]]
1090 | name = "tensorboard-data-server"
1091 | version = "0.6.1"
1092 | description = "Fast data loading for TensorBoard"
1093 | category = "main"
1094 | optional = false
1095 | python-versions = ">=3.6"
1096 |
1097 | [[package]]
1098 | name = "tensorboard-plugin-wit"
1099 | version = "1.8.0"
1100 | description = "What-If Tool TensorBoard plugin."
1101 | category = "main"
1102 | optional = false
1103 | python-versions = "*"
1104 |
1105 | [[package]]
1106 | name = "threadpoolctl"
1107 | version = "3.0.0"
1108 | description = "threadpoolctl"
1109 | category = "main"
1110 | optional = false
1111 | python-versions = ">=3.6"
1112 |
1113 | [[package]]
1114 | name = "tokenize-rt"
1115 | version = "4.1.0"
1116 | description = "A wrapper around the stdlib `tokenize` which roundtrips."
1117 | category = "dev"
1118 | optional = false
1119 | python-versions = ">=3.6.1"
1120 |
1121 | [[package]]
1122 | name = "toml"
1123 | version = "0.10.2"
1124 | description = "Python Library for Tom's Obvious, Minimal Language"
1125 | category = "dev"
1126 | optional = false
1127 | python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
1128 |
1129 | [[package]]
1130 | name = "torch"
1131 | version = "1.9.0"
1132 | description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration"
1133 | category = "main"
1134 | optional = false
1135 | python-versions = ">=3.6.2"
1136 |
1137 | [package.dependencies]
1138 | typing-extensions = "*"
1139 |
1140 | [[package]]
1141 | name = "torchmetrics"
1142 | version = "0.5.1"
1143 | description = "PyTorch native Metrics"
1144 | category = "main"
1145 | optional = false
1146 | python-versions = ">=3.6"
1147 |
1148 | [package.dependencies]
1149 | numpy = ">=1.17.2"
1150 | packaging = "*"
1151 | torch = ">=1.3.1"
1152 |
1153 | [package.extras]
1154 | all = ["scipy", "torchvision", "torch-fidelity", "nltk (>=3.6)", "tqdm (>=4.41.0)"]
1155 | image = ["scipy", "torchvision", "torch-fidelity"]
1156 | text = ["nltk (>=3.6)", "tqdm (>=4.41.0)"]
1157 |
1158 | [[package]]
1159 | name = "tqdm"
1160 | version = "4.62.3"
1161 | description = "Fast, Extensible Progress Meter"
1162 | category = "main"
1163 | optional = false
1164 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
1165 |
1166 | [package.dependencies]
1167 | colorama = {version = "*", markers = "platform_system == \"Windows\""}
1168 |
1169 | [package.extras]
1170 | dev = ["py-make (>=0.1.0)", "twine", "wheel"]
1171 | notebook = ["ipywidgets (>=6)"]
1172 | telegram = ["requests"]
1173 |
1174 | [[package]]
1175 | name = "typed-ast"
1176 | version = "1.4.3"
1177 | description = "a fork of Python 2 and 3 ast modules with type comment support"
1178 | category = "dev"
1179 | optional = false
1180 | python-versions = "*"
1181 |
1182 | [[package]]
1183 | name = "typer"
1184 | version = "0.3.2"
1185 | description = "Typer, build great CLIs. Easy to code. Based on Python type hints."
1186 | category = "main"
1187 | optional = false
1188 | python-versions = ">=3.6"
1189 |
1190 | [package.dependencies]
1191 | click = ">=7.1.1,<7.2.0"
1192 | colorama = {version = ">=0.4.3,<0.5.0", optional = true, markers = "extra == \"all\""}
1193 | shellingham = {version = ">=1.3.0,<2.0.0", optional = true, markers = "extra == \"all\""}
1194 |
1195 | [package.extras]
1196 | test = ["pytest-xdist (>=1.32.0,<2.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "mypy (==0.782)", "black (>=19.10b0,<20.0b0)", "isort (>=5.0.6,<6.0.0)", "shellingham (>=1.3.0,<2.0.0)", "pytest (>=4.4.0,<5.4.0)", "pytest-cov (>=2.10.0,<3.0.0)", "coverage (>=5.2,<6.0)"]
1197 | all = ["colorama (>=0.4.3,<0.5.0)", "shellingham (>=1.3.0,<2.0.0)"]
1198 | dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)"]
1199 | doc = ["mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=5.4.0,<6.0.0)", "markdown-include (>=0.5.1,<0.6.0)"]
1200 |
1201 | [[package]]
1202 | name = "typing-extensions"
1203 | version = "3.10.0.2"
1204 | description = "Backported and Experimental Type Hints for Python 3.5+"
1205 | category = "main"
1206 | optional = false
1207 | python-versions = "*"
1208 |
1209 | [[package]]
1210 | name = "urllib3"
1211 | version = "1.26.7"
1212 | description = "HTTP library with thread-safe connection pooling, file post, and more."
1213 | category = "main"
1214 | optional = false
1215 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
1216 |
1217 | [package.extras]
1218 | brotli = ["brotlipy (>=0.6.0)"]
1219 | secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"]
1220 | socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
1221 |
1222 | [[package]]
1223 | name = "virtualenv"
1224 | version = "20.8.1"
1225 | description = "Virtual Python Environment builder"
1226 | category = "dev"
1227 | optional = false
1228 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
1229 |
1230 | [package.dependencies]
1231 | "backports.entry-points-selectable" = ">=1.0.4"
1232 | distlib = ">=0.3.1,<1"
1233 | filelock = ">=3.0.0,<4"
1234 | importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
1235 | platformdirs = ">=2,<3"
1236 | six = ">=1.9.0,<2"
1237 |
1238 | [package.extras]
1239 | docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=19.9.0rc1)"]
1240 | testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)"]
1241 |
1242 | [[package]]
1243 | name = "werkzeug"
1244 | version = "2.0.2"
1245 | description = "The comprehensive WSGI web application library."
1246 | category = "main"
1247 | optional = false
1248 | python-versions = ">=3.6"
1249 |
1250 | [package.extras]
1251 | watchdog = ["watchdog"]
1252 |
1253 | [[package]]
1254 | name = "wrapt"
1255 | version = "1.12.1"
1256 | description = "Module for decorators, wrappers and monkey patching."
1257 | category = "dev"
1258 | optional = false
1259 | python-versions = "*"
1260 |
1261 | [[package]]
1262 | name = "xxhash"
1263 | version = "2.0.2"
1264 | description = "Python binding for xxHash"
1265 | category = "main"
1266 | optional = false
1267 | python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
1268 |
1269 | [[package]]
1270 | name = "yarl"
1271 | version = "1.7.0"
1272 | description = "Yet another URL library"
1273 | category = "main"
1274 | optional = false
1275 | python-versions = ">=3.6"
1276 |
1277 | [package.dependencies]
1278 | idna = ">=2.0"
1279 | multidict = ">=4.0"
1280 | typing-extensions = {version = ">=3.7.4", markers = "python_version < \"3.8\""}
1281 |
1282 | [[package]]
1283 | name = "zipp"
1284 | version = "3.6.0"
1285 | description = "Backport of pathlib-compatible object wrapper for zip files"
1286 | category = "main"
1287 | optional = false
1288 | python-versions = ">=3.6"
1289 |
1290 | [package.extras]
1291 | docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
1292 | testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"]
1293 |
1294 | [metadata]
1295 | lock-version = "1.1"
1296 | python-versions = "^3.7"
1297 | content-hash = "6a7b1290f233ec1ba6d47c3c3916d74e55b4d3f2823927de7033c5ee68bde94e"
1298 |
1299 | [metadata.files]
1300 | absl-py = [
1301 | {file = "absl-py-0.14.1.tar.gz", hash = "sha256:eb0383bd431c0d7b2320179904cab00120a10977e3c9671d99efbbed17efb55a"},
1302 | {file = "absl_py-0.14.1-py3-none-any.whl", hash = "sha256:565a2c1be855e466e697e1be6b9876c2435dda926954d1de4abf0d592561ece8"},
1303 | ]
1304 | aiohttp = [
1305 | {file = "aiohttp-3.7.4.post0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:3cf75f7cdc2397ed4442594b935a11ed5569961333d49b7539ea741be2cc79d5"},
1306 | {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:4b302b45040890cea949ad092479e01ba25911a15e648429c7c5aae9650c67a8"},
1307 | {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:fe60131d21b31fd1a14bd43e6bb88256f69dfc3188b3a89d736d6c71ed43ec95"},
1308 | {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:393f389841e8f2dfc86f774ad22f00923fdee66d238af89b70ea314c4aefd290"},
1309 | {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux2014_ppc64le.whl", hash = "sha256:c6e9dcb4cb338d91a73f178d866d051efe7c62a7166653a91e7d9fb18274058f"},
1310 | {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:5df68496d19f849921f05f14f31bd6ef53ad4b00245da3195048c69934521809"},
1311 | {file = "aiohttp-3.7.4.post0-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:0563c1b3826945eecd62186f3f5c7d31abb7391fedc893b7e2b26303b5a9f3fe"},
1312 | {file = "aiohttp-3.7.4.post0-cp36-cp36m-win32.whl", hash = "sha256:3d78619672183be860b96ed96f533046ec97ca067fd46ac1f6a09cd9b7484287"},
1313 | {file = "aiohttp-3.7.4.post0-cp36-cp36m-win_amd64.whl", hash = "sha256:f705e12750171c0ab4ef2a3c76b9a4024a62c4103e3a55dd6f99265b9bc6fcfc"},
1314 | {file = "aiohttp-3.7.4.post0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:230a8f7e24298dea47659251abc0fd8b3c4e38a664c59d4b89cca7f6c09c9e87"},
1315 | {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:2e19413bf84934d651344783c9f5e22dee452e251cfd220ebadbed2d9931dbf0"},
1316 | {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:e4b2b334e68b18ac9817d828ba44d8fcb391f6acb398bcc5062b14b2cbeac970"},
1317 | {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:d012ad7911653a906425d8473a1465caa9f8dea7fcf07b6d870397b774ea7c0f"},
1318 | {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:40eced07f07a9e60e825554a31f923e8d3997cfc7fb31dbc1328c70826e04cde"},
1319 | {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:209b4a8ee987eccc91e2bd3ac36adee0e53a5970b8ac52c273f7f8fd4872c94c"},
1320 | {file = "aiohttp-3.7.4.post0-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:14762875b22d0055f05d12abc7f7d61d5fd4fe4642ce1a249abdf8c700bf1fd8"},
1321 | {file = "aiohttp-3.7.4.post0-cp37-cp37m-win32.whl", hash = "sha256:7615dab56bb07bff74bc865307aeb89a8bfd9941d2ef9d817b9436da3a0ea54f"},
1322 | {file = "aiohttp-3.7.4.post0-cp37-cp37m-win_amd64.whl", hash = "sha256:d9e13b33afd39ddeb377eff2c1c4f00544e191e1d1dee5b6c51ddee8ea6f0cf5"},
1323 | {file = "aiohttp-3.7.4.post0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:547da6cacac20666422d4882cfcd51298d45f7ccb60a04ec27424d2f36ba3eaf"},
1324 | {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:af9aa9ef5ba1fd5b8c948bb11f44891968ab30356d65fd0cc6707d989cd521df"},
1325 | {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:64322071e046020e8797117b3658b9c2f80e3267daec409b350b6a7a05041213"},
1326 | {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:bb437315738aa441251214dad17428cafda9cdc9729499f1d6001748e1d432f4"},
1327 | {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:e54962802d4b8b18b6207d4a927032826af39395a3bd9196a5af43fc4e60b009"},
1328 | {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:a00bb73540af068ca7390e636c01cbc4f644961896fa9363154ff43fd37af2f5"},
1329 | {file = "aiohttp-3.7.4.post0-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:79ebfc238612123a713a457d92afb4096e2148be17df6c50fb9bf7a81c2f8013"},
1330 | {file = "aiohttp-3.7.4.post0-cp38-cp38-win32.whl", hash = "sha256:515dfef7f869a0feb2afee66b957cc7bbe9ad0cdee45aec7fdc623f4ecd4fb16"},
1331 | {file = "aiohttp-3.7.4.post0-cp38-cp38-win_amd64.whl", hash = "sha256:114b281e4d68302a324dd33abb04778e8557d88947875cbf4e842c2c01a030c5"},
1332 | {file = "aiohttp-3.7.4.post0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:7b18b97cf8ee5452fa5f4e3af95d01d84d86d32c5e2bfa260cf041749d66360b"},
1333 | {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:15492a6368d985b76a2a5fdd2166cddfea5d24e69eefed4630cbaae5c81d89bd"},
1334 | {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bdb230b4943891321e06fc7def63c7aace16095be7d9cf3b1e01be2f10fba439"},
1335 | {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:cffe3ab27871bc3ea47df5d8f7013945712c46a3cc5a95b6bee15887f1675c22"},
1336 | {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:f881853d2643a29e643609da57b96d5f9c9b93f62429dcc1cbb413c7d07f0e1a"},
1337 | {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:a5ca29ee66f8343ed336816c553e82d6cade48a3ad702b9ffa6125d187e2dedb"},
1338 | {file = "aiohttp-3.7.4.post0-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:17c073de315745a1510393a96e680d20af8e67e324f70b42accbd4cb3315c9fb"},
1339 | {file = "aiohttp-3.7.4.post0-cp39-cp39-win32.whl", hash = "sha256:932bb1ea39a54e9ea27fc9232163059a0b8855256f4052e776357ad9add6f1c9"},
1340 | {file = "aiohttp-3.7.4.post0-cp39-cp39-win_amd64.whl", hash = "sha256:02f46fc0e3c5ac58b80d4d56eb0a7c7d97fcef69ace9326289fb9f1955e65cfe"},
1341 | {file = "aiohttp-3.7.4.post0.tar.gz", hash = "sha256:493d3299ebe5f5a7c66b9819eacdcfbbaaf1a8e84911ddffcdc48888497afecf"},
1342 | ]
1343 | appdirs = [
1344 | {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"},
1345 | {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"},
1346 | ]
1347 | astroid = [
1348 | {file = "astroid-2.8.2-py3-none-any.whl", hash = "sha256:9eaeaf92b3e21b70bec1a262e7eb118d2e96294892a5de595c92a12adc80dfc2"},
1349 | {file = "astroid-2.8.2.tar.gz", hash = "sha256:304e99c129794f2cfda584a12b71fde85205da950e2f330f4be09150525ae949"},
1350 | ]
1351 | async-timeout = [
1352 | {file = "async-timeout-3.0.1.tar.gz", hash = "sha256:0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f"},
1353 | {file = "async_timeout-3.0.1-py3-none-any.whl", hash = "sha256:4291ca197d287d274d0b6cb5d6f8f8f82d434ed288f962539ff18cc9012f9ea3"},
1354 | ]
1355 | atomicwrites = [
1356 | {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"},
1357 | {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"},
1358 | ]
1359 | attrs = [
1360 | {file = "attrs-21.2.0-py2.py3-none-any.whl", hash = "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"},
1361 | {file = "attrs-21.2.0.tar.gz", hash = "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"},
1362 | ]
1363 | "backports.entry-points-selectable" = [
1364 | {file = "backports.entry_points_selectable-1.1.0-py2.py3-none-any.whl", hash = "sha256:a6d9a871cde5e15b4c4a53e3d43ba890cc6861ec1332c9c2428c92f977192acc"},
1365 | {file = "backports.entry_points_selectable-1.1.0.tar.gz", hash = "sha256:988468260ec1c196dab6ae1149260e2f5472c9110334e5d51adcb77867361f6a"},
1366 | ]
1367 | bandit = [
1368 | {file = "bandit-1.7.0-py3-none-any.whl", hash = "sha256:216be4d044209fa06cf2a3e51b319769a51be8318140659719aa7a115c35ed07"},
1369 | {file = "bandit-1.7.0.tar.gz", hash = "sha256:8a4c7415254d75df8ff3c3b15cfe9042ecee628a1e40b44c15a98890fbfc2608"},
1370 | ]
1371 | bitstring = [
1372 | {file = "bitstring-3.1.9-py2-none-any.whl", hash = "sha256:e3e340e58900a948787a05e8c08772f1ccbe133f6f41fe3f0fa19a18a22bbf4f"},
1373 | {file = "bitstring-3.1.9-py3-none-any.whl", hash = "sha256:0de167daa6a00c9386255a7cac931b45e6e24e0ad7ea64f1f92a64ac23ad4578"},
1374 | {file = "bitstring-3.1.9.tar.gz", hash = "sha256:a5848a3f63111785224dca8bb4c0a75b62ecdef56a042c8d6be74b16f7e860e7"},
1375 | ]
1376 | black = [
1377 | {file = "black-20.8b1.tar.gz", hash = "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea"},
1378 | ]
1379 | cachetools = [
1380 | {file = "cachetools-4.2.4-py3-none-any.whl", hash = "sha256:92971d3cb7d2a97efff7c7bb1657f21a8f5fb309a37530537c71b1774189f2d1"},
1381 | {file = "cachetools-4.2.4.tar.gz", hash = "sha256:89ea6f1b638d5a73a4f9226be57ac5e4f399d22770b92355f92dcb0f7f001693"},
1382 | ]
1383 | certifi = [
1384 | {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"},
1385 | {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"},
1386 | ]
1387 | cfgv = [
1388 | {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"},
1389 | {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"},
1390 | ]
1391 | chardet = [
1392 | {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"},
1393 | {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"},
1394 | ]
1395 | charset-normalizer = [
1396 | {file = "charset-normalizer-2.0.6.tar.gz", hash = "sha256:5ec46d183433dcbd0ab716f2d7f29d8dee50505b3fdb40c6b985c7c4f5a3591f"},
1397 | {file = "charset_normalizer-2.0.6-py3-none-any.whl", hash = "sha256:5d209c0a931f215cee683b6445e2d77677e7e75e159f78def0db09d68fafcaa6"},
1398 | ]
1399 | click = [
1400 | {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"},
1401 | {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"},
1402 | ]
1403 | colorama = [
1404 | {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
1405 | {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
1406 | ]
1407 | commonmark = [
1408 | {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"},
1409 | {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"},
1410 | ]
1411 | darglint = [
1412 | {file = "darglint-1.8.0-py3-none-any.whl", hash = "sha256:ac6797bcc918cd8d8f14c168a4a364f54e1aeb4ced59db58e7e4c6dfec2fe15c"},
1413 | {file = "darglint-1.8.0.tar.gz", hash = "sha256:aa605ef47817a6d14797d32b390466edab621768ea4ca5cc0f3c54f6d8dcaec8"},
1414 | ]
1415 | datasets = [
1416 | {file = "datasets-1.12.1-py3-none-any.whl", hash = "sha256:8e4b3a1bf825c17d3a29244ef7670cb26066d5df98f57098cdf6db0853738178"},
1417 | {file = "datasets-1.12.1.tar.gz", hash = "sha256:2f3c15323dd5358184cc73e5b11e90e1e67f30c680dfc685d04903297cc09432"},
1418 | ]
1419 | dill = [
1420 | {file = "dill-0.3.4-py2.py3-none-any.whl", hash = "sha256:7e40e4a70304fd9ceab3535d36e58791d9c4a776b38ec7f7ec9afc8d3dca4d4f"},
1421 | {file = "dill-0.3.4.zip", hash = "sha256:9f9734205146b2b353ab3fec9af0070237b6ddae78452af83d2fca84d739e675"},
1422 | ]
1423 | distlib = [
1424 | {file = "distlib-0.3.3-py2.py3-none-any.whl", hash = "sha256:c8b54e8454e5bf6237cc84c20e8264c3e991e824ef27e8f1e81049867d861e31"},
1425 | {file = "distlib-0.3.3.zip", hash = "sha256:d982d0751ff6eaaab5e2ec8e691d949ee80eddf01a62eaa96ddb11531fe16b05"},
1426 | ]
1427 | dparse = [
1428 | {file = "dparse-0.5.1-py3-none-any.whl", hash = "sha256:e953a25e44ebb60a5c6efc2add4420c177f1d8404509da88da9729202f306994"},
1429 | {file = "dparse-0.5.1.tar.gz", hash = "sha256:a1b5f169102e1c894f9a7d5ccf6f9402a836a5d24be80a986c7ce9eaed78f367"},
1430 | ]
1431 | filelock = [
1432 | {file = "filelock-3.3.0-py3-none-any.whl", hash = "sha256:bbc6a0382fe8ec4744ecdf6683a2e07f65eb10ff1aff53fc02a202565446cde0"},
1433 | {file = "filelock-3.3.0.tar.gz", hash = "sha256:8c7eab13dc442dc249e95158bcc12dec724465919bdc9831fdbf0660f03d1785"},
1434 | ]
1435 | fsspec = [
1436 | {file = "fsspec-2021.10.0-py3-none-any.whl", hash = "sha256:7760d6b2f35739697d694c724be3500b19e6b33af65b139306be98bb1d1ebcdd"},
1437 | {file = "fsspec-2021.10.0.tar.gz", hash = "sha256:9505afbf8cee22cf12a29742e23ad79ad132b3423632ec3a3bf9034ce3911138"},
1438 | ]
1439 | future = [
1440 | {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"},
1441 | ]
1442 | gitdb = [
1443 | {file = "gitdb-4.0.7-py3-none-any.whl", hash = "sha256:6c4cc71933456991da20917998acbe6cf4fb41eeaab7d6d67fbc05ecd4c865b0"},
1444 | {file = "gitdb-4.0.7.tar.gz", hash = "sha256:96bf5c08b157a666fec41129e6d327235284cca4c81e92109260f353ba138005"},
1445 | ]
1446 | gitpython = [
1447 | {file = "GitPython-3.1.24-py3-none-any.whl", hash = "sha256:dc0a7f2f697657acc8d7f89033e8b1ea94dd90356b2983bca89dc8d2ab3cc647"},
1448 | {file = "GitPython-3.1.24.tar.gz", hash = "sha256:df83fdf5e684fef7c6ee2c02fc68a5ceb7e7e759d08b694088d0cacb4eba59e5"},
1449 | ]
1450 | google-auth = [
1451 | {file = "google-auth-1.35.0.tar.gz", hash = "sha256:b7033be9028c188ee30200b204ea00ed82ea1162e8ac1df4aa6ded19a191d88e"},
1452 | {file = "google_auth-1.35.0-py2.py3-none-any.whl", hash = "sha256:997516b42ecb5b63e8d80f5632c1a61dddf41d2a4c2748057837e06e00014258"},
1453 | ]
1454 | google-auth-oauthlib = [
1455 | {file = "google-auth-oauthlib-0.4.6.tar.gz", hash = "sha256:a90a072f6993f2c327067bf65270046384cda5a8ecb20b94ea9a687f1f233a7a"},
1456 | {file = "google_auth_oauthlib-0.4.6-py2.py3-none-any.whl", hash = "sha256:3f2a6e802eebbb6fb736a370fbf3b055edcb6b52878bf2f26330b5e041316c73"},
1457 | ]
1458 | grpcio = [
1459 | {file = "grpcio-1.38.1-cp27-cp27m-macosx_10_10_x86_64.whl", hash = "sha256:118479436bda25b369e2dc1cd0921790fbfaea1ec663e4ee7095c4c325694495"},
1460 | {file = "grpcio-1.38.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:7adfbd4e22647f880c9ed86b2be7f6d7a7dbbb8adc09395808cc7a4d021bc328"},
1461 | {file = "grpcio-1.38.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:87b4b1977b52d5e0873a5e396340d2443640ba760f4fa23e93a38997ecfbcd5b"},
1462 | {file = "grpcio-1.38.1-cp27-cp27m-win32.whl", hash = "sha256:3a25e1a46f51c80d06b66223f61938b9ffda37f2824ca65749c49b758137fac2"},
1463 | {file = "grpcio-1.38.1-cp27-cp27m-win_amd64.whl", hash = "sha256:b5ea9902fc2990af993b74862282b49ae0b8de8a64ca3b4a8dda26a3163c3bb4"},
1464 | {file = "grpcio-1.38.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:8ccde1df51eeaddf5515edc41bde2ea43a834a288914eae9ce4287399be108f5"},
1465 | {file = "grpcio-1.38.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:0e193feaf4ebc72f6af57d7b8a08c0b8e43ebbd76f81c6f1e55d013557602dfd"},
1466 | {file = "grpcio-1.38.1-cp35-cp35m-macosx_10_10_intel.whl", hash = "sha256:b16e1967709392a0ec4b10b4374a72eb062c47c168a189606c9a7ea7b36593a8"},
1467 | {file = "grpcio-1.38.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:4bc60f8372c3ab06f41279163c5d558bf95195bb3f68e35ed19f95d4fbd53d71"},
1468 | {file = "grpcio-1.38.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a433d3740a9ef7bc34a18e2b12bf72b25e618facdfd09871167b30fd8e955fed"},
1469 | {file = "grpcio-1.38.1-cp35-cp35m-manylinux2014_i686.whl", hash = "sha256:d49f250c3ffbe83ba2d03e3500e03505576a985f7c5f77172a9531058347aa68"},
1470 | {file = "grpcio-1.38.1-cp35-cp35m-manylinux2014_x86_64.whl", hash = "sha256:6e137d014cf4162e5a796777012452516d92547717c1b4914fb71ce4e41817b5"},
1471 | {file = "grpcio-1.38.1-cp35-cp35m-win32.whl", hash = "sha256:5ff4802d9b3704e680454289587e1cc146bb0d953cf3c9296e2d96441a6a8e88"},
1472 | {file = "grpcio-1.38.1-cp35-cp35m-win_amd64.whl", hash = "sha256:4c19578b35715e110c324b27c18ab54a56fccc4c41b8f651b1d1da5a64e0d605"},
1473 | {file = "grpcio-1.38.1-cp36-cp36m-linux_armv7l.whl", hash = "sha256:6edf68d4305e08f6f8c45bfaa9dc04d527ab5a1562aaf0c452fa921fbe90eb23"},
1474 | {file = "grpcio-1.38.1-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:ddd33c90b0c95eca737c9f6db7e969a48d23aed72cecb23f3b8aac009ca2cfb4"},
1475 | {file = "grpcio-1.38.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:c83481501533824fe341c17d297bbec1ec584ec46b352f98ce12bf16740615c4"},
1476 | {file = "grpcio-1.38.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:3e85bba6f0e0c454a90b8fea16b59db9c6d19ddf9cc95052b2d4ca77b22d46d6"},
1477 | {file = "grpcio-1.38.1-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:dcfcb147c18272a22a592251a49830b3c7abc82385ffff34916c2534175d885e"},
1478 | {file = "grpcio-1.38.1-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:419af4f577a3d5d9f386aeacf4c4992f90016f84cbceb11ecd832101b1f7f9c9"},
1479 | {file = "grpcio-1.38.1-cp36-cp36m-manylinux_2_24_aarch64.whl", hash = "sha256:cd7ddb5b6ffcbd3691990df20f260a888c8bd770d57480a97da1b756fb1be5c0"},
1480 | {file = "grpcio-1.38.1-cp36-cp36m-win32.whl", hash = "sha256:d4179d96b0ce27602756185c1a00d088c9c1feb0cc17a36f8a66eec6ddddbc0c"},
1481 | {file = "grpcio-1.38.1-cp36-cp36m-win_amd64.whl", hash = "sha256:96d78d9edf3070770cefd1822bc220d8cccad049b818a70a3c630052e9f15490"},
1482 | {file = "grpcio-1.38.1-cp37-cp37m-linux_armv7l.whl", hash = "sha256:8ab27a6626c2038e13c1b250c5cd22da578f182364134620ec298b4ccfc85722"},
1483 | {file = "grpcio-1.38.1-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:532ab738351aad2cdad80f4355123652e08b207281f3923ce51fb2b58692dd4c"},
1484 | {file = "grpcio-1.38.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:e4a8a371ad02bf31576bcd99093cea3849e19ca1e9eb63fc0b2c0f1db1132f7d"},
1485 | {file = "grpcio-1.38.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:89af675d38bf490384dae85151768b8434e997cece98e5d1eb6fcb3c16d6af12"},
1486 | {file = "grpcio-1.38.1-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:ff9ebc416e815161d89d2fd22d1a91acf3b810ef800dae38c402d19d203590bf"},
1487 | {file = "grpcio-1.38.1-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:3db0680fee9e55022677abda186e73e3c019c59ed83e1550519250dc97cf6793"},
1488 | {file = "grpcio-1.38.1-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:a77d1f47e5e82504c531bc9dd22c093ff093b6706ec8bcdad228464ef3a5dd54"},
1489 | {file = "grpcio-1.38.1-cp37-cp37m-win32.whl", hash = "sha256:549beb5646137b78534a312a3b80b2b8b1ea01058b38a711d42d6b54b20b6c2b"},
1490 | {file = "grpcio-1.38.1-cp37-cp37m-win_amd64.whl", hash = "sha256:3eb960c2f9e031f0643b53bab67733a9544d82f42d0714338183d14993d2a23c"},
1491 | {file = "grpcio-1.38.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:e90cda2ccd4bdb89a3cd5dc11771c3b8394817d5caaa1ae36042bc96a428c10e"},
1492 | {file = "grpcio-1.38.1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:26af85ae0a7ff8e8f8f550255bf85551df86a89883c11721c0756b71bc1019be"},
1493 | {file = "grpcio-1.38.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:947bdba3ebcd93a7cef537d6405bc5667d1caf818fa8bbd2e2cc952ec8f97e09"},
1494 | {file = "grpcio-1.38.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:6d898441ada374f76e0b5354d7e240e1c0e905a1ebcb1e95d9ffd99c88f63700"},
1495 | {file = "grpcio-1.38.1-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:59f5fb4ba219a11fdc1c23e17c93ca3090480a8cde4370c980908546ffc091e6"},
1496 | {file = "grpcio-1.38.1-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:cddd61bff66e42ef334f8cb9e719951e479b5ad2cb75c00338aac8de28e17484"},
1497 | {file = "grpcio-1.38.1-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:c323265a4f18f586e8de84fda12b48eb3bd48395294aa2b8c05307ac1680299d"},
1498 | {file = "grpcio-1.38.1-cp38-cp38-win32.whl", hash = "sha256:72e8358c751da9ab4f8653a3b67b2a3bb7e330ee57cb26439c6af358d6eac032"},
1499 | {file = "grpcio-1.38.1-cp38-cp38-win_amd64.whl", hash = "sha256:278e131bfbc57bab112359b98930b0fdbf81aa0ba2cdfc6555c7a5119d7e2117"},
1500 | {file = "grpcio-1.38.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:44efa41ac36f6bcbf4f64d6479b3031cceea28cf6892a77f15bd1c22611bff9d"},
1501 | {file = "grpcio-1.38.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:cf6c3bfa403e055380fe90844beb4fe8e9448edab5d2bf40d37d208dbb2f768c"},
1502 | {file = "grpcio-1.38.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:5efa68fc3fe0c439e2858215f2224bfb7242c35079538d58063f68a0d5d5ec33"},
1503 | {file = "grpcio-1.38.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:2a179b2565fa85a134933acc7845f9d4c12e742c802b4f50bf2fd208bf8b741e"},
1504 | {file = "grpcio-1.38.1-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:b1624123710fa701988a8a43994de78416e5010ac1508f64ed41e2577358604a"},
1505 | {file = "grpcio-1.38.1-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:6a225440015db88ec4625a2a41c21582a50cce7ffbe38dcbbb416c7180352516"},
1506 | {file = "grpcio-1.38.1-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:e891b0936aab73550d673dd3bbf89fa9577b3db1a61baecea480afd36fdb1852"},
1507 | {file = "grpcio-1.38.1-cp39-cp39-win32.whl", hash = "sha256:889518ce7c2a0609a3cffb7b667669a39b3410e869ff38e087bf7eeadad62e5d"},
1508 | {file = "grpcio-1.38.1-cp39-cp39-win_amd64.whl", hash = "sha256:77054f24d46498d9696c809da7810b67bccf6153f9848ea48331708841926d82"},
1509 | {file = "grpcio-1.38.1.tar.gz", hash = "sha256:1f79d8a24261e3c12ec3a6c25945ff799ae09874fd24815bc17c2dc37715ef6c"},
1510 | ]
1511 | huggingface-hub = [
1512 | {file = "huggingface_hub-0.0.19-py3-none-any.whl", hash = "sha256:edcea87cbd709073a63fc911efa2d8fd8304f62cfe43f0bf497dec8eaac10369"},
1513 | {file = "huggingface_hub-0.0.19.tar.gz", hash = "sha256:6ea6fff78b692fc9b05e0315c2d7d835a6f42902e472eadeceebff12babd6c06"},
1514 | ]
1515 | identify = [
1516 | {file = "identify-2.3.0-py2.py3-none-any.whl", hash = "sha256:d1e82c83d063571bb88087676f81261a4eae913c492dafde184067c584bc7c05"},
1517 | {file = "identify-2.3.0.tar.gz", hash = "sha256:fd08c97f23ceee72784081f1ce5125c8f53a02d3f2716dde79a6ab8f1039fea5"},
1518 | ]
1519 | idna = [
1520 | {file = "idna-3.2-py3-none-any.whl", hash = "sha256:14475042e284991034cb48e06f6851428fb14c4dc953acd9be9a5e95c7b6dd7a"},
1521 | {file = "idna-3.2.tar.gz", hash = "sha256:467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3"},
1522 | ]
1523 | importlib-metadata = [
1524 | {file = "importlib_metadata-1.7.0-py2.py3-none-any.whl", hash = "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070"},
1525 | {file = "importlib_metadata-1.7.0.tar.gz", hash = "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83"},
1526 | ]
1527 | iniconfig = [
1528 | {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
1529 | {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
1530 | ]
1531 | isort = [
1532 | {file = "isort-5.9.3-py3-none-any.whl", hash = "sha256:e17d6e2b81095c9db0a03a8025a957f334d6ea30b26f9ec70805411e5c7c81f2"},
1533 | {file = "isort-5.9.3.tar.gz", hash = "sha256:9c2ea1e62d871267b78307fe511c0838ba0da28698c5732d54e2790bf3ba9899"},
1534 | ]
1535 | joblib = [
1536 | {file = "joblib-1.1.0-py2.py3-none-any.whl", hash = "sha256:f21f109b3c7ff9d95f8387f752d0d9c34a02aa2f7060c2135f465da0e5160ff6"},
1537 | {file = "joblib-1.1.0.tar.gz", hash = "sha256:4158fcecd13733f8be669be0683b96ebdbbd38d23559f54dca7205aea1bf1e35"},
1538 | ]
1539 | lazy-object-proxy = [
1540 | {file = "lazy-object-proxy-1.6.0.tar.gz", hash = "sha256:489000d368377571c6f982fba6497f2aa13c6d1facc40660963da62f5c379726"},
1541 | {file = "lazy_object_proxy-1.6.0-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:c6938967f8528b3668622a9ed3b31d145fab161a32f5891ea7b84f6b790be05b"},
1542 | {file = "lazy_object_proxy-1.6.0-cp27-cp27m-win32.whl", hash = "sha256:ebfd274dcd5133e0afae738e6d9da4323c3eb021b3e13052d8cbd0e457b1256e"},
1543 | {file = "lazy_object_proxy-1.6.0-cp27-cp27m-win_amd64.whl", hash = "sha256:ed361bb83436f117f9917d282a456f9e5009ea12fd6de8742d1a4752c3017e93"},
1544 | {file = "lazy_object_proxy-1.6.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d900d949b707778696fdf01036f58c9876a0d8bfe116e8d220cfd4b15f14e741"},
1545 | {file = "lazy_object_proxy-1.6.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:5743a5ab42ae40caa8421b320ebf3a998f89c85cdc8376d6b2e00bd12bd1b587"},
1546 | {file = "lazy_object_proxy-1.6.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:bf34e368e8dd976423396555078def5cfc3039ebc6fc06d1ae2c5a65eebbcde4"},
1547 | {file = "lazy_object_proxy-1.6.0-cp36-cp36m-win32.whl", hash = "sha256:b579f8acbf2bdd9ea200b1d5dea36abd93cabf56cf626ab9c744a432e15c815f"},
1548 | {file = "lazy_object_proxy-1.6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:4f60460e9f1eb632584c9685bccea152f4ac2130e299784dbaf9fae9f49891b3"},
1549 | {file = "lazy_object_proxy-1.6.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d7124f52f3bd259f510651450e18e0fd081ed82f3c08541dffc7b94b883aa981"},
1550 | {file = "lazy_object_proxy-1.6.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:22ddd618cefe54305df49e4c069fa65715be4ad0e78e8d252a33debf00f6ede2"},
1551 | {file = "lazy_object_proxy-1.6.0-cp37-cp37m-win32.whl", hash = "sha256:9d397bf41caad3f489e10774667310d73cb9c4258e9aed94b9ec734b34b495fd"},
1552 | {file = "lazy_object_proxy-1.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:24a5045889cc2729033b3e604d496c2b6f588c754f7a62027ad4437a7ecc4837"},
1553 | {file = "lazy_object_proxy-1.6.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:17e0967ba374fc24141738c69736da90e94419338fd4c7c7bef01ee26b339653"},
1554 | {file = "lazy_object_proxy-1.6.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:410283732af311b51b837894fa2f24f2c0039aa7f220135192b38fcc42bd43d3"},
1555 | {file = "lazy_object_proxy-1.6.0-cp38-cp38-win32.whl", hash = "sha256:85fb7608121fd5621cc4377a8961d0b32ccf84a7285b4f1d21988b2eae2868e8"},
1556 | {file = "lazy_object_proxy-1.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:d1c2676e3d840852a2de7c7d5d76407c772927addff8d742b9808fe0afccebdf"},
1557 | {file = "lazy_object_proxy-1.6.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:b865b01a2e7f96db0c5d12cfea590f98d8c5ba64ad222300d93ce6ff9138bcad"},
1558 | {file = "lazy_object_proxy-1.6.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:4732c765372bd78a2d6b2150a6e99d00a78ec963375f236979c0626b97ed8e43"},
1559 | {file = "lazy_object_proxy-1.6.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:9698110e36e2df951c7c36b6729e96429c9c32b3331989ef19976592c5f3c77a"},
1560 | {file = "lazy_object_proxy-1.6.0-cp39-cp39-win32.whl", hash = "sha256:1fee665d2638491f4d6e55bd483e15ef21f6c8c2095f235fef72601021e64f61"},
1561 | {file = "lazy_object_proxy-1.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:f5144c75445ae3ca2057faac03fda5a902eff196702b0a24daf1d6ce0650514b"},
1562 | ]
1563 | markdown = [
1564 | {file = "Markdown-3.3.4-py3-none-any.whl", hash = "sha256:96c3ba1261de2f7547b46a00ea8463832c921d3f9d6aba3f255a6f71386db20c"},
1565 | {file = "Markdown-3.3.4.tar.gz", hash = "sha256:31b5b491868dcc87d6c24b7e3d19a0d730d59d3e46f4eea6430a321bed387a49"},
1566 | ]
1567 | mccabe = [
1568 | {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"},
1569 | {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"},
1570 | ]
1571 | mmh3 = [
1572 | {file = "mmh3-2.5.1.tar.gz", hash = "sha256:185209a217c52afe43e079e5b232d0ef0f3a262601eaaf4371326ab6dcbec508"},
1573 | ]
1574 | multidict = [
1575 | {file = "multidict-5.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3822c5894c72e3b35aae9909bef66ec83e44522faf767c0ad39e0e2de11d3b55"},
1576 | {file = "multidict-5.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:28e6d883acd8674887d7edc896b91751dc2d8e87fbdca8359591a13872799e4e"},
1577 | {file = "multidict-5.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b61f85101ef08cbbc37846ac0e43f027f7844f3fade9b7f6dd087178caedeee7"},
1578 | {file = "multidict-5.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9b668c065968c5979fe6b6fa6760bb6ab9aeb94b75b73c0a9c1acf6393ac3bf"},
1579 | {file = "multidict-5.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:517d75522b7b18a3385726b54a081afd425d4f41144a5399e5abd97ccafdf36b"},
1580 | {file = "multidict-5.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b4ac3ba7a97b35a5ccf34f41b5a8642a01d1e55454b699e5e8e7a99b5a3acf5"},
1581 | {file = "multidict-5.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:df23c83398715b26ab09574217ca21e14694917a0c857e356fd39e1c64f8283f"},
1582 | {file = "multidict-5.2.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e58a9b5cc96e014ddf93c2227cbdeca94b56a7eb77300205d6e4001805391747"},
1583 | {file = "multidict-5.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f76440e480c3b2ca7f843ff8a48dc82446b86ed4930552d736c0bac507498a52"},
1584 | {file = "multidict-5.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cfde464ca4af42a629648c0b0d79b8f295cf5b695412451716531d6916461628"},
1585 | {file = "multidict-5.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:0fed465af2e0eb6357ba95795d003ac0bdb546305cc2366b1fc8f0ad67cc3fda"},
1586 | {file = "multidict-5.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:b70913cbf2e14275013be98a06ef4b412329fe7b4f83d64eb70dce8269ed1e1a"},
1587 | {file = "multidict-5.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a5635bcf1b75f0f6ef3c8a1ad07b500104a971e38d3683167b9454cb6465ac86"},
1588 | {file = "multidict-5.2.0-cp310-cp310-win32.whl", hash = "sha256:77f0fb7200cc7dedda7a60912f2059086e29ff67cefbc58d2506638c1a9132d7"},
1589 | {file = "multidict-5.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:9416cf11bcd73c861267e88aea71e9fcc35302b3943e45e1dbb4317f91a4b34f"},
1590 | {file = "multidict-5.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:fd77c8f3cba815aa69cb97ee2b2ef385c7c12ada9c734b0f3b32e26bb88bbf1d"},
1591 | {file = "multidict-5.2.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98ec9aea6223adf46999f22e2c0ab6cf33f5914be604a404f658386a8f1fba37"},
1592 | {file = "multidict-5.2.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e5283c0a00f48e8cafcecadebfa0ed1dac8b39e295c7248c44c665c16dc1138b"},
1593 | {file = "multidict-5.2.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5f79c19c6420962eb17c7e48878a03053b7ccd7b69f389d5831c0a4a7f1ac0a1"},
1594 | {file = "multidict-5.2.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e4a67f1080123de76e4e97a18d10350df6a7182e243312426d508712e99988d4"},
1595 | {file = "multidict-5.2.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:94b117e27efd8e08b4046c57461d5a114d26b40824995a2eb58372b94f9fca02"},
1596 | {file = "multidict-5.2.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2e77282fd1d677c313ffcaddfec236bf23f273c4fba7cdf198108f5940ae10f5"},
1597 | {file = "multidict-5.2.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:116347c63ba049c1ea56e157fa8aa6edaf5e92925c9b64f3da7769bdfa012858"},
1598 | {file = "multidict-5.2.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:dc3a866cf6c13d59a01878cd806f219340f3e82eed514485e094321f24900677"},
1599 | {file = "multidict-5.2.0-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:ac42181292099d91217a82e3fa3ce0e0ddf3a74fd891b7c2b347a7f5aa0edded"},
1600 | {file = "multidict-5.2.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:f0bb0973f42ffcb5e3537548e0767079420aefd94ba990b61cf7bb8d47f4916d"},
1601 | {file = "multidict-5.2.0-cp36-cp36m-win32.whl", hash = "sha256:ea21d4d5104b4f840b91d9dc8cbc832aba9612121eaba503e54eaab1ad140eb9"},
1602 | {file = "multidict-5.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:e6453f3cbeb78440747096f239d282cc57a2997a16b5197c9bc839099e1633d0"},
1603 | {file = "multidict-5.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d3def943bfd5f1c47d51fd324df1e806d8da1f8e105cc7f1c76a1daf0f7e17b0"},
1604 | {file = "multidict-5.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35591729668a303a02b06e8dba0eb8140c4a1bfd4c4b3209a436a02a5ac1de11"},
1605 | {file = "multidict-5.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8cacda0b679ebc25624d5de66c705bc53dcc7c6f02a7fb0f3ca5e227d80422"},
1606 | {file = "multidict-5.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:baf1856fab8212bf35230c019cde7c641887e3fc08cadd39d32a421a30151ea3"},
1607 | {file = "multidict-5.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a43616aec0f0d53c411582c451f5d3e1123a68cc7b3475d6f7d97a626f8ff90d"},
1608 | {file = "multidict-5.2.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:25cbd39a9029b409167aa0a20d8a17f502d43f2efebfe9e3ac019fe6796c59ac"},
1609 | {file = "multidict-5.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0a2cbcfbea6dc776782a444db819c8b78afe4db597211298dd8b2222f73e9cd0"},
1610 | {file = "multidict-5.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3d2d7d1fff8e09d99354c04c3fd5b560fb04639fd45926b34e27cfdec678a704"},
1611 | {file = "multidict-5.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a37e9a68349f6abe24130846e2f1d2e38f7ddab30b81b754e5a1fde32f782b23"},
1612 | {file = "multidict-5.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:637c1896497ff19e1ee27c1c2c2ddaa9f2d134bbb5e0c52254361ea20486418d"},
1613 | {file = "multidict-5.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9815765f9dcda04921ba467957be543423e5ec6a1136135d84f2ae092c50d87b"},
1614 | {file = "multidict-5.2.0-cp37-cp37m-win32.whl", hash = "sha256:8b911d74acdc1fe2941e59b4f1a278a330e9c34c6c8ca1ee21264c51ec9b67ef"},
1615 | {file = "multidict-5.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:380b868f55f63d048a25931a1632818f90e4be71d2081c2338fcf656d299949a"},
1616 | {file = "multidict-5.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e7d81ce5744757d2f05fc41896e3b2ae0458464b14b5a2c1e87a6a9d69aefaa8"},
1617 | {file = "multidict-5.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d1d55cdf706ddc62822d394d1df53573d32a7a07d4f099470d3cb9323b721b6"},
1618 | {file = "multidict-5.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a4771d0d0ac9d9fe9e24e33bed482a13dfc1256d008d101485fe460359476065"},
1619 | {file = "multidict-5.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da7d57ea65744d249427793c042094c4016789eb2562576fb831870f9c878d9e"},
1620 | {file = "multidict-5.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdd68778f96216596218b4e8882944d24a634d984ee1a5a049b300377878fa7c"},
1621 | {file = "multidict-5.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ecc99bce8ee42dcad15848c7885197d26841cb24fa2ee6e89d23b8993c871c64"},
1622 | {file = "multidict-5.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:067150fad08e6f2dd91a650c7a49ba65085303fcc3decbd64a57dc13a2733031"},
1623 | {file = "multidict-5.2.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:78c106b2b506b4d895ddc801ff509f941119394b89c9115580014127414e6c2d"},
1624 | {file = "multidict-5.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e6c4fa1ec16e01e292315ba76eb1d012c025b99d22896bd14a66628b245e3e01"},
1625 | {file = "multidict-5.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b227345e4186809d31f22087d0265655114af7cda442ecaf72246275865bebe4"},
1626 | {file = "multidict-5.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:06560fbdcf22c9387100979e65b26fba0816c162b888cb65b845d3def7a54c9b"},
1627 | {file = "multidict-5.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:7878b61c867fb2df7a95e44b316f88d5a3742390c99dfba6c557a21b30180cac"},
1628 | {file = "multidict-5.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:246145bff76cc4b19310f0ad28bd0769b940c2a49fc601b86bfd150cbd72bb22"},
1629 | {file = "multidict-5.2.0-cp38-cp38-win32.whl", hash = "sha256:c30ac9f562106cd9e8071c23949a067b10211917fdcb75b4718cf5775356a940"},
1630 | {file = "multidict-5.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:f19001e790013ed580abfde2a4465388950728861b52f0da73e8e8a9418533c0"},
1631 | {file = "multidict-5.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c1ff762e2ee126e6f1258650ac641e2b8e1f3d927a925aafcfde943b77a36d24"},
1632 | {file = "multidict-5.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bd6c9c50bf2ad3f0448edaa1a3b55b2e6866ef8feca5d8dbec10ec7c94371d21"},
1633 | {file = "multidict-5.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fc66d4016f6e50ed36fb39cd287a3878ffcebfa90008535c62e0e90a7ab713ae"},
1634 | {file = "multidict-5.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9acb76d5f3dd9421874923da2ed1e76041cb51b9337fd7f507edde1d86535d6"},
1635 | {file = "multidict-5.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dfc924a7e946dd3c6360e50e8f750d51e3ef5395c95dc054bc9eab0f70df4f9c"},
1636 | {file = "multidict-5.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:32fdba7333eb2351fee2596b756d730d62b5827d5e1ab2f84e6cbb287cc67fe0"},
1637 | {file = "multidict-5.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b9aad49466b8d828b96b9e3630006234879c8d3e2b0a9d99219b3121bc5cdb17"},
1638 | {file = "multidict-5.2.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:93de39267c4c676c9ebb2057e98a8138bade0d806aad4d864322eee0803140a0"},
1639 | {file = "multidict-5.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f9bef5cff994ca3026fcc90680e326d1a19df9841c5e3d224076407cc21471a1"},
1640 | {file = "multidict-5.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5f841c4f14331fd1e36cbf3336ed7be2cb2a8f110ce40ea253e5573387db7621"},
1641 | {file = "multidict-5.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:38ba256ee9b310da6a1a0f013ef4e422fca30a685bcbec86a969bd520504e341"},
1642 | {file = "multidict-5.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:3bc3b1621b979621cee9f7b09f024ec76ec03cc365e638126a056317470bde1b"},
1643 | {file = "multidict-5.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6ee908c070020d682e9b42c8f621e8bb10c767d04416e2ebe44e37d0f44d9ad5"},
1644 | {file = "multidict-5.2.0-cp39-cp39-win32.whl", hash = "sha256:1c7976cd1c157fa7ba5456ae5d31ccdf1479680dc9b8d8aa28afabc370df42b8"},
1645 | {file = "multidict-5.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:c9631c642e08b9fff1c6255487e62971d8b8e821808ddd013d8ac058087591ac"},
1646 | {file = "multidict-5.2.0.tar.gz", hash = "sha256:0dd1c93edb444b33ba2274b66f63def8a327d607c6c790772f448a53b6ea59ce"},
1647 | ]
1648 | multiprocess = [
1649 | {file = "multiprocess-0.70.12.2-cp27-cp27m-macosx_10_12_x86_64.whl", hash = "sha256:35d41e410ca2a32977a483ae1f40f86b193b45cecf85567c2fae402fb8bf172e"},
1650 | {file = "multiprocess-0.70.12.2-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:9a02237eae21975155c816883479f72e239d16823a6bc063173d59acec9bcf41"},
1651 | {file = "multiprocess-0.70.12.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:f12a939cd2f01d0a900e7ef2aaee3c351a49fd2297d7f760b537af22727561b8"},
1652 | {file = "multiprocess-0.70.12.2-cp27-cp27m-win32.whl", hash = "sha256:be3ad3eaf204abc646d85e70e41244f66d88200628a0ab867c8fc206b97cedbf"},
1653 | {file = "multiprocess-0.70.12.2-cp27-cp27m-win_amd64.whl", hash = "sha256:c85ffc38c50c5a4f32f3f3c1a284725b7b5040188f254eba6e572c53d3da525b"},
1654 | {file = "multiprocess-0.70.12.2-pp27-none-any.whl", hash = "sha256:a9f58945edb234591684c0a181b744a3231643814ef3a8f47cea9a2073b4b2bb"},
1655 | {file = "multiprocess-0.70.12.2-pp36-none-any.whl", hash = "sha256:0e0a5ae4bd84e4c22baddf824d3b8168214f8c1cce51e2cb080421cb1f7b04d1"},
1656 | {file = "multiprocess-0.70.12.2-pp37-none-any.whl", hash = "sha256:916a314a1e0f3454033d59672ba6181fa45948ab1091d68cdd479258576e7b27"},
1657 | {file = "multiprocess-0.70.12.2-py36-none-any.whl", hash = "sha256:b3f866f7d9c7acc1a9cb1b6063a29f5cb140ff545b35b71fd4bfdac6f19d75fa"},
1658 | {file = "multiprocess-0.70.12.2-py37-none-any.whl", hash = "sha256:6aa67e805e50b6e9dfc56dd0f0c85ac3409e6791d4ec5405c5f9bc0a47d745a4"},
1659 | {file = "multiprocess-0.70.12.2-py38-none-any.whl", hash = "sha256:85941e650c277af44fc82e3e97faacb920e5ce3615238b540cbad4012d6f60e9"},
1660 | {file = "multiprocess-0.70.12.2-py39-none-any.whl", hash = "sha256:6f812a1d3f198b7cacd63983f60e2dc1338bd4450893f90c435067b5a3127e6f"},
1661 | {file = "multiprocess-0.70.12.2.zip", hash = "sha256:206bb9b97b73f87fec1ed15a19f8762950256aa84225450abc7150d02855a083"},
1662 | ]
1663 | mypy = [
1664 | {file = "mypy-0.782-cp35-cp35m-macosx_10_6_x86_64.whl", hash = "sha256:2c6cde8aa3426c1682d35190b59b71f661237d74b053822ea3d748e2c9578a7c"},
1665 | {file = "mypy-0.782-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9c7a9a7ceb2871ba4bac1cf7217a7dd9ccd44c27c2950edbc6dc08530f32ad4e"},
1666 | {file = "mypy-0.782-cp35-cp35m-win_amd64.whl", hash = "sha256:c05b9e4fb1d8a41d41dec8786c94f3b95d3c5f528298d769eb8e73d293abc48d"},
1667 | {file = "mypy-0.782-cp36-cp36m-macosx_10_6_x86_64.whl", hash = "sha256:6731603dfe0ce4352c555c6284c6db0dc935b685e9ce2e4cf220abe1e14386fd"},
1668 | {file = "mypy-0.782-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:f05644db6779387ccdb468cc47a44b4356fc2ffa9287135d05b70a98dc83b89a"},
1669 | {file = "mypy-0.782-cp36-cp36m-win_amd64.whl", hash = "sha256:b7fbfabdbcc78c4f6fc4712544b9b0d6bf171069c6e0e3cb82440dd10ced3406"},
1670 | {file = "mypy-0.782-cp37-cp37m-macosx_10_6_x86_64.whl", hash = "sha256:3fdda71c067d3ddfb21da4b80e2686b71e9e5c72cca65fa216d207a358827f86"},
1671 | {file = "mypy-0.782-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d7df6eddb6054d21ca4d3c6249cae5578cb4602951fd2b6ee2f5510ffb098707"},
1672 | {file = "mypy-0.782-cp37-cp37m-win_amd64.whl", hash = "sha256:a4a2cbcfc4cbf45cd126f531dedda8485671545b43107ded25ce952aac6fb308"},
1673 | {file = "mypy-0.782-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6bb93479caa6619d21d6e7160c552c1193f6952f0668cdda2f851156e85186fc"},
1674 | {file = "mypy-0.782-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:81c7908b94239c4010e16642c9102bfc958ab14e36048fa77d0be3289dda76ea"},
1675 | {file = "mypy-0.782-cp38-cp38-win_amd64.whl", hash = "sha256:5dd13ff1f2a97f94540fd37a49e5d255950ebcdf446fb597463a40d0df3fac8b"},
1676 | {file = "mypy-0.782-py3-none-any.whl", hash = "sha256:e0b61738ab504e656d1fe4ff0c0601387a5489ca122d55390ade31f9ca0e252d"},
1677 | {file = "mypy-0.782.tar.gz", hash = "sha256:eff7d4a85e9eea55afa34888dfeaccde99e7520b51f867ac28a48492c0b1130c"},
1678 | ]
1679 | mypy-extensions = [
1680 | {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
1681 | {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
1682 | ]
1683 | nltk = [
1684 | {file = "nltk-3.6.4-py3-none-any.whl", hash = "sha256:2b9a54bbd2142282cb41aa4b25b8a356bb96f032f509302b4cca9992eda6e793"},
1685 | {file = "nltk-3.6.4.zip", hash = "sha256:dd7e8012af25737e6aa7bc26568a319508dca789f13e62afa09798dccc7798b5"},
1686 | ]
1687 | nodeenv = [
1688 | {file = "nodeenv-1.6.0-py2.py3-none-any.whl", hash = "sha256:621e6b7076565ddcacd2db0294c0381e01fd28945ab36bcf00f41c5daf63bef7"},
1689 | {file = "nodeenv-1.6.0.tar.gz", hash = "sha256:3ef13ff90291ba2a4a7a4ff9a979b63ffdd00a464dbe04acf0ea6471517a4c2b"},
1690 | ]
1691 | numpy = [
1692 | {file = "numpy-1.21.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:38e8648f9449a549a7dfe8d8755a5979b45b3538520d1e735637ef28e8c2dc50"},
1693 | {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fd7d7409fa643a91d0a05c7554dd68aa9c9bb16e186f6ccfe40d6e003156e33a"},
1694 | {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a75b4498b1e93d8b700282dc8e655b8bd559c0904b3910b144646dbbbc03e062"},
1695 | {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1412aa0aec3e00bc23fbb8664d76552b4efde98fb71f60737c83efbac24112f1"},
1696 | {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e46ceaff65609b5399163de5893d8f2a82d3c77d5e56d976c8b5fb01faa6b671"},
1697 | {file = "numpy-1.21.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c6a2324085dd52f96498419ba95b5777e40b6bcbc20088fddb9e8cbb58885e8e"},
1698 | {file = "numpy-1.21.1-cp37-cp37m-win32.whl", hash = "sha256:73101b2a1fef16602696d133db402a7e7586654682244344b8329cdcbbb82172"},
1699 | {file = "numpy-1.21.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7a708a79c9a9d26904d1cca8d383bf869edf6f8e7650d85dbc77b041e8c5a0f8"},
1700 | {file = "numpy-1.21.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95b995d0c413f5d0428b3f880e8fe1660ff9396dcd1f9eedbc311f37b5652e16"},
1701 | {file = "numpy-1.21.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:635e6bd31c9fb3d475c8f44a089569070d10a9ef18ed13738b03049280281267"},
1702 | {file = "numpy-1.21.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a3d5fb89bfe21be2ef47c0614b9c9c707b7362386c9a3ff1feae63e0267ccb6"},
1703 | {file = "numpy-1.21.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8a326af80e86d0e9ce92bcc1e65c8ff88297de4fa14ee936cb2293d414c9ec63"},
1704 | {file = "numpy-1.21.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:791492091744b0fe390a6ce85cc1bf5149968ac7d5f0477288f78c89b385d9af"},
1705 | {file = "numpy-1.21.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0318c465786c1f63ac05d7c4dbcecd4d2d7e13f0959b01b534ea1e92202235c5"},
1706 | {file = "numpy-1.21.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a513bd9c1551894ee3d31369f9b07460ef223694098cf27d399513415855b68"},
1707 | {file = "numpy-1.21.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:91c6f5fc58df1e0a3cc0c3a717bb3308ff850abdaa6d2d802573ee2b11f674a8"},
1708 | {file = "numpy-1.21.1-cp38-cp38-win32.whl", hash = "sha256:978010b68e17150db8765355d1ccdd450f9fc916824e8c4e35ee620590e234cd"},
1709 | {file = "numpy-1.21.1-cp38-cp38-win_amd64.whl", hash = "sha256:9749a40a5b22333467f02fe11edc98f022133ee1bfa8ab99bda5e5437b831214"},
1710 | {file = "numpy-1.21.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d7a4aeac3b94af92a9373d6e77b37691b86411f9745190d2c351f410ab3a791f"},
1711 | {file = "numpy-1.21.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d9e7912a56108aba9b31df688a4c4f5cb0d9d3787386b87d504762b6754fbb1b"},
1712 | {file = "numpy-1.21.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:25b40b98ebdd272bc3020935427a4530b7d60dfbe1ab9381a39147834e985eac"},
1713 | {file = "numpy-1.21.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8a92c5aea763d14ba9d6475803fc7904bda7decc2a0a68153f587ad82941fec1"},
1714 | {file = "numpy-1.21.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05a0f648eb28bae4bcb204e6fd14603de2908de982e761a2fc78efe0f19e96e1"},
1715 | {file = "numpy-1.21.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f01f28075a92eede918b965e86e8f0ba7b7797a95aa8d35e1cc8821f5fc3ad6a"},
1716 | {file = "numpy-1.21.1-cp39-cp39-win32.whl", hash = "sha256:88c0b89ad1cc24a5efbb99ff9ab5db0f9a86e9cc50240177a571fbe9c2860ac2"},
1717 | {file = "numpy-1.21.1-cp39-cp39-win_amd64.whl", hash = "sha256:01721eefe70544d548425a07c80be8377096a54118070b8a62476866d5208e33"},
1718 | {file = "numpy-1.21.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2d4d1de6e6fb3d28781c73fbde702ac97f03d79e4ffd6598b880b2d95d62ead4"},
1719 | {file = "numpy-1.21.1.zip", hash = "sha256:dff4af63638afcc57a3dfb9e4b26d434a7a602d225b42d746ea7fe2edf1342fd"},
1720 | ]
1721 | oauthlib = [
1722 | {file = "oauthlib-3.1.1-py2.py3-none-any.whl", hash = "sha256:42bf6354c2ed8c6acb54d971fce6f88193d97297e18602a3a886603f9d7730cc"},
1723 | {file = "oauthlib-3.1.1.tar.gz", hash = "sha256:8f0215fcc533dd8dd1bee6f4c412d4f0cd7297307d43ac61666389e3bc3198a3"},
1724 | ]
1725 | packaging = [
1726 | {file = "packaging-21.0-py3-none-any.whl", hash = "sha256:c86254f9220d55e31cc94d69bade760f0847da8000def4dfe1c6b872fd14ff14"},
1727 | {file = "packaging-21.0.tar.gz", hash = "sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7"},
1728 | ]
1729 | pandas = [
1730 | {file = "pandas-1.1.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:bf23a3b54d128b50f4f9d4675b3c1857a688cc6731a32f931837d72effb2698d"},
1731 | {file = "pandas-1.1.5-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:5a780260afc88268a9d3ac3511d8f494fdcf637eece62fb9eb656a63d53eb7ca"},
1732 | {file = "pandas-1.1.5-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:b61080750d19a0122469ab59b087380721d6b72a4e7d962e4d7e63e0c4504814"},
1733 | {file = "pandas-1.1.5-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:0de3ddb414d30798cbf56e642d82cac30a80223ad6fe484d66c0ce01a84d6f2f"},
1734 | {file = "pandas-1.1.5-cp36-cp36m-win32.whl", hash = "sha256:70865f96bb38fec46f7ebd66d4b5cfd0aa6b842073f298d621385ae3898d28b5"},
1735 | {file = "pandas-1.1.5-cp36-cp36m-win_amd64.whl", hash = "sha256:19a2148a1d02791352e9fa637899a78e371a3516ac6da5c4edc718f60cbae648"},
1736 | {file = "pandas-1.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:26fa92d3ac743a149a31b21d6f4337b0594b6302ea5575b37af9ca9611e8981a"},
1737 | {file = "pandas-1.1.5-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c16d59c15d946111d2716856dd5479221c9e4f2f5c7bc2d617f39d870031e086"},
1738 | {file = "pandas-1.1.5-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:3be7a7a0ca71a2640e81d9276f526bca63505850add10206d0da2e8a0a325dae"},
1739 | {file = "pandas-1.1.5-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:573fba5b05bf2c69271a32e52399c8de599e4a15ab7cec47d3b9c904125ab788"},
1740 | {file = "pandas-1.1.5-cp37-cp37m-win32.whl", hash = "sha256:21b5a2b033380adbdd36b3116faaf9a4663e375325831dac1b519a44f9e439bb"},
1741 | {file = "pandas-1.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:24c7f8d4aee71bfa6401faeba367dd654f696a77151a8a28bc2013f7ced4af98"},
1742 | {file = "pandas-1.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2860a97cbb25444ffc0088b457da0a79dc79f9c601238a3e0644312fcc14bf11"},
1743 | {file = "pandas-1.1.5-cp38-cp38-manylinux1_i686.whl", hash = "sha256:5008374ebb990dad9ed48b0f5d0038124c73748f5384cc8c46904dace27082d9"},
1744 | {file = "pandas-1.1.5-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:2c2f7c670ea4e60318e4b7e474d56447cf0c7d83b3c2a5405a0dbb2600b9c48e"},
1745 | {file = "pandas-1.1.5-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:0a643bae4283a37732ddfcecab3f62dd082996021b980f580903f4e8e01b3c5b"},
1746 | {file = "pandas-1.1.5-cp38-cp38-win32.whl", hash = "sha256:5447ea7af4005b0daf695a316a423b96374c9c73ffbd4533209c5ddc369e644b"},
1747 | {file = "pandas-1.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:4c62e94d5d49db116bef1bd5c2486723a292d79409fc9abd51adf9e05329101d"},
1748 | {file = "pandas-1.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:731568be71fba1e13cae212c362f3d2ca8932e83cb1b85e3f1b4dd77d019254a"},
1749 | {file = "pandas-1.1.5-cp39-cp39-manylinux1_i686.whl", hash = "sha256:c61c043aafb69329d0f961b19faa30b1dab709dd34c9388143fc55680059e55a"},
1750 | {file = "pandas-1.1.5-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:2b1c6cd28a0dfda75c7b5957363333f01d370936e4c6276b7b8e696dd500582a"},
1751 | {file = "pandas-1.1.5-cp39-cp39-win32.whl", hash = "sha256:c94ff2780a1fd89f190390130d6d36173ca59fcfb3fe0ff596f9a56518191ccb"},
1752 | {file = "pandas-1.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:edda9bacc3843dfbeebaf7a701763e68e741b08fccb889c003b0a52f0ee95782"},
1753 | {file = "pandas-1.1.5.tar.gz", hash = "sha256:f10fc41ee3c75a474d3bdf68d396f10782d013d7f67db99c0efbfd0acb99701b"},
1754 | ]
1755 | pathspec = [
1756 | {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"},
1757 | {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"},
1758 | ]
1759 | pbr = [
1760 | {file = "pbr-5.6.0-py2.py3-none-any.whl", hash = "sha256:c68c661ac5cc81058ac94247278eeda6d2e6aecb3e227b0387c30d277e7ef8d4"},
1761 | {file = "pbr-5.6.0.tar.gz", hash = "sha256:42df03e7797b796625b1029c0400279c7c34fd7df24a7d7818a1abb5b38710dd"},
1762 | ]
1763 | platformdirs = [
1764 | {file = "platformdirs-2.4.0-py3-none-any.whl", hash = "sha256:8868bbe3c3c80d42f20156f22e7131d2fb321f5bc86a2a345375c6481a67021d"},
1765 | {file = "platformdirs-2.4.0.tar.gz", hash = "sha256:367a5e80b3d04d2428ffa76d33f124cf11e8fff2acdaa9b43d545f5c7d661ef2"},
1766 | ]
1767 | pluggy = [
1768 | {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
1769 | {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
1770 | ]
1771 | pre-commit = [
1772 | {file = "pre_commit-2.15.0-py2.py3-none-any.whl", hash = "sha256:a4ed01000afcb484d9eb8d504272e642c4c4099bbad3a6b27e519bd6a3e928a6"},
1773 | {file = "pre_commit-2.15.0.tar.gz", hash = "sha256:3c25add78dbdfb6a28a651780d5c311ac40dd17f160eb3954a0c59da40a505a7"},
1774 | ]
1775 | protobuf = [
1776 | {file = "protobuf-3.18.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:fa6d1049d5315566f55c04d0b50c0033415144f96a9d25c820dc542fe2bb7f45"},
1777 | {file = "protobuf-3.18.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0e2790c580070cff2921b93d562539ae027064340151c50db6aaf94c33048cd"},
1778 | {file = "protobuf-3.18.1-cp36-cp36m-win32.whl", hash = "sha256:7e2f0677d68ecdd1cfda2abea65873f5bc7c3f5aae199404a3f5c1d1198c1a63"},
1779 | {file = "protobuf-3.18.1-cp36-cp36m-win_amd64.whl", hash = "sha256:6f714f5de9d40b3bec90ede4a688cce52f637ccdc5403afcda1f67598f4fdcd7"},
1780 | {file = "protobuf-3.18.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a7be937c319146cc9f2626f0181e6809062c353e1fe449ecd0df374ba1036b2"},
1781 | {file = "protobuf-3.18.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:10544fc7ace885a882623083c24da5b14148c77563acddc3c58d66f6153c09cd"},
1782 | {file = "protobuf-3.18.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2ee8b11e3eb2ed38f12137c3c132270a0b1dd509e317228ac47b67f21a583f1"},
1783 | {file = "protobuf-3.18.1-cp37-cp37m-win32.whl", hash = "sha256:c492c217d3f69f4d2d5619571e52ab98538edbf53caf67e53ea92bd0a3b5670f"},
1784 | {file = "protobuf-3.18.1-cp37-cp37m-win_amd64.whl", hash = "sha256:3c1644f8a7f19b45c7a4c32278e2a55ae9e7e2f9e5f02d960a61f04a4890d3e6"},
1785 | {file = "protobuf-3.18.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e9ac691f7b24e4371dcd3980e4f5d6c840a2010da37986203053fee995786ec5"},
1786 | {file = "protobuf-3.18.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:93bad12895d8b0ebc66b605c2ef1802311595f881aef032d9f13282b7550e6b2"},
1787 | {file = "protobuf-3.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0851b5b89191e1976d34fa2e8eb8659829dfb45252053224cf9df857fb5f6a45"},
1788 | {file = "protobuf-3.18.1-cp38-cp38-win32.whl", hash = "sha256:09d9268f6f9da81b7657adcf2fb397524c82f20cdf9e0db3ff4e7567977abd67"},
1789 | {file = "protobuf-3.18.1-cp38-cp38-win_amd64.whl", hash = "sha256:d6d927774c0ec746fed15a4faff5f44aad0b7a3421fadb6f3ae5ca1f2f8ae26e"},
1790 | {file = "protobuf-3.18.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4d19c9cb805fd2be1d59eee39e152367ee92a30167e77bd06c8819f8f0009a4c"},
1791 | {file = "protobuf-3.18.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:387f621bf7295a331f8c8a6962d097ceddeb85356792888cfa6a5c6bfc6886a4"},
1792 | {file = "protobuf-3.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c1c5d3966c856f60a9d8d62f4455d70c31026422acdd5c228edf22b65b16c38"},
1793 | {file = "protobuf-3.18.1-cp39-cp39-win32.whl", hash = "sha256:f20f803892f2135e8b96dc58c9a0c6a7ad8436794bf8784af229498d939b4c77"},
1794 | {file = "protobuf-3.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:d76201380f41a2d83fb613a4683059d1fcafbe969518b3e409e279a8788fde2f"},
1795 | {file = "protobuf-3.18.1-py2.py3-none-any.whl", hash = "sha256:61ca58e14033ca0dfa484a31d57237c1be3b6013454c7f53876a20fc88dd69b1"},
1796 | {file = "protobuf-3.18.1.tar.gz", hash = "sha256:1c9bb40503751087300dd12ce2e90899d68628977905c76effc48e66d089391e"},
1797 | ]
1798 | py = [
1799 | {file = "py-1.10.0-py2.py3-none-any.whl", hash = "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a"},
1800 | {file = "py-1.10.0.tar.gz", hash = "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3"},
1801 | ]
1802 | pyarrow = [
1803 | {file = "pyarrow-5.0.0-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:e9ec80f4a77057498cf4c5965389e42e7f6a618b6859e6dd615e57505c9167a6"},
1804 | {file = "pyarrow-5.0.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b1453c2411b5062ba6bf6832dbc4df211ad625f678c623a2ee177aee158f199b"},
1805 | {file = "pyarrow-5.0.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:9e04d3621b9f2f23898eed0d044203f66c156d880f02c5534a7f9947ebb1a4af"},
1806 | {file = "pyarrow-5.0.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:64f30aa6b28b666a925d11c239344741850eb97c29d3aa0f7187918cf82494f7"},
1807 | {file = "pyarrow-5.0.0-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:99c8b0f7e2ce2541dd4c0c0101d9944bb8e592ae3295fe7a2f290ab99222666d"},
1808 | {file = "pyarrow-5.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:456a4488ae810a0569d1adf87dbc522bcc9a0e4a8d1809b934ca28c163d8edce"},
1809 | {file = "pyarrow-5.0.0-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:c5493d2414d0d690a738aac8dd6d38518d1f9b870e52e24f89d8d7eb3afd4161"},
1810 | {file = "pyarrow-5.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1832709281efefa4f199c639e9f429678286329860188e53beeda71750775923"},
1811 | {file = "pyarrow-5.0.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:b6387d2058d95fa48ccfedea810a768187affb62f4a3ef6595fa30bf9d1a65cf"},
1812 | {file = "pyarrow-5.0.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:bbe2e439bec2618c74a3bb259700c8a7353dc2ea0c5a62686b6cf04a50ab1e0d"},
1813 | {file = "pyarrow-5.0.0-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:5c0d1b68e67bb334a5af0cecdf9b6a702aaa4cc259c5cbb71b25bbed40fcedaf"},
1814 | {file = "pyarrow-5.0.0-cp37-cp37m-win_amd64.whl", hash = "sha256:6e937ce4a40ea0cc7896faff96adecadd4485beb53fbf510b46858e29b2e75ae"},
1815 | {file = "pyarrow-5.0.0-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:7560332e5846f0e7830b377c14c93624e24a17f91c98f0b25dafb0ca1ea6ba02"},
1816 | {file = "pyarrow-5.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:53e550dec60d1ab86cba3afa1719dc179a8bc9632a0e50d9fe91499cf0a7f2bc"},
1817 | {file = "pyarrow-5.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2d26186ca9748a1fb89ae6c1fa04fb343a4279b53f118734ea8096f15d66c820"},
1818 | {file = "pyarrow-5.0.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:7c4edd2bacee3eea6c8c28bddb02347f9d41a55ec9692c71c6de6e47c62a7f0d"},
1819 | {file = "pyarrow-5.0.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:601b0aabd6fb066429e706282934d4d8d38f53bdb8d82da9576be49f07eedf5c"},
1820 | {file = "pyarrow-5.0.0-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:ff21711f6ff3b0bc90abc8ca8169e676faeb2401ddc1a0bc1c7dc181708a3406"},
1821 | {file = "pyarrow-5.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:ed135a99975380c27077f9d0e210aea8618ed9fadcec0e71f8a3190939557afe"},
1822 | {file = "pyarrow-5.0.0-cp39-cp39-macosx_10_13_universal2.whl", hash = "sha256:6e1f0e4374061116f40e541408a8a170c170d0a070b788717e18165ebfdd2a54"},
1823 | {file = "pyarrow-5.0.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:4341ac0f552dc04c450751e049976940c7f4f8f2dae03685cc465ebe0a61e231"},
1824 | {file = "pyarrow-5.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c3fc856f107ca2fb3c9391d7ea33bbb33f3a1c2b4a0e2b41f7525c626214cc03"},
1825 | {file = "pyarrow-5.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:357605665fbefb573d40939b13a684c2490b6ed1ab4a5de8dd246db4ab02e5a4"},
1826 | {file = "pyarrow-5.0.0-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:f4db312e9ba80e730cefcae0a05b63ea5befc7634c28df56682b628ad8e1c25c"},
1827 | {file = "pyarrow-5.0.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:1d9485741e497ccc516cb0a0c8f56e22be55aea815be185c3f9a681323b0e614"},
1828 | {file = "pyarrow-5.0.0-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:b3115df938b8d7a7372911a3cb3904196194bcea8bb48911b4b3eafee3ab8d90"},
1829 | {file = "pyarrow-5.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:4d8adda1892ef4553c4804af7f67cce484f4d6371564e2d8374b8e2bc85293e2"},
1830 | {file = "pyarrow-5.0.0.tar.gz", hash = "sha256:24e64ea33eed07441cc0e80c949e3a1b48211a1add8953268391d250f4d39922"},
1831 | ]
1832 | pyasn1 = [
1833 | {file = "pyasn1-0.4.8-py2.4.egg", hash = "sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3"},
1834 | {file = "pyasn1-0.4.8-py2.5.egg", hash = "sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf"},
1835 | {file = "pyasn1-0.4.8-py2.6.egg", hash = "sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00"},
1836 | {file = "pyasn1-0.4.8-py2.7.egg", hash = "sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8"},
1837 | {file = "pyasn1-0.4.8-py2.py3-none-any.whl", hash = "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d"},
1838 | {file = "pyasn1-0.4.8-py3.1.egg", hash = "sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86"},
1839 | {file = "pyasn1-0.4.8-py3.2.egg", hash = "sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7"},
1840 | {file = "pyasn1-0.4.8-py3.3.egg", hash = "sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576"},
1841 | {file = "pyasn1-0.4.8-py3.4.egg", hash = "sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12"},
1842 | {file = "pyasn1-0.4.8-py3.5.egg", hash = "sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2"},
1843 | {file = "pyasn1-0.4.8-py3.6.egg", hash = "sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359"},
1844 | {file = "pyasn1-0.4.8-py3.7.egg", hash = "sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776"},
1845 | {file = "pyasn1-0.4.8.tar.gz", hash = "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"},
1846 | ]
1847 | pyasn1-modules = [
1848 | {file = "pyasn1-modules-0.2.8.tar.gz", hash = "sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e"},
1849 | {file = "pyasn1_modules-0.2.8-py2.4.egg", hash = "sha256:0fe1b68d1e486a1ed5473f1302bd991c1611d319bba158e98b106ff86e1d7199"},
1850 | {file = "pyasn1_modules-0.2.8-py2.5.egg", hash = "sha256:fe0644d9ab041506b62782e92b06b8c68cca799e1a9636ec398675459e031405"},
1851 | {file = "pyasn1_modules-0.2.8-py2.6.egg", hash = "sha256:a99324196732f53093a84c4369c996713eb8c89d360a496b599fb1a9c47fc3eb"},
1852 | {file = "pyasn1_modules-0.2.8-py2.7.egg", hash = "sha256:0845a5582f6a02bb3e1bde9ecfc4bfcae6ec3210dd270522fee602365430c3f8"},
1853 | {file = "pyasn1_modules-0.2.8-py2.py3-none-any.whl", hash = "sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74"},
1854 | {file = "pyasn1_modules-0.2.8-py3.1.egg", hash = "sha256:f39edd8c4ecaa4556e989147ebf219227e2cd2e8a43c7e7fcb1f1c18c5fd6a3d"},
1855 | {file = "pyasn1_modules-0.2.8-py3.2.egg", hash = "sha256:b80486a6c77252ea3a3e9b1e360bc9cf28eaac41263d173c032581ad2f20fe45"},
1856 | {file = "pyasn1_modules-0.2.8-py3.3.egg", hash = "sha256:65cebbaffc913f4fe9e4808735c95ea22d7a7775646ab690518c056784bc21b4"},
1857 | {file = "pyasn1_modules-0.2.8-py3.4.egg", hash = "sha256:15b7c67fabc7fc240d87fb9aabf999cf82311a6d6fb2c70d00d3d0604878c811"},
1858 | {file = "pyasn1_modules-0.2.8-py3.5.egg", hash = "sha256:426edb7a5e8879f1ec54a1864f16b882c2837bfd06eee62f2c982315ee2473ed"},
1859 | {file = "pyasn1_modules-0.2.8-py3.6.egg", hash = "sha256:cbac4bc38d117f2a49aeedec4407d23e8866ea4ac27ff2cf7fb3e5b570df19e0"},
1860 | {file = "pyasn1_modules-0.2.8-py3.7.egg", hash = "sha256:c29a5e5cc7a3f05926aff34e097e84f8589cd790ce0ed41b67aed6857b26aafd"},
1861 | ]
1862 | pydeprecate = [
1863 | {file = "pyDeprecate-0.3.1-py3-none-any.whl", hash = "sha256:b5dd8c4c0535854b6a52936d1256883a940e3b02006fc7118b53027c0acde181"},
1864 | {file = "pyDeprecate-0.3.1.tar.gz", hash = "sha256:fa26870924d3475621c344045c2c01a16ba034113a902600c78e75b3fac5f72c"},
1865 | ]
1866 | pydocstyle = [
1867 | {file = "pydocstyle-5.1.1-py3-none-any.whl", hash = "sha256:aca749e190a01726a4fb472dd4ef23b5c9da7b9205c0a7857c06533de13fd678"},
1868 | {file = "pydocstyle-5.1.1.tar.gz", hash = "sha256:19b86fa8617ed916776a11cd8bc0197e5b9856d5433b777f51a3defe13075325"},
1869 | ]
1870 | pygments = [
1871 | {file = "Pygments-2.10.0-py3-none-any.whl", hash = "sha256:b8e67fe6af78f492b3c4b3e2970c0624cbf08beb1e493b2c99b9fa1b67a20380"},
1872 | {file = "Pygments-2.10.0.tar.gz", hash = "sha256:f398865f7eb6874156579fdf36bc840a03cab64d1cde9e93d68f46a425ec52c6"},
1873 | ]
1874 | pylint = [
1875 | {file = "pylint-2.11.1-py3-none-any.whl", hash = "sha256:0f358e221c45cbd4dad2a1e4b883e75d28acdcccd29d40c76eb72b307269b126"},
1876 | {file = "pylint-2.11.1.tar.gz", hash = "sha256:2c9843fff1a88ca0ad98a256806c82c5a8f86086e7ccbdb93297d86c3f90c436"},
1877 | ]
1878 | pyparsing = [
1879 | {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"},
1880 | {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"},
1881 | ]
1882 | pytest = [
1883 | {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"},
1884 | {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"},
1885 | ]
1886 | python-dateutil = [
1887 | {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
1888 | {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
1889 | ]
1890 | pytorch-lightning = [
1891 | {file = "pytorch-lightning-1.4.9.tar.gz", hash = "sha256:39cb732483747aeceb3def508fd02a01b329e348720ce90894730e177ad4348e"},
1892 | {file = "pytorch_lightning-1.4.9-py3-none-any.whl", hash = "sha256:3eb3ce4e1b38b3f37cc3a76b6a29c97c237aa053d45114b6423ffa345c71524a"},
1893 | ]
1894 | pytz = [
1895 | {file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"},
1896 | {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"},
1897 | ]
1898 | pyupgrade = [
1899 | {file = "pyupgrade-2.29.0-py2.py3-none-any.whl", hash = "sha256:04938c7e8e4e8b476ae2b727306ecfaea95a83b707acbe6929864100dd6d9701"},
1900 | {file = "pyupgrade-2.29.0.tar.gz", hash = "sha256:27bfbc38854a40a70767ef6cbf3bf133c5472557905f0f9fe7ba5f58975701e4"},
1901 | ]
1902 | pyyaml = [
1903 | {file = "PyYAML-5.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922"},
1904 | {file = "PyYAML-5.4.1-cp27-cp27m-win32.whl", hash = "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393"},
1905 | {file = "PyYAML-5.4.1-cp27-cp27m-win_amd64.whl", hash = "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8"},
1906 | {file = "PyYAML-5.4.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185"},
1907 | {file = "PyYAML-5.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253"},
1908 | {file = "PyYAML-5.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc"},
1909 | {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347"},
1910 | {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541"},
1911 | {file = "PyYAML-5.4.1-cp36-cp36m-win32.whl", hash = "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5"},
1912 | {file = "PyYAML-5.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df"},
1913 | {file = "PyYAML-5.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018"},
1914 | {file = "PyYAML-5.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63"},
1915 | {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa"},
1916 | {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0"},
1917 | {file = "PyYAML-5.4.1-cp37-cp37m-win32.whl", hash = "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b"},
1918 | {file = "PyYAML-5.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf"},
1919 | {file = "PyYAML-5.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46"},
1920 | {file = "PyYAML-5.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb"},
1921 | {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247"},
1922 | {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc"},
1923 | {file = "PyYAML-5.4.1-cp38-cp38-win32.whl", hash = "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc"},
1924 | {file = "PyYAML-5.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696"},
1925 | {file = "PyYAML-5.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77"},
1926 | {file = "PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183"},
1927 | {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122"},
1928 | {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6"},
1929 | {file = "PyYAML-5.4.1-cp39-cp39-win32.whl", hash = "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10"},
1930 | {file = "PyYAML-5.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db"},
1931 | {file = "PyYAML-5.4.1.tar.gz", hash = "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"},
1932 | ]
1933 | regex = [
1934 | {file = "regex-2021.10.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:981c786293a3115bc14c103086ae54e5ee50ca57f4c02ce7cf1b60318d1e8072"},
1935 | {file = "regex-2021.10.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51feefd58ac38eb91a21921b047da8644155e5678e9066af7bcb30ee0dca7361"},
1936 | {file = "regex-2021.10.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea8de658d7db5987b11097445f2b1f134400e2232cb40e614e5f7b6f5428710e"},
1937 | {file = "regex-2021.10.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1ce02f420a7ec3b2480fe6746d756530f69769292eca363218c2291d0b116a01"},
1938 | {file = "regex-2021.10.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39079ebf54156be6e6902f5c70c078f453350616cfe7bfd2dd15bdb3eac20ccc"},
1939 | {file = "regex-2021.10.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ff24897f6b2001c38a805d53b6ae72267025878d35ea225aa24675fbff2dba7f"},
1940 | {file = "regex-2021.10.8-cp310-cp310-win32.whl", hash = "sha256:c6569ba7b948c3d61d27f04e2b08ebee24fec9ff8e9ea154d8d1e975b175bfa7"},
1941 | {file = "regex-2021.10.8-cp310-cp310-win_amd64.whl", hash = "sha256:45cb0f7ff782ef51bc79e227a87e4e8f24bc68192f8de4f18aae60b1d60bc152"},
1942 | {file = "regex-2021.10.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:fab3ab8aedfb443abb36729410403f0fe7f60ad860c19a979d47fb3eb98ef820"},
1943 | {file = "regex-2021.10.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74e55f8d66f1b41d44bc44c891bcf2c7fad252f8f323ee86fba99d71fd1ad5e3"},
1944 | {file = "regex-2021.10.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d52c5e089edbdb6083391faffbe70329b804652a53c2fdca3533e99ab0580d9"},
1945 | {file = "regex-2021.10.8-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1abbd95cbe9e2467cac65c77b6abd9223df717c7ae91a628502de67c73bf6838"},
1946 | {file = "regex-2021.10.8-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9b5c215f3870aa9b011c00daeb7be7e1ae4ecd628e9beb6d7e6107e07d81287"},
1947 | {file = "regex-2021.10.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f540f153c4f5617bc4ba6433534f8916d96366a08797cbbe4132c37b70403e92"},
1948 | {file = "regex-2021.10.8-cp36-cp36m-win32.whl", hash = "sha256:1f51926db492440e66c89cd2be042f2396cf91e5b05383acd7372b8cb7da373f"},
1949 | {file = "regex-2021.10.8-cp36-cp36m-win_amd64.whl", hash = "sha256:5f55c4804797ef7381518e683249310f7f9646da271b71cb6b3552416c7894ee"},
1950 | {file = "regex-2021.10.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fb2baff66b7d2267e07ef71e17d01283b55b3cc51a81b54cc385e721ae172ba4"},
1951 | {file = "regex-2021.10.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e527ab1c4c7cf2643d93406c04e1d289a9d12966529381ce8163c4d2abe4faf"},
1952 | {file = "regex-2021.10.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c98b013273e9da5790ff6002ab326e3f81072b4616fd95f06c8fa733d2745f"},
1953 | {file = "regex-2021.10.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:55ef044899706c10bc0aa052f2fc2e58551e2510694d6aae13f37c50f3f6ff61"},
1954 | {file = "regex-2021.10.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa0ab3530a279a3b7f50f852f1bab41bc304f098350b03e30a3876b7dd89840e"},
1955 | {file = "regex-2021.10.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a37305eb3199d8f0d8125ec2fb143ba94ff6d6d92554c4b8d4a8435795a6eccd"},
1956 | {file = "regex-2021.10.8-cp37-cp37m-win32.whl", hash = "sha256:2efd47704bbb016136fe34dfb74c805b1ef5c7313aef3ce6dcb5ff844299f432"},
1957 | {file = "regex-2021.10.8-cp37-cp37m-win_amd64.whl", hash = "sha256:924079d5590979c0e961681507eb1773a142553564ccae18d36f1de7324e71ca"},
1958 | {file = "regex-2021.10.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b09d3904bf312d11308d9a2867427479d277365b1617e48ad09696fa7dfcdf59"},
1959 | {file = "regex-2021.10.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f125fce0a0ae4fd5c3388d369d7a7d78f185f904c90dd235f7ecf8fe13fa741"},
1960 | {file = "regex-2021.10.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f199419a81c1016e0560c39773c12f0bd924c37715bffc64b97140d2c314354"},
1961 | {file = "regex-2021.10.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:09e1031e2059abd91177c302da392a7b6859ceda038be9e015b522a182c89e4f"},
1962 | {file = "regex-2021.10.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c070d5895ac6aeb665bd3cd79f673775caf8d33a0b569e98ac434617ecea57d"},
1963 | {file = "regex-2021.10.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:176796cb7f82a7098b0c436d6daac82f57b9101bb17b8e8119c36eecf06a60a3"},
1964 | {file = "regex-2021.10.8-cp38-cp38-win32.whl", hash = "sha256:5e5796d2f36d3c48875514c5cd9e4325a1ca172fc6c78b469faa8ddd3d770593"},
1965 | {file = "regex-2021.10.8-cp38-cp38-win_amd64.whl", hash = "sha256:e4204708fa116dd03436a337e8e84261bc8051d058221ec63535c9403a1582a1"},
1966 | {file = "regex-2021.10.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b8b6ee6555b6fbae578f1468b3f685cdfe7940a65675611365a7ea1f8d724991"},
1967 | {file = "regex-2021.10.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:973499dac63625a5ef9dfa4c791aa33a502ddb7615d992bdc89cf2cc2285daa3"},
1968 | {file = "regex-2021.10.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88dc3c1acd3f0ecfde5f95c32fcb9beda709dbdf5012acdcf66acbc4794468eb"},
1969 | {file = "regex-2021.10.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4786dae85c1f0624ac77cb3813ed99267c9adb72e59fdc7297e1cf4d6036d493"},
1970 | {file = "regex-2021.10.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe6ce4f3d3c48f9f402da1ceb571548133d3322003ce01b20d960a82251695d2"},
1971 | {file = "regex-2021.10.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9e3e2cea8f1993f476a6833ef157f5d9e8c75a59a8d8b0395a9a6887a097243b"},
1972 | {file = "regex-2021.10.8-cp39-cp39-win32.whl", hash = "sha256:82cfb97a36b1a53de32b642482c6c46b6ce80803854445e19bc49993655ebf3b"},
1973 | {file = "regex-2021.10.8-cp39-cp39-win_amd64.whl", hash = "sha256:b04e512eb628ea82ed86eb31c0f7fc6842b46bf2601b66b1356a7008327f7700"},
1974 | {file = "regex-2021.10.8.tar.gz", hash = "sha256:26895d7c9bbda5c52b3635ce5991caa90fbb1ddfac9c9ff1c7ce505e2282fb2a"},
1975 | ]
1976 | requests = [
1977 | {file = "requests-2.26.0-py2.py3-none-any.whl", hash = "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24"},
1978 | {file = "requests-2.26.0.tar.gz", hash = "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7"},
1979 | ]
1980 | requests-oauthlib = [
1981 | {file = "requests-oauthlib-1.3.0.tar.gz", hash = "sha256:b4261601a71fd721a8bd6d7aa1cc1d6a8a93b4a9f5e96626f8e4d91e8beeaa6a"},
1982 | {file = "requests_oauthlib-1.3.0-py2.py3-none-any.whl", hash = "sha256:7f71572defaecd16372f9006f33c2ec8c077c3cfa6f5911a9a90202beb513f3d"},
1983 | {file = "requests_oauthlib-1.3.0-py3.7.egg", hash = "sha256:fa6c47b933f01060936d87ae9327fead68768b69c6c9ea2109c48be30f2d4dbc"},
1984 | ]
1985 | rich = [
1986 | {file = "rich-8.0.0-py3-none-any.whl", hash = "sha256:3c5e4bb1e48c647bc75bc4ae7c125d399bec5b6ed2a319f0d447361635f02a9a"},
1987 | {file = "rich-8.0.0.tar.gz", hash = "sha256:1b5023d2241e6552a24ddfe830a853fc8e53da4e6a6ed6c7105bb262593edf97"},
1988 | ]
1989 | rsa = [
1990 | {file = "rsa-4.7.2-py3-none-any.whl", hash = "sha256:78f9a9bf4e7be0c5ded4583326e7461e3a3c5aae24073648b4bdfa797d78c9d2"},
1991 | {file = "rsa-4.7.2.tar.gz", hash = "sha256:9d689e6ca1b3038bc82bf8d23e944b6b6037bc02301a574935b2dd946e0353b9"},
1992 | ]
1993 | safety = [
1994 | {file = "safety-1.10.3-py2.py3-none-any.whl", hash = "sha256:5f802ad5df5614f9622d8d71fedec2757099705c2356f862847c58c6dfe13e84"},
1995 | {file = "safety-1.10.3.tar.gz", hash = "sha256:30e394d02a20ac49b7f65292d19d38fa927a8f9582cdfd3ad1adbbc66c641ad5"},
1996 | ]
1997 | scikit-learn = [
1998 | {file = "scikit-learn-0.23.2.tar.gz", hash = "sha256:20766f515e6cd6f954554387dfae705d93c7b544ec0e6c6a5d8e006f6f7ef480"},
1999 | {file = "scikit_learn-0.23.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:98508723f44c61896a4e15894b2016762a55555fbf09365a0bb1870ecbd442de"},
2000 | {file = "scikit_learn-0.23.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a64817b050efd50f9abcfd311870073e500ae11b299683a519fbb52d85e08d25"},
2001 | {file = "scikit_learn-0.23.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:daf276c465c38ef736a79bd79fc80a249f746bcbcae50c40945428f7ece074f8"},
2002 | {file = "scikit_learn-0.23.2-cp36-cp36m-win32.whl", hash = "sha256:cb3e76380312e1f86abd20340ab1d5b3cc46a26f6593d3c33c9ea3e4c7134028"},
2003 | {file = "scikit_learn-0.23.2-cp36-cp36m-win_amd64.whl", hash = "sha256:0a127cc70990d4c15b1019680bfedc7fec6c23d14d3719fdf9b64b22d37cdeca"},
2004 | {file = "scikit_learn-0.23.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2aa95c2f17d2f80534156215c87bee72b6aa314a7f8b8fe92a2d71f47280570d"},
2005 | {file = "scikit_learn-0.23.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6c28a1d00aae7c3c9568f61aafeaad813f0f01c729bee4fd9479e2132b215c1d"},
2006 | {file = "scikit_learn-0.23.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:da8e7c302003dd765d92a5616678e591f347460ac7b53e53d667be7dfe6d1b10"},
2007 | {file = "scikit_learn-0.23.2-cp37-cp37m-win32.whl", hash = "sha256:d9a1ce5f099f29c7c33181cc4386660e0ba891b21a60dc036bf369e3a3ee3aec"},
2008 | {file = "scikit_learn-0.23.2-cp37-cp37m-win_amd64.whl", hash = "sha256:914ac2b45a058d3f1338d7736200f7f3b094857758895f8667be8a81ff443b5b"},
2009 | {file = "scikit_learn-0.23.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7671bbeddd7f4f9a6968f3b5442dac5f22bf1ba06709ef888cc9132ad354a9ab"},
2010 | {file = "scikit_learn-0.23.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:d0dcaa54263307075cb93d0bee3ceb02821093b1b3d25f66021987d305d01dce"},
2011 | {file = "scikit_learn-0.23.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:5ce7a8021c9defc2b75620571b350acc4a7d9763c25b7593621ef50f3bd019a2"},
2012 | {file = "scikit_learn-0.23.2-cp38-cp38-win32.whl", hash = "sha256:0d39748e7c9669ba648acf40fb3ce96b8a07b240db6888563a7cb76e05e0d9cc"},
2013 | {file = "scikit_learn-0.23.2-cp38-cp38-win_amd64.whl", hash = "sha256:1b8a391de95f6285a2f9adffb7db0892718950954b7149a70c783dc848f104ea"},
2014 | ]
2015 | scipy = [
2016 | {file = "scipy-1.6.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a15a1f3fc0abff33e792d6049161b7795909b40b97c6cc2934ed54384017ab76"},
2017 | {file = "scipy-1.6.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:e79570979ccdc3d165456dd62041d9556fb9733b86b4b6d818af7a0afc15f092"},
2018 | {file = "scipy-1.6.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:a423533c55fec61456dedee7b6ee7dce0bb6bfa395424ea374d25afa262be261"},
2019 | {file = "scipy-1.6.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:33d6b7df40d197bdd3049d64e8e680227151673465e5d85723b3b8f6b15a6ced"},
2020 | {file = "scipy-1.6.1-cp37-cp37m-win32.whl", hash = "sha256:6725e3fbb47da428794f243864f2297462e9ee448297c93ed1dcbc44335feb78"},
2021 | {file = "scipy-1.6.1-cp37-cp37m-win_amd64.whl", hash = "sha256:5fa9c6530b1661f1370bcd332a1e62ca7881785cc0f80c0d559b636567fab63c"},
2022 | {file = "scipy-1.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bd50daf727f7c195e26f27467c85ce653d41df4358a25b32434a50d8870fc519"},
2023 | {file = "scipy-1.6.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:f46dd15335e8a320b0fb4685f58b7471702234cba8bb3442b69a3e1dc329c345"},
2024 | {file = "scipy-1.6.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0e5b0ccf63155d90da576edd2768b66fb276446c371b73841e3503be1d63fb5d"},
2025 | {file = "scipy-1.6.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:2481efbb3740977e3c831edfd0bd9867be26387cacf24eb5e366a6a374d3d00d"},
2026 | {file = "scipy-1.6.1-cp38-cp38-win32.whl", hash = "sha256:68cb4c424112cd4be886b4d979c5497fba190714085f46b8ae67a5e4416c32b4"},
2027 | {file = "scipy-1.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:5f331eeed0297232d2e6eea51b54e8278ed8bb10b099f69c44e2558c090d06bf"},
2028 | {file = "scipy-1.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0c8a51d33556bf70367452d4d601d1742c0e806cd0194785914daf19775f0e67"},
2029 | {file = "scipy-1.6.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:83bf7c16245c15bc58ee76c5418e46ea1811edcc2e2b03041b804e46084ab627"},
2030 | {file = "scipy-1.6.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:794e768cc5f779736593046c9714e0f3a5940bc6dcc1dba885ad64cbfb28e9f0"},
2031 | {file = "scipy-1.6.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:5da5471aed911fe7e52b86bf9ea32fb55ae93e2f0fac66c32e58897cfb02fa07"},
2032 | {file = "scipy-1.6.1-cp39-cp39-win32.whl", hash = "sha256:8e403a337749ed40af60e537cc4d4c03febddcc56cd26e774c9b1b600a70d3e4"},
2033 | {file = "scipy-1.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:a5193a098ae9f29af283dcf0041f762601faf2e595c0db1da929875b7570353f"},
2034 | {file = "scipy-1.6.1.tar.gz", hash = "sha256:c4fceb864890b6168e79b0e714c585dbe2fd4222768ee90bc1aa0f8218691b11"},
2035 | ]
2036 | shellingham = [
2037 | {file = "shellingham-1.4.0-py2.py3-none-any.whl", hash = "sha256:536b67a0697f2e4af32ab176c00a50ac2899c5a05e0d8e2dadac8e58888283f9"},
2038 | {file = "shellingham-1.4.0.tar.gz", hash = "sha256:4855c2458d6904829bd34c299f11fdeed7cfefbf8a2c522e4caea6cd76b3171e"},
2039 | ]
2040 | six = [
2041 | {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
2042 | {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
2043 | ]
2044 | smmap = [
2045 | {file = "smmap-4.0.0-py2.py3-none-any.whl", hash = "sha256:a9a7479e4c572e2e775c404dcd3080c8dc49f39918c2cf74913d30c4c478e3c2"},
2046 | {file = "smmap-4.0.0.tar.gz", hash = "sha256:7e65386bd122d45405ddf795637b7f7d2b532e7e401d46bbe3fb49b9986d5182"},
2047 | ]
2048 | snowballstemmer = [
2049 | {file = "snowballstemmer-2.1.0-py2.py3-none-any.whl", hash = "sha256:b51b447bea85f9968c13b650126a888aabd4cb4463fca868ec596826325dedc2"},
2050 | {file = "snowballstemmer-2.1.0.tar.gz", hash = "sha256:e997baa4f2e9139951b6f4c631bad912dfd3c792467e2f03d7239464af90e914"},
2051 | ]
2052 | stevedore = [
2053 | {file = "stevedore-3.4.0-py3-none-any.whl", hash = "sha256:920ce6259f0b2498aaa4545989536a27e4e4607b8318802d7ddc3a533d3d069e"},
2054 | {file = "stevedore-3.4.0.tar.gz", hash = "sha256:59b58edb7f57b11897f150475e7bc0c39c5381f0b8e3fa9f5c20ce6c89ec4aa1"},
2055 | ]
2056 | tensorboard = [
2057 | {file = "tensorboard-2.6.0-py3-none-any.whl", hash = "sha256:f7dac4cdfb52d14c9e3f74585ce2aaf8e6203620a864e51faf84988b09f7bbdb"},
2058 | ]
2059 | tensorboard-data-server = [
2060 | {file = "tensorboard_data_server-0.6.1-py3-none-any.whl", hash = "sha256:809fe9887682d35c1f7d1f54f0f40f98bb1f771b14265b453ca051e2ce58fca7"},
2061 | {file = "tensorboard_data_server-0.6.1-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:fa8cef9be4fcae2f2363c88176638baf2da19c5ec90addb49b1cde05c95c88ee"},
2062 | {file = "tensorboard_data_server-0.6.1-py3-none-manylinux2010_x86_64.whl", hash = "sha256:d8237580755e58eff68d1f3abefb5b1e39ae5c8b127cc40920f9c4fb33f4b98a"},
2063 | ]
2064 | tensorboard-plugin-wit = [
2065 | {file = "tensorboard_plugin_wit-1.8.0-py3-none-any.whl", hash = "sha256:2a80d1c551d741e99b2f197bb915d8a133e24adb8da1732b840041860f91183a"},
2066 | ]
2067 | threadpoolctl = [
2068 | {file = "threadpoolctl-3.0.0-py3-none-any.whl", hash = "sha256:4fade5b3b48ae4b1c30f200b28f39180371104fccc642e039e0f2435ec8cc211"},
2069 | {file = "threadpoolctl-3.0.0.tar.gz", hash = "sha256:d03115321233d0be715f0d3a5ad1d6c065fe425ddc2d671ca8e45e9fd5d7a52a"},
2070 | ]
2071 | tokenize-rt = [
2072 | {file = "tokenize_rt-4.1.0-py2.py3-none-any.whl", hash = "sha256:b37251fa28c21e8cce2e42f7769a35fba2dd2ecafb297208f9a9a8add3ca7793"},
2073 | {file = "tokenize_rt-4.1.0.tar.gz", hash = "sha256:ab339b5ff829eb5e198590477f9c03c84e762b3e455e74c018956e7e326cbc70"},
2074 | ]
2075 | toml = [
2076 | {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
2077 | {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
2078 | ]
2079 | torch = [
2080 | {file = "torch-1.9.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:3a2d070cf28860d285d4ab156f3954c0c1d12f4c037aa312a7c029227c0d106b"},
2081 | {file = "torch-1.9.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:b296e65e25081af147af936f1e3a1f17f583a9afacfa5309742678ffef728ace"},
2082 | {file = "torch-1.9.0-cp36-cp36m-win_amd64.whl", hash = "sha256:117098d4924b260a24a47c6b3fe37f2ae41f04a2ea2eff9f553ae9210b12fa54"},
2083 | {file = "torch-1.9.0-cp36-none-macosx_10_9_x86_64.whl", hash = "sha256:d6103b9a634993bd967337a1149f9d8b23922f42a3660676239399e15c1b4515"},
2084 | {file = "torch-1.9.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:0164673908e6b291ace592d382eba3e258b3bad009b8078cad8f3b9e00d8f23e"},
2085 | {file = "torch-1.9.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:52548b45efff772fe3810fe91daf34f981ac0ca1a7227f6226fd5693f53b5b88"},
2086 | {file = "torch-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62c0a7e433681d0861494d1ede96d2485e4dbb3ea8fd867e8419addebf5de1af"},
2087 | {file = "torch-1.9.0-cp37-none-macosx_10_9_x86_64.whl", hash = "sha256:d88333091fd1627894bbf0d6dcef58a90e36bdf0d90a5d4675b5e07e72075511"},
2088 | {file = "torch-1.9.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:1d8139dcc864f48dc316376384f50e47a459284ad1cb84449242f4964e25aaec"},
2089 | {file = "torch-1.9.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:0aa4cca3f16fab40cb8dae6a49d0eccdc8f4ead9d1a6428cd9ba12befe082b2a"},
2090 | {file = "torch-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:646de1bef85d6c7590e98f8ea52e47acdcf58330982e4f5d73f5ca28dea2d552"},
2091 | {file = "torch-1.9.0-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:e596f0105f748cf09d4763152d8157aaf58d5231232eaf2c5673d4562ba86ad3"},
2092 | {file = "torch-1.9.0-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:ecc7193fff7741ced3db1f760666c8454d6664956288c54d1b49613b987a42f4"},
2093 | {file = "torch-1.9.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:95eeec3a6c42fd35aca552777b7d9979ed489760423de97c0118a45e849a61f4"},
2094 | {file = "torch-1.9.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:8a2b2012b3c7d6019e189496688fa77de7029a220840b406d8302d1c8021a11c"},
2095 | {file = "torch-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:7e2b14fe5b3a8266cbe2f6740c0195497507974ced7bc21e99971561913a0c28"},
2096 | {file = "torch-1.9.0-cp39-none-macosx_10_9_x86_64.whl", hash = "sha256:0a9e74b5057463ce4e55d9332a5670993fc9e1299c52e1740e505eda106fb355"},
2097 | {file = "torch-1.9.0-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:569ead6ae6bb0e636df0fc8af660ef03260e630dc5f2f4cf3198027e7b6bb481"},
2098 | ]
2099 | torchmetrics = [
2100 | {file = "torchmetrics-0.5.1-py3-none-any.whl", hash = "sha256:4e5497bc5c9d19fa520748cda89f6d863868bb5be33ec47d2834c0988bf737c5"},
2101 | {file = "torchmetrics-0.5.1.tar.gz", hash = "sha256:22fbcb6fc05348ca3f2bd06e0763e88411a6b68c2b9fc26084b39d40cc4021b0"},
2102 | ]
2103 | tqdm = [
2104 | {file = "tqdm-4.62.3-py2.py3-none-any.whl", hash = "sha256:8dd278a422499cd6b727e6ae4061c40b48fce8b76d1ccbf5d34fca9b7f925b0c"},
2105 | {file = "tqdm-4.62.3.tar.gz", hash = "sha256:d359de7217506c9851b7869f3708d8ee53ed70a1b8edbba4dbcb47442592920d"},
2106 | ]
2107 | typed-ast = [
2108 | {file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:2068531575a125b87a41802130fa7e29f26c09a2833fea68d9a40cf33902eba6"},
2109 | {file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:c907f561b1e83e93fad565bac5ba9c22d96a54e7ea0267c708bffe863cbe4075"},
2110 | {file = "typed_ast-1.4.3-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:1b3ead4a96c9101bef08f9f7d1217c096f31667617b58de957f690c92378b528"},
2111 | {file = "typed_ast-1.4.3-cp35-cp35m-win32.whl", hash = "sha256:dde816ca9dac1d9c01dd504ea5967821606f02e510438120091b84e852367428"},
2112 | {file = "typed_ast-1.4.3-cp35-cp35m-win_amd64.whl", hash = "sha256:777a26c84bea6cd934422ac2e3b78863a37017618b6e5c08f92ef69853e765d3"},
2113 | {file = "typed_ast-1.4.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f8afcf15cc511ada719a88e013cec87c11aff7b91f019295eb4530f96fe5ef2f"},
2114 | {file = "typed_ast-1.4.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:52b1eb8c83f178ab787f3a4283f68258525f8d70f778a2f6dd54d3b5e5fb4341"},
2115 | {file = "typed_ast-1.4.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:01ae5f73431d21eead5015997ab41afa53aa1fbe252f9da060be5dad2c730ace"},
2116 | {file = "typed_ast-1.4.3-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:c190f0899e9f9f8b6b7863debfb739abcb21a5c054f911ca3596d12b8a4c4c7f"},
2117 | {file = "typed_ast-1.4.3-cp36-cp36m-win32.whl", hash = "sha256:398e44cd480f4d2b7ee8d98385ca104e35c81525dd98c519acff1b79bdaac363"},
2118 | {file = "typed_ast-1.4.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bff6ad71c81b3bba8fa35f0f1921fb24ff4476235a6e94a26ada2e54370e6da7"},
2119 | {file = "typed_ast-1.4.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0fb71b8c643187d7492c1f8352f2c15b4c4af3f6338f21681d3681b3dc31a266"},
2120 | {file = "typed_ast-1.4.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:760ad187b1041a154f0e4d0f6aae3e40fdb51d6de16e5c99aedadd9246450e9e"},
2121 | {file = "typed_ast-1.4.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5feca99c17af94057417d744607b82dd0a664fd5e4ca98061480fd8b14b18d04"},
2122 | {file = "typed_ast-1.4.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:95431a26309a21874005845c21118c83991c63ea800dd44843e42a916aec5899"},
2123 | {file = "typed_ast-1.4.3-cp37-cp37m-win32.whl", hash = "sha256:aee0c1256be6c07bd3e1263ff920c325b59849dc95392a05f258bb9b259cf39c"},
2124 | {file = "typed_ast-1.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9ad2c92ec681e02baf81fdfa056fe0d818645efa9af1f1cd5fd6f1bd2bdfd805"},
2125 | {file = "typed_ast-1.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b36b4f3920103a25e1d5d024d155c504080959582b928e91cb608a65c3a49e1a"},
2126 | {file = "typed_ast-1.4.3-cp38-cp38-manylinux1_i686.whl", hash = "sha256:067a74454df670dcaa4e59349a2e5c81e567d8d65458d480a5b3dfecec08c5ff"},
2127 | {file = "typed_ast-1.4.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7538e495704e2ccda9b234b82423a4038f324f3a10c43bc088a1636180f11a41"},
2128 | {file = "typed_ast-1.4.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:af3d4a73793725138d6b334d9d247ce7e5f084d96284ed23f22ee626a7b88e39"},
2129 | {file = "typed_ast-1.4.3-cp38-cp38-win32.whl", hash = "sha256:f2362f3cb0f3172c42938946dbc5b7843c2a28aec307c49100c8b38764eb6927"},
2130 | {file = "typed_ast-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:dd4a21253f42b8d2b48410cb31fe501d32f8b9fbeb1f55063ad102fe9c425e40"},
2131 | {file = "typed_ast-1.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f328adcfebed9f11301eaedfa48e15bdece9b519fb27e6a8c01aa52a17ec31b3"},
2132 | {file = "typed_ast-1.4.3-cp39-cp39-manylinux1_i686.whl", hash = "sha256:2c726c276d09fc5c414693a2de063f521052d9ea7c240ce553316f70656c84d4"},
2133 | {file = "typed_ast-1.4.3-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:cae53c389825d3b46fb37538441f75d6aecc4174f615d048321b716df2757fb0"},
2134 | {file = "typed_ast-1.4.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:b9574c6f03f685070d859e75c7f9eeca02d6933273b5e69572e5ff9d5e3931c3"},
2135 | {file = "typed_ast-1.4.3-cp39-cp39-win32.whl", hash = "sha256:209596a4ec71d990d71d5e0d312ac935d86930e6eecff6ccc7007fe54d703808"},
2136 | {file = "typed_ast-1.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:9c6d1a54552b5330bc657b7ef0eae25d00ba7ffe85d9ea8ae6540d2197a3788c"},
2137 | {file = "typed_ast-1.4.3.tar.gz", hash = "sha256:fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65"},
2138 | ]
2139 | typer = [
2140 | {file = "typer-0.3.2-py3-none-any.whl", hash = "sha256:ba58b920ce851b12a2d790143009fa00ac1d05b3ff3257061ff69dbdfc3d161b"},
2141 | {file = "typer-0.3.2.tar.gz", hash = "sha256:5455d750122cff96745b0dec87368f56d023725a7ebc9d2e54dd23dc86816303"},
2142 | ]
2143 | typing-extensions = [
2144 | {file = "typing_extensions-3.10.0.2-py2-none-any.whl", hash = "sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7"},
2145 | {file = "typing_extensions-3.10.0.2-py3-none-any.whl", hash = "sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34"},
2146 | {file = "typing_extensions-3.10.0.2.tar.gz", hash = "sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e"},
2147 | ]
2148 | urllib3 = [
2149 | {file = "urllib3-1.26.7-py2.py3-none-any.whl", hash = "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"},
2150 | {file = "urllib3-1.26.7.tar.gz", hash = "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece"},
2151 | ]
2152 | virtualenv = [
2153 | {file = "virtualenv-20.8.1-py2.py3-none-any.whl", hash = "sha256:10062e34c204b5e4ec5f62e6ef2473f8ba76513a9a617e873f1f8fb4a519d300"},
2154 | {file = "virtualenv-20.8.1.tar.gz", hash = "sha256:bcc17f0b3a29670dd777d6f0755a4c04f28815395bca279cdcb213b97199a6b8"},
2155 | ]
2156 | werkzeug = [
2157 | {file = "Werkzeug-2.0.2-py3-none-any.whl", hash = "sha256:63d3dc1cf60e7b7e35e97fa9861f7397283b75d765afcaefd993d6046899de8f"},
2158 | {file = "Werkzeug-2.0.2.tar.gz", hash = "sha256:aa2bb6fc8dee8d6c504c0ac1e7f5f7dc5810a9903e793b6f715a9f015bdadb9a"},
2159 | ]
2160 | wrapt = [
2161 | {file = "wrapt-1.12.1.tar.gz", hash = "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"},
2162 | ]
2163 | xxhash = [
2164 | {file = "xxhash-2.0.2-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:dac3b94881b943bbe418f5829128b9c48f69a66f816ef8b72ee0129d676dbd7c"},
2165 | {file = "xxhash-2.0.2-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:43fd97f332bd581639bb99fe8f09f7e9113d49cad4d21bef0620867f92c802c6"},
2166 | {file = "xxhash-2.0.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:6e5058c3fa5b42ded9a303f1a5a42d3ff732cb54c108424c63e993fc3379513c"},
2167 | {file = "xxhash-2.0.2-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:dfacce97a3ccb46089e358ceaeca9300298511673bf87596da66882af386f6c7"},
2168 | {file = "xxhash-2.0.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:1dfa115c8e07b3e1d94ebd60a6d6ee16ea692efb890e245addb0d33b47ee1dee"},
2169 | {file = "xxhash-2.0.2-cp27-cp27m-win32.whl", hash = "sha256:fb28b0313c7582225373f343635674231518452331a9bdea8261d0e27b48594f"},
2170 | {file = "xxhash-2.0.2-cp27-cp27m-win_amd64.whl", hash = "sha256:427851234a87bfe6636c90b89bd65b7ca913befff3c7bcd92a3568e635fccc92"},
2171 | {file = "xxhash-2.0.2-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:0b92a01dc8dcada8827de140a5df83c9e8e5c190ef8bf972c98ebbe0924ee044"},
2172 | {file = "xxhash-2.0.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:676d6964b8a9bdaf737ae6836b886ab53b2863c6aa00d43952b130a6130d1bdc"},
2173 | {file = "xxhash-2.0.2-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:8362693a1ce5c1373f48f047470e7797ed17dfe5babc37ba7bef50d6e6f83a72"},
2174 | {file = "xxhash-2.0.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:515747159fccd23fc9d1b7afeaa8bd7fc36884188b47491713d22032c5f9e502"},
2175 | {file = "xxhash-2.0.2-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:e1787b9cea43f256f8d06c8429999d386a9da9cb000c265a4dde48dd08242528"},
2176 | {file = "xxhash-2.0.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:d47ab1245ee4c7e6fc424ad990e4d7cfe0f206d617efe990fea34000a9242102"},
2177 | {file = "xxhash-2.0.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:81ec049f4936a49311e1fc58036d7d682b5c83d6d16ba1c852a981588c90e027"},
2178 | {file = "xxhash-2.0.2-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:df71aeedee74eaf670d1243b6722c8c77626f3b6e6cf2cd79f2e336b151749cd"},
2179 | {file = "xxhash-2.0.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a922315c8e20dae0d35e54b49fd7ee348fe0a5e2fd8ec02f6a74140e063fcdb3"},
2180 | {file = "xxhash-2.0.2-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:22ddd484cd92d138feeec556387894b8ec529bab7f2feb3a177eb84baadee8c1"},
2181 | {file = "xxhash-2.0.2-cp35-cp35m-win32.whl", hash = "sha256:b4964e7ddca1ef9d7addef40a9f5eaa97aeda367c1d895e392533c0d2f9c3b8e"},
2182 | {file = "xxhash-2.0.2-cp35-cp35m-win_amd64.whl", hash = "sha256:6077fdb44f68920c4ac8e2f34b2a107c9a218f00a698253c824a0c6c1b9622a3"},
2183 | {file = "xxhash-2.0.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:04ae5706ddfe0fd2b46cd0b6487d3edae7e724e27d732b055ffd0f9539c4afc5"},
2184 | {file = "xxhash-2.0.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c4a892bc47b6ea92bbb82499a81882548ce990d62c1862b3834f1f70e8cf4423"},
2185 | {file = "xxhash-2.0.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:57d43ce9594676b503c0a0a383481cb4e5cf736f88970bd41849fe15a68a5d48"},
2186 | {file = "xxhash-2.0.2-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:c2e44d162c3361392dbde736ee8ba3d1a414f63e32be6c71186f2b0654559d26"},
2187 | {file = "xxhash-2.0.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:0beb79835ca47af257f8126fccd9d5e0ba56ba7d39dab6f6b5a7acea4d8ac4b5"},
2188 | {file = "xxhash-2.0.2-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:f2bef10c417c4667310cc240d49e521e6b5fc90c4ff77a1ec78649869685e8d3"},
2189 | {file = "xxhash-2.0.2-cp36-cp36m-win32.whl", hash = "sha256:9b6bb1bd34a6365c790c328a604ec5a628059fef6e4486380caa89bc12787a6e"},
2190 | {file = "xxhash-2.0.2-cp36-cp36m-win_amd64.whl", hash = "sha256:4243dbeb1ce09d359289844f0c54676343857fdc6a092184aea159fecdf6d9f3"},
2191 | {file = "xxhash-2.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:71b38300e1803ab32ee787f89cdbc032b46ac5834eca9109d8fb576ae1a31741"},
2192 | {file = "xxhash-2.0.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:a8a68d117178f15c96cb9ae2613f53db94e0fdb34ffc69c7ab600c899c7a966c"},
2193 | {file = "xxhash-2.0.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:dd9c72520f790ce6eaa535cdad1a53ded22deab43766cfa7cef42834a9a65561"},
2194 | {file = "xxhash-2.0.2-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:f95adf6091fa13ce19fab21fadb8d07210822320568d24a6405d6b557afc0411"},
2195 | {file = "xxhash-2.0.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:00aaf882036d2a0fa7652cf9aeaaf2ad077b784c09ef8d60f5d97ebf0d47ffa1"},
2196 | {file = "xxhash-2.0.2-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:bb8c0efad20da40da1aa56f36b929b965d1adede8a1d5b37b702d378a683e0dd"},
2197 | {file = "xxhash-2.0.2-cp37-cp37m-win32.whl", hash = "sha256:6fc0b8c21a181b771e1f0c25eb8a0a241af0126f1fc19f4c3cde7233de91326f"},
2198 | {file = "xxhash-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b232b47a3aa825e0df14b1bd3e051dd327c8539e382728ddb81997d26de5256a"},
2199 | {file = "xxhash-2.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dc328d3d635ec851d6befdf6ced2134d587d3be973dbbbc489da24c0c88ecb01"},
2200 | {file = "xxhash-2.0.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:9e6e5e095417060bed45119c510d5bc846b62e2a8218cb3e5a19b3ccf12e4c18"},
2201 | {file = "xxhash-2.0.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:b4b7d4d19c125738c5fc48356505dfbd63b3cdf826dd868a1b80a73de48729b7"},
2202 | {file = "xxhash-2.0.2-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:686fcf2aff041df65470eccc7dcea5e7e77cfad99efcaba0c6f58bbd81846e10"},
2203 | {file = "xxhash-2.0.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:cb3a196fd1d55ce86b1123cbf3ef6603f80f4d0b46541412bb5056b0563ef384"},
2204 | {file = "xxhash-2.0.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:68d067427f2c6f7b3014e28bf4794b0876ab5f6366b53e1d6f59d275b4f19a8d"},
2205 | {file = "xxhash-2.0.2-cp38-cp38-win32.whl", hash = "sha256:73649555656dd17e809b9b3c54855f4f72144024b0e6395cd37b5395fa0f48c3"},
2206 | {file = "xxhash-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:dafd1066c99d448a7a1226f10766b61ff752aaad8a4392e4cae30aafefa6fff5"},
2207 | {file = "xxhash-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eb1e9e347c9810a272154814cf5ce33a6c3ac7d0d7cbcb066e92dd5f9fa4db8f"},
2208 | {file = "xxhash-2.0.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:ebff22f1783f641c6c2b313bfc44d6cc620c17409ec512e67c7c6de809155880"},
2209 | {file = "xxhash-2.0.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:b7640e043ac6e0f503eadb108e6971d69b0c95c23fbcac3e5632578f9f906050"},
2210 | {file = "xxhash-2.0.2-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:db2352d375e6594620c462c029d3c1a1b18ff7168e470657e354f1b8b332d9dd"},
2211 | {file = "xxhash-2.0.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:f49dbd3b8e4cc13f2df92fb3db39204e3258105a212e23784cbb340e415ae8ed"},
2212 | {file = "xxhash-2.0.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:e70059c5cc8f0cecd16d8cb0263de8f317239cabee3fa4af35c0a1ddaed2110e"},
2213 | {file = "xxhash-2.0.2-cp39-cp39-win32.whl", hash = "sha256:a0199a07a264be96ed658ba3b4e9ee58a3c678e51a18e134e2518cf1a8171e18"},
2214 | {file = "xxhash-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:173d3f662dc88de734bd622e46a3bbac6fd00e957b3e098fa8b75b141aa4354e"},
2215 | {file = "xxhash-2.0.2-pp27-pypy_73-macosx_10_9_x86_64.whl", hash = "sha256:e94fdff9b102ca7c0969230d209f7ce17020db17a89d026ac45d8ffb9e4929ec"},
2216 | {file = "xxhash-2.0.2-pp27-pypy_73-manylinux1_x86_64.whl", hash = "sha256:d7175cd7f490aae742d18eb9b519e74180958f88fa8ff47091727b3efb57bfbf"},
2217 | {file = "xxhash-2.0.2-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:d707d2a053a5d55ccd2e59d7a228636cafeebb44c9ac3ca1c088f4d384c8c3a9"},
2218 | {file = "xxhash-2.0.2-pp27-pypy_73-win32.whl", hash = "sha256:dad190caa293abbb39d96b4a09f121fc971d81eb19c96e4e0db89a99a7d59b93"},
2219 | {file = "xxhash-2.0.2-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5dc3da5fa855dd8e35f24d20fabfcd29c0b3ac85a14dc2c329c029971ae4eeb7"},
2220 | {file = "xxhash-2.0.2-pp36-pypy36_pp73-manylinux1_x86_64.whl", hash = "sha256:17a3b0a2ff20879ed5c9d9c178349e9c6257db11b193e4103282d7a78ef9cb08"},
2221 | {file = "xxhash-2.0.2-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:c75f8375c80c3815f49a744ef1a8303577757eb9a2dc53bed33d9318b760fec6"},
2222 | {file = "xxhash-2.0.2-pp36-pypy36_pp73-win32.whl", hash = "sha256:eb2670ed6c435189aeb479bfff990e00b849ae0ff49945632db74b2a2a08d192"},
2223 | {file = "xxhash-2.0.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ff518ec1bd7cc33218f8f3325848c56e9c73c5df30138a64a89dd65ab1e1ffb5"},
2224 | {file = "xxhash-2.0.2-pp37-pypy37_pp73-manylinux1_x86_64.whl", hash = "sha256:c4a0806ffb33c9d892b5565fa010c252c7e0f4d01ded901a637dfede624e4d0c"},
2225 | {file = "xxhash-2.0.2-pp37-pypy37_pp73-manylinux2010_x86_64.whl", hash = "sha256:fdfac2014301da79cebcd8f9535c875f63242fe404d741cec5f70f400cc6a561"},
2226 | {file = "xxhash-2.0.2-pp37-pypy37_pp73-win32.whl", hash = "sha256:357f6a52bd18a80635cf4c83f648c42fa0609713b4183929ed019f7627af4b68"},
2227 | {file = "xxhash-2.0.2.tar.gz", hash = "sha256:b7bead8cf6210eadf9cecf356e17af794f57c0939a3d420a00d87ea652f87b49"},
2228 | ]
2229 | yarl = [
2230 | {file = "yarl-1.7.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e35d8230e4b08d86ea65c32450533b906a8267a87b873f2954adeaecede85169"},
2231 | {file = "yarl-1.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eb4b3f277880c314e47720b4b6bb2c85114ab3c04c5442c9bc7006b3787904d8"},
2232 | {file = "yarl-1.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7015dcedb91d90a138eebdc7e432aec8966e0147ab2a55f2df27b1904fa7291"},
2233 | {file = "yarl-1.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb3e478175e15e00d659fb0354a6a8db71a7811a2a5052aed98048bc972e5d2b"},
2234 | {file = "yarl-1.7.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8b8c409aa3a7966647e7c1c524846b362a6bcbbe120bf8a176431f940d2b9a2e"},
2235 | {file = "yarl-1.7.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b22ea41c7e98170474a01e3eded1377d46b2dfaef45888a0005c683eaaa49285"},
2236 | {file = "yarl-1.7.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a7dfc46add4cfe5578013dbc4127893edc69fe19132d2836ff2f6e49edc5ecd6"},
2237 | {file = "yarl-1.7.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:82ff6f85f67500a4f74885d81659cd270eb24dfe692fe44e622b8a2fd57e7279"},
2238 | {file = "yarl-1.7.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f3cd2158b2ed0fb25c6811adfdcc47224efe075f2d68a750071dacc03a7a66e4"},
2239 | {file = "yarl-1.7.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:59c0f13f9592820c51280d1cf811294d753e4a18baf90f0139d1dc93d4b6fc5f"},
2240 | {file = "yarl-1.7.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7f7655ad83d1a8afa48435a449bf2f3009293da1604f5dd95b5ddcf5f673bd69"},
2241 | {file = "yarl-1.7.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aa9f0d9b62d15182341b3e9816582f46182cab91c1a57b2d308b9a3c4e2c4f78"},
2242 | {file = "yarl-1.7.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fdd1b90c225a653b1bd1c0cae8edf1957892b9a09c8bf7ee6321eeb8208eac0f"},
2243 | {file = "yarl-1.7.0-cp310-cp310-win32.whl", hash = "sha256:7c8d0bb76eabc5299db203e952ec55f8f4c53f08e0df4285aac8c92bd9e12675"},
2244 | {file = "yarl-1.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:622a36fa779efb4ff9eff5fe52730ff17521431379851a31e040958fc251670c"},
2245 | {file = "yarl-1.7.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3d461b7a8e139b9e4b41f62eb417ffa0b98d1c46d4caf14c845e6a3b349c0bb1"},
2246 | {file = "yarl-1.7.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81cfacdd1e40bc931b5519499342efa388d24d262c30a3d31187bfa04f4a7001"},
2247 | {file = "yarl-1.7.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:821b978f2152be7695d4331ef0621d207aedf9bbd591ba23a63412a3efc29a01"},
2248 | {file = "yarl-1.7.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b64bd24c8c9a487f4a12260dc26732bf41028816dbf0c458f17864fbebdb3131"},
2249 | {file = "yarl-1.7.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:98c9ddb92b60a83c21be42c776d3d9d5ec632a762a094c41bda37b7dfbd2cd83"},
2250 | {file = "yarl-1.7.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a532d75ca74431c053a88a802e161fb3d651b8bf5821a3440bc3616e38754583"},
2251 | {file = "yarl-1.7.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:053e09817eafb892e94e172d05406c1b3a22a93bc68f6eff5198363a3d764459"},
2252 | {file = "yarl-1.7.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:98c51f02d542945d306c8e934aa2c1e66ba5e9c1c86b5bf37f3a51c8a747067e"},
2253 | {file = "yarl-1.7.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:15ec41a5a5fdb7bace6d7b16701f9440007a82734f69127c0fbf6d87e10f4a1e"},
2254 | {file = "yarl-1.7.0-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:a7f08819dba1e1255d6991ed37448a1bf4b1352c004bcd899b9da0c47958513d"},
2255 | {file = "yarl-1.7.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8e3ffab21db0542ffd1887f3b9575ddd58961f2cf61429cb6458afc00c4581e0"},
2256 | {file = "yarl-1.7.0-cp36-cp36m-win32.whl", hash = "sha256:50127634f519b2956005891507e3aa4ac345f66a7ea7bbc2d7dcba7401f41898"},
2257 | {file = "yarl-1.7.0-cp36-cp36m-win_amd64.whl", hash = "sha256:36ec44f15193f6d5288d42ebb8e751b967ebdfb72d6830983838d45ab18edb4f"},
2258 | {file = "yarl-1.7.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ec1b5a25a25c880c976d0bb3d107def085bb08dbb3db7f4442e0a2b980359d24"},
2259 | {file = "yarl-1.7.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b36f5a63c891f813c6f04ef19675b382efc190fd5ce7e10ab19386d2548bca06"},
2260 | {file = "yarl-1.7.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38173b8c3a29945e7ecade9a3f6ff39581eee8201338ee6a2c8882db5df3e806"},
2261 | {file = "yarl-1.7.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ba402f32184f0b405fb281b93bd0d8ab7e3257735b57b62a6ed2e94cdf4fe50"},
2262 | {file = "yarl-1.7.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:be52bc5208d767cdd8308a9e93059b3b36d1e048fecbea0e0346d0d24a76adc0"},
2263 | {file = "yarl-1.7.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:08c2044a956f4ef30405f2f433ce77f1f57c2c773bf81ae43201917831044d5a"},
2264 | {file = "yarl-1.7.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:484d61c047c45670ef5967653a1d0783e232c54bf9dd786a7737036828fa8d54"},
2265 | {file = "yarl-1.7.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b7de92a4af85cfcaf4081f8aa6165b1d63ee5de150af3ee85f954145f93105a7"},
2266 | {file = "yarl-1.7.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:376e41775aab79c5575534924a386c8e0f1a5d91db69fc6133fd27a489bcaf10"},
2267 | {file = "yarl-1.7.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:8a8b10d0e7bac154f959b709fcea593cda527b234119311eb950096653816a86"},
2268 | {file = "yarl-1.7.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:f46cd4c43e6175030e2a56def8f1d83b64e6706eeb2bb9ab0ef4756f65eab23f"},
2269 | {file = "yarl-1.7.0-cp37-cp37m-win32.whl", hash = "sha256:b28cfb46140efe1a6092b8c5c4994a1fe70dc83c38fbcea4992401e0c6fb9cce"},
2270 | {file = "yarl-1.7.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9624154ec9c02a776802da1086eed7f5034bd1971977f5146233869c2ac80297"},
2271 | {file = "yarl-1.7.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:69945d13e1bbf81784a9bc48824feb9cd66491e6a503d4e83f6cd7c7cc861361"},
2272 | {file = "yarl-1.7.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:46a742ed9e363bd01be64160ce7520e92e11989bd4cb224403cfd31c101cc83d"},
2273 | {file = "yarl-1.7.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cb4ff1ac7cb4500f43581b3f4cbd627d702143aa6be1fdc1fa3ebffaf4dc1be5"},
2274 | {file = "yarl-1.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ad51e17cd65ea3debb0e10f0120cf8dd987c741fe423ed2285087368090b33d"},
2275 | {file = "yarl-1.7.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7e37786ea89a5d3ffbbf318ea9790926f8dfda83858544f128553c347ad143c6"},
2276 | {file = "yarl-1.7.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c63c1e208f800daad71715786bfeb1cecdc595d87e2e9b1cd234fd6e597fd71d"},
2277 | {file = "yarl-1.7.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:91cbe24300c11835ef186436363352b3257db7af165e0a767f4f17aa25761388"},
2278 | {file = "yarl-1.7.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e510dbec7c59d32eaa61ffa48173d5e3d7170a67f4a03e8f5e2e9e3971aca622"},
2279 | {file = "yarl-1.7.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3def6e681cc02397e5d8141ee97b41d02932b2bcf0fb34532ad62855eab7c60e"},
2280 | {file = "yarl-1.7.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:263c81b94e6431942b27f6f671fa62f430a0a5c14bb255f2ab69eeb9b2b66ff7"},
2281 | {file = "yarl-1.7.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:e78c91faefe88d601ddd16e3882918dbde20577a2438e2320f8239c8b7507b8f"},
2282 | {file = "yarl-1.7.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:22b2430c49713bfb2f0a0dd4a8d7aab218b28476ba86fd1c78ad8899462cbcf2"},
2283 | {file = "yarl-1.7.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e7ad9db939082f5d0b9269cfd92c025cb8f2fbbb1f1b9dc5a393c639db5bd92"},
2284 | {file = "yarl-1.7.0-cp38-cp38-win32.whl", hash = "sha256:3a31e4a8dcb1beaf167b7e7af61b88cb961b220db8d3ba1c839723630e57eef7"},
2285 | {file = "yarl-1.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:d579957439933d752358c6a300c93110f84aae67b63dd0c19dde6ecbf4056f6b"},
2286 | {file = "yarl-1.7.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:87721b549505a546eb003252185103b5ec8147de6d3ad3714d148a5a67b6fe53"},
2287 | {file = "yarl-1.7.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1fa866fa24d9f4108f9e58ea8a2135655419885cdb443e36b39a346e1181532"},
2288 | {file = "yarl-1.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1d3b8449dfedfe94eaff2b77954258b09b24949f6818dfa444b05dbb05ae1b7e"},
2289 | {file = "yarl-1.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db2372e350794ce8b9f810feb094c606b7e0e4aa6807141ac4fadfe5ddd75bb0"},
2290 | {file = "yarl-1.7.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a06d9d0b9a97fa99b84fee71d9dd11e69e21ac8a27229089f07b5e5e50e8d63c"},
2291 | {file = "yarl-1.7.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a3455c2456d6307bcfa80bc1157b8603f7d93573291f5bdc7144489ca0df4628"},
2292 | {file = "yarl-1.7.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d30d67e3486aea61bb2cbf7cf81385364c2e4f7ce7469a76ed72af76a5cdfe6b"},
2293 | {file = "yarl-1.7.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c18a4b286e8d780c3a40c31d7b79836aa93b720f71d5743f20c08b7e049ca073"},
2294 | {file = "yarl-1.7.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d54c925396e7891666cabc0199366ca55b27d003393465acef63fd29b8b7aa92"},
2295 | {file = "yarl-1.7.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:64773840952de17851a1c7346ad7f71688c77e74248d1f0bc230e96680f84028"},
2296 | {file = "yarl-1.7.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:acbf1756d9dc7cd0ae943d883be72e84e04396f6c2ff93a6ddeca929d562039f"},
2297 | {file = "yarl-1.7.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:2e48f27936aa838939c798f466c851ba4ae79e347e8dfce43b009c64b930df12"},
2298 | {file = "yarl-1.7.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1beef4734ca1ad40a9d8c6b20a76ab46e3a2ed09f38561f01e4aa2ea82cafcef"},
2299 | {file = "yarl-1.7.0-cp39-cp39-win32.whl", hash = "sha256:8ee78c9a5f3c642219d4607680a4693b59239c27a3aa608b64ef79ddc9698039"},
2300 | {file = "yarl-1.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:d750503682605088a14d29a4701548c15c510da4f13c8b17409c4097d5b04c52"},
2301 | {file = "yarl-1.7.0.tar.gz", hash = "sha256:8e7ebaf62e19c2feb097ffb7c94deb0f0c9fab52590784c8cd679d30ab009162"},
2302 | ]
2303 | zipp = [
2304 | {file = "zipp-3.6.0-py3-none-any.whl", hash = "sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc"},
2305 | {file = "zipp-3.6.0.tar.gz", hash = "sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832"},
2306 | ]
2307 |
--------------------------------------------------------------------------------
/pyproject.toml:
--------------------------------------------------------------------------------
1 | # Poetry pyproject.toml: https://python-poetry.org/docs/pyproject/
2 |
3 | [build-system]
4 | requires = ["poetry>=1.0"]
5 | build-backend = "poetry.masonry.api"
6 |
7 | [tool.poetry]
8 | name = "pytorch-pqrnn"
9 | version = "0.1.0"
10 | description = "Pytorch implementation of pQRNN"
11 | readme = "README.md"
12 | authors = [
13 | "pytorch-pqrnn "
14 | ]
15 | license = "MIT"
16 | repository = "https://github.com/ChenghaoMou/pytorch-pqrnn"
17 | homepage = "https://github.com/ChenghaoMou/pytorch-pqrnn"
18 |
19 | # Keywords description https://python-poetry.org/docs/pyproject/#keywords
20 | keywords = [] # Update me
21 |
22 | # Pypi classifiers: https://pypi.org/classifiers/
23 | classifiers = [ # Update me
24 | "Development Status :: 3 - Alpha",
25 | "Intended Audience :: Developers",
26 | "Operating System :: OS Independent",
27 | "Topic :: Software Development :: Libraries :: Python Modules",
28 | ]
29 |
30 | [tool.poetry.scripts]
31 | # Entry points for the package https://python-poetry.org/docs/pyproject/#scripts
32 | "pytorch-pqrnn" = "pytorch_pqrnn.__main__:app"
33 |
34 | [tool.poetry.dependencies]
35 | python = "^3.7"
36 | importlib_metadata = {version = "^1.6.0", python = "<3.8"}
37 | typer = {extras = ["all"], version = "^0.3.2"}
38 | rich = "^8.0.0"
39 | torch = "<=1.9.0"
40 | bitstring = "^3.1.7"
41 | pytorch-lightning = "^1.2.5"
42 | nltk = "^3.5"
43 | pandas = "^1.1.3"
44 | numpy = "^1.19.2"
45 | scikit-learn = "^0.23.2"
46 | bandit = "^1.7.0"
47 | mmh3 = "^2.5.1"
48 | datasets = "^1.4.1"
49 | grpcio = "<=1.38.1"
50 |
51 | [tool.poetry.dev-dependencies]
52 | darglint = "^1.5.4"
53 | isort = "^5.5.4"
54 | pyupgrade = "^2.7.2"
55 | black = "^20.8b1"
56 | mypy = "^0.782"
57 | bandit = "^1.6.2"
58 | safety = "^1.9.0"
59 | pytest = "^6.0.1"
60 | pylint = "^2.5.3"
61 | pydocstyle = "^5.0.2"
62 | pre-commit = "^2.7.1"
63 |
64 | [tool.black]
65 | # https://github.com/psf/black
66 | line-length = 80
67 | target-version = ["py37"]
68 |
69 | [tool.isort]
70 | # https://github.com/timothycrosley/isort/
71 | known_typing = "typing,types,typing_extensions,mypy,mypy_extensions"
72 | sections = "FUTURE,TYPING,STDLIB,THIRDPARTY,FIRSTPARTY,LOCALFOLDER"
73 | include_trailing_comma = true
74 | default_section = "FIRSTPARTY"
75 | multi_line_output = 3
76 | indent = 4
77 | force_grid_wrap = 0
78 | use_parentheses = true
79 | line_length = 80
80 |
--------------------------------------------------------------------------------
/pytorch_pqrnn/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChenghaoMou/pytorch-pQRNN/888d794251a483322ced54b3396d9e32214b32a6/pytorch_pqrnn/__init__.py
--------------------------------------------------------------------------------
/pytorch_pqrnn/dataset.py:
--------------------------------------------------------------------------------
1 | from typing import Any, Dict, List, Tuple, Union
2 |
3 | from pathlib import Path
4 |
5 | import numpy as np
6 | import pandas as pd
7 | import regex as re
8 | import torch
9 | from datasets import load_dataset
10 | from pytorch_pqrnn.utils import murmurhash
11 | from rich.console import Console
12 | from sklearn.model_selection import train_test_split
13 | from torch.utils.data import DataLoader, Dataset
14 |
15 | REGEX0 = re.compile(r"([\p{S}\p{P}]+)")
16 | REGEX1 = re.compile(r" +")
17 |
18 | console = Console()
19 |
20 |
21 | class DummyDataset(Dataset):
22 | def __init__(
23 | self,
24 | x: Union[pd.DataFrame, List[Dict[str, Any]]],
25 | has_label: bool = True,
26 | feature_size: int = 512,
27 | add_eos_tag: bool = True,
28 | add_bos_tag: bool = True,
29 | max_seq_len: int = 256,
30 | label2index: Dict[str, int] = None,
31 | ):
32 | """Convert the dataset into a dummy torch dataset.
33 |
34 | Parameters
35 | ----------
36 | x : Union[pd.DataFrame, List[Dict[str, Any]]]
37 | A dataframe or a list of dicts
38 | has_label : bool, optional
39 | Whether the dataframe or each dict has a label key/column, by default True
40 | feature_size : int, optional
41 | Dimension of the hash, the output dimension would be half of the hash size(2b -> b), by default 512
42 | add_eos_tag : bool, optional
43 | Add a special eos tag, by default True
44 | add_bos_tag : bool, optional
45 | Add a special bos tag, by default True
46 | max_seq_len : int, optional
47 | Maximum sequence length, by default 256
48 | label2index : Dict[str, int], optional
49 | Mapping that converts labels into indices, by default None
50 |
51 | Examples
52 | --------
53 | >>> data = [{'text': 'Hello world!', 'label': 'positive'}]
54 | >>> dataset = DummyDataset(data, has_label=True, feature_size=512, label2index={'positive': 1, 'negative': 0})
55 | >>> hash, label = dataset[0]
56 | >>> assert label == 1, label
57 | >>> assert len(hash[0]) == 256, len(hash[0])
58 | """
59 | self.feature_size = feature_size
60 | self.add_eos_tag = add_eos_tag
61 | self.add_bos_tag = add_bos_tag
62 | self.max_seq_len = max_seq_len
63 | self.label2index = label2index
64 | self.has_label = has_label
65 |
66 | self.x = x
67 | self.eos_tag_ = 1 if add_eos_tag else 0
68 | self.bos_tag_ = 1 if add_bos_tag else 0
69 | self.eos_tag = ["EOS"] if add_eos_tag else []
70 | self.bos_tag = ["BOS"] if add_bos_tag else []
71 |
72 | def __len__(self):
73 | return len(self.x)
74 |
75 | def __getitem__(self, idx):
76 | line = self.x[idx]
77 | text = line["text"]
78 | if self.has_label:
79 | label = line["label"]
80 | if self.label2index:
81 | label = self.label2index[label]
82 | else:
83 | label = None
84 |
85 | tokens = (
86 | REGEX1.sub(" ", REGEX0.sub(r" \1 ", text.lower()))
87 | .strip()
88 | .split(" ")
89 | )
90 |
91 | curr_tokens = self.bos_tag + tokens[: self.max_seq_len] + self.eos_tag
92 | curr_hashings = []
93 | for j in range(len(curr_tokens)):
94 | curr_hashing = murmurhash(
95 | curr_tokens[j], feature_size=self.feature_size
96 | )
97 | curr_hashings.append(curr_hashing[: self.feature_size // 2])
98 | if label is not None:
99 | return curr_hashings, label
100 | else:
101 | return curr_hashings
102 |
103 |
104 | def collate_fn(examples: List[Any]) -> Tuple[torch.Tensor, ...]:
105 | """Batching examples.
106 |
107 | Parameters
108 | ----------
109 | examples : List[Any]
110 | List of examples
111 |
112 | Returns
113 | -------
114 | Tuple[torch.Tensor, ...]
115 | Tuple of hash tensor, length tensor, and label tensor
116 | """
117 |
118 | projection = []
119 | labels = []
120 |
121 | for example in examples:
122 | if not isinstance(example, tuple):
123 | projection.append(np.asarray(example))
124 | else:
125 | projection.append(np.asarray(example[0]))
126 | labels.append(example[1])
127 | lengths = torch.from_numpy(np.asarray(list(map(len, examples)))).long()
128 | projection_tensor = np.zeros(
129 | (len(projection), max(map(len, projection)), len(projection[0][0]))
130 | )
131 | for i, doc in enumerate(projection):
132 | projection_tensor[i, : len(doc), :] = doc
133 |
134 | return (
135 | torch.from_numpy(projection_tensor).float(),
136 | lengths,
137 | torch.from_numpy(np.asarray(labels)),
138 | )
139 |
140 |
141 | def create_dataloaders(
142 | task: str = "yelp2",
143 | batch_size: int = 32,
144 | feature_size: int = 128,
145 | add_eos_tag: bool = True,
146 | add_bos_tag: bool = True,
147 | max_seq_len: int = 256,
148 | label2index: Dict[str, int] = None,
149 | data_path: Union[str, Path] = "data",
150 | ) -> Tuple[DataLoader, DataLoader]:
151 | """Create train and eval dataloaders.
152 |
153 | Parameters
154 | ----------
155 | task : str, optional
156 | Name from predefined tasks, by default "yelp2"
157 | batch_size : int, optional
158 | Size of the batch, by default 32
159 | feature_size : int, optional
160 | Dimension of the features, by default 128
161 | add_eos_tag : bool, optional
162 | Add a special eos tag, by default True
163 | add_bos_tag : bool, optional
164 | Add a special bos tag, by default True
165 | max_seq_len : int, optional
166 | Maximum sequence length, by default 256
167 | label2index : Dict[str, int], optional
168 | Mapping that converts labels to indices, by default None
169 | data_path: str, optional
170 | Path to the data files
171 |
172 | Returns
173 | -------
174 | Tuple[DataLoader, DataLoader]
175 | Train and eval dataloaders
176 |
177 | Raises
178 | ------
179 | Exception
180 | Unsupported task
181 | """
182 |
183 | data_path = Path(data_path)
184 |
185 | if task == "yelp2":
186 | dataset = load_dataset("yelp_polarity")
187 | elif task == "yelp5":
188 | data = pd.read_json(data_path / "yelp_reviews.json", lines=True)
189 | data["label"] = data["stars"] - 1
190 | data["label"] = data["label"].astype(int)
191 | train, val = train_test_split(
192 | data, test_size=0.1, stratify=data["label"]
193 | )
194 | dataset = {
195 | "train": train.to_dict("records"),
196 | "test": val.to_dict("records"),
197 | }
198 | elif task == "toxic":
199 | train = pd.read_csv(data_path / "train.csv")
200 | labels = pd.read_csv(data_path / "test_labels.csv")
201 | test = pd.read_csv(data_path / "test.csv")
202 | labels["id"] = labels["id"].astype(str)
203 | test["id"] = test["id"].astype(str)
204 | test = test.merge(labels)
205 | test = test[test["toxic"] != -1]
206 |
207 | train["text"] = train["comment_text"]
208 | train["label"] = train[
209 | [
210 | "toxic",
211 | "severe_toxic",
212 | "obscene",
213 | "threat",
214 | "insult",
215 | "identity_hate",
216 | ]
217 | ].values.tolist()
218 |
219 | test["text"] = test["comment_text"]
220 | test["label"] = test[
221 | [
222 | "toxic",
223 | "severe_toxic",
224 | "obscene",
225 | "threat",
226 | "insult",
227 | "identity_hate",
228 | ]
229 | ].values.tolist()
230 |
231 | dataset = {
232 | "train": train[["text", "label"]].to_dict("records"),
233 | "test": test[["text", "label"]].to_dict("records"),
234 | }
235 | else:
236 | raise Exception(f"Unsupported task: {task} VS. {{yelp2, yelp5}}")
237 |
238 | train_dataset = DummyDataset(
239 | dataset["train"],
240 | feature_size=feature_size,
241 | add_eos_tag=add_eos_tag,
242 | add_bos_tag=add_bos_tag,
243 | max_seq_len=max_seq_len,
244 | label2index=label2index,
245 | )
246 |
247 | val_dataset = DummyDataset(
248 | dataset["test"],
249 | feature_size=feature_size,
250 | add_eos_tag=add_eos_tag,
251 | add_bos_tag=add_bos_tag,
252 | max_seq_len=max_seq_len,
253 | label2index=label2index,
254 | )
255 |
256 | return (
257 | DataLoader(
258 | train_dataset,
259 | batch_size=batch_size,
260 | collate_fn=collate_fn,
261 | num_workers=4,
262 | ),
263 | DataLoader(
264 | val_dataset,
265 | batch_size=batch_size,
266 | collate_fn=collate_fn,
267 | num_workers=4,
268 | ),
269 | )
270 |
--------------------------------------------------------------------------------
/pytorch_pqrnn/model.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | # @Date : 2021-01-01 16:18:28
3 | # @Author : Chenghao Mou (mouchenghao@gmail.com)
4 | # @Description : pQRNN
5 |
6 | from typing import Any, Dict, List
7 |
8 | import math
9 | import warnings
10 | from functools import partial
11 |
12 | with warnings.catch_warnings():
13 | warnings.filterwarnings("ignore")
14 | import numpy as np
15 | import pytorch_lightning as pl
16 | import torch
17 | import torch.nn as nn
18 | from pytorch_lightning.metrics.functional import accuracy, auroc
19 | from pytorch_lightning.metrics.functional import f1 as f1_score
20 | from torch.nn import TransformerEncoder, TransformerEncoderLayer
21 | from torch.optim.lr_scheduler import ReduceLROnPlateau
22 |
23 | try:
24 | from torchqrnn import QRNN
25 | except ImportError:
26 | from torch.nn import LSTM as QRNN
27 |
28 |
29 | class PositionalEncoding(nn.Module):
30 | def __init__(self, d_model, dropout=0.1, max_len=5000):
31 | super().__init__()
32 | self.dropout = nn.Dropout(p=dropout)
33 |
34 | pe = torch.zeros(max_len, d_model)
35 | position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1)
36 | div_term = torch.exp(
37 | torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model)
38 | )
39 | pe[:, 0::2] = torch.sin(position * div_term)
40 | pe[:, 1::2] = torch.cos(position * div_term)
41 | pe = pe.unsqueeze(0).transpose(0, 1)
42 | self.register_buffer("pe", pe)
43 |
44 | def forward(self, x):
45 | x = x + self.pe[: x.size(0), :]
46 | return self.dropout(x)
47 |
48 |
49 | class PQRNN(pl.LightningModule):
50 | def __init__(
51 | self,
52 | b: int = 512,
53 | d: int = 64,
54 | num_layers: int = 4,
55 | fc_sizes: List[int] = None,
56 | output_size: int = 2,
57 | lr: float = 0.025,
58 | dropout: float = 0.5,
59 | rnn_type: str = "LSTM",
60 | multilabel: bool = False,
61 | nhead: int = 8,
62 | ):
63 | super().__init__()
64 | if fc_sizes is None:
65 | fc_sizes = [128, 64]
66 |
67 | self.hparams: Dict[str, Any] = {
68 | "b": b,
69 | "d": d,
70 | "fc_size": fc_sizes,
71 | "lr": lr,
72 | "output_size": output_size,
73 | "dropout": dropout,
74 | "rnn_type": rnn_type.upper(),
75 | "multilabel": multilabel,
76 | "nhead": nhead,
77 | }
78 |
79 | layers: List[nn.Module] = []
80 | for x, y in zip([d] + fc_sizes, fc_sizes + [output_size]):
81 | layers.append(nn.ReLU())
82 | layers.append(nn.Linear(x, y))
83 |
84 | self.tanh = nn.Hardtanh()
85 | if self.hparams["rnn_type"] in {"LSTM", "GRU", "QRNN"}:
86 | self.hidden = {
87 | "LSTM": partial(nn.LSTM, bidirectional=True),
88 | "GRU": partial(nn.GRU, bidirectional=True),
89 | "QRNN": QRNN,
90 | }[self.hparams["rnn_type"]](
91 | b, d, num_layers=num_layers, dropout=dropout
92 | )
93 | else:
94 | self.pos_encoder = PositionalEncoding(d_model=b, dropout=dropout)
95 | encoder_layers = TransformerEncoderLayer(
96 | d_model=b, nhead=nhead, dropout=dropout
97 | )
98 | self.hidden = TransformerEncoder(
99 | encoder_layers, num_layers=num_layers
100 | )
101 | self.linear = nn.Linear(b, d)
102 |
103 | self.output = nn.ModuleList(layers)
104 | self.loss = (
105 | nn.CrossEntropyLoss()
106 | if not self.hparams["multilabel"]
107 | else nn.BCEWithLogitsLoss()
108 | )
109 |
110 | def generate_square_subsequent_mask(self, sz):
111 | mask = (torch.triu(torch.ones(sz, sz)) == 1).transpose(0, 1)
112 | mask = (
113 | mask.float()
114 | .masked_fill(mask == 0, float("-inf"))
115 | .masked_fill(mask == 1, float(0.0))
116 | )
117 | return mask
118 |
119 | def forward(self, projection):
120 | features = self.tanh(projection)
121 | features = features.transpose(0, 1)
122 | if self.hparams["rnn_type"] in {"LSTM", "GRU", "QRNN"}:
123 | output, _ = self.hidden(features)
124 | if self.hparams["rnn_type"] != "QRNN":
125 | output = (
126 | output[..., : output.shape[-1] // 2]
127 | + output[..., output.shape[-1] // 2 :]
128 | )
129 | else:
130 | features = features * math.sqrt(self.hparams["b"])
131 | features = self.pos_encoder(features)
132 | output = self.hidden(
133 | features,
134 | self.generate_square_subsequent_mask(features.size(0)).to(
135 | features.device
136 | ),
137 | )
138 | output = self.linear(output)
139 | output = output.transpose(0, 1)
140 | logits = torch.mean(output, dim=1)
141 | for layer in self.output:
142 | logits = layer(logits)
143 | return logits
144 |
145 | def training_step(self, batch, batch_idx):
146 | projection, _, labels = batch
147 | logits = self.forward(projection)
148 | self.log(
149 | "loss",
150 | self.loss(
151 | logits,
152 | labels.type(
153 | logits.dtype if self.hparams["multilabel"] else labels.dtype
154 | ),
155 | )
156 | .detach()
157 | .cpu()
158 | .item(),
159 | )
160 | return {
161 | "loss": self.loss(
162 | logits,
163 | labels.type(
164 | logits.dtype if self.hparams["multilabel"] else labels.dtype
165 | ),
166 | )
167 | }
168 |
169 | def validation_step(self, batch, batch_idx):
170 | projection, _, labels = batch
171 | logits = self.forward(projection)
172 |
173 | return {"logits": logits, "labels": labels}
174 |
175 | def validation_epoch_end(self, outputs):
176 |
177 | logits = torch.cat([o["logits"] for o in outputs], dim=0)
178 | labels = torch.cat([o["labels"] for o in outputs], dim=0)
179 | if self.hparams["multilabel"]:
180 | self.log(
181 | "val_auroc",
182 | np.mean(
183 | [
184 | auroc(
185 | torch.sigmoid(logits[:, i]),
186 | labels[:, i],
187 | pos_label=1,
188 | )
189 | .detach()
190 | .cpu()
191 | .item()
192 | for i in range(logits.shape[1])
193 | ]
194 | ),
195 | prog_bar=True,
196 | )
197 | else:
198 | self.log(
199 | "val_f1",
200 | f1_score(
201 | torch.argmax(logits, dim=1),
202 | labels,
203 | num_classes=self.hparams["output_size"],
204 | class_reduction="macro",
205 | )
206 | .detach()
207 | .cpu()
208 | .item(),
209 | prog_bar=True,
210 | )
211 | self.log(
212 | "val_acc",
213 | accuracy(torch.argmax(logits, dim=1), labels)
214 | .detach()
215 | .cpu()
216 | .item(),
217 | prog_bar=True,
218 | )
219 | self.log(
220 | "val_loss",
221 | self.loss(
222 | logits,
223 | labels.type(
224 | logits.dtype if self.hparams["multilabel"] else labels.dtype
225 | ),
226 | )
227 | .detach()
228 | .cpu()
229 | .item(),
230 | prog_bar=True,
231 | )
232 |
233 | def configure_optimizers(self):
234 | optimizer = torch.optim.Adam(self.parameters(), lr=self.hparams["lr"])
235 | scheduler = ReduceLROnPlateau(optimizer, "min")
236 | return {
237 | "optimizer": optimizer,
238 | "lr_scheduler": scheduler,
239 | "monitor": "val_loss",
240 | }
241 |
--------------------------------------------------------------------------------
/pytorch_pqrnn/utils.py:
--------------------------------------------------------------------------------
1 | from typing import List
2 |
3 | import mmh3
4 |
5 | kMul: int = 0xC6A4A7935BD1E995
6 | kMul2: int = 0x9E3779B97F4A7835
7 |
8 | kMappingTable: List[int] = [0, 1, -1, 0]
9 |
10 |
11 | def shift_mix(val):
12 | return val ^ (val >> 47)
13 |
14 |
15 | def get_more_bits(hash1, hash2):
16 |
17 | hash1 = shift_mix(hash1) * kMul
18 | hash2 ^= hash1
19 | newhigh = shift_mix(hash1)
20 | newlow = shift_mix(hash2 * kMul2) * kMul2
21 |
22 | return newlow, newhigh
23 |
24 |
25 | def murmurhash(token: str, feature_size: int = 512):
26 |
27 | hash_low = 0
28 | hash_high = 0
29 | hash_codes = []
30 |
31 | for i in range(0, feature_size, 64):
32 | if i == 0:
33 | hash_low, hash_high = mmh3.hash64(token, signed=False)
34 | else:
35 | hash_low, hash_high = get_more_bits(hash_low, hash_high)
36 | hash_codes.append(hash_low)
37 | hash_codes.append(hash_high)
38 |
39 | projection: List[int] = []
40 | for code in hash_codes:
41 | while code:
42 | if len(projection) >= feature_size // 2:
43 | break
44 | projection.append(kMappingTable[code & 3])
45 | code = code >> 2
46 | if len(projection) >= feature_size // 2:
47 | break
48 | return projection[: feature_size // 2]
49 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | absl-py==0.12.0
2 | aiohttp==3.7.4.post0
3 | async-timeout==3.0.1
4 | attrs==20.3.0
5 | bandit==1.7.0
6 | bitstring==3.1.7
7 | cachetools==4.2.1
8 | certifi==2020.12.5
9 | chardet==4.0.0
10 | click==7.1.2
11 | colorama==0.4.4
12 | colorama==0.4.4; platform_system == "Windows"
13 | commonmark==0.9.1
14 | datasets==1.5.0
15 | dill==0.3.3
16 | filelock==3.0.12
17 | fsspec==0.8.7
18 | future==0.18.2
19 | gitdb==4.0.7
20 | gitpython==3.1.14
21 | google-auth-oauthlib==0.4.3
22 | google-auth==1.28.0
23 | grpcio==1.36.1
24 | huggingface-hub==0.0.7
25 | idna==2.10
26 | importlib-metadata==1.7.0; python_version < "3.8"
27 | joblib==1.0.1
28 | markdown==3.3.4
29 | mmh3==2.5.1
30 | multidict==5.1.0
31 | multiprocess==0.70.11.1
32 | nltk==3.5
33 | numpy==1.20.2
34 | oauthlib==3.1.0
35 | pandas==1.1.5
36 | pbr==5.5.1
37 | protobuf==3.15.6
38 | pyarrow==3.0.0
39 | pyasn1-modules==0.2.8
40 | pyasn1==0.4.8
41 | pygments==2.8.1
42 | pyhash==0.9.3
43 | python-dateutil==2.8.1
44 | pytorch-lightning==1.2.5
45 | pytz==2021.1
46 | regex==2021.3.17
47 | requests-oauthlib==1.3.0
48 | requests==2.25.1
49 | rich==8.0.0
50 | rsa==4.7.2; python_version >= "3.6"
51 | scikit-learn==0.23.2
52 | scipy==1.6.1
53 | shellingham==1.4.0
54 | six==1.15.0
55 | smmap==4.0.0
56 | stevedore==3.3.0
57 | tensorboard-plugin-wit==1.8.0
58 | tensorboard==2.4.1
59 | threadpoolctl==2.1.0
60 | torch==1.7.1
61 | torchmetrics==0.2.0
62 | tqdm==4.49.0
63 | typer==0.3.2
64 | typing-extensions==3.7.4.3
65 | typing-extensions==3.7.4.3; python_version < "3.8"
66 | urllib3==1.26.4
67 | werkzeug==1.0.1
68 | xxhash==2.0.0
69 | yarl==1.6.3
70 | zipp==3.4.1; python_version < "3.8"
71 |
--------------------------------------------------------------------------------
/run.py:
--------------------------------------------------------------------------------
1 | import click
2 | import pytorch_lightning as pl
3 | import torch
4 | from pytorch_lightning import loggers as pl_loggers
5 | from pytorch_lightning.callbacks import EarlyStopping, ModelCheckpoint
6 | from pytorch_lightning.plugins import DeepSpeedPlugin
7 | from pytorch_pqrnn.dataset import create_dataloaders
8 | from pytorch_pqrnn.model import PQRNN
9 | from rich.console import Console
10 |
11 | console = Console()
12 |
13 |
14 | @click.command()
15 | @click.option(
16 | "--task",
17 | type=click.Choice(["yelp2", "yelp5", "toxic"], case_sensitive=False),
18 | default="yelp5",
19 | show_default=True,
20 | )
21 | @click.option("--b", type=int, default=128, show_default=True)
22 | @click.option("--d", type=int, default=96, show_default=True)
23 | @click.option("--num_layers", type=int, default=2, show_default=True)
24 | @click.option("--batch_size", type=int, default=512, show_default=True)
25 | @click.option("--dropout", type=float, default=0.5, show_default=True)
26 | @click.option("--lr", type=float, default=1e-3, show_default=True)
27 | @click.option("--nhead", type=int, default=4, show_default=True)
28 | @click.option(
29 | "--rnn_type",
30 | type=click.Choice(
31 | ["LSTM", "GRU", "QRNN", "Transformer"], case_sensitive=False
32 | ),
33 | default="GRU",
34 | show_default=True,
35 | )
36 | @click.option("--data_path", type=str, default="data")
37 | def train(
38 | task: str,
39 | b: int,
40 | d: int,
41 | num_layers: int,
42 | batch_size: int,
43 | dropout: float,
44 | lr: float,
45 | nhead: int,
46 | rnn_type: str,
47 | data_path: str,
48 | ):
49 |
50 | deepspeed_config = {
51 | "zero_allow_untested_optimizer": True,
52 | "optimizer": {
53 | "type": "Adam",
54 | "params": {
55 | "lr": lr,
56 | "betas": [0.998, 0.999],
57 | "eps": 1e-5,
58 | "weight_decay": 1e-9,
59 | },
60 | },
61 | "scheduler": {
62 | "type": "WarmupLR",
63 | "params": {
64 | "last_batch_iteration": -1,
65 | "warmup_min_lr": 0,
66 | "warmup_max_lr": 3e-5,
67 | "warmup_num_steps": 100,
68 | },
69 | },
70 | "zero_optimization": {
71 | "stage": 2, # Enable Stage 2 ZeRO (Optimizer/Gradient state partitioning)
72 | "cpu_offload": True, # Enable Offloading optimizer state/calculation to the host CPU
73 | "contiguous_gradients": True, # Reduce gradient fragmentation.
74 | "overlap_comm": True, # Overlap reduce/backward operation of gradients for speed.
75 | "allgather_bucket_size": 2e8, # Number of elements to all gather at once.
76 | "reduce_bucket_size": 2e8, # Number of elements we reduce/allreduce at once.
77 | },
78 | }
79 |
80 | train_dataloader, dev_dataloader = create_dataloaders(
81 | task,
82 | batch_size=batch_size,
83 | feature_size=b * 2,
84 | label2index=None,
85 | data_path=data_path,
86 | )
87 | num_classes = {"yelp2": 2, "yelp5": 5, "toxic": 6}.get(task, 2)
88 |
89 | model = PQRNN(
90 | b=b,
91 | d=d,
92 | lr=lr,
93 | num_layers=num_layers,
94 | dropout=dropout,
95 | output_size=num_classes,
96 | rnn_type=rnn_type,
97 | multilabel=task == "toxic",
98 | nhead=nhead,
99 | )
100 |
101 | trainer = pl.Trainer(
102 | logger=pl_loggers.TensorBoardLogger("lightning_logs", log_graph=False),
103 | callbacks=[EarlyStopping(monitor="val_loss", patience=5)],
104 | checkpoint_callback=ModelCheckpoint(
105 | "./checkpoints/", monitor="val_loss"
106 | ),
107 | min_epochs=2,
108 | deterministic=True,
109 | val_check_interval=0.2,
110 | gpus=list(range(torch.cuda.device_count()))
111 | if torch.cuda.is_available()
112 | else None,
113 | gradient_clip_val=1.0,
114 | accelerator="ddp" if torch.cuda.is_available() else None,
115 | precision=16 if torch.cuda.is_available() else 32,
116 | accumulate_grad_batches=2 if rnn_type == "Transformer" else 1,
117 | )
118 |
119 | trainer.fit(model, train_dataloader, dev_dataloader)
120 |
121 |
122 | if __name__ == "__main__":
123 |
124 | train()
125 |
--------------------------------------------------------------------------------