├── .gitignore ├── LICENSE ├── README.md ├── poetry.lock ├── pyproject.toml ├── requirements.txt └── scripts ├── 00_example.py ├── 01_etfs.py ├── 02_crypto.py ├── 03_russell_2000.py ├── __init__.py └── common ├── run.py └── tradingview.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 | # VS code 132 | .vscode 133 | .DS_Store 134 | 135 | # Chromedriver 136 | chromedriver* 137 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Matt G 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 | # tradingview-selenium-data 2 | 3 | Simple Selenium (Python Helium) script to pull TradingView data into CSV files 4 | 5 | ## Objective 6 | 7 | In order to perform useful backtesting and also create training data, it's useful to be able to download **TradingView** data as CSV data. This script uses a Python implementation of Selenum called Helium to pull of this data into CSV files. 8 | 9 | Why use TradingView? 10 | 11 | - TradingView can provide longer time series than some of the other data APIs, although you need to scroll left for it to load that data. 12 | 13 | - Also TradingView will download data for your indicators into the CSV file also and that allows you to use that data in your backtests or ML training data. 14 | 15 | - It allows you to work together with others that use TradingView or Pinescript for building out potential strategies and indicators 16 | 17 | > _WARNING_ - Scraping data this way does not seem to be against [TradingView's current use policy](https://www.tradingview.com/policies/) but that might change. So check the use policy. And in any event, excessive scraping of any data is not the polite thing to do so keep this to the minimum and do so sparingly. 18 | 19 | ## Getting started 20 | 21 | ### Prerequisites 22 | 23 | 1. You need a paid **TradingView** account with permissions to download data as a CSV. You know if you have the right sort of account if you can use the _Export chart data ..._ option in the TradingView UI 24 | 25 | 1. Python 3.8+ installed on your machine and some ability to use it. 26 | 27 | 1. Google Chrome installed 28 | 29 | 1. Relevant chromedriver installed for your version of Chrome - https://chromedriver.chromium.org/downloads 30 | 31 | ### Installation 32 | 33 | Clone the repo 34 | 35 | git clone https://github.com/ttamg/tradingview-selenium-data.git 36 | 37 | Either, install using poetry. From the cloned project directory 38 | 39 | poetry install 40 | 41 | Or alternatively install using pip from the cloned project directory 42 | 43 | pip install -r requirements.txt 44 | 45 | ## Scraping data 46 | 47 | The scripts use the `TradingView` class that is in the `scripts.common.tradingview` module. This is a simple set of **helium** methods that interact with the **TradingView** UI 48 | 49 | The `TradingView` class has methods that do the following: 50 | 51 | - Connect to TradingView and log in 52 | - Navigate to the chart layout you wish to download (with all the indicators you have defined) 53 | - Switch the asset or periodicity of the candles 54 | - Scroll to load the candles from a particular start date (so as to fetch more data) 55 | - Download the data as CSV 56 | 57 | The class does not do anything particularly special beyond scraping and replicates what you would do with the UI yourself in the browser. 58 | 59 | The `run()` method in the `scripts.common.run` module is a method that loops over the assets and periodicities you provide to fetch and download the market data you require. It calls the `TradingView` class at the relevant points. 60 | 61 | See the Python code in `scripts.common` for more information. 62 | 63 | > _NOTE_ - some of the HTML tags on TradingView are a bit brittle so this may need some tweaks from time to time as TradingView update their UI. 64 | 65 | ## Scripts 66 | 67 | See the example scripts in the `scripts` folder for examples on how to scrape data. 68 | 69 | If all is set up correctly with your chromedriver the `00_example.py` file should run the script and download a few test CSV files 70 | 71 | python 00_example.py 72 | 73 | ## Issues 74 | 75 | Note that the asset given picks up the top of the list asset with that ticker. On TradingView there are many assets options with the same ticker so this may not pick up quite what you want. It is not obvious how this can be improved without significant work. 76 | -------------------------------------------------------------------------------- /poetry.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "anyio" 3 | version = "3.5.0" 4 | description = "High level compatibility layer for multiple asynchronous event loop implementations" 5 | category = "dev" 6 | optional = false 7 | python-versions = ">=3.6.2" 8 | 9 | [package.dependencies] 10 | idna = ">=2.8" 11 | sniffio = ">=1.1" 12 | 13 | [package.extras] 14 | doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] 15 | test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=6.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] 16 | trio = ["trio (>=0.16)"] 17 | 18 | [[package]] 19 | name = "appnope" 20 | version = "0.1.3" 21 | description = "Disable App Nap on macOS >= 10.9" 22 | category = "dev" 23 | optional = false 24 | python-versions = "*" 25 | 26 | [[package]] 27 | name = "argon2-cffi" 28 | version = "21.3.0" 29 | description = "The secure Argon2 password hashing algorithm." 30 | category = "dev" 31 | optional = false 32 | python-versions = ">=3.6" 33 | 34 | [package.dependencies] 35 | argon2-cffi-bindings = "*" 36 | 37 | [package.extras] 38 | dev = ["pre-commit", "cogapp", "tomli", "coverage[toml] (>=5.0.2)", "hypothesis", "pytest", "sphinx", "sphinx-notfound-page", "furo"] 39 | docs = ["sphinx", "sphinx-notfound-page", "furo"] 40 | tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest"] 41 | 42 | [[package]] 43 | name = "argon2-cffi-bindings" 44 | version = "21.2.0" 45 | description = "Low-level CFFI bindings for Argon2" 46 | category = "dev" 47 | optional = false 48 | python-versions = ">=3.6" 49 | 50 | [package.dependencies] 51 | cffi = ">=1.0.1" 52 | 53 | [package.extras] 54 | dev = ["pytest", "cogapp", "pre-commit", "wheel"] 55 | tests = ["pytest"] 56 | 57 | [[package]] 58 | name = "astroid" 59 | version = "2.11.2" 60 | description = "An abstract syntax tree for Python with inference support." 61 | category = "dev" 62 | optional = false 63 | python-versions = ">=3.6.2" 64 | 65 | [package.dependencies] 66 | lazy-object-proxy = ">=1.4.0" 67 | typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""} 68 | wrapt = ">=1.11,<2" 69 | 70 | [[package]] 71 | name = "asttokens" 72 | version = "2.0.5" 73 | description = "Annotate AST trees with source code positions" 74 | category = "dev" 75 | optional = false 76 | python-versions = "*" 77 | 78 | [package.dependencies] 79 | six = "*" 80 | 81 | [package.extras] 82 | test = ["astroid", "pytest"] 83 | 84 | [[package]] 85 | name = "atomicwrites" 86 | version = "1.4.0" 87 | description = "Atomic file writes." 88 | category = "dev" 89 | optional = false 90 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 91 | 92 | [[package]] 93 | name = "attrs" 94 | version = "21.4.0" 95 | description = "Classes Without Boilerplate" 96 | category = "dev" 97 | optional = false 98 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 99 | 100 | [package.extras] 101 | 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", "cloudpickle"] 102 | docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] 103 | tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] 104 | tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] 105 | 106 | [[package]] 107 | name = "babel" 108 | version = "2.9.1" 109 | description = "Internationalization utilities" 110 | category = "dev" 111 | optional = false 112 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 113 | 114 | [package.dependencies] 115 | pytz = ">=2015.7" 116 | 117 | [[package]] 118 | name = "backcall" 119 | version = "0.2.0" 120 | description = "Specifications for callback functions passed in to an API" 121 | category = "dev" 122 | optional = false 123 | python-versions = "*" 124 | 125 | [[package]] 126 | name = "beautifulsoup4" 127 | version = "4.11.1" 128 | description = "Screen-scraping library" 129 | category = "dev" 130 | optional = false 131 | python-versions = ">=3.6.0" 132 | 133 | [package.dependencies] 134 | soupsieve = ">1.2" 135 | 136 | [package.extras] 137 | html5lib = ["html5lib"] 138 | lxml = ["lxml"] 139 | 140 | [[package]] 141 | name = "black" 142 | version = "22.3.0" 143 | description = "The uncompromising code formatter." 144 | category = "dev" 145 | optional = false 146 | python-versions = ">=3.6.2" 147 | 148 | [package.dependencies] 149 | click = ">=8.0.0" 150 | mypy-extensions = ">=0.4.3" 151 | pathspec = ">=0.9.0" 152 | platformdirs = ">=2" 153 | tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} 154 | typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} 155 | 156 | [package.extras] 157 | colorama = ["colorama (>=0.4.3)"] 158 | d = ["aiohttp (>=3.7.4)"] 159 | jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] 160 | uvloop = ["uvloop (>=0.15.2)"] 161 | 162 | [[package]] 163 | name = "bleach" 164 | version = "5.0.0" 165 | description = "An easy safelist-based HTML-sanitizing tool." 166 | category = "dev" 167 | optional = false 168 | python-versions = ">=3.7" 169 | 170 | [package.dependencies] 171 | six = ">=1.9.0" 172 | webencodings = "*" 173 | 174 | [package.extras] 175 | css = ["tinycss2 (>=1.1.0)"] 176 | dev = ["pip-tools (==6.5.1)", "pytest (==7.1.1)", "flake8 (==4.0.1)", "tox (==3.24.5)", "sphinx (==4.3.2)", "twine (==4.0.0)", "wheel (==0.37.1)", "hashin (==0.17.0)", "black (==22.3.0)", "mypy (==0.942)"] 177 | 178 | [[package]] 179 | name = "certifi" 180 | version = "2021.10.8" 181 | description = "Python package for providing Mozilla's CA Bundle." 182 | category = "dev" 183 | optional = false 184 | python-versions = "*" 185 | 186 | [[package]] 187 | name = "cffi" 188 | version = "1.15.0" 189 | description = "Foreign Function Interface for Python calling C code." 190 | category = "dev" 191 | optional = false 192 | python-versions = "*" 193 | 194 | [package.dependencies] 195 | pycparser = "*" 196 | 197 | [[package]] 198 | name = "charset-normalizer" 199 | version = "2.0.12" 200 | description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." 201 | category = "dev" 202 | optional = false 203 | python-versions = ">=3.5.0" 204 | 205 | [package.extras] 206 | unicode_backport = ["unicodedata2"] 207 | 208 | [[package]] 209 | name = "click" 210 | version = "8.1.2" 211 | description = "Composable command line interface toolkit" 212 | category = "dev" 213 | optional = false 214 | python-versions = ">=3.7" 215 | 216 | [package.dependencies] 217 | colorama = {version = "*", markers = "platform_system == \"Windows\""} 218 | 219 | [[package]] 220 | name = "colorama" 221 | version = "0.4.4" 222 | description = "Cross-platform colored terminal text." 223 | category = "dev" 224 | optional = false 225 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 226 | 227 | [[package]] 228 | name = "debugpy" 229 | version = "1.6.0" 230 | description = "An implementation of the Debug Adapter Protocol for Python" 231 | category = "dev" 232 | optional = false 233 | python-versions = ">=3.7" 234 | 235 | [[package]] 236 | name = "decorator" 237 | version = "5.1.1" 238 | description = "Decorators for Humans" 239 | category = "dev" 240 | optional = false 241 | python-versions = ">=3.5" 242 | 243 | [[package]] 244 | name = "defusedxml" 245 | version = "0.7.1" 246 | description = "XML bomb protection for Python stdlib modules" 247 | category = "dev" 248 | optional = false 249 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 250 | 251 | [[package]] 252 | name = "dill" 253 | version = "0.3.4" 254 | description = "serialize all of python" 255 | category = "dev" 256 | optional = false 257 | python-versions = ">=2.7, !=3.0.*" 258 | 259 | [package.extras] 260 | graph = ["objgraph (>=1.7.2)"] 261 | 262 | [[package]] 263 | name = "entrypoints" 264 | version = "0.4" 265 | description = "Discover and load entry points from installed packages." 266 | category = "dev" 267 | optional = false 268 | python-versions = ">=3.6" 269 | 270 | [[package]] 271 | name = "executing" 272 | version = "0.8.3" 273 | description = "Get the currently executing AST node of a frame, and other information" 274 | category = "dev" 275 | optional = false 276 | python-versions = "*" 277 | 278 | [[package]] 279 | name = "fastjsonschema" 280 | version = "2.15.3" 281 | description = "Fastest Python implementation of JSON schema" 282 | category = "dev" 283 | optional = false 284 | python-versions = "*" 285 | 286 | [package.extras] 287 | devel = ["colorama", "jsonschema", "json-spec", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] 288 | 289 | [[package]] 290 | name = "helium" 291 | version = "3.0.8" 292 | description = "Lighter browser automation based on Selenium." 293 | category = "main" 294 | optional = false 295 | python-versions = ">=3" 296 | 297 | [package.dependencies] 298 | selenium = "3.141.0" 299 | 300 | [[package]] 301 | name = "idna" 302 | version = "3.3" 303 | description = "Internationalized Domain Names in Applications (IDNA)" 304 | category = "dev" 305 | optional = false 306 | python-versions = ">=3.5" 307 | 308 | [[package]] 309 | name = "importlib-resources" 310 | version = "5.7.1" 311 | description = "Read resources from Python packages" 312 | category = "dev" 313 | optional = false 314 | python-versions = ">=3.7" 315 | 316 | [package.dependencies] 317 | zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} 318 | 319 | [package.extras] 320 | docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] 321 | testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] 322 | 323 | [[package]] 324 | name = "iniconfig" 325 | version = "1.1.1" 326 | description = "iniconfig: brain-dead simple config-ini parsing" 327 | category = "dev" 328 | optional = false 329 | python-versions = "*" 330 | 331 | [[package]] 332 | name = "ipykernel" 333 | version = "6.13.0" 334 | description = "IPython Kernel for Jupyter" 335 | category = "dev" 336 | optional = false 337 | python-versions = ">=3.7" 338 | 339 | [package.dependencies] 340 | appnope = {version = "*", markers = "platform_system == \"Darwin\""} 341 | debugpy = ">=1.0" 342 | ipython = ">=7.23.1" 343 | jupyter-client = ">=6.1.12" 344 | matplotlib-inline = ">=0.1" 345 | nest-asyncio = "*" 346 | packaging = "*" 347 | psutil = "*" 348 | tornado = ">=6.1" 349 | traitlets = ">=5.1.0" 350 | 351 | [package.extras] 352 | test = ["pytest (>=6.0)", "pytest-cov", "flaky", "ipyparallel", "pre-commit", "pytest-timeout"] 353 | 354 | [[package]] 355 | name = "ipython" 356 | version = "8.2.0" 357 | description = "IPython: Productive Interactive Computing" 358 | category = "dev" 359 | optional = false 360 | python-versions = ">=3.8" 361 | 362 | [package.dependencies] 363 | appnope = {version = "*", markers = "sys_platform == \"darwin\""} 364 | backcall = "*" 365 | colorama = {version = "*", markers = "sys_platform == \"win32\""} 366 | decorator = "*" 367 | jedi = ">=0.16" 368 | matplotlib-inline = "*" 369 | pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} 370 | pickleshare = "*" 371 | prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0" 372 | pygments = ">=2.4.0" 373 | stack-data = "*" 374 | traitlets = ">=5" 375 | 376 | [package.extras] 377 | all = ["black", "Sphinx (>=1.3)", "ipykernel", "nbconvert", "nbformat", "ipywidgets", "notebook", "ipyparallel", "qtconsole", "pytest (<7.1)", "pytest-asyncio", "testpath", "curio", "matplotlib (!=3.2.0)", "numpy (>=1.19)", "pandas", "trio"] 378 | black = ["black"] 379 | doc = ["Sphinx (>=1.3)"] 380 | kernel = ["ipykernel"] 381 | nbconvert = ["nbconvert"] 382 | nbformat = ["nbformat"] 383 | notebook = ["ipywidgets", "notebook"] 384 | parallel = ["ipyparallel"] 385 | qtconsole = ["qtconsole"] 386 | test = ["pytest (<7.1)", "pytest-asyncio", "testpath"] 387 | test_extra = ["pytest (<7.1)", "pytest-asyncio", "testpath", "curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.19)", "pandas", "trio"] 388 | 389 | [[package]] 390 | name = "ipython-genutils" 391 | version = "0.2.0" 392 | description = "Vestigial utilities from IPython" 393 | category = "dev" 394 | optional = false 395 | python-versions = "*" 396 | 397 | [[package]] 398 | name = "isort" 399 | version = "5.10.1" 400 | description = "A Python utility / library to sort Python imports." 401 | category = "dev" 402 | optional = false 403 | python-versions = ">=3.6.1,<4.0" 404 | 405 | [package.extras] 406 | pipfile_deprecated_finder = ["pipreqs", "requirementslib"] 407 | requirements_deprecated_finder = ["pipreqs", "pip-api"] 408 | colors = ["colorama (>=0.4.3,<0.5.0)"] 409 | plugins = ["setuptools"] 410 | 411 | [[package]] 412 | name = "jedi" 413 | version = "0.18.1" 414 | description = "An autocompletion tool for Python that can be used for text editors." 415 | category = "dev" 416 | optional = false 417 | python-versions = ">=3.6" 418 | 419 | [package.dependencies] 420 | parso = ">=0.8.0,<0.9.0" 421 | 422 | [package.extras] 423 | qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] 424 | testing = ["Django (<3.1)", "colorama", "docopt", "pytest (<7.0.0)"] 425 | 426 | [[package]] 427 | name = "jinja2" 428 | version = "3.1.1" 429 | description = "A very fast and expressive template engine." 430 | category = "dev" 431 | optional = false 432 | python-versions = ">=3.7" 433 | 434 | [package.dependencies] 435 | MarkupSafe = ">=2.0" 436 | 437 | [package.extras] 438 | i18n = ["Babel (>=2.7)"] 439 | 440 | [[package]] 441 | name = "json5" 442 | version = "0.9.6" 443 | description = "A Python implementation of the JSON5 data format." 444 | category = "dev" 445 | optional = false 446 | python-versions = "*" 447 | 448 | [package.extras] 449 | dev = ["hypothesis"] 450 | 451 | [[package]] 452 | name = "jsonschema" 453 | version = "4.4.0" 454 | description = "An implementation of JSON Schema validation for Python" 455 | category = "dev" 456 | optional = false 457 | python-versions = ">=3.7" 458 | 459 | [package.dependencies] 460 | attrs = ">=17.4.0" 461 | importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} 462 | pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" 463 | 464 | [package.extras] 465 | format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] 466 | format_nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] 467 | 468 | [[package]] 469 | name = "jupyter-client" 470 | version = "7.2.2" 471 | description = "Jupyter protocol implementation and client libraries" 472 | category = "dev" 473 | optional = false 474 | python-versions = ">=3.7" 475 | 476 | [package.dependencies] 477 | entrypoints = "*" 478 | jupyter-core = ">=4.9.2" 479 | nest-asyncio = ">=1.5.4" 480 | python-dateutil = ">=2.8.2" 481 | pyzmq = ">=22.3" 482 | tornado = ">=6.0" 483 | traitlets = "*" 484 | 485 | [package.extras] 486 | doc = ["ipykernel", "myst-parser", "sphinx (>=1.3.6)", "sphinx-rtd-theme", "sphinxcontrib-github-alt"] 487 | test = ["codecov", "coverage", "ipykernel (>=6.5)", "ipython", "mypy", "pre-commit", "pytest", "pytest-asyncio (>=0.18)", "pytest-cov", "pytest-timeout"] 488 | 489 | [[package]] 490 | name = "jupyter-core" 491 | version = "4.10.0" 492 | description = "Jupyter core package. A base package on which Jupyter projects rely." 493 | category = "dev" 494 | optional = false 495 | python-versions = ">=3.7" 496 | 497 | [package.dependencies] 498 | pywin32 = {version = ">=1.0", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} 499 | traitlets = "*" 500 | 501 | [package.extras] 502 | test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] 503 | 504 | [[package]] 505 | name = "jupyter-server" 506 | version = "1.16.0" 507 | description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." 508 | category = "dev" 509 | optional = false 510 | python-versions = ">=3.7" 511 | 512 | [package.dependencies] 513 | anyio = ">=3.1.0" 514 | argon2-cffi = "*" 515 | jinja2 = "*" 516 | jupyter-client = ">=6.1.12" 517 | jupyter-core = ">=4.7.0" 518 | nbconvert = ">=6.4.4" 519 | nbformat = ">=5.2.0" 520 | packaging = "*" 521 | prometheus-client = "*" 522 | pywinpty = {version = "*", markers = "os_name == \"nt\""} 523 | pyzmq = ">=17" 524 | Send2Trash = "*" 525 | terminado = ">=0.8.3" 526 | tornado = ">=6.1.0" 527 | traitlets = ">=5.1.0" 528 | websocket-client = "*" 529 | 530 | [package.extras] 531 | test = ["coverage", "pytest (>=6.0)", "pytest-cov", "pytest-mock", "pytest-timeout", "requests", "pytest-tornasync", "pytest-console-scripts", "ipykernel", "pre-commit"] 532 | 533 | [[package]] 534 | name = "jupyterlab" 535 | version = "3.3.4" 536 | description = "JupyterLab computational environment" 537 | category = "dev" 538 | optional = false 539 | python-versions = ">=3.7" 540 | 541 | [package.dependencies] 542 | ipython = "*" 543 | jinja2 = ">=2.1" 544 | jupyter-core = "*" 545 | jupyter-server = ">=1.4,<2.0" 546 | jupyterlab-server = ">=2.10,<3.0" 547 | nbclassic = ">=0.2,<1.0" 548 | packaging = "*" 549 | tornado = ">=6.1.0" 550 | 551 | [package.extras] 552 | test = ["check-manifest", "coverage", "jupyterlab-server", "pytest (>=6.0)", "pytest-cov", "pytest-console-scripts", "pytest-check-links (>=0.5)", "requests", "requests-cache", "virtualenv", "pre-commit"] 553 | ui-tests = ["build"] 554 | 555 | [[package]] 556 | name = "jupyterlab-pygments" 557 | version = "0.2.2" 558 | description = "Pygments theme using JupyterLab CSS variables" 559 | category = "dev" 560 | optional = false 561 | python-versions = ">=3.7" 562 | 563 | [[package]] 564 | name = "jupyterlab-server" 565 | version = "2.12.0" 566 | description = "A set of server components for JupyterLab and JupyterLab like applications ." 567 | category = "dev" 568 | optional = false 569 | python-versions = ">=3.7" 570 | 571 | [package.dependencies] 572 | babel = "*" 573 | entrypoints = ">=0.2.2" 574 | jinja2 = ">=3.0.3" 575 | json5 = "*" 576 | jsonschema = ">=3.0.1" 577 | jupyter-server = ">=1.8,<2.0" 578 | packaging = "*" 579 | requests = "*" 580 | 581 | [package.extras] 582 | openapi = ["openapi-core (>=0.14.2)", "ruamel.yaml"] 583 | test = ["codecov", "ipykernel", "pytest (>=5.3.2)", "pytest-cov", "jupyter-server", "pytest-console-scripts", "strict-rfc3339", "wheel", "openapi-spec-validator (<0.5)", "openapi-core (>=0.14.2)", "ruamel.yaml"] 584 | 585 | [[package]] 586 | name = "lazy-object-proxy" 587 | version = "1.7.1" 588 | description = "A fast and thorough lazy object proxy." 589 | category = "dev" 590 | optional = false 591 | python-versions = ">=3.6" 592 | 593 | [[package]] 594 | name = "markupsafe" 595 | version = "2.1.1" 596 | description = "Safely add untrusted strings to HTML/XML markup." 597 | category = "dev" 598 | optional = false 599 | python-versions = ">=3.7" 600 | 601 | [[package]] 602 | name = "matplotlib-inline" 603 | version = "0.1.3" 604 | description = "Inline Matplotlib backend for Jupyter" 605 | category = "dev" 606 | optional = false 607 | python-versions = ">=3.5" 608 | 609 | [package.dependencies] 610 | traitlets = "*" 611 | 612 | [[package]] 613 | name = "mccabe" 614 | version = "0.7.0" 615 | description = "McCabe checker, plugin for flake8" 616 | category = "dev" 617 | optional = false 618 | python-versions = ">=3.6" 619 | 620 | [[package]] 621 | name = "mistune" 622 | version = "0.8.4" 623 | description = "The fastest markdown parser in pure Python" 624 | category = "dev" 625 | optional = false 626 | python-versions = "*" 627 | 628 | [[package]] 629 | name = "mypy-extensions" 630 | version = "0.4.3" 631 | description = "Experimental type system extensions for programs checked with the mypy typechecker." 632 | category = "dev" 633 | optional = false 634 | python-versions = "*" 635 | 636 | [[package]] 637 | name = "nbclassic" 638 | version = "0.3.7" 639 | description = "Jupyter Notebook as a Jupyter Server extension." 640 | category = "dev" 641 | optional = false 642 | python-versions = ">=3.7" 643 | 644 | [package.dependencies] 645 | jupyter-server = ">=1.8" 646 | notebook = "<7" 647 | notebook-shim = ">=0.1.0" 648 | 649 | [package.extras] 650 | test = ["pytest", "pytest-tornasync", "pytest-console-scripts"] 651 | 652 | [[package]] 653 | name = "nbclient" 654 | version = "0.6.0" 655 | description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." 656 | category = "dev" 657 | optional = false 658 | python-versions = ">=3.7.0" 659 | 660 | [package.dependencies] 661 | jupyter-client = ">=6.1.5" 662 | nbformat = ">=5.0" 663 | nest-asyncio = "*" 664 | traitlets = ">=5.0.0" 665 | 666 | [package.extras] 667 | sphinx = ["mock", "moto", "myst-parser", "Sphinx (>=1.7)", "sphinx-book-theme"] 668 | test = ["black", "check-manifest", "flake8", "ipykernel", "ipython (<8.0.0)", "ipywidgets (<8.0.0)", "mypy", "pip (>=18.1)", "pre-commit", "pytest (>=4.1)", "pytest-asyncio", "pytest-cov (>=2.6.1)", "setuptools (>=60.0)", "testpath", "twine (>=1.11.0)", "xmltodict"] 669 | 670 | [[package]] 671 | name = "nbconvert" 672 | version = "6.5.0" 673 | description = "Converting Jupyter Notebooks" 674 | category = "dev" 675 | optional = false 676 | python-versions = ">=3.7" 677 | 678 | [package.dependencies] 679 | beautifulsoup4 = "*" 680 | bleach = "*" 681 | defusedxml = "*" 682 | entrypoints = ">=0.2.2" 683 | jinja2 = ">=3.0" 684 | jupyter-core = ">=4.7" 685 | jupyterlab-pygments = "*" 686 | MarkupSafe = ">=2.0" 687 | mistune = ">=0.8.1,<2" 688 | nbclient = ">=0.5.0" 689 | nbformat = ">=5.1" 690 | packaging = "*" 691 | pandocfilters = ">=1.4.1" 692 | pygments = ">=2.4.1" 693 | tinycss2 = "*" 694 | traitlets = ">=5.0" 695 | 696 | [package.extras] 697 | all = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pre-commit", "pyppeteer (>=1,<1.1)", "tornado (>=6.1)", "sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"] 698 | docs = ["sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"] 699 | serve = ["tornado (>=6.1)"] 700 | test = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pre-commit", "pyppeteer (>=1,<1.1)"] 701 | webpdf = ["pyppeteer (>=1,<1.1)"] 702 | 703 | [[package]] 704 | name = "nbformat" 705 | version = "5.3.0" 706 | description = "The Jupyter Notebook format" 707 | category = "dev" 708 | optional = false 709 | python-versions = ">=3.7" 710 | 711 | [package.dependencies] 712 | fastjsonschema = "*" 713 | jsonschema = ">=2.6" 714 | jupyter-core = "*" 715 | traitlets = ">=4.1" 716 | 717 | [package.extras] 718 | test = ["check-manifest", "testpath", "pytest", "pre-commit"] 719 | 720 | [[package]] 721 | name = "nest-asyncio" 722 | version = "1.5.5" 723 | description = "Patch asyncio to allow nested event loops" 724 | category = "dev" 725 | optional = false 726 | python-versions = ">=3.5" 727 | 728 | [[package]] 729 | name = "notebook" 730 | version = "6.4.10" 731 | description = "A web-based notebook environment for interactive computing" 732 | category = "dev" 733 | optional = false 734 | python-versions = ">=3.6" 735 | 736 | [package.dependencies] 737 | argon2-cffi = "*" 738 | ipykernel = "*" 739 | ipython-genutils = "*" 740 | jinja2 = "*" 741 | jupyter-client = ">=5.3.4" 742 | jupyter-core = ">=4.6.1" 743 | nbconvert = ">=5" 744 | nbformat = "*" 745 | nest-asyncio = ">=1.5" 746 | prometheus-client = "*" 747 | pyzmq = ">=17" 748 | Send2Trash = ">=1.8.0" 749 | terminado = ">=0.8.3" 750 | tornado = ">=6.1" 751 | traitlets = ">=4.2.1" 752 | 753 | [package.extras] 754 | docs = ["sphinx", "nbsphinx", "sphinxcontrib-github-alt", "sphinx-rtd-theme", "myst-parser"] 755 | json-logging = ["json-logging"] 756 | test = ["pytest", "coverage", "requests", "nbval", "selenium", "pytest-cov", "requests-unixsocket"] 757 | 758 | [[package]] 759 | name = "notebook-shim" 760 | version = "0.1.0" 761 | description = "A shim layer for notebook traits and config" 762 | category = "dev" 763 | optional = false 764 | python-versions = ">=3.7" 765 | 766 | [package.dependencies] 767 | jupyter-server = ">=1.8,<2.0" 768 | 769 | [package.extras] 770 | test = ["pytest", "pytest-tornasync", "pytest-console-scripts"] 771 | 772 | [[package]] 773 | name = "packaging" 774 | version = "21.3" 775 | description = "Core utilities for Python packages" 776 | category = "dev" 777 | optional = false 778 | python-versions = ">=3.6" 779 | 780 | [package.dependencies] 781 | pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" 782 | 783 | [[package]] 784 | name = "pandocfilters" 785 | version = "1.5.0" 786 | description = "Utilities for writing pandoc filters in python" 787 | category = "dev" 788 | optional = false 789 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 790 | 791 | [[package]] 792 | name = "parso" 793 | version = "0.8.3" 794 | description = "A Python Parser" 795 | category = "dev" 796 | optional = false 797 | python-versions = ">=3.6" 798 | 799 | [package.extras] 800 | qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] 801 | testing = ["docopt", "pytest (<6.0.0)"] 802 | 803 | [[package]] 804 | name = "pathspec" 805 | version = "0.9.0" 806 | description = "Utility library for gitignore style pattern matching of file paths." 807 | category = "dev" 808 | optional = false 809 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" 810 | 811 | [[package]] 812 | name = "pexpect" 813 | version = "4.8.0" 814 | description = "Pexpect allows easy control of interactive console applications." 815 | category = "dev" 816 | optional = false 817 | python-versions = "*" 818 | 819 | [package.dependencies] 820 | ptyprocess = ">=0.5" 821 | 822 | [[package]] 823 | name = "pickleshare" 824 | version = "0.7.5" 825 | description = "Tiny 'shelve'-like database with concurrency support" 826 | category = "dev" 827 | optional = false 828 | python-versions = "*" 829 | 830 | [[package]] 831 | name = "platformdirs" 832 | version = "2.5.2" 833 | description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." 834 | category = "dev" 835 | optional = false 836 | python-versions = ">=3.7" 837 | 838 | [package.extras] 839 | docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"] 840 | test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"] 841 | 842 | [[package]] 843 | name = "pluggy" 844 | version = "1.0.0" 845 | description = "plugin and hook calling mechanisms for python" 846 | category = "dev" 847 | optional = false 848 | python-versions = ">=3.6" 849 | 850 | [package.extras] 851 | dev = ["pre-commit", "tox"] 852 | testing = ["pytest", "pytest-benchmark"] 853 | 854 | [[package]] 855 | name = "prometheus-client" 856 | version = "0.14.1" 857 | description = "Python client for the Prometheus monitoring system." 858 | category = "dev" 859 | optional = false 860 | python-versions = ">=3.6" 861 | 862 | [package.extras] 863 | twisted = ["twisted"] 864 | 865 | [[package]] 866 | name = "prompt-toolkit" 867 | version = "3.0.29" 868 | description = "Library for building powerful interactive command lines in Python" 869 | category = "dev" 870 | optional = false 871 | python-versions = ">=3.6.2" 872 | 873 | [package.dependencies] 874 | wcwidth = "*" 875 | 876 | [[package]] 877 | name = "psutil" 878 | version = "5.9.0" 879 | description = "Cross-platform lib for process and system monitoring in Python." 880 | category = "dev" 881 | optional = false 882 | python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 883 | 884 | [package.extras] 885 | test = ["ipaddress", "mock", "unittest2", "enum34", "pywin32", "wmi"] 886 | 887 | [[package]] 888 | name = "ptyprocess" 889 | version = "0.7.0" 890 | description = "Run a subprocess in a pseudo terminal" 891 | category = "dev" 892 | optional = false 893 | python-versions = "*" 894 | 895 | [[package]] 896 | name = "pure-eval" 897 | version = "0.2.2" 898 | description = "Safely evaluate AST nodes without side effects" 899 | category = "dev" 900 | optional = false 901 | python-versions = "*" 902 | 903 | [package.extras] 904 | tests = ["pytest"] 905 | 906 | [[package]] 907 | name = "py" 908 | version = "1.11.0" 909 | description = "library with cross-python path, ini-parsing, io, code, log facilities" 910 | category = "dev" 911 | optional = false 912 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 913 | 914 | [[package]] 915 | name = "pycparser" 916 | version = "2.21" 917 | description = "C parser in Python" 918 | category = "dev" 919 | optional = false 920 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 921 | 922 | [[package]] 923 | name = "pygments" 924 | version = "2.11.2" 925 | description = "Pygments is a syntax highlighting package written in Python." 926 | category = "dev" 927 | optional = false 928 | python-versions = ">=3.5" 929 | 930 | [[package]] 931 | name = "pylint" 932 | version = "2.13.5" 933 | description = "python code static checker" 934 | category = "dev" 935 | optional = false 936 | python-versions = ">=3.6.2" 937 | 938 | [package.dependencies] 939 | astroid = ">=2.11.2,<=2.12.0-dev0" 940 | colorama = {version = "*", markers = "sys_platform == \"win32\""} 941 | dill = ">=0.2" 942 | isort = ">=4.2.5,<6" 943 | mccabe = ">=0.6,<0.8" 944 | platformdirs = ">=2.2.0" 945 | tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} 946 | typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} 947 | 948 | [package.extras] 949 | testutil = ["gitpython (>3)"] 950 | 951 | [[package]] 952 | name = "pyparsing" 953 | version = "3.0.8" 954 | description = "pyparsing module - Classes and methods to define and execute parsing grammars" 955 | category = "dev" 956 | optional = false 957 | python-versions = ">=3.6.8" 958 | 959 | [package.extras] 960 | diagrams = ["railroad-diagrams", "jinja2"] 961 | 962 | [[package]] 963 | name = "pyrsistent" 964 | version = "0.18.1" 965 | description = "Persistent/Functional/Immutable data structures" 966 | category = "dev" 967 | optional = false 968 | python-versions = ">=3.7" 969 | 970 | [[package]] 971 | name = "pytest" 972 | version = "7.1.1" 973 | description = "pytest: simple powerful testing with Python" 974 | category = "dev" 975 | optional = false 976 | python-versions = ">=3.7" 977 | 978 | [package.dependencies] 979 | atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} 980 | attrs = ">=19.2.0" 981 | colorama = {version = "*", markers = "sys_platform == \"win32\""} 982 | iniconfig = "*" 983 | packaging = "*" 984 | pluggy = ">=0.12,<2.0" 985 | py = ">=1.8.2" 986 | tomli = ">=1.0.0" 987 | 988 | [package.extras] 989 | testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] 990 | 991 | [[package]] 992 | name = "python-dateutil" 993 | version = "2.8.2" 994 | description = "Extensions to the standard Python datetime module" 995 | category = "dev" 996 | optional = false 997 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" 998 | 999 | [package.dependencies] 1000 | six = ">=1.5" 1001 | 1002 | [[package]] 1003 | name = "pytz" 1004 | version = "2022.1" 1005 | description = "World timezone definitions, modern and historical" 1006 | category = "dev" 1007 | optional = false 1008 | python-versions = "*" 1009 | 1010 | [[package]] 1011 | name = "pywin32" 1012 | version = "303" 1013 | description = "Python for Window Extensions" 1014 | category = "dev" 1015 | optional = false 1016 | python-versions = "*" 1017 | 1018 | [[package]] 1019 | name = "pywinpty" 1020 | version = "2.0.5" 1021 | description = "Pseudo terminal support for Windows from Python." 1022 | category = "dev" 1023 | optional = false 1024 | python-versions = ">=3.7" 1025 | 1026 | [[package]] 1027 | name = "pyzmq" 1028 | version = "22.3.0" 1029 | description = "Python bindings for 0MQ" 1030 | category = "dev" 1031 | optional = false 1032 | python-versions = ">=3.6" 1033 | 1034 | [package.dependencies] 1035 | cffi = {version = "*", markers = "implementation_name == \"pypy\""} 1036 | py = {version = "*", markers = "implementation_name == \"pypy\""} 1037 | 1038 | [[package]] 1039 | name = "requests" 1040 | version = "2.27.1" 1041 | description = "Python HTTP for Humans." 1042 | category = "dev" 1043 | optional = false 1044 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" 1045 | 1046 | [package.dependencies] 1047 | certifi = ">=2017.4.17" 1048 | charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} 1049 | idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} 1050 | urllib3 = ">=1.21.1,<1.27" 1051 | 1052 | [package.extras] 1053 | socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] 1054 | use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] 1055 | 1056 | [[package]] 1057 | name = "selenium" 1058 | version = "3.141.0" 1059 | description = "Python bindings for Selenium" 1060 | category = "main" 1061 | optional = false 1062 | python-versions = "*" 1063 | 1064 | [package.dependencies] 1065 | urllib3 = "*" 1066 | 1067 | [[package]] 1068 | name = "send2trash" 1069 | version = "1.8.0" 1070 | description = "Send file to trash natively under Mac OS X, Windows and Linux." 1071 | category = "dev" 1072 | optional = false 1073 | python-versions = "*" 1074 | 1075 | [package.extras] 1076 | nativelib = ["pyobjc-framework-cocoa", "pywin32"] 1077 | objc = ["pyobjc-framework-cocoa"] 1078 | win32 = ["pywin32"] 1079 | 1080 | [[package]] 1081 | name = "six" 1082 | version = "1.16.0" 1083 | description = "Python 2 and 3 compatibility utilities" 1084 | category = "dev" 1085 | optional = false 1086 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" 1087 | 1088 | [[package]] 1089 | name = "sniffio" 1090 | version = "1.2.0" 1091 | description = "Sniff out which async library your code is running under" 1092 | category = "dev" 1093 | optional = false 1094 | python-versions = ">=3.5" 1095 | 1096 | [[package]] 1097 | name = "soupsieve" 1098 | version = "2.3.2.post1" 1099 | description = "A modern CSS selector implementation for Beautiful Soup." 1100 | category = "dev" 1101 | optional = false 1102 | python-versions = ">=3.6" 1103 | 1104 | [[package]] 1105 | name = "stack-data" 1106 | version = "0.2.0" 1107 | description = "Extract data from python stack frames and tracebacks for informative displays" 1108 | category = "dev" 1109 | optional = false 1110 | python-versions = "*" 1111 | 1112 | [package.dependencies] 1113 | asttokens = "*" 1114 | executing = "*" 1115 | pure-eval = "*" 1116 | 1117 | [package.extras] 1118 | tests = ["pytest", "typeguard", "pygments", "littleutils", "cython"] 1119 | 1120 | [[package]] 1121 | name = "terminado" 1122 | version = "0.13.3" 1123 | description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." 1124 | category = "dev" 1125 | optional = false 1126 | python-versions = ">=3.7" 1127 | 1128 | [package.dependencies] 1129 | ptyprocess = {version = "*", markers = "os_name != \"nt\""} 1130 | pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} 1131 | tornado = ">=4" 1132 | 1133 | [package.extras] 1134 | test = ["pytest"] 1135 | 1136 | [[package]] 1137 | name = "tinycss2" 1138 | version = "1.1.1" 1139 | description = "A tiny CSS parser" 1140 | category = "dev" 1141 | optional = false 1142 | python-versions = ">=3.6" 1143 | 1144 | [package.dependencies] 1145 | webencodings = ">=0.4" 1146 | 1147 | [package.extras] 1148 | doc = ["sphinx", "sphinx-rtd-theme"] 1149 | test = ["pytest", "pytest-cov", "pytest-flake8", "pytest-isort", "coverage"] 1150 | 1151 | [[package]] 1152 | name = "tomli" 1153 | version = "2.0.1" 1154 | description = "A lil' TOML parser" 1155 | category = "dev" 1156 | optional = false 1157 | python-versions = ">=3.7" 1158 | 1159 | [[package]] 1160 | name = "tornado" 1161 | version = "6.1" 1162 | description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." 1163 | category = "dev" 1164 | optional = false 1165 | python-versions = ">= 3.5" 1166 | 1167 | [[package]] 1168 | name = "traitlets" 1169 | version = "5.1.1" 1170 | description = "Traitlets Python configuration system" 1171 | category = "dev" 1172 | optional = false 1173 | python-versions = ">=3.7" 1174 | 1175 | [package.extras] 1176 | test = ["pytest"] 1177 | 1178 | [[package]] 1179 | name = "typing-extensions" 1180 | version = "4.2.0" 1181 | description = "Backported and Experimental Type Hints for Python 3.7+" 1182 | category = "dev" 1183 | optional = false 1184 | python-versions = ">=3.7" 1185 | 1186 | [[package]] 1187 | name = "urllib3" 1188 | version = "1.26.9" 1189 | description = "HTTP library with thread-safe connection pooling, file post, and more." 1190 | category = "main" 1191 | optional = false 1192 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" 1193 | 1194 | [package.extras] 1195 | brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] 1196 | secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] 1197 | socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] 1198 | 1199 | [[package]] 1200 | name = "wcwidth" 1201 | version = "0.2.5" 1202 | description = "Measures the displayed width of unicode strings in a terminal" 1203 | category = "dev" 1204 | optional = false 1205 | python-versions = "*" 1206 | 1207 | [[package]] 1208 | name = "webencodings" 1209 | version = "0.5.1" 1210 | description = "Character encoding aliases for legacy web content" 1211 | category = "dev" 1212 | optional = false 1213 | python-versions = "*" 1214 | 1215 | [[package]] 1216 | name = "websocket-client" 1217 | version = "1.3.2" 1218 | description = "WebSocket client for Python with low level API options" 1219 | category = "dev" 1220 | optional = false 1221 | python-versions = ">=3.7" 1222 | 1223 | [package.extras] 1224 | docs = ["Sphinx (>=3.4)", "sphinx-rtd-theme (>=0.5)"] 1225 | optional = ["python-socks", "wsaccel"] 1226 | test = ["websockets"] 1227 | 1228 | [[package]] 1229 | name = "wrapt" 1230 | version = "1.14.0" 1231 | description = "Module for decorators, wrappers and monkey patching." 1232 | category = "dev" 1233 | optional = false 1234 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" 1235 | 1236 | [[package]] 1237 | name = "zipp" 1238 | version = "3.8.0" 1239 | description = "Backport of pathlib-compatible object wrapper for zip files" 1240 | category = "dev" 1241 | optional = false 1242 | python-versions = ">=3.7" 1243 | 1244 | [package.extras] 1245 | docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] 1246 | testing = ["pytest (>=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 (>=0.9.1)"] 1247 | 1248 | [metadata] 1249 | lock-version = "1.1" 1250 | python-versions = ">=3.8,<4.0" 1251 | content-hash = "0bd730e39d9d73bcd3cf6728c4561db9021131529908ce88489c9fe1af24f710" 1252 | 1253 | [metadata.files] 1254 | anyio = [ 1255 | {file = "anyio-3.5.0-py3-none-any.whl", hash = "sha256:b5fa16c5ff93fa1046f2eeb5bbff2dad4d3514d6cda61d02816dba34fa8c3c2e"}, 1256 | {file = "anyio-3.5.0.tar.gz", hash = "sha256:a0aeffe2fb1fdf374a8e4b471444f0f3ac4fb9f5a5b542b48824475e0042a5a6"}, 1257 | ] 1258 | appnope = [ 1259 | {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"}, 1260 | {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"}, 1261 | ] 1262 | argon2-cffi = [ 1263 | {file = "argon2-cffi-21.3.0.tar.gz", hash = "sha256:d384164d944190a7dd7ef22c6aa3ff197da12962bd04b17f64d4e93d934dba5b"}, 1264 | {file = "argon2_cffi-21.3.0-py3-none-any.whl", hash = "sha256:8c976986f2c5c0e5000919e6de187906cfd81fb1c72bf9d88c01177e77da7f80"}, 1265 | ] 1266 | argon2-cffi-bindings = [ 1267 | {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, 1268 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, 1269 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, 1270 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, 1271 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, 1272 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, 1273 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, 1274 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, 1275 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, 1276 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, 1277 | {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, 1278 | {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, 1279 | {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, 1280 | {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, 1281 | {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, 1282 | {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, 1283 | {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, 1284 | {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, 1285 | {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, 1286 | {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, 1287 | {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, 1288 | ] 1289 | astroid = [ 1290 | {file = "astroid-2.11.2-py3-none-any.whl", hash = "sha256:cc8cc0d2d916c42d0a7c476c57550a4557a083081976bf42a73414322a6411d9"}, 1291 | {file = "astroid-2.11.2.tar.gz", hash = "sha256:8d0a30fe6481ce919f56690076eafbb2fb649142a89dc874f1ec0e7a011492d0"}, 1292 | ] 1293 | asttokens = [ 1294 | {file = "asttokens-2.0.5-py2.py3-none-any.whl", hash = "sha256:0844691e88552595a6f4a4281a9f7f79b8dd45ca4ccea82e5e05b4bbdb76705c"}, 1295 | {file = "asttokens-2.0.5.tar.gz", hash = "sha256:9a54c114f02c7a9480d56550932546a3f1fe71d8a02f1bc7ccd0ee3ee35cf4d5"}, 1296 | ] 1297 | atomicwrites = [ 1298 | {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, 1299 | {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, 1300 | ] 1301 | attrs = [ 1302 | {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, 1303 | {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, 1304 | ] 1305 | babel = [ 1306 | {file = "Babel-2.9.1-py2.py3-none-any.whl", hash = "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9"}, 1307 | {file = "Babel-2.9.1.tar.gz", hash = "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0"}, 1308 | ] 1309 | backcall = [ 1310 | {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, 1311 | {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, 1312 | ] 1313 | beautifulsoup4 = [ 1314 | {file = "beautifulsoup4-4.11.1-py3-none-any.whl", hash = "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30"}, 1315 | {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"}, 1316 | ] 1317 | black = [ 1318 | {file = "black-22.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2497f9c2386572e28921fa8bec7be3e51de6801f7459dffd6e62492531c47e09"}, 1319 | {file = "black-22.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5795a0375eb87bfe902e80e0c8cfaedf8af4d49694d69161e5bd3206c18618bb"}, 1320 | {file = "black-22.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3556168e2e5c49629f7b0f377070240bd5511e45e25a4497bb0073d9dda776a"}, 1321 | {file = "black-22.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67c8301ec94e3bcc8906740fe071391bce40a862b7be0b86fb5382beefecd968"}, 1322 | {file = "black-22.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:fd57160949179ec517d32ac2ac898b5f20d68ed1a9c977346efbac9c2f1e779d"}, 1323 | {file = "black-22.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc1e1de68c8e5444e8f94c3670bb48a2beef0e91dddfd4fcc29595ebd90bb9ce"}, 1324 | {file = "black-22.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2fc92002d44746d3e7db7cf9313cf4452f43e9ea77a2c939defce3b10b5c82"}, 1325 | {file = "black-22.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a6342964b43a99dbc72f72812bf88cad8f0217ae9acb47c0d4f141a6416d2d7b"}, 1326 | {file = "black-22.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:328efc0cc70ccb23429d6be184a15ce613f676bdfc85e5fe8ea2a9354b4e9015"}, 1327 | {file = "black-22.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06f9d8846f2340dfac80ceb20200ea5d1b3f181dd0556b47af4e8e0b24fa0a6b"}, 1328 | {file = "black-22.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4efa5fad66b903b4a5f96d91461d90b9507a812b3c5de657d544215bb7877a"}, 1329 | {file = "black-22.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8477ec6bbfe0312c128e74644ac8a02ca06bcdb8982d4ee06f209be28cdf163"}, 1330 | {file = "black-22.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:637a4014c63fbf42a692d22b55d8ad6968a946b4a6ebc385c5505d9625b6a464"}, 1331 | {file = "black-22.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:863714200ada56cbc366dc9ae5291ceb936573155f8bf8e9de92aef51f3ad0f0"}, 1332 | {file = "black-22.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dbe6e6d2988049b4655b2b739f98785a884d4d6b85bc35133a8fb9a2233176"}, 1333 | {file = "black-22.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:cee3e11161dde1b2a33a904b850b0899e0424cc331b7295f2a9698e79f9a69a0"}, 1334 | {file = "black-22.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5891ef8abc06576985de8fa88e95ab70641de6c1fca97e2a15820a9b69e51b20"}, 1335 | {file = "black-22.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:30d78ba6bf080eeaf0b7b875d924b15cd46fec5fd044ddfbad38c8ea9171043a"}, 1336 | {file = "black-22.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee8f1f7228cce7dffc2b464f07ce769f478968bfb3dd1254a4c2eeed84928aad"}, 1337 | {file = "black-22.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ee227b696ca60dd1c507be80a6bc849a5a6ab57ac7352aad1ffec9e8b805f21"}, 1338 | {file = "black-22.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:9b542ced1ec0ceeff5b37d69838106a6348e60db7b8fdd245294dc1d26136265"}, 1339 | {file = "black-22.3.0-py3-none-any.whl", hash = "sha256:bc58025940a896d7e5356952228b68f793cf5fcb342be703c3a2669a1488cb72"}, 1340 | {file = "black-22.3.0.tar.gz", hash = "sha256:35020b8886c022ced9282b51b5a875b6d1ab0c387b31a065b84db7c33085ca79"}, 1341 | ] 1342 | bleach = [ 1343 | {file = "bleach-5.0.0-py3-none-any.whl", hash = "sha256:08a1fe86d253b5c88c92cc3d810fd8048a16d15762e1e5b74d502256e5926aa1"}, 1344 | {file = "bleach-5.0.0.tar.gz", hash = "sha256:c6d6cc054bdc9c83b48b8083e236e5f00f238428666d2ce2e083eaa5fd568565"}, 1345 | ] 1346 | certifi = [ 1347 | {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, 1348 | {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, 1349 | ] 1350 | cffi = [ 1351 | {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, 1352 | {file = "cffi-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0"}, 1353 | {file = "cffi-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14"}, 1354 | {file = "cffi-1.15.0-cp27-cp27m-win32.whl", hash = "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474"}, 1355 | {file = "cffi-1.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6"}, 1356 | {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27"}, 1357 | {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023"}, 1358 | {file = "cffi-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2"}, 1359 | {file = "cffi-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e"}, 1360 | {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7"}, 1361 | {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3"}, 1362 | {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c"}, 1363 | {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962"}, 1364 | {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382"}, 1365 | {file = "cffi-1.15.0-cp310-cp310-win32.whl", hash = "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55"}, 1366 | {file = "cffi-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0"}, 1367 | {file = "cffi-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e"}, 1368 | {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39"}, 1369 | {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc"}, 1370 | {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032"}, 1371 | {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8"}, 1372 | {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605"}, 1373 | {file = "cffi-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e"}, 1374 | {file = "cffi-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc"}, 1375 | {file = "cffi-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636"}, 1376 | {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4"}, 1377 | {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997"}, 1378 | {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b"}, 1379 | {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2"}, 1380 | {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7"}, 1381 | {file = "cffi-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66"}, 1382 | {file = "cffi-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029"}, 1383 | {file = "cffi-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880"}, 1384 | {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20"}, 1385 | {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024"}, 1386 | {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e"}, 1387 | {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728"}, 1388 | {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6"}, 1389 | {file = "cffi-1.15.0-cp38-cp38-win32.whl", hash = "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c"}, 1390 | {file = "cffi-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443"}, 1391 | {file = "cffi-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a"}, 1392 | {file = "cffi-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37"}, 1393 | {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a"}, 1394 | {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e"}, 1395 | {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796"}, 1396 | {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df"}, 1397 | {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8"}, 1398 | {file = "cffi-1.15.0-cp39-cp39-win32.whl", hash = "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a"}, 1399 | {file = "cffi-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139"}, 1400 | {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"}, 1401 | ] 1402 | charset-normalizer = [ 1403 | {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, 1404 | {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, 1405 | ] 1406 | click = [ 1407 | {file = "click-8.1.2-py3-none-any.whl", hash = "sha256:24e1a4a9ec5bf6299411369b208c1df2188d9eb8d916302fe6bf03faed227f1e"}, 1408 | {file = "click-8.1.2.tar.gz", hash = "sha256:479707fe14d9ec9a0757618b7a100a0ae4c4e236fac5b7f80ca68028141a1a72"}, 1409 | ] 1410 | colorama = [ 1411 | {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, 1412 | {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, 1413 | ] 1414 | debugpy = [ 1415 | {file = "debugpy-1.6.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:eb1946efac0c0c3d411cea0b5ac772fbde744109fd9520fb0c5a51979faf05ad"}, 1416 | {file = "debugpy-1.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e3513399177dd37af4c1332df52da5da1d0c387e5927dc4c0709e26ee7302e8f"}, 1417 | {file = "debugpy-1.6.0-cp310-cp310-win32.whl", hash = "sha256:5c492235d6b68f879df3bdbdb01f25c15be15682665517c2c7d0420e5658d71f"}, 1418 | {file = "debugpy-1.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:40de9ba137d355538432209d05e0f5fe5d0498dce761c39119ad4b950b51db31"}, 1419 | {file = "debugpy-1.6.0-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:0d383b91efee57dbb923ba20801130cf60450a0eda60bce25bccd937de8e323a"}, 1420 | {file = "debugpy-1.6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1ff853e60e77e1c16f85a31adb8360bb2d98ca588d7ed645b7f0985b240bdb5e"}, 1421 | {file = "debugpy-1.6.0-cp37-cp37m-win32.whl", hash = "sha256:8e972c717d95f56b6a3a7a29a5ede1ee8f2c3802f6f0e678203b0778eb322bf1"}, 1422 | {file = "debugpy-1.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a8aaeb53e87225141fda7b9081bd87155c1debc13e2f5a532d341112d1983b65"}, 1423 | {file = "debugpy-1.6.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:132defb585b518955358321d0f42f6aa815aa15b432be27db654807707c70b2f"}, 1424 | {file = "debugpy-1.6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8ee75844242b4537beb5899f3e60a578454d1f136b99e8d57ac424573797b94a"}, 1425 | {file = "debugpy-1.6.0-cp38-cp38-win32.whl", hash = "sha256:a65a2499761d47df3e9ea9567109be6e73d412e00ac3ffcf74839f3ddfcdf028"}, 1426 | {file = "debugpy-1.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:bd980d533d0ddfc451e03a3bb32acb2900049fec39afc3425b944ebf0889be62"}, 1427 | {file = "debugpy-1.6.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:245c7789a012f86210847ec7ee9f38c30a30d4c2223c3e111829a76c9006a5d0"}, 1428 | {file = "debugpy-1.6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0e3aa2368883e83e7b689ddff3cafb595f7b711f6a065886b46a96a7fef874e7"}, 1429 | {file = "debugpy-1.6.0-cp39-cp39-win32.whl", hash = "sha256:72bcfa97f3afa0064afc77ab811f48ad4a06ac330f290b675082c24437730366"}, 1430 | {file = "debugpy-1.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:30abefefd2ff5a5481162d613cb70e60e2fa80a5eb4c994717c0f008ed25d2e1"}, 1431 | {file = "debugpy-1.6.0-py2.py3-none-any.whl", hash = "sha256:4de7777842da7e08652f2776c552070bbdd758557fdec73a15d7be0e4aab95ce"}, 1432 | {file = "debugpy-1.6.0.zip", hash = "sha256:7b79c40852991f7b6c3ea65845ed0f5f6b731c37f4f9ad9c61e2ab4bd48a9275"}, 1433 | ] 1434 | decorator = [ 1435 | {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, 1436 | {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, 1437 | ] 1438 | defusedxml = [ 1439 | {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, 1440 | {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, 1441 | ] 1442 | dill = [ 1443 | {file = "dill-0.3.4-py2.py3-none-any.whl", hash = "sha256:7e40e4a70304fd9ceab3535d36e58791d9c4a776b38ec7f7ec9afc8d3dca4d4f"}, 1444 | {file = "dill-0.3.4.zip", hash = "sha256:9f9734205146b2b353ab3fec9af0070237b6ddae78452af83d2fca84d739e675"}, 1445 | ] 1446 | entrypoints = [ 1447 | {file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"}, 1448 | {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"}, 1449 | ] 1450 | executing = [ 1451 | {file = "executing-0.8.3-py2.py3-none-any.whl", hash = "sha256:d1eef132db1b83649a3905ca6dd8897f71ac6f8cac79a7e58a1a09cf137546c9"}, 1452 | {file = "executing-0.8.3.tar.gz", hash = "sha256:c6554e21c6b060590a6d3be4b82fb78f8f0194d809de5ea7df1c093763311501"}, 1453 | ] 1454 | fastjsonschema = [ 1455 | {file = "fastjsonschema-2.15.3-py3-none-any.whl", hash = "sha256:ddb0b1d8243e6e3abb822bd14e447a89f4ab7439342912d590444831fa00b6a0"}, 1456 | {file = "fastjsonschema-2.15.3.tar.gz", hash = "sha256:0a572f0836962d844c1fc435e200b2e4f4677e4e6611a2e3bdd01ba697c275ec"}, 1457 | ] 1458 | helium = [ 1459 | {file = "helium-3.0.8.tar.gz", hash = "sha256:ede0b76162ea182005a3851af6ce6f0cb7a03a38ce041ef6fd1018aa5ebf5eaf"}, 1460 | ] 1461 | idna = [ 1462 | {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, 1463 | {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, 1464 | ] 1465 | importlib-resources = [ 1466 | {file = "importlib_resources-5.7.1-py3-none-any.whl", hash = "sha256:e447dc01619b1e951286f3929be820029d48c75eb25d265c28b92a16548212b8"}, 1467 | {file = "importlib_resources-5.7.1.tar.gz", hash = "sha256:b6062987dfc51f0fcb809187cffbd60f35df7acb4589091f154214af6d0d49d3"}, 1468 | ] 1469 | iniconfig = [ 1470 | {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, 1471 | {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, 1472 | ] 1473 | ipykernel = [ 1474 | {file = "ipykernel-6.13.0-py3-none-any.whl", hash = "sha256:2b0987af43c0d4b62cecb13c592755f599f96f29aafe36c01731aaa96df30d39"}, 1475 | {file = "ipykernel-6.13.0.tar.gz", hash = "sha256:0e28273e290858393e86e152b104e5506a79c13d25b951ac6eca220051b4be60"}, 1476 | ] 1477 | ipython = [ 1478 | {file = "ipython-8.2.0-py3-none-any.whl", hash = "sha256:1b672bfd7a48d87ab203d9af8727a3b0174a4566b4091e9447c22fb63ea32857"}, 1479 | {file = "ipython-8.2.0.tar.gz", hash = "sha256:70e5eb132cac594a34b5f799bd252589009905f05104728aea6a403ec2519dc1"}, 1480 | ] 1481 | ipython-genutils = [ 1482 | {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"}, 1483 | {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"}, 1484 | ] 1485 | isort = [ 1486 | {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, 1487 | {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, 1488 | ] 1489 | jedi = [ 1490 | {file = "jedi-0.18.1-py2.py3-none-any.whl", hash = "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d"}, 1491 | {file = "jedi-0.18.1.tar.gz", hash = "sha256:74137626a64a99c8eb6ae5832d99b3bdd7d29a3850fe2aa80a4126b2a7d949ab"}, 1492 | ] 1493 | jinja2 = [ 1494 | {file = "Jinja2-3.1.1-py3-none-any.whl", hash = "sha256:539835f51a74a69f41b848a9645dbdc35b4f20a3b601e2d9a7e22947b15ff119"}, 1495 | {file = "Jinja2-3.1.1.tar.gz", hash = "sha256:640bed4bb501cbd17194b3cace1dc2126f5b619cf068a726b98192a0fde74ae9"}, 1496 | ] 1497 | json5 = [ 1498 | {file = "json5-0.9.6-py2.py3-none-any.whl", hash = "sha256:823e510eb355949bed817e1f3e2d682455dc6af9daf6066d5698d6a2ca4481c2"}, 1499 | {file = "json5-0.9.6.tar.gz", hash = "sha256:9175ad1bc248e22bb8d95a8e8d765958bf0008fef2fe8abab5bc04e0f1ac8302"}, 1500 | ] 1501 | jsonschema = [ 1502 | {file = "jsonschema-4.4.0-py3-none-any.whl", hash = "sha256:77281a1f71684953ee8b3d488371b162419767973789272434bbc3f29d9c8823"}, 1503 | {file = "jsonschema-4.4.0.tar.gz", hash = "sha256:636694eb41b3535ed608fe04129f26542b59ed99808b4f688aa32dcf55317a83"}, 1504 | ] 1505 | jupyter-client = [ 1506 | {file = "jupyter_client-7.2.2-py3-none-any.whl", hash = "sha256:44045448eadc12493d819d965eb1dc9d10d1927698adbb9b14eb9a3a4a45ba53"}, 1507 | {file = "jupyter_client-7.2.2.tar.gz", hash = "sha256:8fdbad344a8baa6a413d86d25bbf87ce21cb2b4aa5a8e0413863b9754eb8eb8a"}, 1508 | ] 1509 | jupyter-core = [ 1510 | {file = "jupyter_core-4.10.0-py3-none-any.whl", hash = "sha256:e7f5212177af7ab34179690140f188aa9bf3d322d8155ed972cbded19f55b6f3"}, 1511 | {file = "jupyter_core-4.10.0.tar.gz", hash = "sha256:a6de44b16b7b31d7271130c71a6792c4040f077011961138afed5e5e73181aec"}, 1512 | ] 1513 | jupyter-server = [ 1514 | {file = "jupyter_server-1.16.0-py3-none-any.whl", hash = "sha256:72dd1ff5373d2def94e80632ba4397e504cc9200c5b5f44b5b0af2e062a73353"}, 1515 | {file = "jupyter_server-1.16.0.tar.gz", hash = "sha256:c756f87ad64b84e2aa522ef482445e1a93f7fe4a5fc78358f4636e53c9a0463a"}, 1516 | ] 1517 | jupyterlab = [ 1518 | {file = "jupyterlab-3.3.4-py3-none-any.whl", hash = "sha256:87121636963027a0477e50ea8f366acf1ab06bb05d7e581cd2ec8c00f6e741a5"}, 1519 | {file = "jupyterlab-3.3.4.tar.gz", hash = "sha256:e04355848b3d91ac4d95c2e3846a0429b33e9c2edc79668fb4fc4d212f1e5107"}, 1520 | ] 1521 | jupyterlab-pygments = [ 1522 | {file = "jupyterlab_pygments-0.2.2-py2.py3-none-any.whl", hash = "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f"}, 1523 | {file = "jupyterlab_pygments-0.2.2.tar.gz", hash = "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d"}, 1524 | ] 1525 | jupyterlab-server = [ 1526 | {file = "jupyterlab_server-2.12.0-py3-none-any.whl", hash = "sha256:db5d234955c5c2684f77a064345712f071acf7df31f0d8c31b420b33b09d6472"}, 1527 | {file = "jupyterlab_server-2.12.0.tar.gz", hash = "sha256:00e0f4b4c399f55938323ea10cf92d915288fe12753e35d1069f6ca08b72abbf"}, 1528 | ] 1529 | lazy-object-proxy = [ 1530 | {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"}, 1531 | {file = "lazy_object_proxy-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b"}, 1532 | {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a57d51ed2997e97f3b8e3500c984db50a554bb5db56c50b5dab1b41339b37e36"}, 1533 | {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd45683c3caddf83abbb1249b653a266e7069a09f486daa8863fb0e7496a9fdb"}, 1534 | {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8561da8b3dd22d696244d6d0d5330618c993a215070f473b699e00cf1f3f6443"}, 1535 | {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fccdf7c2c5821a8cbd0a9440a456f5050492f2270bd54e94360cac663398739b"}, 1536 | {file = "lazy_object_proxy-1.7.1-cp310-cp310-win32.whl", hash = "sha256:898322f8d078f2654d275124a8dd19b079080ae977033b713f677afcfc88e2b9"}, 1537 | {file = "lazy_object_proxy-1.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:85b232e791f2229a4f55840ed54706110c80c0a210d076eee093f2b2e33e1bfd"}, 1538 | {file = "lazy_object_proxy-1.7.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:46ff647e76f106bb444b4533bb4153c7370cdf52efc62ccfc1a28bdb3cc95442"}, 1539 | {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12f3bb77efe1367b2515f8cb4790a11cffae889148ad33adad07b9b55e0ab22c"}, 1540 | {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c19814163728941bb871240d45c4c30d33b8a2e85972c44d4e63dd7107faba44"}, 1541 | {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e40f2013d96d30217a51eeb1db28c9ac41e9d0ee915ef9d00da639c5b63f01a1"}, 1542 | {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2052837718516a94940867e16b1bb10edb069ab475c3ad84fd1e1a6dd2c0fcfc"}, 1543 | {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win32.whl", hash = "sha256:6a24357267aa976abab660b1d47a34aaf07259a0c3859a34e536f1ee6e76b5bb"}, 1544 | {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:6aff3fe5de0831867092e017cf67e2750c6a1c7d88d84d2481bd84a2e019ec35"}, 1545 | {file = "lazy_object_proxy-1.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6a6e94c7b02641d1311228a102607ecd576f70734dc3d5e22610111aeacba8a0"}, 1546 | {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ce15276a1a14549d7e81c243b887293904ad2d94ad767f42df91e75fd7b5b6"}, 1547 | {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e368b7f7eac182a59ff1f81d5f3802161932a41dc1b1cc45c1f757dc876b5d2c"}, 1548 | {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6ecbb350991d6434e1388bee761ece3260e5228952b1f0c46ffc800eb313ff42"}, 1549 | {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:553b0f0d8dbf21890dd66edd771f9b1b5f51bd912fa5f26de4449bfc5af5e029"}, 1550 | {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win32.whl", hash = "sha256:c7a683c37a8a24f6428c28c561c80d5f4fd316ddcf0c7cab999b15ab3f5c5c69"}, 1551 | {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:df2631f9d67259dc9620d831384ed7732a198eb434eadf69aea95ad18c587a28"}, 1552 | {file = "lazy_object_proxy-1.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07fa44286cda977bd4803b656ffc1c9b7e3bc7dff7d34263446aec8f8c96f88a"}, 1553 | {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dca6244e4121c74cc20542c2ca39e5c4a5027c81d112bfb893cf0790f96f57e"}, 1554 | {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91ba172fc5b03978764d1df5144b4ba4ab13290d7bab7a50f12d8117f8630c38"}, 1555 | {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:043651b6cb706eee4f91854da4a089816a6606c1428fd391573ef8cb642ae4f7"}, 1556 | {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b9e89b87c707dd769c4ea91f7a31538888aad05c116a59820f28d59b3ebfe25a"}, 1557 | {file = "lazy_object_proxy-1.7.1-cp38-cp38-win32.whl", hash = "sha256:9d166602b525bf54ac994cf833c385bfcc341b364e3ee71e3bf5a1336e677b55"}, 1558 | {file = "lazy_object_proxy-1.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:8f3953eb575b45480db6568306893f0bd9d8dfeeebd46812aa09ca9579595148"}, 1559 | {file = "lazy_object_proxy-1.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dd7ed7429dbb6c494aa9bc4e09d94b778a3579be699f9d67da7e6804c422d3de"}, 1560 | {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70ed0c2b380eb6248abdef3cd425fc52f0abd92d2b07ce26359fcbc399f636ad"}, 1561 | {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7096a5e0c1115ec82641afbdd70451a144558ea5cf564a896294e346eb611be1"}, 1562 | {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f769457a639403073968d118bc70110e7dce294688009f5c24ab78800ae56dc8"}, 1563 | {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:39b0e26725c5023757fc1ab2a89ef9d7ab23b84f9251e28f9cc114d5b59c1b09"}, 1564 | {file = "lazy_object_proxy-1.7.1-cp39-cp39-win32.whl", hash = "sha256:2130db8ed69a48a3440103d4a520b89d8a9405f1b06e2cc81640509e8bf6548f"}, 1565 | {file = "lazy_object_proxy-1.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61"}, 1566 | {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, 1567 | ] 1568 | markupsafe = [ 1569 | {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, 1570 | {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, 1571 | {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, 1572 | {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, 1573 | {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, 1574 | {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, 1575 | {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, 1576 | {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, 1577 | {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, 1578 | {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, 1579 | {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, 1580 | {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, 1581 | {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, 1582 | {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, 1583 | {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, 1584 | {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, 1585 | {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, 1586 | {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, 1587 | {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, 1588 | {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, 1589 | {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, 1590 | {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, 1591 | {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, 1592 | {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, 1593 | {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, 1594 | {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, 1595 | {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, 1596 | {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, 1597 | {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, 1598 | {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, 1599 | {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, 1600 | {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, 1601 | {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, 1602 | {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, 1603 | {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, 1604 | {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, 1605 | {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, 1606 | {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, 1607 | {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, 1608 | {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, 1609 | ] 1610 | matplotlib-inline = [ 1611 | {file = "matplotlib-inline-0.1.3.tar.gz", hash = "sha256:a04bfba22e0d1395479f866853ec1ee28eea1485c1d69a6faf00dc3e24ff34ee"}, 1612 | {file = "matplotlib_inline-0.1.3-py3-none-any.whl", hash = "sha256:aed605ba3b72462d64d475a21a9296f400a19c4f74a31b59103d2a99ffd5aa5c"}, 1613 | ] 1614 | mccabe = [ 1615 | {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, 1616 | {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, 1617 | ] 1618 | mistune = [ 1619 | {file = "mistune-0.8.4-py2.py3-none-any.whl", hash = "sha256:88a1051873018da288eee8538d476dffe1262495144b33ecb586c4ab266bb8d4"}, 1620 | {file = "mistune-0.8.4.tar.gz", hash = "sha256:59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e"}, 1621 | ] 1622 | mypy-extensions = [ 1623 | {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, 1624 | {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, 1625 | ] 1626 | nbclassic = [ 1627 | {file = "nbclassic-0.3.7-py3-none-any.whl", hash = "sha256:89184baa2d66b8ac3c8d3df57cbcf16f34148954d410a2fb3e897d7c18f2479d"}, 1628 | {file = "nbclassic-0.3.7.tar.gz", hash = "sha256:36dbaa88ffaf5dc05d149deb97504b86ba648f4a80a60b8a58ac94acab2daeb5"}, 1629 | ] 1630 | nbclient = [ 1631 | {file = "nbclient-0.6.0-py3-none-any.whl", hash = "sha256:2eed35fc954716cdf0a01ea8cbdd9f9316761479008570059e2f5de29e139423"}, 1632 | {file = "nbclient-0.6.0.tar.gz", hash = "sha256:3f89a403c6badf24d2855a455b69a80985b3b27e04111243fdb6a88a28d27031"}, 1633 | ] 1634 | nbconvert = [ 1635 | {file = "nbconvert-6.5.0-py3-none-any.whl", hash = "sha256:c56dd0b8978a1811a5654f74c727ff16ca87dd5a43abd435a1c49b840fcd8360"}, 1636 | {file = "nbconvert-6.5.0.tar.gz", hash = "sha256:223e46e27abe8596b8aed54301fadbba433b7ffea8196a68fd7b1ff509eee99d"}, 1637 | ] 1638 | nbformat = [ 1639 | {file = "nbformat-5.3.0-py3-none-any.whl", hash = "sha256:38856d97de49e8292e2d5d8f595e9d26f02abfd87e075d450af4511870b40538"}, 1640 | {file = "nbformat-5.3.0.tar.gz", hash = "sha256:fcc5ab8cb74e20b19570b5be809e2dba9b82836fd2761a89066ad43394ba29f5"}, 1641 | ] 1642 | nest-asyncio = [ 1643 | {file = "nest_asyncio-1.5.5-py3-none-any.whl", hash = "sha256:b98e3ec1b246135e4642eceffa5a6c23a3ab12c82ff816a92c612d68205813b2"}, 1644 | {file = "nest_asyncio-1.5.5.tar.gz", hash = "sha256:e442291cd942698be619823a17a86a5759eabe1f8613084790de189fe9e16d65"}, 1645 | ] 1646 | notebook = [ 1647 | {file = "notebook-6.4.10-py3-none-any.whl", hash = "sha256:49cead814bff0945fcb2ee07579259418672ac175d3dc3d8102a4b0a656ed4df"}, 1648 | {file = "notebook-6.4.10.tar.gz", hash = "sha256:2408a76bc6289283a8eecfca67e298ec83c67db51a4c2e1b713dd180bb39e90e"}, 1649 | ] 1650 | notebook-shim = [ 1651 | {file = "notebook_shim-0.1.0-py3-none-any.whl", hash = "sha256:02432d55a01139ac16e2100888aa2b56c614720cec73a27e71f40a5387e45324"}, 1652 | {file = "notebook_shim-0.1.0.tar.gz", hash = "sha256:7897e47a36d92248925a2143e3596f19c60597708f7bef50d81fcd31d7263e85"}, 1653 | ] 1654 | packaging = [ 1655 | {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, 1656 | {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, 1657 | ] 1658 | pandocfilters = [ 1659 | {file = "pandocfilters-1.5.0-py2.py3-none-any.whl", hash = "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f"}, 1660 | {file = "pandocfilters-1.5.0.tar.gz", hash = "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38"}, 1661 | ] 1662 | parso = [ 1663 | {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"}, 1664 | {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"}, 1665 | ] 1666 | pathspec = [ 1667 | {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, 1668 | {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, 1669 | ] 1670 | pexpect = [ 1671 | {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, 1672 | {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, 1673 | ] 1674 | pickleshare = [ 1675 | {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, 1676 | {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, 1677 | ] 1678 | platformdirs = [ 1679 | {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, 1680 | {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, 1681 | ] 1682 | pluggy = [ 1683 | {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, 1684 | {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, 1685 | ] 1686 | prometheus-client = [ 1687 | {file = "prometheus_client-0.14.1-py3-none-any.whl", hash = "sha256:522fded625282822a89e2773452f42df14b5a8e84a86433e3f8a189c1d54dc01"}, 1688 | {file = "prometheus_client-0.14.1.tar.gz", hash = "sha256:5459c427624961076277fdc6dc50540e2bacb98eebde99886e59ec55ed92093a"}, 1689 | ] 1690 | prompt-toolkit = [ 1691 | {file = "prompt_toolkit-3.0.29-py3-none-any.whl", hash = "sha256:62291dad495e665fca0bda814e342c69952086afb0f4094d0893d357e5c78752"}, 1692 | {file = "prompt_toolkit-3.0.29.tar.gz", hash = "sha256:bd640f60e8cecd74f0dc249713d433ace2ddc62b65ee07f96d358e0b152b6ea7"}, 1693 | ] 1694 | psutil = [ 1695 | {file = "psutil-5.9.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:55ce319452e3d139e25d6c3f85a1acf12d1607ddedea5e35fb47a552c051161b"}, 1696 | {file = "psutil-5.9.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:7336292a13a80eb93c21f36bde4328aa748a04b68c13d01dfddd67fc13fd0618"}, 1697 | {file = "psutil-5.9.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:cb8d10461c1ceee0c25a64f2dd54872b70b89c26419e147a05a10b753ad36ec2"}, 1698 | {file = "psutil-5.9.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:7641300de73e4909e5d148e90cc3142fb890079e1525a840cf0dfd39195239fd"}, 1699 | {file = "psutil-5.9.0-cp27-none-win32.whl", hash = "sha256:ea42d747c5f71b5ccaa6897b216a7dadb9f52c72a0fe2b872ef7d3e1eacf3ba3"}, 1700 | {file = "psutil-5.9.0-cp27-none-win_amd64.whl", hash = "sha256:ef216cc9feb60634bda2f341a9559ac594e2eeaadd0ba187a4c2eb5b5d40b91c"}, 1701 | {file = "psutil-5.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90a58b9fcae2dbfe4ba852b57bd4a1dded6b990a33d6428c7614b7d48eccb492"}, 1702 | {file = "psutil-5.9.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff0d41f8b3e9ebb6b6110057e40019a432e96aae2008951121ba4e56040b84f3"}, 1703 | {file = "psutil-5.9.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:742c34fff804f34f62659279ed5c5b723bb0195e9d7bd9907591de9f8f6558e2"}, 1704 | {file = "psutil-5.9.0-cp310-cp310-win32.whl", hash = "sha256:8293942e4ce0c5689821f65ce6522ce4786d02af57f13c0195b40e1edb1db61d"}, 1705 | {file = "psutil-5.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:9b51917c1af3fa35a3f2dabd7ba96a2a4f19df3dec911da73875e1edaf22a40b"}, 1706 | {file = "psutil-5.9.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e9805fed4f2a81de98ae5fe38b75a74c6e6ad2df8a5c479594c7629a1fe35f56"}, 1707 | {file = "psutil-5.9.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c51f1af02334e4b516ec221ee26b8fdf105032418ca5a5ab9737e8c87dafe203"}, 1708 | {file = "psutil-5.9.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32acf55cb9a8cbfb29167cd005951df81b567099295291bcfd1027365b36591d"}, 1709 | {file = "psutil-5.9.0-cp36-cp36m-win32.whl", hash = "sha256:e5c783d0b1ad6ca8a5d3e7b680468c9c926b804be83a3a8e95141b05c39c9f64"}, 1710 | {file = "psutil-5.9.0-cp36-cp36m-win_amd64.whl", hash = "sha256:d62a2796e08dd024b8179bd441cb714e0f81226c352c802fca0fd3f89eeacd94"}, 1711 | {file = "psutil-5.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d00a664e31921009a84367266b35ba0aac04a2a6cad09c550a89041034d19a0"}, 1712 | {file = "psutil-5.9.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7779be4025c540d1d65a2de3f30caeacc49ae7a2152108adeaf42c7534a115ce"}, 1713 | {file = "psutil-5.9.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:072664401ae6e7c1bfb878c65d7282d4b4391f1bc9a56d5e03b5a490403271b5"}, 1714 | {file = "psutil-5.9.0-cp37-cp37m-win32.whl", hash = "sha256:df2c8bd48fb83a8408c8390b143c6a6fa10cb1a674ca664954de193fdcab36a9"}, 1715 | {file = "psutil-5.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1d7b433519b9a38192dfda962dd8f44446668c009833e1429a52424624f408b4"}, 1716 | {file = "psutil-5.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c3400cae15bdb449d518545cbd5b649117de54e3596ded84aacabfbb3297ead2"}, 1717 | {file = "psutil-5.9.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2237f35c4bbae932ee98902a08050a27821f8f6dfa880a47195e5993af4702d"}, 1718 | {file = "psutil-5.9.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1070a9b287846a21a5d572d6dddd369517510b68710fca56b0e9e02fd24bed9a"}, 1719 | {file = "psutil-5.9.0-cp38-cp38-win32.whl", hash = "sha256:76cebf84aac1d6da5b63df11fe0d377b46b7b500d892284068bacccf12f20666"}, 1720 | {file = "psutil-5.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:3151a58f0fbd8942ba94f7c31c7e6b310d2989f4da74fcbf28b934374e9bf841"}, 1721 | {file = "psutil-5.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:539e429da49c5d27d5a58e3563886057f8fc3868a5547b4f1876d9c0f007bccf"}, 1722 | {file = "psutil-5.9.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58c7d923dc209225600aec73aa2c4ae8ea33b1ab31bc11ef8a5933b027476f07"}, 1723 | {file = "psutil-5.9.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3611e87eea393f779a35b192b46a164b1d01167c9d323dda9b1e527ea69d697d"}, 1724 | {file = "psutil-5.9.0-cp39-cp39-win32.whl", hash = "sha256:4e2fb92e3aeae3ec3b7b66c528981fd327fb93fd906a77215200404444ec1845"}, 1725 | {file = "psutil-5.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:7d190ee2eaef7831163f254dc58f6d2e2a22e27382b936aab51c835fc080c3d3"}, 1726 | {file = "psutil-5.9.0.tar.gz", hash = "sha256:869842dbd66bb80c3217158e629d6fceaecc3a3166d3d1faee515b05dd26ca25"}, 1727 | ] 1728 | ptyprocess = [ 1729 | {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, 1730 | {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, 1731 | ] 1732 | pure-eval = [ 1733 | {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"}, 1734 | {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"}, 1735 | ] 1736 | py = [ 1737 | {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, 1738 | {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, 1739 | ] 1740 | pycparser = [ 1741 | {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, 1742 | {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, 1743 | ] 1744 | pygments = [ 1745 | {file = "Pygments-2.11.2-py3-none-any.whl", hash = "sha256:44238f1b60a76d78fc8ca0528ee429702aae011c265fe6a8dd8b63049ae41c65"}, 1746 | {file = "Pygments-2.11.2.tar.gz", hash = "sha256:4e426f72023d88d03b2fa258de560726ce890ff3b630f88c21cbb8b2503b8c6a"}, 1747 | ] 1748 | pylint = [ 1749 | {file = "pylint-2.13.5-py3-none-any.whl", hash = "sha256:c149694cfdeaee1aa2465e6eaab84c87a881a7d55e6e93e09466be7164764d1e"}, 1750 | {file = "pylint-2.13.5.tar.gz", hash = "sha256:dab221658368c7a05242e673c275c488670144123f4bd262b2777249c1c0de9b"}, 1751 | ] 1752 | pyparsing = [ 1753 | {file = "pyparsing-3.0.8-py3-none-any.whl", hash = "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06"}, 1754 | {file = "pyparsing-3.0.8.tar.gz", hash = "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954"}, 1755 | ] 1756 | pyrsistent = [ 1757 | {file = "pyrsistent-0.18.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1"}, 1758 | {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d45866ececf4a5fff8742c25722da6d4c9e180daa7b405dc0a2a2790d668c26"}, 1759 | {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ed6784ceac462a7d6fcb7e9b663e93b9a6fb373b7f43594f9ff68875788e01e"}, 1760 | {file = "pyrsistent-0.18.1-cp310-cp310-win32.whl", hash = "sha256:e4f3149fd5eb9b285d6bfb54d2e5173f6a116fe19172686797c056672689daf6"}, 1761 | {file = "pyrsistent-0.18.1-cp310-cp310-win_amd64.whl", hash = "sha256:636ce2dc235046ccd3d8c56a7ad54e99d5c1cd0ef07d9ae847306c91d11b5fec"}, 1762 | {file = "pyrsistent-0.18.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e92a52c166426efbe0d1ec1332ee9119b6d32fc1f0bbfd55d5c1088070e7fc1b"}, 1763 | {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7a096646eab884bf8bed965bad63ea327e0d0c38989fc83c5ea7b8a87037bfc"}, 1764 | {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cdfd2c361b8a8e5d9499b9082b501c452ade8bbf42aef97ea04854f4a3f43b22"}, 1765 | {file = "pyrsistent-0.18.1-cp37-cp37m-win32.whl", hash = "sha256:7ec335fc998faa4febe75cc5268a9eac0478b3f681602c1f27befaf2a1abe1d8"}, 1766 | {file = "pyrsistent-0.18.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6455fc599df93d1f60e1c5c4fe471499f08d190d57eca040c0ea182301321286"}, 1767 | {file = "pyrsistent-0.18.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd8da6d0124efa2f67d86fa70c851022f87c98e205f0594e1fae044e7119a5a6"}, 1768 | {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bfe2388663fd18bd8ce7db2c91c7400bf3e1a9e8bd7d63bf7e77d39051b85ec"}, 1769 | {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e3e1fcc45199df76053026a51cc59ab2ea3fc7c094c6627e93b7b44cdae2c8c"}, 1770 | {file = "pyrsistent-0.18.1-cp38-cp38-win32.whl", hash = "sha256:b568f35ad53a7b07ed9b1b2bae09eb15cdd671a5ba5d2c66caee40dbf91c68ca"}, 1771 | {file = "pyrsistent-0.18.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1b96547410f76078eaf66d282ddca2e4baae8964364abb4f4dcdde855cd123a"}, 1772 | {file = "pyrsistent-0.18.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f87cc2863ef33c709e237d4b5f4502a62a00fab450c9e020892e8e2ede5847f5"}, 1773 | {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bc66318fb7ee012071b2792024564973ecc80e9522842eb4e17743604b5e045"}, 1774 | {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:914474c9f1d93080338ace89cb2acee74f4f666fb0424896fcfb8d86058bf17c"}, 1775 | {file = "pyrsistent-0.18.1-cp39-cp39-win32.whl", hash = "sha256:1b34eedd6812bf4d33814fca1b66005805d3640ce53140ab8bbb1e2651b0d9bc"}, 1776 | {file = "pyrsistent-0.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:e24a828f57e0c337c8d8bb9f6b12f09dfdf0273da25fda9e314f0b684b415a07"}, 1777 | {file = "pyrsistent-0.18.1.tar.gz", hash = "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96"}, 1778 | ] 1779 | pytest = [ 1780 | {file = "pytest-7.1.1-py3-none-any.whl", hash = "sha256:92f723789a8fdd7180b6b06483874feca4c48a5c76968e03bb3e7f806a1869ea"}, 1781 | {file = "pytest-7.1.1.tar.gz", hash = "sha256:841132caef6b1ad17a9afde46dc4f6cfa59a05f9555aae5151f73bdf2820ca63"}, 1782 | ] 1783 | python-dateutil = [ 1784 | {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, 1785 | {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, 1786 | ] 1787 | pytz = [ 1788 | {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, 1789 | {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, 1790 | ] 1791 | pywin32 = [ 1792 | {file = "pywin32-303-cp310-cp310-win32.whl", hash = "sha256:6fed4af057039f309263fd3285d7b8042d41507343cd5fa781d98fcc5b90e8bb"}, 1793 | {file = "pywin32-303-cp310-cp310-win_amd64.whl", hash = "sha256:51cb52c5ec6709f96c3f26e7795b0bf169ee0d8395b2c1d7eb2c029a5008ed51"}, 1794 | {file = "pywin32-303-cp311-cp311-win32.whl", hash = "sha256:d9b5d87ca944eb3aa4cd45516203ead4b37ab06b8b777c54aedc35975dec0dee"}, 1795 | {file = "pywin32-303-cp311-cp311-win_amd64.whl", hash = "sha256:fcf44032f5b14fcda86028cdf49b6ebdaea091230eb0a757282aa656e4732439"}, 1796 | {file = "pywin32-303-cp36-cp36m-win32.whl", hash = "sha256:aad484d52ec58008ca36bd4ad14a71d7dd0a99db1a4ca71072213f63bf49c7d9"}, 1797 | {file = "pywin32-303-cp36-cp36m-win_amd64.whl", hash = "sha256:2a09632916b6bb231ba49983fe989f2f625cea237219530e81a69239cd0c4559"}, 1798 | {file = "pywin32-303-cp37-cp37m-win32.whl", hash = "sha256:b1675d82bcf6dbc96363fca747bac8bff6f6e4a447a4287ac652aa4b9adc796e"}, 1799 | {file = "pywin32-303-cp37-cp37m-win_amd64.whl", hash = "sha256:c268040769b48a13367221fced6d4232ed52f044ffafeda247bd9d2c6bdc29ca"}, 1800 | {file = "pywin32-303-cp38-cp38-win32.whl", hash = "sha256:5f9ec054f5a46a0f4dfd72af2ce1372f3d5a6e4052af20b858aa7df2df7d355b"}, 1801 | {file = "pywin32-303-cp38-cp38-win_amd64.whl", hash = "sha256:793bf74fce164bcffd9d57bb13c2c15d56e43c9542a7b9687b4fccf8f8a41aba"}, 1802 | {file = "pywin32-303-cp39-cp39-win32.whl", hash = "sha256:7d3271c98434617a11921c5ccf74615794d97b079e22ed7773790822735cc352"}, 1803 | {file = "pywin32-303-cp39-cp39-win_amd64.whl", hash = "sha256:79cbb862c11b9af19bcb682891c1b91942ec2ff7de8151e2aea2e175899cda34"}, 1804 | ] 1805 | pywinpty = [ 1806 | {file = "pywinpty-2.0.5-cp310-none-win_amd64.whl", hash = "sha256:f86c76e2881c37e69678cbbf178109f8da1fa8584db24d58e1b9369b0276cfcb"}, 1807 | {file = "pywinpty-2.0.5-cp37-none-win_amd64.whl", hash = "sha256:ff9b52f182650cfdf3db1b264a6fe0963eb9d996a7a1fa843ac406c1e32111f8"}, 1808 | {file = "pywinpty-2.0.5-cp38-none-win_amd64.whl", hash = "sha256:651ee1467bd7eb6f64d44dbc954b7ab7d15ab6d8adacc4e13299692c67c5d5d2"}, 1809 | {file = "pywinpty-2.0.5-cp39-none-win_amd64.whl", hash = "sha256:e59a508ae78374febada3e53b5bbc90b5ad07ae68cbfd72a2e965f9793ae04f3"}, 1810 | {file = "pywinpty-2.0.5.tar.gz", hash = "sha256:e125d3f1804d8804952b13e33604ad2ca8b9b2cac92b27b521c005d1604794f8"}, 1811 | ] 1812 | pyzmq = [ 1813 | {file = "pyzmq-22.3.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:6b217b8f9dfb6628f74b94bdaf9f7408708cb02167d644edca33f38746ca12dd"}, 1814 | {file = "pyzmq-22.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2841997a0d85b998cbafecb4183caf51fd19c4357075dfd33eb7efea57e4c149"}, 1815 | {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f89468059ebc519a7acde1ee50b779019535db8dcf9b8c162ef669257fef7a93"}, 1816 | {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea12133df25e3a6918718fbb9a510c6ee5d3fdd5a346320421aac3882f4feeea"}, 1817 | {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76c532fd68b93998aab92356be280deec5de8f8fe59cd28763d2cc8a58747b7f"}, 1818 | {file = "pyzmq-22.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f907c7359ce8bf7f7e63c82f75ad0223384105f5126f313400b7e8004d9b33c3"}, 1819 | {file = "pyzmq-22.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:902319cfe23366595d3fa769b5b751e6ee6750a0a64c5d9f757d624b2ac3519e"}, 1820 | {file = "pyzmq-22.3.0-cp310-cp310-win32.whl", hash = "sha256:67db33bea0a29d03e6eeec55a8190e033318cee3cbc732ba8fd939617cbf762d"}, 1821 | {file = "pyzmq-22.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:7661fc1d5cb73481cf710a1418a4e1e301ed7d5d924f91c67ba84b2a1b89defd"}, 1822 | {file = "pyzmq-22.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:79244b9e97948eaf38695f4b8e6fc63b14b78cc37f403c6642ba555517ac1268"}, 1823 | {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab888624ed68930442a3f3b0b921ad7439c51ba122dbc8c386e6487a658e4a4e"}, 1824 | {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18cd854b423fce44951c3a4d3e686bac8f1243d954f579e120a1714096637cc0"}, 1825 | {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:de8df0684398bd74ad160afdc2a118ca28384ac6f5e234eb0508858d8d2d9364"}, 1826 | {file = "pyzmq-22.3.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:62bcade20813796c426409a3e7423862d50ff0639f5a2a95be4b85b09a618666"}, 1827 | {file = "pyzmq-22.3.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ea5a79e808baef98c48c884effce05c31a0698c1057de8fc1c688891043c1ce1"}, 1828 | {file = "pyzmq-22.3.0-cp36-cp36m-win32.whl", hash = "sha256:3c1895c95be92600233e476fe283f042e71cf8f0b938aabf21b7aafa62a8dac9"}, 1829 | {file = "pyzmq-22.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:851977788b9caa8ed011f5f643d3ee8653af02c5fc723fa350db5125abf2be7b"}, 1830 | {file = "pyzmq-22.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b4ebed0977f92320f6686c96e9e8dd29eed199eb8d066936bac991afc37cbb70"}, 1831 | {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42abddebe2c6a35180ca549fadc7228d23c1e1f76167c5ebc8a936b5804ea2df"}, 1832 | {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1e41b32d6f7f9c26bc731a8b529ff592f31fc8b6ef2be9fa74abd05c8a342d7"}, 1833 | {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:be4e0f229cf3a71f9ecd633566bd6f80d9fa6afaaff5489492be63fe459ef98c"}, 1834 | {file = "pyzmq-22.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:08c4e315a76ef26eb833511ebf3fa87d182152adf43dedee8d79f998a2162a0b"}, 1835 | {file = "pyzmq-22.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:badb868fff14cfd0e200eaa845887b1011146a7d26d579aaa7f966c203736b92"}, 1836 | {file = "pyzmq-22.3.0-cp37-cp37m-win32.whl", hash = "sha256:7c58f598d9fcc52772b89a92d72bf8829c12d09746a6d2c724c5b30076c1f11d"}, 1837 | {file = "pyzmq-22.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2b97502c16a5ec611cd52410bdfaab264997c627a46b0f98d3f666227fd1ea2d"}, 1838 | {file = "pyzmq-22.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d728b08448e5ac3e4d886b165385a262883c34b84a7fe1166277fe675e1c197a"}, 1839 | {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:480b9931bfb08bf8b094edd4836271d4d6b44150da051547d8c7113bf947a8b0"}, 1840 | {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7dc09198e4073e6015d9a8ea093fc348d4e59de49382476940c3dd9ae156fba8"}, 1841 | {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ca6cd58f62a2751728016d40082008d3b3412a7f28ddfb4a2f0d3c130f69e74"}, 1842 | {file = "pyzmq-22.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:468bd59a588e276961a918a3060948ae68f6ff5a7fa10bb2f9160c18fe341067"}, 1843 | {file = "pyzmq-22.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c88fa7410e9fc471e0858638f403739ee869924dd8e4ae26748496466e27ac59"}, 1844 | {file = "pyzmq-22.3.0-cp38-cp38-win32.whl", hash = "sha256:c0f84360dcca3481e8674393bdf931f9f10470988f87311b19d23cda869bb6b7"}, 1845 | {file = "pyzmq-22.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:f762442bab706fd874064ca218b33a1d8e40d4938e96c24dafd9b12e28017f45"}, 1846 | {file = "pyzmq-22.3.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:954e73c9cd4d6ae319f1c936ad159072b6d356a92dcbbabfd6e6204b9a79d356"}, 1847 | {file = "pyzmq-22.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f43b4a2e6218371dd4f41e547bd919ceeb6ebf4abf31a7a0669cd11cd91ea973"}, 1848 | {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:acebba1a23fb9d72b42471c3771b6f2f18dcd46df77482612054bd45c07dfa36"}, 1849 | {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cf98fd7a6c8aaa08dbc699ffae33fd71175696d78028281bc7b832b26f00ca57"}, 1850 | {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d072f7dfbdb184f0786d63bda26e8a0882041b1e393fbe98940395f7fab4c5e2"}, 1851 | {file = "pyzmq-22.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:53f4fd13976789ffafedd4d46f954c7bb01146121812b72b4ddca286034df966"}, 1852 | {file = "pyzmq-22.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d1b5d457acbadcf8b27561deeaa386b0217f47626b29672fa7bd31deb6e91e1b"}, 1853 | {file = "pyzmq-22.3.0-cp39-cp39-win32.whl", hash = "sha256:e6a02cf7271ee94674a44f4e62aa061d2d049001c844657740e156596298b70b"}, 1854 | {file = "pyzmq-22.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d3dcb5548ead4f1123851a5ced467791f6986d68c656bc63bfff1bf9e36671e2"}, 1855 | {file = "pyzmq-22.3.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3a4c9886d61d386b2b493377d980f502186cd71d501fffdba52bd2a0880cef4f"}, 1856 | {file = "pyzmq-22.3.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:80e043a89c6cadefd3a0712f8a1322038e819ebe9dbac7eca3bce1721bcb63bf"}, 1857 | {file = "pyzmq-22.3.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1621e7a2af72cced1f6ec8ca8ca91d0f76ac236ab2e8828ac8fe909512d566cb"}, 1858 | {file = "pyzmq-22.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:d6157793719de168b199194f6b6173f0ccd3bf3499e6870fac17086072e39115"}, 1859 | {file = "pyzmq-22.3.0.tar.gz", hash = "sha256:8eddc033e716f8c91c6a2112f0a8ebc5e00532b4a6ae1eb0ccc48e027f9c671c"}, 1860 | ] 1861 | requests = [ 1862 | {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, 1863 | {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, 1864 | ] 1865 | selenium = [ 1866 | {file = "selenium-3.141.0-py2.py3-none-any.whl", hash = "sha256:2d7131d7bc5a5b99a2d9b04aaf2612c411b03b8ca1b1ee8d3de5845a9be2cb3c"}, 1867 | {file = "selenium-3.141.0.tar.gz", hash = "sha256:deaf32b60ad91a4611b98d8002757f29e6f2c2d5fcaf202e1c9ad06d6772300d"}, 1868 | ] 1869 | send2trash = [ 1870 | {file = "Send2Trash-1.8.0-py3-none-any.whl", hash = "sha256:f20eaadfdb517eaca5ce077640cb261c7d2698385a6a0f072a4a5447fd49fa08"}, 1871 | {file = "Send2Trash-1.8.0.tar.gz", hash = "sha256:d2c24762fd3759860a0aff155e45871447ea58d2be6bdd39b5c8f966a0c99c2d"}, 1872 | ] 1873 | six = [ 1874 | {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, 1875 | {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, 1876 | ] 1877 | sniffio = [ 1878 | {file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"}, 1879 | {file = "sniffio-1.2.0.tar.gz", hash = "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"}, 1880 | ] 1881 | soupsieve = [ 1882 | {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"}, 1883 | {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"}, 1884 | ] 1885 | stack-data = [ 1886 | {file = "stack_data-0.2.0-py3-none-any.whl", hash = "sha256:999762f9c3132308789affa03e9271bbbe947bf78311851f4d485d8402ed858e"}, 1887 | {file = "stack_data-0.2.0.tar.gz", hash = "sha256:45692d41bd633a9503a5195552df22b583caf16f0b27c4e58c98d88c8b648e12"}, 1888 | ] 1889 | terminado = [ 1890 | {file = "terminado-0.13.3-py3-none-any.whl", hash = "sha256:874d4ea3183536c1782d13c7c91342ef0cf4e5ee1d53633029cbc972c8760bd8"}, 1891 | {file = "terminado-0.13.3.tar.gz", hash = "sha256:94d1cfab63525993f7d5c9b469a50a18d0cdf39435b59785715539dd41e36c0d"}, 1892 | ] 1893 | tinycss2 = [ 1894 | {file = "tinycss2-1.1.1-py3-none-any.whl", hash = "sha256:fe794ceaadfe3cf3e686b22155d0da5780dd0e273471a51846d0a02bc204fec8"}, 1895 | {file = "tinycss2-1.1.1.tar.gz", hash = "sha256:b2e44dd8883c360c35dd0d1b5aad0b610e5156c2cb3b33434634e539ead9d8bf"}, 1896 | ] 1897 | tomli = [ 1898 | {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, 1899 | {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, 1900 | ] 1901 | tornado = [ 1902 | {file = "tornado-6.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32"}, 1903 | {file = "tornado-6.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:0d321a39c36e5f2c4ff12b4ed58d41390460f798422c4504e09eb5678e09998c"}, 1904 | {file = "tornado-6.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9de9e5188a782be6b1ce866e8a51bc76a0fbaa0e16613823fc38e4fc2556ad05"}, 1905 | {file = "tornado-6.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:61b32d06ae8a036a6607805e6720ef00a3c98207038444ba7fd3d169cd998910"}, 1906 | {file = "tornado-6.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:3e63498f680547ed24d2c71e6497f24bca791aca2fe116dbc2bd0ac7f191691b"}, 1907 | {file = "tornado-6.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:6c77c9937962577a6a76917845d06af6ab9197702a42e1346d8ae2e76b5e3675"}, 1908 | {file = "tornado-6.1-cp35-cp35m-win32.whl", hash = "sha256:6286efab1ed6e74b7028327365cf7346b1d777d63ab30e21a0f4d5b275fc17d5"}, 1909 | {file = "tornado-6.1-cp35-cp35m-win_amd64.whl", hash = "sha256:fa2ba70284fa42c2a5ecb35e322e68823288a4251f9ba9cc77be04ae15eada68"}, 1910 | {file = "tornado-6.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0a00ff4561e2929a2c37ce706cb8233b7907e0cdc22eab98888aca5dd3775feb"}, 1911 | {file = "tornado-6.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:748290bf9112b581c525e6e6d3820621ff020ed95af6f17fedef416b27ed564c"}, 1912 | {file = "tornado-6.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e385b637ac3acaae8022e7e47dfa7b83d3620e432e3ecb9a3f7f58f150e50921"}, 1913 | {file = "tornado-6.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:25ad220258349a12ae87ede08a7b04aca51237721f63b1808d39bdb4b2164558"}, 1914 | {file = "tornado-6.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:65d98939f1a2e74b58839f8c4dab3b6b3c1ce84972ae712be02845e65391ac7c"}, 1915 | {file = "tornado-6.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:e519d64089b0876c7b467274468709dadf11e41d65f63bba207e04217f47c085"}, 1916 | {file = "tornado-6.1-cp36-cp36m-win32.whl", hash = "sha256:b87936fd2c317b6ee08a5741ea06b9d11a6074ef4cc42e031bc6403f82a32575"}, 1917 | {file = "tornado-6.1-cp36-cp36m-win_amd64.whl", hash = "sha256:cc0ee35043162abbf717b7df924597ade8e5395e7b66d18270116f8745ceb795"}, 1918 | {file = "tornado-6.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7250a3fa399f08ec9cb3f7b1b987955d17e044f1ade821b32e5f435130250d7f"}, 1919 | {file = "tornado-6.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ed3ad863b1b40cd1d4bd21e7498329ccaece75db5a5bf58cd3c9f130843e7102"}, 1920 | {file = "tornado-6.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:dcef026f608f678c118779cd6591c8af6e9b4155c44e0d1bc0c87c036fb8c8c4"}, 1921 | {file = "tornado-6.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:70dec29e8ac485dbf57481baee40781c63e381bebea080991893cd297742b8fd"}, 1922 | {file = "tornado-6.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:d3f7594930c423fd9f5d1a76bee85a2c36fd8b4b16921cae7e965f22575e9c01"}, 1923 | {file = "tornado-6.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3447475585bae2e77ecb832fc0300c3695516a47d46cefa0528181a34c5b9d3d"}, 1924 | {file = "tornado-6.1-cp37-cp37m-win32.whl", hash = "sha256:e7229e60ac41a1202444497ddde70a48d33909e484f96eb0da9baf8dc68541df"}, 1925 | {file = "tornado-6.1-cp37-cp37m-win_amd64.whl", hash = "sha256:cb5ec8eead331e3bb4ce8066cf06d2dfef1bfb1b2a73082dfe8a161301b76e37"}, 1926 | {file = "tornado-6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:20241b3cb4f425e971cb0a8e4ffc9b0a861530ae3c52f2b0434e6c1b57e9fd95"}, 1927 | {file = "tornado-6.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c77da1263aa361938476f04c4b6c8916001b90b2c2fdd92d8d535e1af48fba5a"}, 1928 | {file = "tornado-6.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:fba85b6cd9c39be262fcd23865652920832b61583de2a2ca907dbd8e8a8c81e5"}, 1929 | {file = "tornado-6.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:1e8225a1070cd8eec59a996c43229fe8f95689cb16e552d130b9793cb570a288"}, 1930 | {file = "tornado-6.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d14d30e7f46a0476efb0deb5b61343b1526f73ebb5ed84f23dc794bdb88f9d9f"}, 1931 | {file = "tornado-6.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8f959b26f2634a091bb42241c3ed8d3cedb506e7c27b8dd5c7b9f745318ddbb6"}, 1932 | {file = "tornado-6.1-cp38-cp38-win32.whl", hash = "sha256:34ca2dac9e4d7afb0bed4677512e36a52f09caa6fded70b4e3e1c89dbd92c326"}, 1933 | {file = "tornado-6.1-cp38-cp38-win_amd64.whl", hash = "sha256:6196a5c39286cc37c024cd78834fb9345e464525d8991c21e908cc046d1cc02c"}, 1934 | {file = "tornado-6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0ba29bafd8e7e22920567ce0d232c26d4d47c8b5cf4ed7b562b5db39fa199c5"}, 1935 | {file = "tornado-6.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:33892118b165401f291070100d6d09359ca74addda679b60390b09f8ef325ffe"}, 1936 | {file = "tornado-6.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7da13da6f985aab7f6f28debab00c67ff9cbacd588e8477034c0652ac141feea"}, 1937 | {file = "tornado-6.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:e0791ac58d91ac58f694d8d2957884df8e4e2f6687cdf367ef7eb7497f79eaa2"}, 1938 | {file = "tornado-6.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:66324e4e1beede9ac79e60f88de548da58b1f8ab4b2f1354d8375774f997e6c0"}, 1939 | {file = "tornado-6.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:a48900ecea1cbb71b8c71c620dee15b62f85f7c14189bdeee54966fbd9a0c5bd"}, 1940 | {file = "tornado-6.1-cp39-cp39-win32.whl", hash = "sha256:d3d20ea5782ba63ed13bc2b8c291a053c8d807a8fa927d941bd718468f7b950c"}, 1941 | {file = "tornado-6.1-cp39-cp39-win_amd64.whl", hash = "sha256:548430be2740e327b3fe0201abe471f314741efcb0067ec4f2d7dcfb4825f3e4"}, 1942 | {file = "tornado-6.1.tar.gz", hash = "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791"}, 1943 | ] 1944 | traitlets = [ 1945 | {file = "traitlets-5.1.1-py3-none-any.whl", hash = "sha256:2d313cc50a42cd6c277e7d7dc8d4d7fedd06a2c215f78766ae7b1a66277e0033"}, 1946 | {file = "traitlets-5.1.1.tar.gz", hash = "sha256:059f456c5a7c1c82b98c2e8c799f39c9b8128f6d0d46941ee118daace9eb70c7"}, 1947 | ] 1948 | typing-extensions = [ 1949 | {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, 1950 | {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, 1951 | ] 1952 | urllib3 = [ 1953 | {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, 1954 | {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, 1955 | ] 1956 | wcwidth = [ 1957 | {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, 1958 | {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, 1959 | ] 1960 | webencodings = [ 1961 | {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, 1962 | {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, 1963 | ] 1964 | websocket-client = [ 1965 | {file = "websocket-client-1.3.2.tar.gz", hash = "sha256:50b21db0058f7a953d67cc0445be4b948d7fc196ecbeb8083d68d94628e4abf6"}, 1966 | {file = "websocket_client-1.3.2-py3-none-any.whl", hash = "sha256:722b171be00f2b90e1d4fb2f2b53146a536ca38db1da8ff49c972a4e1365d0ef"}, 1967 | ] 1968 | wrapt = [ 1969 | {file = "wrapt-1.14.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:5a9a1889cc01ed2ed5f34574c90745fab1dd06ec2eee663e8ebeefe363e8efd7"}, 1970 | {file = "wrapt-1.14.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:9a3ff5fb015f6feb78340143584d9f8a0b91b6293d6b5cf4295b3e95d179b88c"}, 1971 | {file = "wrapt-1.14.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:4b847029e2d5e11fd536c9ac3136ddc3f54bc9488a75ef7d040a3900406a91eb"}, 1972 | {file = "wrapt-1.14.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:9a5a544861b21e0e7575b6023adebe7a8c6321127bb1d238eb40d99803a0e8bd"}, 1973 | {file = "wrapt-1.14.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:88236b90dda77f0394f878324cfbae05ae6fde8a84d548cfe73a75278d760291"}, 1974 | {file = "wrapt-1.14.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f0408e2dbad9e82b4c960274214af533f856a199c9274bd4aff55d4634dedc33"}, 1975 | {file = "wrapt-1.14.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:9d8c68c4145041b4eeae96239802cfdfd9ef927754a5be3f50505f09f309d8c6"}, 1976 | {file = "wrapt-1.14.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:22626dca56fd7f55a0733e604f1027277eb0f4f3d95ff28f15d27ac25a45f71b"}, 1977 | {file = "wrapt-1.14.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:65bf3eb34721bf18b5a021a1ad7aa05947a1767d1aa272b725728014475ea7d5"}, 1978 | {file = "wrapt-1.14.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09d16ae7a13cff43660155383a2372b4aa09109c7127aa3f24c3cf99b891c330"}, 1979 | {file = "wrapt-1.14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:debaf04f813ada978d7d16c7dfa16f3c9c2ec9adf4656efdc4defdf841fc2f0c"}, 1980 | {file = "wrapt-1.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748df39ed634851350efa87690c2237a678ed794fe9ede3f0d79f071ee042561"}, 1981 | {file = "wrapt-1.14.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1807054aa7b61ad8d8103b3b30c9764de2e9d0c0978e9d3fc337e4e74bf25faa"}, 1982 | {file = "wrapt-1.14.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:763a73ab377390e2af26042f685a26787c402390f682443727b847e9496e4a2a"}, 1983 | {file = "wrapt-1.14.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8529b07b49b2d89d6917cfa157d3ea1dfb4d319d51e23030664a827fe5fd2131"}, 1984 | {file = "wrapt-1.14.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:68aeefac31c1f73949662ba8affaf9950b9938b712fb9d428fa2a07e40ee57f8"}, 1985 | {file = "wrapt-1.14.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59d7d92cee84a547d91267f0fea381c363121d70fe90b12cd88241bd9b0e1763"}, 1986 | {file = "wrapt-1.14.0-cp310-cp310-win32.whl", hash = "sha256:3a88254881e8a8c4784ecc9cb2249ff757fd94b911d5df9a5984961b96113fff"}, 1987 | {file = "wrapt-1.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:9a242871b3d8eecc56d350e5e03ea1854de47b17f040446da0e47dc3e0b9ad4d"}, 1988 | {file = "wrapt-1.14.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:a65bffd24409454b889af33b6c49d0d9bcd1a219b972fba975ac935f17bdf627"}, 1989 | {file = "wrapt-1.14.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9d9fcd06c952efa4b6b95f3d788a819b7f33d11bea377be6b8980c95e7d10775"}, 1990 | {file = "wrapt-1.14.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:db6a0ddc1282ceb9032e41853e659c9b638789be38e5b8ad7498caac00231c23"}, 1991 | {file = "wrapt-1.14.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:14e7e2c5f5fca67e9a6d5f753d21f138398cad2b1159913ec9e9a67745f09ba3"}, 1992 | {file = "wrapt-1.14.0-cp35-cp35m-win32.whl", hash = "sha256:6d9810d4f697d58fd66039ab959e6d37e63ab377008ef1d63904df25956c7db0"}, 1993 | {file = "wrapt-1.14.0-cp35-cp35m-win_amd64.whl", hash = "sha256:d808a5a5411982a09fef6b49aac62986274ab050e9d3e9817ad65b2791ed1425"}, 1994 | {file = "wrapt-1.14.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b77159d9862374da213f741af0c361720200ab7ad21b9f12556e0eb95912cd48"}, 1995 | {file = "wrapt-1.14.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36a76a7527df8583112b24adc01748cd51a2d14e905b337a6fefa8b96fc708fb"}, 1996 | {file = "wrapt-1.14.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0057b5435a65b933cbf5d859cd4956624df37b8bf0917c71756e4b3d9958b9e"}, 1997 | {file = "wrapt-1.14.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a0a4ca02752ced5f37498827e49c414d694ad7cf451ee850e3ff160f2bee9d3"}, 1998 | {file = "wrapt-1.14.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:8c6be72eac3c14baa473620e04f74186c5d8f45d80f8f2b4eda6e1d18af808e8"}, 1999 | {file = "wrapt-1.14.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:21b1106bff6ece8cb203ef45b4f5778d7226c941c83aaaa1e1f0f4f32cc148cd"}, 2000 | {file = "wrapt-1.14.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:493da1f8b1bb8a623c16552fb4a1e164c0200447eb83d3f68b44315ead3f9036"}, 2001 | {file = "wrapt-1.14.0-cp36-cp36m-win32.whl", hash = "sha256:89ba3d548ee1e6291a20f3c7380c92f71e358ce8b9e48161401e087e0bc740f8"}, 2002 | {file = "wrapt-1.14.0-cp36-cp36m-win_amd64.whl", hash = "sha256:729d5e96566f44fccac6c4447ec2332636b4fe273f03da128fff8d5559782b06"}, 2003 | {file = "wrapt-1.14.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:891c353e95bb11abb548ca95c8b98050f3620a7378332eb90d6acdef35b401d4"}, 2004 | {file = "wrapt-1.14.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23f96134a3aa24cc50614920cc087e22f87439053d886e474638c68c8d15dc80"}, 2005 | {file = "wrapt-1.14.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6807bcee549a8cb2f38f73f469703a1d8d5d990815c3004f21ddb68a567385ce"}, 2006 | {file = "wrapt-1.14.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6915682f9a9bc4cf2908e83caf5895a685da1fbd20b6d485dafb8e218a338279"}, 2007 | {file = "wrapt-1.14.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f2f3bc7cd9c9fcd39143f11342eb5963317bd54ecc98e3650ca22704b69d9653"}, 2008 | {file = "wrapt-1.14.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3a71dbd792cc7a3d772ef8cd08d3048593f13d6f40a11f3427c000cf0a5b36a0"}, 2009 | {file = "wrapt-1.14.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5a0898a640559dec00f3614ffb11d97a2666ee9a2a6bad1259c9facd01a1d4d9"}, 2010 | {file = "wrapt-1.14.0-cp37-cp37m-win32.whl", hash = "sha256:167e4793dc987f77fd476862d32fa404d42b71f6a85d3b38cbce711dba5e6b68"}, 2011 | {file = "wrapt-1.14.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d066ffc5ed0be00cd0352c95800a519cf9e4b5dd34a028d301bdc7177c72daf3"}, 2012 | {file = "wrapt-1.14.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d9bdfa74d369256e4218000a629978590fd7cb6cf6893251dad13d051090436d"}, 2013 | {file = "wrapt-1.14.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2498762814dd7dd2a1d0248eda2afbc3dd9c11537bc8200a4b21789b6df6cd38"}, 2014 | {file = "wrapt-1.14.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f24ca7953f2643d59a9c87d6e272d8adddd4a53bb62b9208f36db408d7aafc7"}, 2015 | {file = "wrapt-1.14.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b835b86bd5a1bdbe257d610eecab07bf685b1af2a7563093e0e69180c1d4af1"}, 2016 | {file = "wrapt-1.14.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b21650fa6907e523869e0396c5bd591cc326e5c1dd594dcdccac089561cacfb8"}, 2017 | {file = "wrapt-1.14.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:354d9fc6b1e44750e2a67b4b108841f5f5ea08853453ecbf44c81fdc2e0d50bd"}, 2018 | {file = "wrapt-1.14.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1f83e9c21cd5275991076b2ba1cd35418af3504667affb4745b48937e214bafe"}, 2019 | {file = "wrapt-1.14.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:61e1a064906ccba038aa3c4a5a82f6199749efbbb3cef0804ae5c37f550eded0"}, 2020 | {file = "wrapt-1.14.0-cp38-cp38-win32.whl", hash = "sha256:28c659878f684365d53cf59dc9a1929ea2eecd7ac65da762be8b1ba193f7e84f"}, 2021 | {file = "wrapt-1.14.0-cp38-cp38-win_amd64.whl", hash = "sha256:b0ed6ad6c9640671689c2dbe6244680fe8b897c08fd1fab2228429b66c518e5e"}, 2022 | {file = "wrapt-1.14.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b3f7e671fb19734c872566e57ce7fc235fa953d7c181bb4ef138e17d607dc8a1"}, 2023 | {file = "wrapt-1.14.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87fa943e8bbe40c8c1ba4086971a6fefbf75e9991217c55ed1bcb2f1985bd3d4"}, 2024 | {file = "wrapt-1.14.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4775a574e9d84e0212f5b18886cace049a42e13e12009bb0491562a48bb2b758"}, 2025 | {file = "wrapt-1.14.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9d57677238a0c5411c76097b8b93bdebb02eb845814c90f0b01727527a179e4d"}, 2026 | {file = "wrapt-1.14.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00108411e0f34c52ce16f81f1d308a571df7784932cc7491d1e94be2ee93374b"}, 2027 | {file = "wrapt-1.14.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d332eecf307fca852d02b63f35a7872de32d5ba8b4ec32da82f45df986b39ff6"}, 2028 | {file = "wrapt-1.14.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:01f799def9b96a8ec1ef6b9c1bbaf2bbc859b87545efbecc4a78faea13d0e3a0"}, 2029 | {file = "wrapt-1.14.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47045ed35481e857918ae78b54891fac0c1d197f22c95778e66302668309336c"}, 2030 | {file = "wrapt-1.14.0-cp39-cp39-win32.whl", hash = "sha256:2eca15d6b947cfff51ed76b2d60fd172c6ecd418ddab1c5126032d27f74bc350"}, 2031 | {file = "wrapt-1.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:bb36fbb48b22985d13a6b496ea5fb9bb2a076fea943831643836c9f6febbcfdc"}, 2032 | {file = "wrapt-1.14.0.tar.gz", hash = "sha256:8323a43bd9c91f62bb7d4be74cc9ff10090e7ef820e27bfe8815c57e68261311"}, 2033 | ] 2034 | zipp = [ 2035 | {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, 2036 | {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, 2037 | ] 2038 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "tradingview-selenium-data" 3 | version = "0.1.0" 4 | description = "Simple TradingView scripts using Python Helium (Selenium) to scrape data from TradingView for ML training" 5 | authors = ["Matt Gosden "] 6 | license = "MIT" 7 | readme = "README.md" 8 | homepage = "https://github.com/ttamg/tradingview-selenium-data" 9 | 10 | [tool.poetry.dependencies] 11 | python = ">=3.8,<4.0" 12 | helium = "^3.0.8" 13 | 14 | [tool.poetry.dev-dependencies] 15 | pytest = "^7.1.1" 16 | pylint = "^2.13.5" 17 | black = "^22.3.0" 18 | jupyterlab = "^3.3.4" 19 | 20 | [build-system] 21 | requires = ["poetry-core>=1.0.0"] 22 | build-backend = "poetry.core.masonry.api" 23 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | helium==3.0.8; python_version >= "3" 2 | selenium==3.141.0; python_version >= "3" 3 | urllib3==1.26.9; python_version >= "3" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4" and python_version >= "3" 4 | -------------------------------------------------------------------------------- /scripts/00_example.py: -------------------------------------------------------------------------------- 1 | from common.run import run 2 | 3 | ASSETS = ["AAPL", "MSFT"] 4 | PERIODICITIES = ["60", "4H", "1D", "3D", "1W"] 5 | 6 | 7 | if __name__ == "__main__": 8 | run(ASSETS, PERIODICITIES) 9 | -------------------------------------------------------------------------------- /scripts/01_etfs.py: -------------------------------------------------------------------------------- 1 | from common.run import run 2 | 3 | PERIODICITIES = ["60", "4H", "1D", "3D", "1W"] 4 | 5 | US_SECTOR_ETFS = [ 6 | "XLE", 7 | "XLRE", 8 | "XLV", 9 | "XLU", 10 | "XLP", 11 | "XLB", 12 | "XLK", 13 | "XLF", 14 | "XLY", 15 | "XLI", 16 | "XLC", 17 | ] 18 | 19 | US_SMALL_CAP_SECTOR_ETFS = [ 20 | "PSCE", 21 | "PSCM", 22 | "PSCC", 23 | "PSCU", 24 | "PSCI", 25 | "PSCF", 26 | "PSCT", 27 | "PSCH", 28 | "PSCD", 29 | ] 30 | 31 | GLOBAL_SECTOR_ETFS = [ 32 | "IXC", 33 | "IXJ", 34 | "KXI", 35 | "JXI", 36 | "MXI", 37 | "IXG", 38 | "IXN", 39 | "EXI", 40 | "RXI", 41 | "IXP", 42 | ] 43 | 44 | MARKET_ETFS = [ 45 | "SPY", 46 | "QQQ", 47 | "DIA", 48 | "MDY", 49 | "IJR", 50 | "IWC", 51 | "ACWI", 52 | "VEA", 53 | "SPDW", 54 | "ADRE", 55 | "BKF", 56 | ] 57 | 58 | BOND_ETFS = ["TIP", "TLT", "PHB", "BND", "BWX"] 59 | 60 | CURRENCY_ETFS = ["UUP", "CYB", "FXB", "FXE", "FXY"] 61 | 62 | COMMODITY_ETFS = [ 63 | "UNG", 64 | "BNO", 65 | "USO", 66 | "UGA", 67 | "DBO", 68 | "WEAT", 69 | "JO", 70 | "CORN", 71 | "GRU", 72 | "FUE", 73 | "CANE", 74 | "NIB", 75 | "DBB", 76 | "SOYB", 77 | "DBA", 78 | "GLD", 79 | "SLV", 80 | "PPLT", 81 | "PALL", 82 | "JJN", 83 | "JJT", 84 | "JJU", 85 | "REMX", 86 | "SLX", 87 | "JJC", 88 | "DBE", 89 | "GSG", 90 | "BCI", 91 | ] 92 | 93 | ASSETS = ( 94 | BOND_ETFS 95 | + CURRENCY_ETFS 96 | # + US_SMALL_CAP_SECTOR_ETFS 97 | # + GLOBAL_SECTOR_ETFS 98 | # + MARKET_ETFS 99 | # + COMMODITY_ETFS 100 | # + US_SECTOR_ETFS 101 | ) 102 | 103 | if __name__ == "__main__": 104 | run(ASSETS, PERIODICITIES) 105 | -------------------------------------------------------------------------------- /scripts/02_crypto.py: -------------------------------------------------------------------------------- 1 | from common.run import run 2 | 3 | PERIODICITIES = ["15", "60", "4H", "12H", "1D", "3D", "1W"] 4 | 5 | ASSETS = [ 6 | "ADAUSDT", 7 | "ATOMUSDT", 8 | "ALGOUSDT", 9 | "BATUSDT", 10 | "BNBUSDT", 11 | "BTCUSDT", 12 | "SOLUSDT", 13 | "CELRUSDT", 14 | "CVCUSDT", 15 | "DASHUSDT", 16 | "FTTUSDT", 17 | "ENJUSDT", 18 | "EOSUSDT", 19 | "ETHUSDT", 20 | "MATICUSDT", 21 | "HOTUSDT", 22 | "LUNAUSDT", 23 | "LTOUSDT", 24 | "IOTAUSDT", 25 | "LINKUSDT", 26 | "LTCUSDT", 27 | "MFTUSDT", 28 | "MTLUSDT", 29 | "NANOUSDT", 30 | "NEOUSDT", 31 | "AAVEUSDT", 32 | "OMGUSDT", 33 | "QTUMUSDT", 34 | "RLCUSDT", 35 | "RVNUSDT", 36 | "TOMOUSDT", 37 | "TRXUSDT", 38 | "VETUSDT", 39 | "WANUSDT", 40 | "WAVESUSDT", 41 | "XLMUSDT", 42 | "MANAUSDT", 43 | "XRPUSDT", 44 | "XTZUSDT", 45 | "AVAXUSDT", 46 | "ZILUSDT", 47 | "ZRXUSDT", 48 | "THETAUSDT", 49 | "SUSHIUSDT", 50 | "DOTUSDT", 51 | ] 52 | 53 | 54 | if __name__ == "__main__": 55 | run(ASSETS, PERIODICITIES) 56 | -------------------------------------------------------------------------------- /scripts/03_russell_2000.py: -------------------------------------------------------------------------------- 1 | from common.run import run 2 | 3 | PERIODICITIES = ["60", "4H", "1D", "3D", "1W"] 4 | 5 | # Not all these tickers have been checked for valididty 6 | ASSETS = [ 7 | "OVV", 8 | "CAR", 9 | "AR", 10 | "BJ", 11 | "CHK", 12 | "AMC", 13 | "EGP", 14 | "PFGC", 15 | "THC", 16 | "TTEK", 17 | "WSC", 18 | "SWN", 19 | "M", 20 | "KBR", 21 | "STAG", 22 | "RRC", 23 | "PDCE", 24 | "LSCC", 25 | "IIVI", 26 | "SWAV", 27 | "HALO", 28 | "IRT", 29 | "INSP", 30 | "BHVN", 31 | "TXRH", 32 | "SSB", 33 | "RPD", 34 | "EME", 35 | "SYNA", 36 | "SWX", 37 | "ASGN", 38 | "SGMS", 39 | "SAIL", 40 | "GTLS", 41 | "SAIA", 42 | "TRNO", 43 | "MTDR", 44 | "MUSA", 45 | "WCC", 46 | "MUR", 47 | "EXPO", 48 | "HQY", 49 | "FFIN", 50 | "TENB", 51 | "GBCI", 52 | "RHP", 53 | "CCMP", 54 | "LHCG", 55 | "NSA", 56 | "ROG", 57 | "VG", 58 | "HELE", 59 | "SIGI", 60 | "KNSL", 61 | "OMCL", 62 | "CMC", 63 | "ROLL", 64 | "AQUA", 65 | "VRNS", 66 | "BXMT", 67 | "VLY", 68 | "ADC", 69 | "MIME", 70 | "TGNA", 71 | "SLAB", 72 | "KRG", 73 | "POWI", 74 | "QLYS", 75 | "AMN", 76 | "BKH", 77 | "UFPI", 78 | "BIPC", 79 | "EXLS", 80 | "POR", 81 | "MMS", 82 | "AVNT", 83 | "SSD", 84 | "OGS", 85 | "RLI", 86 | "NOVT", 87 | "WK", 88 | "ALKS", 89 | "ONB", 90 | "UBSI", 91 | "ESNT", 92 | "ARWR", 93 | "OPCH", 94 | "IRDM", 95 | "CADE", 96 | "SPSC", 97 | "HP", 98 | "LIVN", 99 | "CHX", 100 | "ENV", 101 | "ENSG", 102 | "HLI", 103 | "ATKR", 104 | "BOX", 105 | "NJR", 106 | "MEDP", 107 | "HWC", 108 | "ITCI", 109 | "SFBS", 110 | "SM", 111 | "ZWS", 112 | "CNMD", 113 | "CNX", 114 | "HGV", 115 | "BCPC", 116 | "CWST", 117 | "UMBF", 118 | "PNM", 119 | "HR", 120 | "ZD", 121 | "TRTN", 122 | "CROX", 123 | "MSTR", 124 | "PECO", 125 | "IIPR", 126 | "LNTH", 127 | "SMTC", 128 | "RDN", 129 | "SIG", 130 | "APG", 131 | "IRTC", 132 | "APLE", 133 | "DOC", 134 | "OUT", 135 | "GATX", 136 | "APLS", 137 | "ABG", 138 | "BPMC", 139 | "SR", 140 | "SAFM", 141 | "AIT", 142 | "GT", 143 | "CBT", 144 | "BL", 145 | "PSB", 146 | "TNET", 147 | "NTLA", 148 | "SEAS", 149 | "FLR", 150 | "WD", 151 | "FOXF", 152 | "FELE", 153 | "LXP", 154 | "WTS", 155 | "SMPL", 156 | "FN", 157 | "CBU", 158 | "FUL", 159 | "NSP", 160 | "INDB", 161 | "LTHM", 162 | "ORA", 163 | "ONTO", 164 | "SXT", 165 | "VRNT", 166 | "SI", 167 | "SFM", 168 | "SJI", 169 | "PCH", 170 | "NSIT", 171 | "KFY", 172 | "ATI", 173 | "EBC", 174 | "MATX", 175 | "VIAV", 176 | "HOMB", 177 | "DBRG", 178 | "DEN", 179 | "CARG", 180 | "PRFT", 181 | "XTSLA", 182 | "BNL", 183 | "SHOO", 184 | "MMSI", 185 | "PZZA", 186 | "JBT", 187 | "TMHC", 188 | "PCRX", 189 | "SUM", 190 | "CRC", 191 | "ACIW", 192 | "MGY", 193 | "BKU", 194 | "REZI", 195 | "HRI", 196 | "EYE", 197 | "ABM", 198 | "BECN", 199 | "ALE", 200 | "PEB", 201 | "CVBF", 202 | "DIOD", 203 | "ADNT", 204 | "AEL", 205 | "MXL", 206 | "ETRN", 207 | "OFC", 208 | "TWNK", 209 | "MLI", 210 | "PPBI", 211 | "UCBI", 212 | "ASB", 213 | "HASI", 214 | "NWE", 215 | "MP", 216 | "CATY", 217 | "ASO", 218 | "WBT", 219 | "SONO", 220 | "APPS", 221 | "CELH", 222 | "WING", 223 | "EPRT", 224 | "SFNC", 225 | "MTH", 226 | "AWR", 227 | "FIX", 228 | "FIBK", 229 | "NEOG", 230 | "ESGR", 231 | "AVA", 232 | "AJRD", 233 | "HI", 234 | "HL", 235 | "NARI", 236 | "AMBA", 237 | "CNO", 238 | "KLIC", 239 | "RCM", 240 | "QTWO", 241 | "BCO", 242 | "LANC", 243 | "CBRL", 244 | "PTEN", 245 | "NUVA", 246 | "BCC", 247 | "ARVN", 248 | "AEIS", 249 | "EQC", 250 | "WLL", 251 | "SPT", 252 | "ALRM", 253 | "SITC", 254 | "TRUP", 255 | "KOS", 256 | "MGEE", 257 | "FCFS", 258 | "FATE", 259 | "MAC", 260 | "CWT", 261 | "CYTK", 262 | "FORM", 263 | "MC", 264 | "STAA", 265 | "GPI", 266 | "KRTX", 267 | "WHD", 268 | "FHI", 269 | "PDCO", 270 | "ENS", 271 | "CVLT", 272 | "HAE", 273 | "SBRA", 274 | "SKY", 275 | "PTCT", 276 | "KW", 277 | "RMBS", 278 | "INSM", 279 | "BE", 280 | "SITM", 281 | "OMI", 282 | "AXNX", 283 | "ARNC", 284 | "BOOT", 285 | "COOP", 286 | "ITGR", 287 | "ABCB", 288 | "AUB", 289 | "REGI", 290 | "SHO", 291 | "TCBI", 292 | "KBH", 293 | "OAS", 294 | "CCOI", 295 | "BRBR", 296 | "PGNY", 297 | "BLKB", 298 | "ELY", 299 | "WSFS", 300 | "IBTX", 301 | "UNFI", 302 | "MDRX", 303 | "ATRC", 304 | "UNF", 305 | "PBH", 306 | "PD", 307 | "MTSI", 308 | "DY", 309 | "ALTR", 310 | "WDFC", 311 | "CWEN", 312 | "CPE", 313 | "FOCS", 314 | "ACA", 315 | "NAVI", 316 | "CIVI", 317 | "FULT", 318 | "VC", 319 | "UNIT", 320 | "AIN", 321 | "LCII", 322 | "FWRD", 323 | "ABR", 324 | "SEM", 325 | "MOG.A", 326 | "OTTR", 327 | "CWK", 328 | "HLNE", 329 | "RRR", 330 | "MAXR", 331 | "FBP", 332 | "SAVE", 333 | "GKOS", 334 | "ALGT", 335 | "EPAY", 336 | "SANM", 337 | "VSH", 338 | "PBF", 339 | "DNLI", 340 | "MTOR", 341 | "DORM", 342 | "NVRO", 343 | "COLB", 344 | "YELP", 345 | "MLKN", 346 | "AX", 347 | "BMI", 348 | "NGVT", 349 | "ACAD", 350 | "FRME", 351 | "RLJ", 352 | "TRN", 353 | "GHC", 354 | "AEO", 355 | "WERN", 356 | "UPWK", 357 | "TEX", 358 | "CIM", 359 | "NHI", 360 | "SHAK", 361 | "ROIC", 362 | "EVTC", 363 | "PRMW", 364 | "HLIO", 365 | "JJSF", 366 | "MNTV", 367 | "FCPT", 368 | "COKE", 369 | "IGT", 370 | "KMT", 371 | "AIMC", 372 | "AAON", 373 | "IOSP", 374 | "THRM", 375 | "NUS", 376 | "EVH", 377 | "BDC", 378 | "RAMP", 379 | "CVCO", 380 | "MANT", 381 | "NTCT", 382 | "IBOC", 383 | "BEAM", 384 | "VRRM", 385 | "DRH", 386 | "DOCN", 387 | "DAN", 388 | "PLXS", 389 | "XHR", 390 | "CPK", 391 | "ASAN", 392 | "WLY", 393 | "CALM", 394 | "GLNG", 395 | "UE", 396 | "TPH", 397 | "NMRK", 398 | "CALX", 399 | "BRC", 400 | "ITRI", 401 | "KAI", 402 | "APAM", 403 | "WRE", 404 | "GBT", 405 | "KWR", 406 | "HUBG", 407 | "MED", 408 | "OCDX", 409 | "LGIH", 410 | "ENR", 411 | "KTB", 412 | "BDN", 413 | "BTU", 414 | "APPF", 415 | "MDC", 416 | "PIPR", 417 | "TROX", 418 | "PDM", 419 | "PLAY", 420 | "ODP", 421 | "GMS", 422 | "PRGS", 423 | "WAFD", 424 | "WIRE", 425 | "CMP", 426 | "FSS", 427 | "MTX", 428 | "SCL", 429 | "GCP", 430 | "VSTO", 431 | "RLAY", 432 | "CBZ", 433 | "WSBC", 434 | "CNS", 435 | "MGRC", 436 | "OI", 437 | "CSGS", 438 | "FOLD", 439 | "EPC", 440 | "RUSHA", 441 | "KTOS", 442 | "IBP", 443 | "CSTM", 444 | "CNNE", 445 | "ANF", 446 | "VRTV", 447 | "FBC", 448 | "MSGE", 449 | "NPO", 450 | "BLMN", 451 | "IHRT", 452 | "AMKR", 453 | "NXRT", 454 | "CORT", 455 | "FFBC", 456 | "ARCH", 457 | "APPN", 458 | "KAR", 459 | "AAWW", 460 | "TOWN", 461 | "SPXC", 462 | "AVAV", 463 | "MWA", 464 | "PSMT", 465 | "JELD", 466 | "SMCI", 467 | "HTLF", 468 | "TWST", 469 | "EAF", 470 | "TDS", 471 | "TSE", 472 | "DOOR", 473 | "LKFN", 474 | "TELL", 475 | "PRAA", 476 | "ARCB", 477 | "ACLS", 478 | "JOE", 479 | "GNW", 480 | "EBS", 481 | "SASR", 482 | "JACK", 483 | "PGRE", 484 | "VGR", 485 | "ATSG", 486 | "CRS", 487 | "SBCF", 488 | "ARI", 489 | "TTGT", 490 | "AKR", 491 | "BGS", 492 | "EAT", 493 | "OM", 494 | "CNK", 495 | "AAT", 496 | "BCRX", 497 | "FSR", 498 | "SSTK", 499 | "NKLA", 500 | "SGRY", 501 | "CAKE", 502 | "IDCC", 503 | "ICFI", 504 | "SKT", 505 | "TRMK", 506 | "MD", 507 | "IRWD", 508 | "MARA", 509 | "B", 510 | "WGO", 511 | "RNST", 512 | "HOPE", 513 | "WWW", 514 | "STRA", 515 | "MYGN", 516 | "BANR", 517 | "FLYW", 518 | "THS", 519 | "CENTA", 520 | "NEX", 521 | "RVLV", 522 | "DEA", 523 | "PRK", 524 | "TBK", 525 | "SBH", 526 | "SJW", 527 | "WOR", 528 | "NTB", 529 | "POLY", 530 | "ISEE", 531 | "DDD", 532 | "EGBN", 533 | "USD", 534 | "URBN", 535 | "GTN", 536 | "NG", 537 | "INT", 538 | "XPER", 539 | "TVTX", 540 | "MEI", 541 | "PING", 542 | "HMN", 543 | "KN", 544 | "TWO", 545 | "PFS", 546 | "AIR", 547 | "FCEL", 548 | "BBBY", 549 | "CSWI", 550 | "MTRN", 551 | "AMRC", 552 | "ESE", 553 | "VBTX", 554 | "EFSC", 555 | "HCC", 556 | "CTRE", 557 | "CDNA", 558 | "HTH", 559 | "ANDE", 560 | "RCII", 561 | "CCS", 562 | "COUR", 563 | "NVEE", 564 | "HNI", 565 | "NMIH", 566 | "VCYT", 567 | "GEF", 568 | "WABC", 569 | "PRG", 570 | "VCEL", 571 | "LPSN", 572 | "CVET", 573 | "EVRI", 574 | "ETWO", 575 | "TGI", 576 | "ALEX", 577 | "CLDX", 578 | "MSEX", 579 | "CXW", 580 | "PJT", 581 | "TGH", 582 | "NOG", 583 | "NWBI", 584 | "DDS", 585 | "GNL", 586 | "MFA", 587 | "NWN", 588 | "LOB", 589 | "LILAK", 590 | "MNRO", 591 | "SKYW", 592 | "AMEH", 593 | "RLGY", 594 | "UCTT", 595 | "PFSI", 596 | "LBRT", 597 | "LRN", 598 | "LNN", 599 | "XNCR", 600 | "ECOL", 601 | "CRK", 602 | "BANF", 603 | "TPTX", 604 | "OXM", 605 | "MPLN", 606 | "PLUS", 607 | "AVNS", 608 | "LGF.B", 609 | "LGND", 610 | "EXTR", 611 | "DK", 612 | "INFN", 613 | "PMT", 614 | "ATGE", 615 | "NBTB", 616 | "GDOT", 617 | "VRTS", 618 | "IPAR", 619 | "TVTY", 620 | "KALU", 621 | "KFRC", 622 | "LPRO", 623 | "VRE", 624 | "CDEV", 625 | "MYRG", 626 | "TTEC", 627 | "ECPG", 628 | "OSTK", 629 | "ZUO", 630 | "MGNI", 631 | "LC", 632 | "CRVL", 633 | "SUPN", 634 | "ANAT", 635 | "NNI", 636 | "TTMI", 637 | "KRYS", 638 | "CEIX", 639 | "PLMR", 640 | "CASH", 641 | "NOVA", 642 | "PACB", 643 | "PATK", 644 | "SPWR", 645 | "CSR", 646 | "GOLF", 647 | "GVA", 648 | "LTC", 649 | "SWTX", 650 | "SVC", 651 | "ENVA", 652 | "UVV", 653 | "GBX", 654 | "PHR", 655 | "FBK", 656 | "SILK", 657 | "ENTA", 658 | "VIR", 659 | "SYBT", 660 | "ADUS", 661 | "MODV", 662 | "HCSG", 663 | "AMPH", 664 | "IRBT", 665 | "CFFN", 666 | "FBNC", 667 | "RDFN", 668 | "LADR", 669 | "AGIO", 670 | "CUBI", 671 | "TNC", 672 | "STC", 673 | "TRS", 674 | "SLCA", 675 | "RVMD", 676 | "CNR", 677 | "PRA", 678 | "WMK", 679 | "ALG", 680 | "IMKTA", 681 | "OSIS", 682 | "CERE", 683 | "ROCK", 684 | "USPH", 685 | "FCF", 686 | "MHO", 687 | "DOMO", 688 | "ASIX", 689 | "OFG", 690 | "APTS", 691 | "RIOT", 692 | "MEG", 693 | "SCHN", 694 | "SAFT", 695 | "TBBK", 696 | "GIII", 697 | "FROG", 698 | "VICR", 699 | "PRIM", 700 | "HSKA", 701 | "ARGO", 702 | "MGPI", 703 | "ILPT", 704 | "OII", 705 | "NEO", 706 | "ESRT", 707 | "EFR", 708 | "DIN", 709 | "COHU", 710 | "CDLX", 711 | "SDGR", 712 | "SPTN", 713 | "BKD", 714 | "EPAC", 715 | "BUSE", 716 | "STAR", 717 | "STEP", 718 | "LAND", 719 | "RGR", 720 | "AVID", 721 | "DCOM", 722 | "SFL", 723 | "PRLB", 724 | "DNUT", 725 | "RPAY", 726 | "UEC", 727 | "LZB", 728 | "PRTA", 729 | "PRO", 730 | "FLGT", 731 | "RCUS", 732 | "RVNC", 733 | "DLX", 734 | "NYMT", 735 | "AROC", 736 | "PUMP", 737 | "SNEX", 738 | "GOGO", 739 | "CHEF", 740 | "SBSI", 741 | "CRNC", 742 | "TEN", 743 | "BRP", 744 | "OPK", 745 | "UIS", 746 | "BGCP", 747 | "KYMR", 748 | "EIG", 749 | "FFWM", 750 | "VECO", 751 | "CHCO", 752 | "SXI", 753 | "NVTA", 754 | "HRMY", 755 | "LAUR", 756 | "ELF", 757 | "GTY", 758 | "SKIN", 759 | "EGHT", 760 | "HURN", 761 | "RGNX", 762 | "RILY", 763 | "SGH", 764 | "DNOW", 765 | "CUTR", 766 | "BHLB", 767 | "NXGN", 768 | "MLAB", 769 | "HEES", 770 | "APOG", 771 | "OCFC", 772 | "CNOB", 773 | "BRKL", 774 | "AZZ", 775 | "NBHC", 776 | "NBR", 777 | "GPRO", 778 | "TCBK", 779 | "WOW", 780 | "FRG", 781 | "CYH", 782 | "OPI", 783 | "KAMN", 784 | "VIVO", 785 | "RPT", 786 | "NTUS", 787 | "TMP", 788 | "IMGN", 789 | "MMI", 790 | "CTS", 791 | "TREE", 792 | "MNRL", 793 | "BBIO", 794 | "PCVX", 795 | "CWH", 796 | "FIZZ", 797 | "CCO", 798 | "EVOP", 799 | "DRQ", 800 | "PFC", 801 | "BIG", 802 | "NCBS", 803 | "SHEN", 804 | "CCXI", 805 | "DVAX", 806 | "PRVA", 807 | "SBGI", 808 | "CDE", 809 | "MBUU", 810 | "GPRE", 811 | "CMPR", 812 | "CENX", 813 | "HCAT", 814 | "AMCX", 815 | "EDIT", 816 | "STBA", 817 | "BRMK", 818 | "BANC", 819 | "CMCO", 820 | "GSHD", 821 | "RWT", 822 | "UMH", 823 | "SCS", 824 | "MRTN", 825 | "CWEN", 826 | "FRO", 827 | "CRNX", 828 | "SHYF", 829 | "PGTI", 830 | "CYRX", 831 | "CDMO", 832 | "LBAI", 833 | "AIV", 834 | "INN", 835 | "AHCO", 836 | "ROAD", 837 | "STNG", 838 | "CLNE", 839 | "ONEM", 840 | "TBI", 841 | "MCRI", 842 | "SSP", 843 | "FA", 844 | "SNBR", 845 | "RC", 846 | "BCOR", 847 | "BALY", 848 | "SCHL", 849 | "HA", 850 | "MATW", 851 | "SAFE", 852 | "AGM", 853 | "TGTX", 854 | "KURA", 855 | "MODN", 856 | "MCB", 857 | "TMST", 858 | "XMTR", 859 | "MRC", 860 | "EXPI", 861 | "PSN", 862 | "SAH", 863 | "GES", 864 | "GABC", 865 | "CHCT", 866 | "BKE", 867 | "BATRK", 868 | "OEC", 869 | "GCO", 870 | "OBNK", 871 | "LPI", 872 | "ATRI", 873 | "RTL", 874 | "PI", 875 | "TSC", 876 | "CNDT", 877 | "CTKB", 878 | "AOSL", 879 | "QCRH", 880 | "USNA", 881 | "RDNT", 882 | "ATRS", 883 | "MGI", 884 | "XENT", 885 | "PAR", 886 | "MDGL", 887 | "RADI", 888 | "NSTG", 889 | "PLAB", 890 | "SATS", 891 | "AHH", 892 | "GFF", 893 | "KROS", 894 | "AMSF", 895 | "NTST", 896 | "SUMO", 897 | "ARRY", 898 | "AVYA", 899 | "TUP", 900 | "GMRE", 901 | "NHC", 902 | "INSW", 903 | "EB", 904 | "STEM", 905 | "CCSI", 906 | "VERU", 907 | "GLDD", 908 | "FGEN", 909 | "NUVB", 910 | "SNCY", 911 | "IPI", 912 | "SMP", 913 | "HFWA", 914 | "DBI", 915 | "ATEN", 916 | "BIGC", 917 | "GDEN", 918 | "DFIN", 919 | "UTZ", 920 | "WASH", 921 | "ANGO", 922 | "EFC", 923 | "SCSC", 924 | "ADTN", 925 | "AORT", 926 | "JRVR", 927 | "FDP", 928 | "KRNY", 929 | "LGF.A", 930 | "ZNTL", 931 | "ATEC", 932 | "ASTE", 933 | "LMAT", 934 | "HBNC", 935 | "CLBK", 936 | "AXSM", 937 | "HSC", 938 | "CSII", 939 | "PTGX", 940 | "CAL", 941 | "WRLD", 942 | "BHE", 943 | "MNKD", 944 | "ALHC", 945 | "SWM", 946 | "WETF", 947 | "CARS", 948 | "RXDX", 949 | "FARO", 950 | "IIIN", 951 | "ICHR", 952 | "DENN", 953 | "TWOU", 954 | "CDXS", 955 | "SNDX", 956 | "CERS", 957 | "RETA", 958 | "LYEL", 959 | "EBIX", 960 | "SRCE", 961 | "BLNK", 962 | "DHT", 963 | "HZO", 964 | "IMAX", 965 | "PEBO", 966 | "ARKO", 967 | "HLIT", 968 | "TDW", 969 | "ERII", 970 | "CEVA", 971 | "CPRX", 972 | "HMST", 973 | "VREX", 974 | "PRDO", 975 | "MYE", 976 | "XPEL", 977 | "SAVA", 978 | "UTL", 979 | "GOOD", 980 | "GEVO", 981 | "NPTN", 982 | "RXRX", 983 | "AXL", 984 | "ABTX", 985 | "ACRS", 986 | "SFIX", 987 | "AGYS", 988 | "CVI", 989 | "PLYM", 990 | "UVSP", 991 | "INVA", 992 | "GRC", 993 | "SLP", 994 | "HSII", 995 | "AMWD", 996 | "SPNS", 997 | "HWKN", 998 | "KELYA", 999 | "TILE", 1000 | "GEO", 1001 | "GSAT", 1002 | "AMTB", 1003 | "CSV", 1004 | "QTRX", 1005 | "ZUMZ", 1006 | "PLOW", 1007 | "WINA", 1008 | "BRY", 1009 | "XPRO", 1010 | "DM", 1011 | "UHT", 1012 | "CAC", 1013 | "JBSS", 1014 | "BRSP", 1015 | "RUTH", 1016 | "LUNG", 1017 | "BSIG", 1018 | "VTOL", 1019 | "CMRE", 1020 | "ACCO", 1021 | "CCRN", 1022 | "VVI", 1023 | "HAFC", 1024 | "RES", 1025 | "AMRS", 1026 | "YEXT", 1027 | "TWI", 1028 | "FBMS", 1029 | "BJRI", 1030 | "SIBN", 1031 | "CTBI", 1032 | "HONE", 1033 | "ROCC", 1034 | "SXC", 1035 | "KIDS", 1036 | "SANA", 1037 | "NAPA", 1038 | "HTBK", 1039 | "PFBC", 1040 | "CLDT", 1041 | "PDFS", 1042 | "AMRK", 1043 | "GDYN", 1044 | "WNC", 1045 | "ARLO", 1046 | "SP", 1047 | "SWBI", 1048 | "ACRE", 1049 | "ACEL", 1050 | "HNGR", 1051 | "SENS", 1052 | "KREF", 1053 | "HLX", 1054 | "DGII", 1055 | "STRL", 1056 | "PWSC", 1057 | "PARR", 1058 | "TRTX", 1059 | "CIO", 1060 | "PLCE", 1061 | "TALO", 1062 | "ACCD", 1063 | "FFIC", 1064 | "NX", 1065 | "RNA", 1066 | "GNK", 1067 | "CHS", 1068 | "LFST", 1069 | "AVXL", 1070 | "CVGW", 1071 | "ARR", 1072 | "GRBK", 1073 | "AMWL", 1074 | "BXC", 1075 | "AAN", 1076 | "CCF", 1077 | "CFB", 1078 | "MORF", 1079 | "CHRS", 1080 | "IMXI", 1081 | "ETD", 1082 | "NTGR", 1083 | "BY", 1084 | "FMBH", 1085 | "NP", 1086 | "ATRA", 1087 | "GSBC", 1088 | "HTLD", 1089 | "CLFD", 1090 | "BFS", 1091 | "CPF", 1092 | "COWN", 1093 | "HIBB", 1094 | "AVD", 1095 | "LOVE", 1096 | "ECVT", 1097 | "FORR", 1098 | "UFCS", 1099 | "PGC", 1100 | "RLMD", 1101 | "ATEX", 1102 | "BAND", 1103 | "ALEC", 1104 | "TCX", 1105 | "INO", 1106 | "SPNT", 1107 | "OFIX", 1108 | "KDNY", 1109 | "BTRS", 1110 | "COLL", 1111 | "VERV", 1112 | "ITOS", 1113 | "RYI", 1114 | "NFBK", 1115 | "MSBI", 1116 | "PACK", 1117 | "LLNW", 1118 | "CATC", 1119 | "TBPH", 1120 | "FUBO", 1121 | "TRST", 1122 | "LTH", 1123 | "CRAI", 1124 | "WSR", 1125 | "LASR", 1126 | "ARQT", 1127 | "MOV", 1128 | "PBI", 1129 | "TMDX", 1130 | "TMCI", 1131 | "DHC", 1132 | "BV", 1133 | "VNDA", 1134 | "AMSWA", 1135 | "RICK", 1136 | "GCI", 1137 | "PETQ", 1138 | "DCO", 1139 | "GPMT", 1140 | "OPRX", 1141 | "CLAR", 1142 | "SGMO", 1143 | "IVR", 1144 | "HCKT", 1145 | "SRDX", 1146 | "BBSI", 1147 | "ALBO", 1148 | "CASS", 1149 | "MITK", 1150 | "GOSS", 1151 | "AGX", 1152 | "ALLO", 1153 | "RXT", 1154 | "MBI", 1155 | "CNXN", 1156 | "CBTX", 1157 | "MXCT", 1158 | "ALX", 1159 | "DHIL", 1160 | "EGRX", 1161 | "IIIV", 1162 | "GOEV", 1163 | "QUOT", 1164 | "NWLI", 1165 | "TRNS", 1166 | "REPL", 1167 | "DX", 1168 | "BMRC", 1169 | "UBA", 1170 | "TR", 1171 | "OSW", 1172 | "RGP", 1173 | "MBWM", 1174 | "WW", 1175 | "CHUY", 1176 | "NSSC", 1177 | "SRNE", 1178 | "SCVL", 1179 | "FSP", 1180 | "MVIS", 1181 | "KZR", 1182 | "REAL", 1183 | "SWIM", 1184 | "INGN", 1185 | "FC", 1186 | "THFF", 1187 | "ASPN", 1188 | "BNGO", 1189 | "BFLY", 1190 | "THR", 1191 | "YORW", 1192 | "GLT", 1193 | "OSPN", 1194 | "ERAS", 1195 | "PTLO", 1196 | "KOP", 1197 | "EGLE", 1198 | "FMNB", 1199 | "QNST", 1200 | "HAYN", 1201 | "CARA", 1202 | "LIND", 1203 | "HIFS", 1204 | "NRC", 1205 | "WKHS", 1206 | "KPTI", 1207 | "VVNT", 1208 | "CSTL", 1209 | "CRMT", 1210 | "FOSL", 1211 | "ENDP", 1212 | "MDXG", 1213 | "SRI", 1214 | "UFPT", 1215 | "TITN", 1216 | "RCKT", 1217 | "MGNX", 1218 | "HRTX", 1219 | "HSTM", 1220 | "OLP", 1221 | "BFC", 1222 | "PNTG", 1223 | "CRGY", 1224 | "LAW", 1225 | "FISI", 1226 | "AGTI", 1227 | "OUST", 1228 | "NGM", 1229 | "TA", 1230 | "BHG", 1231 | "RMAX", 1232 | "VXRT", 1233 | "GRPN", 1234 | "REX", 1235 | "PCT", 1236 | "GERN", 1237 | "HTBI", 1238 | "AVO", 1239 | "PETS", 1240 | "AFMD", 1241 | "BLX", 1242 | "AGEN", 1243 | "MOFG", 1244 | "MTW", 1245 | "OSUR", 1246 | "CPSI", 1247 | "ORGO", 1248 | "MCFT", 1249 | "SPWH", 1250 | "ARCT", 1251 | "FCBC", 1252 | "LXFR", 1253 | "BOC", 1254 | "WTTR", 1255 | "BFST", 1256 | "EQBK", 1257 | "TIL", 1258 | "DOUG", 1259 | "IBCP", 1260 | "BZH", 1261 | "ATNI", 1262 | "OCGN", 1263 | "CARE", 1264 | "USM", 1265 | "ANAB", 1266 | "FNKO", 1267 | "INBX", 1268 | "RIGL", 1269 | "ALTO", 1270 | "JYNT", 1271 | "RMR", 1272 | "CSTR", 1273 | "PAYA", 1274 | "CLW", 1275 | "HYFM", 1276 | "TTI", 1277 | "CENT", 1278 | "HCCI", 1279 | "CRSR", 1280 | "CCB", 1281 | "CNSL", 1282 | "TPIC", 1283 | "RBCAA", 1284 | "TPB", 1285 | "DCPH", 1286 | "UPLD", 1287 | "EBF", 1288 | "AROW", 1289 | "LILA", 1290 | "VSEC", 1291 | "FLIC", 1292 | "KE", 1293 | "CIR", 1294 | "LPG", 1295 | "WTI", 1296 | "DXPE", 1297 | "PMVP", 1298 | "FBRT", 1299 | "BOOM", 1300 | "CCNE", 1301 | "ECOM", 1302 | "PTVE", 1303 | "BW", 1304 | "STGW", 1305 | "MCBS", 1306 | "IDT", 1307 | "VRAY", 1308 | "CTT", 1309 | "VEC", 1310 | "FPI", 1311 | "SRG", 1312 | "MVBF", 1313 | "IAS", 1314 | "ICPT", 1315 | "HVT", 1316 | "WTBA", 1317 | "CTOS", 1318 | "BVH", 1319 | "HYLN", 1320 | "MOD", 1321 | "TTCF", 1322 | "NAT", 1323 | "JOUT", 1324 | "ADV", 1325 | "OSBC", 1326 | "MBIN", 1327 | "FRPH", 1328 | "VERI", 1329 | "LL", 1330 | "STER", 1331 | "BASE", 1332 | "BHB", 1333 | "REVG", 1334 | "ORC", 1335 | "DNMR", 1336 | "NRIX", 1337 | "ALRS", 1338 | "ESTE", 1339 | "RAPT", 1340 | "ULCC", 1341 | "OIS", 1342 | "VPG", 1343 | "PRTY", 1344 | "INBK", 1345 | "AMK", 1346 | "AVIR", 1347 | "GIC", 1348 | "TPC", 1349 | "ABSI", 1350 | "GCMG", 1351 | "NPK", 1352 | "APEI", 1353 | "CRBU", 1354 | "BLFY", 1355 | "AMNB", 1356 | "YMAB", 1357 | "IMGO", 1358 | "UEIC", 1359 | "PAHC", 1360 | "ARTNA", 1361 | "MCS", 1362 | "RAD", 1363 | "DBD", 1364 | "RIDE", 1365 | "MGTX", 1366 | "ONTF", 1367 | "LQDT", 1368 | "AMRX", 1369 | "MPB", 1370 | "EVCM", 1371 | "CZNC", 1372 | "AEVA", 1373 | "SFST", 1374 | "GRWG", 1375 | "INDT", 1376 | "POWW", 1377 | "MCRB", 1378 | "CTO", 1379 | "TRC", 1380 | "SOVO", 1381 | "EOLS", 1382 | "UVE", 1383 | "IDEX", 1384 | "IDYA", 1385 | "ATHA", 1386 | "CMRX", 1387 | "ACET", 1388 | "AMBC", 1389 | "CCCC", 1390 | "HCI", 1391 | "CMTL", 1392 | "FDMT", 1393 | "BWB", 1394 | "MASS", 1395 | "BVS", 1396 | "ALKT", 1397 | "MLNK", 1398 | "TNK", 1399 | "SMBC", 1400 | "WSBF", 1401 | "EZPW", 1402 | "SEER", 1403 | "GLUE", 1404 | "ZEUS", 1405 | "RYTM", 1406 | "NOTV", 1407 | "TCMD", 1408 | "EWCZ", 1409 | "KRO", 1410 | "RM", 1411 | "HNST", 1412 | "TSVT", 1413 | "OFLX", 1414 | "SG", 1415 | "PFIS", 1416 | "SMBK", 1417 | "CCBG", 1418 | "FLWS", 1419 | "VUZI", 1420 | "GEF", 1421 | "SENEA", 1422 | "ESMT", 1423 | "RBB", 1424 | "RSI", 1425 | "FRST", 1426 | "TRUE", 1427 | "DSGN", 1428 | "PRCH", 1429 | "RDUS", 1430 | "ANIP", 1431 | "DMRC", 1432 | "AERI", 1433 | "BSRR", 1434 | "DSKE", 1435 | "STOK", 1436 | "SIGA", 1437 | "INTA", 1438 | "CIVB", 1439 | "TLS", 1440 | "BHR", 1441 | "ONEW", 1442 | "HRT", 1443 | "EBTC", 1444 | "XXII", 1445 | "BGFV", 1446 | "EVC", 1447 | "ANIK", 1448 | "EWTX", 1449 | "NR", 1450 | "HY", 1451 | "SOI", 1452 | "STRO", 1453 | "MAX", 1454 | "AUD", 1455 | "CTLP", 1456 | "HT", 1457 | "SPNE", 1458 | "VITL", 1459 | "IESC", 1460 | "RYAM", 1461 | "WLDN", 1462 | "HBCP", 1463 | "PRTS", 1464 | "PRVB", 1465 | "DJCO", 1466 | "CLSK", 1467 | "FLL", 1468 | "APPH", 1469 | "RUN", 1470 | "FULC", 1471 | "PRAX", 1472 | "FNLC", 1473 | "PLBY", 1474 | "ARAY", 1475 | "AMOT", 1476 | "MLR", 1477 | "KALV", 1478 | "FXLV", 1479 | "CLVS", 1480 | "LEU", 1481 | "TG", 1482 | "OPY", 1483 | "OCUL", 1484 | "GBIO", 1485 | "EYPT", 1486 | "XPOF", 1487 | "TNYA", 1488 | "CATO", 1489 | "MMED", 1490 | "SMMF", 1491 | "CONN", 1492 | "FOR", 1493 | "KNSA", 1494 | "BCOV", 1495 | "BLBD", 1496 | "UTMD", 1497 | "BNFT", 1498 | "DICE", 1499 | "FSBC", 1500 | "ARIS", 1501 | "MSFUT", 1502 | "ESPR", 1503 | "KBAL", 1504 | "MPAA", 1505 | "MRSN", 1506 | "CNTY", 1507 | "PRPL", 1508 | "GNTY", 1509 | "CGEM", 1510 | "SLQT", 1511 | "MRNS", 1512 | "IBRX", 1513 | "PRCT", 1514 | "OOMA", 1515 | "SPFI", 1516 | "IEA", 1517 | "FMTX", 1518 | "AXGN", 1519 | "FLMN", 1520 | "EVER", 1521 | "BLUE", 1522 | "HEAR", 1523 | "PHAT", 1524 | "IRMD", 1525 | "VERA", 1526 | "NWPX", 1527 | "BLI", 1528 | "ENFN", 1529 | "BATRA", 1530 | "VSTM", 1531 | "AKRO", 1532 | "TIPT", 1533 | "INVE", 1534 | "AMTX", 1535 | "FREE", 1536 | "ORRF", 1537 | "MMAT", 1538 | "CINC", 1539 | "OPRT", 1540 | "BRBS", 1541 | "VBIV", 1542 | "ALXO", 1543 | "INSG", 1544 | "DYN", 1545 | "COGT", 1546 | "VTGN", 1547 | "BTAI", 1548 | "ATRO", 1549 | "NKTX", 1550 | "RCKY", 1551 | "RMNI", 1552 | "NRIM", 1553 | "OMER", 1554 | "AMAL", 1555 | "FF", 1556 | "URE", 1557 | "CRDO", 1558 | "NESR", 1559 | "LNDC", 1560 | "AVNW", 1561 | "CURO", 1562 | "TCS", 1563 | "SB", 1564 | "SSTI", 1565 | "BRT", 1566 | "FHTX", 1567 | "GTHX", 1568 | "KODK", 1569 | "SCU", 1570 | "RRBI", 1571 | "PVBC", 1572 | "ITIC", 1573 | "SRRK", 1574 | "PCSB", 1575 | "AKTS", 1576 | "HOV", 1577 | "NVEC", 1578 | "DMTK", 1579 | "ABUS", 1580 | "PKE", 1581 | "AXTI", 1582 | "YELL", 1583 | "MCBC", 1584 | "RRGB", 1585 | "KRUS", 1586 | "CSTE", 1587 | "USLM", 1588 | "SNPO", 1589 | "CVLG", 1590 | "RLGT", 1591 | "PSNL", 1592 | "PSTL", 1593 | "AVDX", 1594 | "PTSI", 1595 | "CVGI", 1596 | "FRBA", 1597 | "EHTH", 1598 | "JNCE", 1599 | "ATLC", 1600 | "KNTK", 1601 | "UFI", 1602 | "LE", 1603 | "CTRN", 1604 | "REPX", 1605 | "KNTE", 1606 | "FSBW", 1607 | "EIGR", 1608 | "DAWN", 1609 | "HBIO", 1610 | "PCYO", 1611 | "INST", 1612 | "ACTG", 1613 | "ORMP", 1614 | "AFCG", 1615 | "JANX", 1616 | "TK", 1617 | "OB", 1618 | "ALTG", 1619 | "GHL", 1620 | "LBC", 1621 | "KRON", 1622 | "RBBN", 1623 | "AJX", 1624 | "ATOM", 1625 | "EGAN", 1626 | "ASLE", 1627 | "DZSI", 1628 | "LAB", 1629 | "GNOG", 1630 | "GNUS", 1631 | "KOD", 1632 | "HOFT", 1633 | "OMIC", 1634 | "ICVX", 1635 | "LOCO", 1636 | "FRBK", 1637 | "CAMP", 1638 | "CBNK", 1639 | "NATR", 1640 | "THRY", 1641 | "STKS", 1642 | "HFFG", 1643 | "NDLS", 1644 | "DGICA", 1645 | "IPSC", 1646 | "NUVL", 1647 | "TLYS", 1648 | "COOK", 1649 | "SGC", 1650 | "VLGEA", 1651 | "LMNR", 1652 | "POWL", 1653 | "RXST", 1654 | "AOUT", 1655 | "GWRS", 1656 | "IMVT", 1657 | "PLPC", 1658 | "LAWS", 1659 | "LUNA", 1660 | "ALT", 1661 | "VMD", 1662 | "WEBR", 1663 | "OTLK", 1664 | "NGVC", 1665 | "GLRE", 1666 | "CIA", 1667 | "RLYB", 1668 | "VRA", 1669 | "XL", 1670 | "MTRX", 1671 | "CLPT", 1672 | "GATO", 1673 | "PLRX", 1674 | "ADGI", 1675 | "CBAY", 1676 | "SGHT", 1677 | "ALDX", 1678 | "CCRD", 1679 | "QMCO", 1680 | "HBT", 1681 | "AGS", 1682 | "ZY", 1683 | "CMBM", 1684 | "BSET", 1685 | "LCUT", 1686 | "FDBC", 1687 | "ZYXI", 1688 | "ATCX", 1689 | "AMSC", 1690 | "HPK", 1691 | "VKTX", 1692 | "LCTX", 1693 | "RCEL", 1694 | "OCN", 1695 | "HRTG", 1696 | "FNA", 1697 | "GAN", 1698 | "TARS", 1699 | "SPPI", 1700 | "VIEW", 1701 | "VTYX", 1702 | "VATE", 1703 | "SCOR", 1704 | "LEGH", 1705 | "CRMD", 1706 | "IMUX", 1707 | "VLDR", 1708 | "DIBS", 1709 | "UDMY", 1710 | "PGEN", 1711 | "ALLK", 1712 | "BLFS", 1713 | "BEEM", 1714 | "BNED", 1715 | "LAZY", 1716 | "CASA", 1717 | "TH", 1718 | "MHLD", 1719 | "APYX", 1720 | "IGMS", 1721 | "AOMR", 1722 | "AVTE", 1723 | "SMSI", 1724 | "ALVR", 1725 | "CECE", 1726 | "DLTH", 1727 | "IKNA", 1728 | "STXS", 1729 | "NODK", 1730 | "URGN", 1731 | "MESA", 1732 | "NCMI", 1733 | "ODC", 1734 | "XOMA", 1735 | "ULH", 1736 | "BBCP", 1737 | "ESCA", 1738 | "CDRE", 1739 | "AHT", 1740 | "LXRX", 1741 | "VOXX", 1742 | "CUE", 1743 | "SPRO", 1744 | "KOPN", 1745 | "CRD", 1746 | "KMPH", 1747 | "ATER", 1748 | "FLXS", 1749 | "DAKT", 1750 | "TALS", 1751 | "JOAN", 1752 | "INFU", 1753 | "NATH", 1754 | "CTMX", 1755 | "EMKR", 1756 | "CTXR", 1757 | "NNBR", 1758 | "GRTS", 1759 | "BYRN", 1760 | "FWRG", 1761 | "ATOS", 1762 | "RELY", 1763 | "ORIC", 1764 | "GBL", 1765 | "PBFS", 1766 | "EAR", 1767 | "VAPO", 1768 | "RMO", 1769 | "AVAH", 1770 | "NGMS", 1771 | "FTCI", 1772 | "ASXC", 1773 | "FRGI", 1774 | "SCWX", 1775 | "ABOS", 1776 | "AKYA", 1777 | "MG", 1778 | "DTIL", 1779 | "LTRPA", 1780 | "XBIT", 1781 | "KVHI", 1782 | "AMTI", 1783 | "GRPH", 1784 | "BH", 1785 | "RENT", 1786 | "IMRX", 1787 | "PZN", 1788 | "CPS", 1789 | "THRX", 1790 | "CLPR", 1791 | "KIRK", 1792 | "ALPN", 1793 | "DS", 1794 | "ITI", 1795 | "PRTK", 1796 | "MPX", 1797 | "FUV", 1798 | "EOSE", 1799 | "TSHA", 1800 | "CURV", 1801 | "ATHX", 1802 | "VOR", 1803 | "TRHC", 1804 | "EPZM", 1805 | "STTK", 1806 | "NMTR", 1807 | "PPTA", 1808 | "HLTH", 1809 | "COCO", 1810 | "TSAT", 1811 | "VIRX", 1812 | "CVM", 1813 | "INNV", 1814 | "MILE", 1815 | "CTSO", 1816 | "REKR", 1817 | "AQB", 1818 | "ADVM", 1819 | "VHC", 1820 | "HGEN", 1821 | "EVI", 1822 | "HOWL", 1823 | "PKOH", 1824 | "DRRX", 1825 | "POM", 1826 | "CRIS", 1827 | "OMGA", 1828 | "SFT", 1829 | "AMLX", 1830 | "NLS", 1831 | "TCRT", 1832 | "TYRA", 1833 | "WLFC", 1834 | "VIA", 1835 | "ACLX", 1836 | "LSEA", 1837 | "PBYI", 1838 | "CDXC", 1839 | "SIEN", 1840 | "MIRM", 1841 | "PASG", 1842 | "VEL", 1843 | "DTC", 1844 | "PSTX", 1845 | "KRT", 1846 | "USX", 1847 | "VRCA", 1848 | "IBEX", 1849 | "TXMD", 1850 | "GTYH", 1851 | "MBII", 1852 | "HQI", 1853 | "TIG", 1854 | "TKNO", 1855 | "SESN", 1856 | "RUBY", 1857 | "ARDX", 1858 | "TNXP", 1859 | "STON", 1860 | "AKBA", 1861 | "REFI", 1862 | "ANNX", 1863 | "AKUS", 1864 | "PAVM", 1865 | "OYST", 1866 | "SELB", 1867 | "EVLO", 1868 | "CNVY", 1869 | "HBB", 1870 | "ICAD", 1871 | "CRTX", 1872 | "DRIO", 1873 | "MEC", 1874 | "VHI", 1875 | "OLMA", 1876 | "FIXX", 1877 | "WVE", 1878 | "FBIO", 1879 | "INFI", 1880 | "DSP", 1881 | "TCRR", 1882 | "INZY", 1883 | "KLTR", 1884 | "CELC", 1885 | "EEX", 1886 | "MTEM", 1887 | "SQZ", 1888 | "RPID", 1889 | "SURF", 1890 | "VALU", 1891 | "SMED", 1892 | "STIM", 1893 | "AGLE", 1894 | "IBIO", 1895 | "WLLAW", 1896 | "LOTZ", 1897 | "SRT", 1898 | "USER", 1899 | "SEEL", 1900 | "AURA", 1901 | "XGN", 1902 | "OCX", 1903 | "AC", 1904 | "HMTV", 1905 | "AIP", 1906 | "FLNT", 1907 | "SBTX", 1908 | "GLSI", 1909 | "NL", 1910 | "BDTX", 1911 | "TRDA", 1912 | "UIHC", 1913 | "TAST", 1914 | "FORA", 1915 | "RVP", 1916 | "UAVS", 1917 | "NBEV", 1918 | "BCEL", 1919 | "MEIP", 1920 | "BMEA", 1921 | "RAIN", 1922 | "FOA", 1923 | "RGS", 1924 | "CDAK", 1925 | "CSSE", 1926 | "CURI", 1927 | "CRDF", 1928 | "AWH", 1929 | "GBOX", 1930 | "QTNT", 1931 | "MBIO", 1932 | "PRLD", 1933 | "BCAB", 1934 | "AMPE", 1935 | "SYRS", 1936 | "CLNN", 1937 | "TRVN", 1938 | "NPCE", 1939 | "SKYT", 1940 | "EBET", 1941 | "ATNX", 1942 | "HARP", 1943 | "HOFV", 1944 | "MGTA", 1945 | "IVC", 1946 | "FREQ", 1947 | "PRTH", 1948 | "SLDB", 1949 | "NLTX", 1950 | "FTHM", 1951 | "NEXI", 1952 | "ONCT", 1953 | "REV", 1954 | "BYSI", 1955 | "TISI", 1956 | "LVO", 1957 | "SMMT", 1958 | "TCBX", 1959 | "PLSE", 1960 | "BOLT", 1961 | "CDZI", 1962 | "CVRX", 1963 | "CIX", 1964 | "ZGNX", 1965 | "AVRO", 1966 | "SNSE", 1967 | "ESGC", 1968 | "GTBP", 1969 | "ADRO", 1970 | "AIRS", 1971 | "KALA", 1972 | "AXDX", 1973 | "APLT", 1974 | "ADN", 1975 | "BTX", 1976 | "ZVIA", 1977 | "VINC", 1978 | "GMTX", 1979 | "DNAY", 1980 | "IMPL", 1981 | "AVTX", 1982 | "TERN", 1983 | "HOOK", 1984 | "ANGN", 1985 | "ALGS", 1986 | "HYRE", 1987 | "MDVL", 1988 | "CYT", 1989 | "ETNB", 1990 | "AKA", 1991 | "SDIG", 1992 | "ONCR", 1993 | "WLLBW", 1994 | "VIGL", 1995 | "XLO", 1996 | "HMPT", 1997 | "PYXS", 1998 | "RFL", 1999 | "PRTG", 2000 | "NH", 2001 | "ELYM", 2002 | "FNCH", 2003 | "SGTX", 2004 | "BDSX", 2005 | "FBRX", 2006 | "SPRB", 2007 | "TLIS", 2008 | "RPHM", 2009 | "LSF", 2010 | "AFIB", 2011 | "OTRK", 2012 | "SERA", 2013 | "DMS", 2014 | "GNLN", 2015 | "LVLU", 2016 | "LABP", 2017 | "ISO", 2018 | ] 2019 | 2020 | 2021 | if __name__ == "__main__": 2022 | run(ASSETS, PERIODICITIES, headless=False) 2023 | -------------------------------------------------------------------------------- /scripts/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ttamg/tradingview-selenium-data/773f356e27a5659b1ec0d6d8ce65e325d0136c3f/scripts/__init__.py -------------------------------------------------------------------------------- /scripts/common/run.py: -------------------------------------------------------------------------------- 1 | import getpass 2 | from .tradingview import TradingView 3 | 4 | DATE = "19500101" 5 | 6 | 7 | def run(assets: list, periodicities: list, from_date=DATE, headless=False): 8 | """ 9 | Scrapes the maximum amount of candles available into a CSV file 10 | for the assets provided and for all the candle periodicities 11 | """ 12 | 13 | print(f"Will fetch {len(assets) * len(periodicities)} CSV files ...") 14 | 15 | username = input("Enter TradingView username: ") 16 | password = getpass.getpass("Password: ") 17 | chart_url = input("Enter full TradingView chart URL: ") 18 | download_to = input( 19 | "Enter full path to download CSV files to (or blank for default) (no trailing slash): " 20 | ) 21 | 22 | print(f"Initialising ...") 23 | if download_to: 24 | options = TradingView.set_download_folder(f"/{download_to}/") 25 | else: 26 | options = None 27 | TradingView.sign_in(username, password, options=options, headless=headless) 28 | TradingView.open_layout(chart_url) 29 | 30 | for asset in assets: 31 | TradingView.change_asset(asset) 32 | 33 | for periodicity in periodicities: 34 | 35 | try: 36 | TradingView.change_periodicity(periodicity) 37 | TradingView.scroll_to_date(from_date) 38 | TradingView.download_csv() 39 | print(f"Done: {asset} {periodicity}") 40 | except Exception as e: 41 | print(f"FAILED: {asset} {periodicity} - {e}") 42 | 43 | TradingView.end() 44 | print(f"Done.") 45 | -------------------------------------------------------------------------------- /scripts/common/tradingview.py: -------------------------------------------------------------------------------- 1 | import time 2 | from helium import ( 3 | start_chrome, 4 | kill_browser, 5 | click, 6 | write, 7 | press, 8 | go_to, 9 | wait_until, 10 | refresh, 11 | Text, 12 | Button, 13 | S, 14 | ENTER, 15 | BACK_SPACE, 16 | ) 17 | 18 | 19 | LONG = 1.5 20 | SHORT = 0.25 21 | LOAD = 5 22 | 23 | 24 | class TradingView: 25 | @staticmethod 26 | def sign_in( 27 | username: str, 28 | password: str, 29 | url: str = "https://tradingview.com", 30 | options=None, 31 | headless=False, 32 | ): 33 | """Sign into Tradingview""" 34 | 35 | if options is not None: 36 | start_chrome(url, maximize=True, headless=headless, options=options) 37 | else: 38 | start_chrome(url, maximize=True, headless=headless) 39 | click("open user menu") 40 | click("Sign in") 41 | click("Email") 42 | write(username, into="Username or Email") 43 | write(password, into="Password") 44 | click("Sign in") 45 | time.sleep(LONG) 46 | click("Accept All") 47 | time.sleep(SHORT) 48 | refresh() 49 | # click(S(".tv-header__hamburger-menu")) 50 | # click("Chart") 51 | # wait_until(Text("Chart")) 52 | 53 | @staticmethod 54 | def set_download_folder(path: str): 55 | """Sets the download folder to the path given""" 56 | from selenium.webdriver import ChromeOptions 57 | 58 | options = ChromeOptions() 59 | prefs = {"download.default_directory": path} 60 | options.add_experimental_option("prefs", prefs) 61 | return options 62 | 63 | @staticmethod 64 | def end(): 65 | """Closes the TV session""" 66 | kill_browser() 67 | 68 | @staticmethod 69 | def open_layout(url: str): 70 | """Opens the chart layout required""" 71 | go_to(url) 72 | 73 | @staticmethod 74 | def change_asset(asset: str): 75 | """Change chart to the given asset""" 76 | click(S("#header-toolbar-symbol-search")) 77 | time.sleep(LONG) 78 | write(asset, into="Symbol Search") 79 | press(ENTER) 80 | time.sleep(LONG) 81 | 82 | @staticmethod 83 | def change_periodicity(periodicity: str): 84 | """Change the candle periodicity""" 85 | click(S("#header-toolbar-intervals")) 86 | time.sleep(LONG) 87 | for char in list(periodicity): 88 | press(char) 89 | time.sleep(SHORT) 90 | press(ENTER) 91 | time.sleep(LONG) 92 | click(S("#header-toolbar-intervals")) 93 | time.sleep(SHORT) 94 | 95 | @staticmethod 96 | def scroll_to_date(date: str = "19800101"): 97 | """Scroll left to candle with date in YYYYMMDD format""" 98 | click(S(".icon-wNyKS1Qc")) 99 | time.sleep(LONG) 100 | for i in range(10): 101 | press(BACK_SPACE) 102 | time.sleep(SHORT) 103 | for char in list(date): 104 | press(char) 105 | time.sleep(SHORT) 106 | press(ENTER) 107 | time.sleep(LOAD) 108 | 109 | @staticmethod 110 | def download_csv(): 111 | """Download to CSV using standard filenames""" 112 | click(S(".topLeftButton-4jH252RJ")) 113 | time.sleep(SHORT) 114 | click("Export chart") 115 | time.sleep(SHORT) 116 | click("Export") 117 | --------------------------------------------------------------------------------