From bfd9d65de9157fd8e9013eb1c76a3b63edde4e99 Mon Sep 17 00:00:00 2001 From: "Mark E. Haase" Date: Tue, 7 May 2024 14:11:09 -0400 Subject: [PATCH] Adding Sphinx to the repo. --- .github/workflows/delete-web-preview.yml | 24 + .github/workflows/sphinx.yml | 120 +++ .vscode/settings.json | 14 + docs/.DS_Store | Bin 0 -> 6148 bytes docs/_static/css/ctid.css | 277 +++++ docs/_static/ctid_logo_white.png | Bin 0 -> 86912 bytes docs/_static/ctid_logo_white.xcf | Bin 0 -> 323133 bytes docs/_static/favicon.png | Bin 0 -> 1072 bytes docs/_templates/footer.html | 65 ++ docs/conf.py | 78 ++ docs/extra/.gitkeep | 0 docs/index.rst | 35 + docs/introduction.rst | 13 + make/sphinx.mk | 19 + poetry.lock | 1173 ++++++++++++++++++++++ pyproject.toml | 46 + 16 files changed, 1864 insertions(+) create mode 100644 .github/workflows/delete-web-preview.yml create mode 100644 .github/workflows/sphinx.yml create mode 100644 .vscode/settings.json create mode 100644 docs/.DS_Store create mode 100644 docs/_static/css/ctid.css create mode 100644 docs/_static/ctid_logo_white.png create mode 100644 docs/_static/ctid_logo_white.xcf create mode 100644 docs/_static/favicon.png create mode 100644 docs/_templates/footer.html create mode 100644 docs/conf.py create mode 100644 docs/extra/.gitkeep create mode 100644 docs/index.rst create mode 100644 docs/introduction.rst create mode 100644 make/sphinx.mk create mode 100644 poetry.lock create mode 100644 pyproject.toml diff --git a/.github/workflows/delete-web-preview.yml b/.github/workflows/delete-web-preview.yml new file mode 100644 index 0000000..a039e79 --- /dev/null +++ b/.github/workflows/delete-web-preview.yml @@ -0,0 +1,24 @@ +name: Delete Preview Build + +on: + pull_request: + types: [closed] + +permissions: + contents: read + id-token: write + pages: write + pull-requests: write + +jobs: + azure_blob: + runs-on: ubuntu-latest + env: + AZURE_STORAGE_ACCOUNT: {{ cookiecutter.storage_account }} + AZURE_STORAGE_SAS_TOKEN: ${{ secrets.AZURE_SAS_TOKEN }} + BRANCH_NAME: ${{ github.head_ref || github.ref_name }} + steps: + - name: Install Azure CLI + run: curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash + - name: Delete old blobs + run: az storage blob delete-batch -s '$web' --pattern "$BRANCH_NAME/*" diff --git a/.github/workflows/sphinx.yml b/.github/workflows/sphinx.yml new file mode 100644 index 0000000..f10ae7c --- /dev/null +++ b/.github/workflows/sphinx.yml @@ -0,0 +1,120 @@ +name: Build Sphinx Docs + +on: + push: + branches: [main] + pull_request: + +permissions: + contents: read + pages: write + id-token: write + pull-requests: write + +# If another web build starts for the same branch, cancel the previous build. This +# protects us from two builds trying to upload at the same time and clobbering each +# other. +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + docs: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.8' + - name: Install Poetry + run: curl -sSL https://install.python-poetry.org/ | python - + - name: Add Poetry to PATH + run: echo "$HOME/.poetry/bin" >> $GITHUB_PATH + - name: Install dependencies + run: poetry install + - name: Build HTML docs + run: poetry run make docs-ci + - name: Upload HTML docs + uses: actions/upload-artifact@v3 + with: + name: threat-modeling-with-attack-docs-html + path: docs/_build/dirhtml/ + + # Delete this job before public release and clear GitHub secrets: + azure_blob: + needs: docs + runs-on: ubuntu-latest + env: + AZURE_STORAGE_ACCOUNT: ctidthreatmodeling + AZURE_STORAGE_SAS_TOKEN: ${{ secrets.AZURE_SAS_TOKEN }} + BRANCH_NAME: ${{ github.head_ref || github.ref_name }} + STATICRYPT_PASS: ${{ secrets.STATICRYPT_PASS }} + NODE_OPTIONS: --max-old-space-size=8192 + steps: + - uses: actions/setup-node@v3 + with: + node-version: '19' + - run: npm install -g staticrypt + - name: Download HTML docs + uses: actions/download-artifact@v3 + with: + name: threat-modeling-with-attack-docs-html + path: docs + - run: > + staticrypt --remember 30 --salt b530e4408fd941209e53e4786421f837 \ + --password $STATICRYPT_PASS --short \ + --template-title "Threat Modeling with ATT&CK (branch: $BRANCH_NAME)" \ + --template-instructions "The contents of this site are marked TLP:AMBER:CTID-R&D:23-83. Do not share with unauthorized individuals." \ + --template-color-primary "#6241c5" \ + --template-color-secondary "#b2b2b2" \ + --template-button "Log In" \ + -r docs/ + - name: Ensure StatiCrypt ran # StatiCrypt will fail without warning; verify it created a directory + run: test -d encrypted + - name: Copy encrypted HTML files + run: rsync -Ir -v --include='*.html' --exclude='*.*' encrypted/docs . + - name: Set the branch name + run: mv docs "$BRANCH_NAME" + - name: Install Azure CLI + run: curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash + - name: Delete old blobs + run: az storage blob delete-batch -s '$web' --pattern "$BRANCH_NAME/*" + - name: Upload to blob storage + run: az storage blob upload-batch -s . --pattern "$BRANCH_NAME/*" -d '$web' + - uses: actions/github-script@v6 + if: github.event_name == 'pull_request' + with: + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `This PR has been published to https://${process.env['AZURE_STORAGE_ACCOUNT']}.z13.web.core.windows.net/${process.env['BRANCH_NAME']}/`, + }) + + # # TODO Uncomment before publishing repository. + # github_pages: + # # This job only runs when committing or merging to main branch. + # if: github.ref_name == 'main' + # needs: docs + # runs-on: ubuntu-latest + # environment: + # name: github-pages + # url: $\{\{ steps.deployment.outputs.page_url \}\} + + # steps: + # - name: Setup Pages + # uses: actions/configure-pages@v2 + # - name: Download HTML docs + # uses: actions/download-artifact@v3 + # with: + # name: threat-modeling-with-attack-docs-html + # path: docs + # - name: Upload artifact + # uses: actions/upload-pages-artifact@v1 + # with: + # path: ./docs + # - name: Deploy to GitHub Pages + # id: deployment + # uses: actions/deploy-pages@v1 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..9e7e635 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,14 @@ +{ + "files.insertFinalNewline": true, + "files.trimTrailingWhitespace": true, + "files.exclude": { + "**/__pycache__": true + }, + "editor.rulers": [ + 88 + ], + "python.formatting.autopep8Path": "black", + "markdown.extension.toc.levels": "2..6", + "python.formatting.provider": "black", + "editor.formatOnSave": true +} diff --git a/docs/.DS_Store b/docs/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a32982a96505c2a9b60361135c0f75739e723189 GIT binary patch literal 6148 zcmeHK%}T>S5Z-O8-BN@e6g@6@Em(gl7B3;z7cim+m73V1!I&*gY7V84tG*&oIjcc;T$##)Rq0gA}cC=nbkbyaLIBG+@IEM#{-18(oW}{SE{v@)w&R(DQ>(6m3gV3P7~LkTw(8A zsVFFHKez}-*`T$4qTA_~~}mOzvi9gDd^ z@PKfW3TRTfePVEv4&&0sITmw+CY^D;GR$LFE*>vjuMXonBm02&DZfG~lDejk|)dI|*q z*lB&#wcS)rJV~5f94)NvfFy3-PCyc%m$d}|;I&+qYnejT@frALhN%zUqK#a-bZVR~ zeBfj5-W>Z9x0}P%B)*@42HW=nA4$IY())JM5%|1AOxj{-!1OF+bNiejMdW;)ao+n@ z{zBx}y3zZV&>(E|GO=KQB($_q{PueHGV%LjN9g(Su>s-b8J8-M{>`nZC$Q)9>tlR! zudvzM*+*e+Sv-{%v;b^8VQkr}C&~MczGtF|h3OSx;epQH{L6#h*O!f>wzi$Ah4IIp z-%q`+W_OBPLbSsW3+NYcl2fm&y7|;av(sA9sxgD$qzGA&S-h#GY zC2v+vS9W`U76`H{vAP1QPkxBK_=rE@7nt!jIjj+i)%0Aw4Nzvk;5{FU-%?>DYy@1{ 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 Ns3@w#sue6F{uk+0nJ@qV literal 0 HcmV?d00001 diff --git a/docs/_static/ctid_logo_white.xcf b/docs/_static/ctid_logo_white.xcf new file mode 100644 index 0000000000000000000000000000000000000000..ea9a73578a21d16ae8a742f5ac0fe9cef6809f93 GIT binary patch literal 323133 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 literal 0 HcmV?d00001 diff --git a/docs/_static/favicon.png b/docs/_static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..668f80f0f8f22dbe7f9f69369894e1d9b45f1d9e GIT binary patch literal 1072 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zf+;VE*pu;uunK>+RkBU9#61kAHlB zbFbPanS!YbIt#s++E;iyJoQBK&W%oM_137#A(c%w4s-T2L{DBKD6zl6QKcos%xp#U zUqwSLq2%>CVYfUNiWXU|O>0^IzQ(TLwCuSvw)-ugm%r!R4z!O5AoX1Te@RI1&-Pc> zdi|HB|9#CpeSOa?G3$-d=61Eun&<8>De^s5Zr#T{eO=GXC$n@6#pYG~S(Y5gC3rRmSAzfOJ? z8eI0!x?a|=v^Mzh^Tq!H=FTnLV{N+EQk~%{_tpHYJ%*p}tP2f)&XRED=qrEIb7v)v z|9v$#l2PKV>DREY*4YOh<@NnKns((`%BS<32X0DLe|EmfpVqh7viz;OvSjtu?&4!c zS^Lx0uIlgq;`DXW&s{qq*4ve6ij{}RavTub{r83B>-zb7D)eL%rgtqC>Jj2$V(>q@+~Ea-6~i_M1qKBm z?X^K*0ZX&)h3_2(i&+jwSvUN(w_=!+#+r~FTk+*{=x@_K{->`WU1@de&8^6{H^MS} zg7d@ofB9|Dy*v7E-F7B}vRrF(xBfc$H@u%qKdvm={A;oPp@62T3D=|>VqY^HI+MlB zu>484!5W}t8%{A)s7Yuua4@Xt^KZPsSi+Fg=)mB>P{J@JLGeacka6hz>pRj`>BWh^ z4~x$$`=GgMZq@u_FPdMi*E{<8M1#B1_FHSE=lfl4o-A&~@Pfh1fO{RoKAS^g94rau zUK_6VTxD}$Pq?ZY!4c5p$lf5z#t?Rw@y-8@ObrYNg4qrjA6&DGdBfIo@%xNs{VM#b zykB7Rj>WGW7`D}S|9bsuyWY`9dExs%X2%rRrQe5EAwR@ZdypSkbld;IF&V-|A?jlQpL=YI3LZ`JzK%7)z5Yx>MhYi+Jx4g77) zSGL}2hUJ3AulCORXY<*j+^@+*y_0?My|pjT^c(q`7pHULEejF3jDg|DwEv7#!*5kQe7 + {%- if (theme_prev_next_buttons_location == 'bottom' or theme_prev_next_buttons_location == 'both') and (next or + prev) %} + {#- Translators: This is an ARIA section label for the footer section of the page. -#} +

+ {%- endif %} + +
+ +
+ {%- block contentinfo %} +

+ {%- if show_copyright %} + © {{ copyright_years }} MITRE Engenuity. Approved for public release. + Document number(s) {{ prs_numbers }}. + {%- endif %} + + {%- if build_id and build_url %} + + {#- Translators: Build is a noun, not a verb -#} + {%- trans %}Build{% endtrans -%} + {{ build_id }}. + + {%- elif commit %} + + {#- Translators: the phrase "revision" comes from Git, referring to a commit #} + {%- trans %}Revision{% endtrans %} {{ commit }}. + + {%- endif %} + {%- if last_updated %} + + {%- trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %} + + {%- endif -%} + +

+ {%- endblock %} +
+ + {% if show_sphinx %} + {%- set sphinx_web = 'Sphinx' %} + {%- set readthedocs_web = 'Read the Docs' %} + {#- Translators: the variable "sphinx_web" is a link to the Sphinx project documentation with the text "Sphinx" #} + {%- trans sphinx_web=sphinx_web, readthedocs_web=readthedocs_web %}Built with {{ sphinx_web }} using a{% endtrans %} + {#- Translators: "theme" refers to a theme for Sphinx, which alters the appearance of the generated documentation #} + {% trans %}theme{% endtrans %} + {#- Translators: this is always used as "provided by Read the Docs", and should not imply Read the Docs is an author + of the generated documentation. #} + {% trans %}provided by {{ readthedocs_web }}{% endtrans %}. + {% endif %} + + {%- block extrafooter %} {% endblock %} + + diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000..4855fec --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,78 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + + +# -- Project information ----------------------------------------------------- + +project = "Threat Modeling with ATT&CK" +author = "Center for Threat-Informed Defense" +copyright_years = "2024" +prs_numbers = "REPLACE_WITH_PRS_NUMBER" + +# The full version, including alpha/beta/rc tags +version = "v1.0.0" +release = version + + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + "sphinx_rtd_theme", +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ["_templates"] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] + +rst_prolog = f""" +.. |copyright_years| replace:: {copyright_years} +.. |prs_numbers| replace:: {prs_numbers} +""" + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = "sphinx_rtd_theme" +html_static_path = ["_static"] +html_extra_path = ["extra"] +html_favicon = "_static/favicon.png" +html_logo = "_static/ctid_logo_white.png" +html_css_files = [ + "css/ctid.css", +] +html_copy_source = False +html_show_sourcelink = False +html_show_sphinx = False +html_use_smartypants = False +html_context = { + "copyright_years": copyright_years, + "prs_numbers": prs_numbers, +} +html_theme_options = { + "analytics_id": "", # TODO Create and fill in Google Analytics G-tag. + "display_version": True, + "logo_only": True, + "style_external_links": True, +} diff --git a/docs/extra/.gitkeep b/docs/extra/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 0000000..660ab63 --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,35 @@ +Threat Modeling with ATT&CK |version| +===================================== + +.. TODO Enter a one paragraph summary here. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor +incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud +exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure +dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. +Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt +mollit anim id est laborum. + +.. toctree:: + :maxdepth: 2 + :caption: Contents + + introduction + +Notice +------ + +© |copyright_years| MITRE Engenuity. Approved for public release. Document number(s) +|prs_numbers|. + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this +file except in compliance with the License. You may obtain a copy of the License at +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under +the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the specific language governing +permissions and limitations under the License. + +This project makes use of ATT&CK®: `ATT&CK Terms of Use +`__ diff --git a/docs/introduction.rst b/docs/introduction.rst new file mode 100644 index 0000000..9126eaf --- /dev/null +++ b/docs/introduction.rst @@ -0,0 +1,13 @@ +Introduction +============ + +.. TODO Add any chapters you wish as separate *.rst files that are referenced in the + index.rst. This file can contain an introduction if you want, or delete it and + create other chapters. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor +incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud +exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure +dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. +Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt +mollit anim id est laborum. diff --git a/make/sphinx.mk b/make/sphinx.mk new file mode 100644 index 0000000..0c7068c --- /dev/null +++ b/make/sphinx.mk @@ -0,0 +1,19 @@ +SOURCEDIR = docs/ +BUILDDIR = docs/_build/ + +.PHONY: docs docs-html docs-pdf + +docs-ci: ## Generate HTML documentation for publishing to GitHub Pages. + sphinx-build -M dirhtml "$(SOURCEDIR)" "$(BUILDDIR)" -W --keep-going + +docs-html: ## Generate HTML documentation for local viewing. + sphinx-build -M html "$(SOURCEDIR)" "$(BUILDDIR)" + +docs-pdf: ## Generate PDF documentation. + poetry export --dev --without-hashes -f requirements.txt -o docs/requirements.txt + docker run --rm -v "$(PWD)/docs":/docs sphinxdoc/sphinx-latexpdf:4.3.1 \ + bash -c "pip install -r requirements.txt && sphinx-build -M latexpdf /docs /docs/_build" + rm docs/requirements.txt + +docs-server: ## Run server for local editing of docs. + sphinx-autobuild -b dirhtml -a "$(SOURCEDIR)" "$(BUILDDIR)" diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..6eb5304 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,1173 @@ +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. + +[[package]] +name = "alabaster" +version = "0.7.16" +description = "A light, configurable Sphinx theme" +optional = false +python-versions = ">=3.9" +files = [ + {file = "alabaster-0.7.16-py3-none-any.whl", hash = "sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92"}, + {file = "alabaster-0.7.16.tar.gz", hash = "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65"}, +] + +[[package]] +name = "babel" +version = "2.15.0" +description = "Internationalization utilities" +optional = false +python-versions = ">=3.8" +files = [ + {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"}, + {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"}, +] + +[package.extras] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] + +[[package]] +name = "bandit" +version = "1.7.0" +description = "Security oriented static analyser for python code." +optional = false +python-versions = ">=3.5" +files = [ + {file = "bandit-1.7.0-py3-none-any.whl", hash = "sha256:216be4d044209fa06cf2a3e51b319769a51be8318140659719aa7a115c35ed07"}, + {file = "bandit-1.7.0.tar.gz", hash = "sha256:8a4c7415254d75df8ff3c3b15cfe9042ecee628a1e40b44c15a98890fbfc2608"}, +] + +[package.dependencies] +colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""} +GitPython = ">=1.0.1" +PyYAML = ">=5.3.1" +six = ">=1.10.0" +stevedore = ">=1.20.0" + +[[package]] +name = "black" +version = "22.12.0" +description = "The uncompromising code formatter." +optional = false +python-versions = ">=3.7" +files = [ + {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, + {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, + {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, + {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, + {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, + {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, + {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, + {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, + {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, + {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, + {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, + {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} +typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "bumpver" +version = "2022.1120" +description = "Bump version numbers in project files." +optional = false +python-versions = ">=2.7" +files = [ + {file = "bumpver-2022.1120-py2.py3-none-any.whl", hash = "sha256:9da18a6997ade04c66bec05f5349acc5f2f146b16fb77b307f91ef3370c6aa55"}, + {file = "bumpver-2022.1120.tar.gz", hash = "sha256:ff8ad562a2ed87e862e07683cb68c4b61046679bf155f7a7ebb20b2ea47775cd"}, +] + +[package.dependencies] +click = {version = "*", markers = "python_version >= \"3.6\""} +colorama = ">=0.4" +lexid = "*" +pathlib2 = "*" +setuptools = {version = ">=45.0.0", markers = "python_version >= \"3.5\""} +toml = "*" + +[[package]] +name = "certifi" +version = "2024.2.2" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.3.2" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "coverage" +version = "7.5.1" +description = "Code coverage measurement for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "coverage-7.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0884920835a033b78d1c73b6d3bbcda8161a900f38a488829a83982925f6c2e"}, + {file = "coverage-7.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:39afcd3d4339329c5f58de48a52f6e4e50f6578dd6099961cf22228feb25f38f"}, + {file = "coverage-7.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7b0ceee8147444347da6a66be737c9d78f3353b0681715b668b72e79203e4a"}, + {file = "coverage-7.5.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a9ca3f2fae0088c3c71d743d85404cec8df9be818a005ea065495bedc33da35"}, + {file = "coverage-7.5.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd215c0c7d7aab005221608a3c2b46f58c0285a819565887ee0b718c052aa4e"}, + {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4bf0655ab60d754491004a5efd7f9cccefcc1081a74c9ef2da4735d6ee4a6223"}, + {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:61c4bf1ba021817de12b813338c9be9f0ad5b1e781b9b340a6d29fc13e7c1b5e"}, + {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:db66fc317a046556a96b453a58eced5024af4582a8dbdc0c23ca4dbc0d5b3146"}, + {file = "coverage-7.5.1-cp310-cp310-win32.whl", hash = "sha256:b016ea6b959d3b9556cb401c55a37547135a587db0115635a443b2ce8f1c7228"}, + {file = "coverage-7.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:df4e745a81c110e7446b1cc8131bf986157770fa405fe90e15e850aaf7619bc8"}, + {file = "coverage-7.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:796a79f63eca8814ca3317a1ea443645c9ff0d18b188de470ed7ccd45ae79428"}, + {file = "coverage-7.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fc84a37bfd98db31beae3c2748811a3fa72bf2007ff7902f68746d9757f3746"}, + {file = "coverage-7.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6175d1a0559986c6ee3f7fccfc4a90ecd12ba0a383dcc2da30c2b9918d67d8a3"}, + {file = "coverage-7.5.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fc81d5878cd6274ce971e0a3a18a8803c3fe25457165314271cf78e3aae3aa2"}, + {file = "coverage-7.5.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:556cf1a7cbc8028cb60e1ff0be806be2eded2daf8129b8811c63e2b9a6c43bca"}, + {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9981706d300c18d8b220995ad22627647be11a4276721c10911e0e9fa44c83e8"}, + {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d7fed867ee50edf1a0b4a11e8e5d0895150e572af1cd6d315d557758bfa9c057"}, + {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ef48e2707fb320c8f139424a596f5b69955a85b178f15af261bab871873bb987"}, + {file = "coverage-7.5.1-cp311-cp311-win32.whl", hash = "sha256:9314d5678dcc665330df5b69c1e726a0e49b27df0461c08ca12674bcc19ef136"}, + {file = "coverage-7.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:5fa567e99765fe98f4e7d7394ce623e794d7cabb170f2ca2ac5a4174437e90dd"}, + {file = "coverage-7.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b6cf3764c030e5338e7f61f95bd21147963cf6aa16e09d2f74f1fa52013c1206"}, + {file = "coverage-7.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ec92012fefebee89a6b9c79bc39051a6cb3891d562b9270ab10ecfdadbc0c34"}, + {file = "coverage-7.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16db7f26000a07efcf6aea00316f6ac57e7d9a96501e990a36f40c965ec7a95d"}, + {file = "coverage-7.5.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beccf7b8a10b09c4ae543582c1319c6df47d78fd732f854ac68d518ee1fb97fa"}, + {file = "coverage-7.5.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8748731ad392d736cc9ccac03c9845b13bb07d020a33423fa5b3a36521ac6e4e"}, + {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7352b9161b33fd0b643ccd1f21f3a3908daaddf414f1c6cb9d3a2fd618bf2572"}, + {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7a588d39e0925f6a2bff87154752481273cdb1736270642aeb3635cb9b4cad07"}, + {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:68f962d9b72ce69ea8621f57551b2fa9c70509af757ee3b8105d4f51b92b41a7"}, + {file = "coverage-7.5.1-cp312-cp312-win32.whl", hash = "sha256:f152cbf5b88aaeb836127d920dd0f5e7edff5a66f10c079157306c4343d86c19"}, + {file = "coverage-7.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:5a5740d1fb60ddf268a3811bcd353de34eb56dc24e8f52a7f05ee513b2d4f596"}, + {file = "coverage-7.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e2213def81a50519d7cc56ed643c9e93e0247f5bbe0d1247d15fa520814a7cd7"}, + {file = "coverage-7.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5037f8fcc2a95b1f0e80585bd9d1ec31068a9bcb157d9750a172836e98bc7a90"}, + {file = "coverage-7.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3721c2c9e4c4953a41a26c14f4cef64330392a6d2d675c8b1db3b645e31f0e"}, + {file = "coverage-7.5.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca498687ca46a62ae590253fba634a1fe9836bc56f626852fb2720f334c9e4e5"}, + {file = "coverage-7.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cdcbc320b14c3e5877ee79e649677cb7d89ef588852e9583e6b24c2e5072661"}, + {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:57e0204b5b745594e5bc14b9b50006da722827f0b8c776949f1135677e88d0b8"}, + {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fe7502616b67b234482c3ce276ff26f39ffe88adca2acf0261df4b8454668b4"}, + {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9e78295f4144f9dacfed4f92935fbe1780021247c2fabf73a819b17f0ccfff8d"}, + {file = "coverage-7.5.1-cp38-cp38-win32.whl", hash = "sha256:1434e088b41594baa71188a17533083eabf5609e8e72f16ce8c186001e6b8c41"}, + {file = "coverage-7.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:0646599e9b139988b63704d704af8e8df7fa4cbc4a1f33df69d97f36cb0a38de"}, + {file = "coverage-7.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4cc37def103a2725bc672f84bd939a6fe4522310503207aae4d56351644682f1"}, + {file = "coverage-7.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fc0b4d8bfeabd25ea75e94632f5b6e047eef8adaed0c2161ada1e922e7f7cece"}, + {file = "coverage-7.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d0a0f5e06881ecedfe6f3dd2f56dcb057b6dbeb3327fd32d4b12854df36bf26"}, + {file = "coverage-7.5.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9735317685ba6ec7e3754798c8871c2f49aa5e687cc794a0b1d284b2389d1bd5"}, + {file = "coverage-7.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d21918e9ef11edf36764b93101e2ae8cc82aa5efdc7c5a4e9c6c35a48496d601"}, + {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c3e757949f268364b96ca894b4c342b41dc6f8f8b66c37878aacef5930db61be"}, + {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:79afb6197e2f7f60c4824dd4b2d4c2ec5801ceb6ba9ce5d2c3080e5660d51a4f"}, + {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d1d0d98d95dd18fe29dc66808e1accf59f037d5716f86a501fc0256455219668"}, + {file = "coverage-7.5.1-cp39-cp39-win32.whl", hash = "sha256:1cc0fe9b0b3a8364093c53b0b4c0c2dd4bb23acbec4c9240b5f284095ccf7981"}, + {file = "coverage-7.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:dde0070c40ea8bb3641e811c1cfbf18e265d024deff6de52c5950677a8fb1e0f"}, + {file = "coverage-7.5.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:6537e7c10cc47c595828b8a8be04c72144725c383c4702703ff4e42e44577312"}, + {file = "coverage-7.5.1.tar.gz", hash = "sha256:54de9ef3a9da981f7af93eafde4ede199e0846cd819eb27c88e2b712aae9708c"}, +] + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "docutils" +version = "0.18.1" +description = "Docutils -- Python Documentation Utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "docutils-0.18.1-py2.py3-none-any.whl", hash = "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c"}, + {file = "docutils-0.18.1.tar.gz", hash = "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06"}, +] + +[[package]] +name = "dparse" +version = "0.6.3" +description = "A parser for Python dependency files" +optional = false +python-versions = ">=3.6" +files = [ + {file = "dparse-0.6.3-py3-none-any.whl", hash = "sha256:0d8fe18714056ca632d98b24fbfc4e9791d4e47065285ab486182288813a5318"}, + {file = "dparse-0.6.3.tar.gz", hash = "sha256:27bb8b4bcaefec3997697ba3f6e06b2447200ba273c0b085c3d012a04571b528"}, +] + +[package.dependencies] +packaging = "*" +tomli = {version = "*", markers = "python_version < \"3.11\""} + +[package.extras] +conda = ["pyyaml"] +pipenv = ["pipenv (<=2022.12.19)"] + +[[package]] +name = "exceptiongroup" +version = "1.2.1" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"}, + {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "gitdb" +version = "4.0.11" +description = "Git Object Database" +optional = false +python-versions = ">=3.7" +files = [ + {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"}, + {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"}, +] + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "gitpython" +version = "3.1.43" +description = "GitPython is a Python library used to interact with Git repositories" +optional = false +python-versions = ">=3.7" +files = [ + {file = "GitPython-3.1.43-py3-none-any.whl", hash = "sha256:eec7ec56b92aad751f9912a73404bc02ba212a23adb2c7098ee668417051a1ff"}, + {file = "GitPython-3.1.43.tar.gz", hash = "sha256:35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c"}, +] + +[package.dependencies] +gitdb = ">=4.0.1,<5" + +[package.extras] +doc = ["sphinx (==4.3.2)", "sphinx-autodoc-typehints", "sphinx-rtd-theme", "sphinxcontrib-applehelp (>=1.0.2,<=1.0.4)", "sphinxcontrib-devhelp (==1.0.2)", "sphinxcontrib-htmlhelp (>=2.0.0,<=2.0.1)", "sphinxcontrib-qthelp (==1.0.3)", "sphinxcontrib-serializinghtml (==1.1.5)"] +test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar", "typing-extensions"] + +[[package]] +name = "idna" +version = "3.7" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, +] + +[[package]] +name = "imagesize" +version = "1.4.1" +description = "Getting image size from png/jpeg/jpeg2000/gif file" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, + {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, +] + +[[package]] +name = "importlib-metadata" +version = "7.1.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, + {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, +] + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "isort" +version = "5.13.2" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, + {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, +] + +[package.extras] +colors = ["colorama (>=0.4.6)"] + +[[package]] +name = "jinja2" +version = "3.1.4" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "lexid" +version = "2021.1006" +description = "Variable width build numbers with lexical ordering." +optional = false +python-versions = ">=2.7" +files = [ + {file = "lexid-2021.1006-py2.py3-none-any.whl", hash = "sha256:5526bb5606fd74c7add23320da5f02805bddd7c77916f2dc1943e6bada8605ed"}, + {file = "lexid-2021.1006.tar.gz", hash = "sha256:509a3a4cc926d3dbf22b203b18a4c66c25e6473fb7c0e0d30374533ac28bafe5"}, +] + +[[package]] +name = "livereload" +version = "2.6.3" +description = "Python LiveReload is an awesome tool for web developers" +optional = false +python-versions = "*" +files = [ + {file = "livereload-2.6.3-py2.py3-none-any.whl", hash = "sha256:ad4ac6f53b2d62bb6ce1a5e6e96f1f00976a32348afedcb4b6d68df2a1d346e4"}, + {file = "livereload-2.6.3.tar.gz", hash = "sha256:776f2f865e59fde56490a56bcc6773b6917366bce0c267c60ee8aaf1a0959869"}, +] + +[package.dependencies] +six = "*" +tornado = {version = "*", markers = "python_version > \"2.7\""} + +[[package]] +name = "markupsafe" +version = "2.1.5" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, +] + +[[package]] +name = "mypy" +version = "1.10.0" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mypy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da1cbf08fb3b851ab3b9523a884c232774008267b1f83371ace57f412fe308c2"}, + {file = "mypy-1.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:12b6bfc1b1a66095ab413160a6e520e1dc076a28f3e22f7fb25ba3b000b4ef99"}, + {file = "mypy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e36fb078cce9904c7989b9693e41cb9711e0600139ce3970c6ef814b6ebc2b2"}, + {file = "mypy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2b0695d605ddcd3eb2f736cd8b4e388288c21e7de85001e9f85df9187f2b50f9"}, + {file = "mypy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:cd777b780312ddb135bceb9bc8722a73ec95e042f911cc279e2ec3c667076051"}, + {file = "mypy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1"}, + {file = "mypy-1.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee"}, + {file = "mypy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de"}, + {file = "mypy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7"}, + {file = "mypy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:a87dbfa85971e8d59c9cc1fcf534efe664d8949e4c0b6b44e8ca548e746a8d53"}, + {file = "mypy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a781f6ad4bab20eef8b65174a57e5203f4be627b46291f4589879bf4e257b97b"}, + {file = "mypy-1.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b808e12113505b97d9023b0b5e0c0705a90571c6feefc6f215c1df9381256e30"}, + {file = "mypy-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f55583b12156c399dce2df7d16f8a5095291354f1e839c252ec6c0611e86e2e"}, + {file = "mypy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cf18f9d0efa1b16478c4c129eabec36148032575391095f73cae2e722fcf9d5"}, + {file = "mypy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:bc6ac273b23c6b82da3bb25f4136c4fd42665f17f2cd850771cb600bdd2ebeda"}, + {file = "mypy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9fd50226364cd2737351c79807775136b0abe084433b55b2e29181a4c3c878c0"}, + {file = "mypy-1.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f90cff89eea89273727d8783fef5d4a934be2fdca11b47def50cf5d311aff727"}, + {file = "mypy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fcfc70599efde5c67862a07a1aaf50e55bce629ace26bb19dc17cece5dd31ca4"}, + {file = "mypy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:075cbf81f3e134eadaf247de187bd604748171d6b79736fa9b6c9685b4083061"}, + {file = "mypy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:3f298531bca95ff615b6e9f2fc0333aae27fa48052903a0ac90215021cdcfa4f"}, + {file = "mypy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa7ef5244615a2523b56c034becde4e9e3f9b034854c93639adb667ec9ec2976"}, + {file = "mypy-1.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3236a4c8f535a0631f85f5fcdffba71c7feeef76a6002fcba7c1a8e57c8be1ec"}, + {file = "mypy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a2b5cdbb5dd35aa08ea9114436e0d79aceb2f38e32c21684dcf8e24e1e92821"}, + {file = "mypy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92f93b21c0fe73dc00abf91022234c79d793318b8a96faac147cd579c1671746"}, + {file = "mypy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:28d0e038361b45f099cc086d9dd99c15ff14d0188f44ac883010e172ce86c38a"}, + {file = "mypy-1.10.0-py3-none-any.whl", hash = "sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee"}, + {file = "mypy-1.10.0.tar.gz", hash = "sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131"}, +] + +[package.dependencies] +mypy-extensions = ">=1.0.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = ">=4.1.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "packaging" +version = "24.0" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, + {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, +] + +[[package]] +name = "pathlib2" +version = "2.3.7.post1" +description = "Object-oriented filesystem paths" +optional = false +python-versions = "*" +files = [ + {file = "pathlib2-2.3.7.post1-py2.py3-none-any.whl", hash = "sha256:5266a0fd000452f1b3467d782f079a4343c63aaa119221fbdc4e39577489ca5b"}, + {file = "pathlib2-2.3.7.post1.tar.gz", hash = "sha256:9fe0edad898b83c0c3e199c842b27ed216645d2e177757b2dd67384d4113c641"}, +] + +[package.dependencies] +six = "*" + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + +[[package]] +name = "pbr" +version = "6.0.0" +description = "Python Build Reasonableness" +optional = false +python-versions = ">=2.6" +files = [ + {file = "pbr-6.0.0-py2.py3-none-any.whl", hash = "sha256:4a7317d5e3b17a3dccb6a8cfe67dab65b20551404c52c8ed41279fa4f0cb4cda"}, + {file = "pbr-6.0.0.tar.gz", hash = "sha256:d1377122a5a00e2f940ee482999518efe16d745d423a670c27773dfbc3c9a7d9"}, +] + +[[package]] +name = "platformdirs" +version = "4.2.1" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.2.1-py3-none-any.whl", hash = "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1"}, + {file = "platformdirs-4.2.1.tar.gz", hash = "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf"}, +] + +[package.extras] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +type = ["mypy (>=1.8)"] + +[[package]] +name = "pluggy" +version = "1.5.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "pygments" +version = "2.18.0" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pytest" +version = "7.4.4" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, + {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} + +[package.extras] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-cov" +version = "2.11.1" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "pytest-cov-2.11.1.tar.gz", hash = "sha256:359952d9d39b9f822d9d29324483e7ba04a3a17dd7d05aa6beb7ea01e359e5f7"}, + {file = "pytest_cov-2.11.1-py2.py3-none-any.whl", hash = "sha256:bdb9fdb0b85a7cc825269a4c56b48ccaa5c7e365054b6038772c32ddcdc969da"}, +] + +[package.dependencies] +coverage = ">=5.2.1" +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests (==2.0.2)", "pytest-xdist", "six", "virtualenv"] + +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "requests" +version = "2.31.0" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.7" +files = [ + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "safety" +version = "1.10.3" +description = "Checks installed dependencies for known vulnerabilities." +optional = false +python-versions = ">=3.5" +files = [ + {file = "safety-1.10.3-py2.py3-none-any.whl", hash = "sha256:5f802ad5df5614f9622d8d71fedec2757099705c2356f862847c58c6dfe13e84"}, + {file = "safety-1.10.3.tar.gz", hash = "sha256:30e394d02a20ac49b7f65292d19d38fa927a8f9582cdfd3ad1adbbc66c641ad5"}, +] + +[package.dependencies] +Click = ">=6.0" +dparse = ">=0.5.1" +packaging = "*" +requests = "*" +setuptools = "*" + +[[package]] +name = "setuptools" +version = "69.5.1" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, + {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "smmap" +version = "5.0.1" +description = "A pure Python implementation of a sliding window memory map manager" +optional = false +python-versions = ">=3.7" +files = [ + {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"}, + {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"}, +] + +[[package]] +name = "snowballstemmer" +version = "2.2.0" +description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +optional = false +python-versions = "*" +files = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] + +[[package]] +name = "sphinx" +version = "5.3.0" +description = "Python documentation generator" +optional = false +python-versions = ">=3.6" +files = [ + {file = "Sphinx-5.3.0.tar.gz", hash = "sha256:51026de0a9ff9fc13c05d74913ad66047e104f56a129ff73e174eb5c3ee794b5"}, + {file = "sphinx-5.3.0-py3-none-any.whl", hash = "sha256:060ca5c9f7ba57a08a1219e547b269fadf125ae25b06b9fa7f66768efb652d6d"}, +] + +[package.dependencies] +alabaster = ">=0.7,<0.8" +babel = ">=2.9" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} +docutils = ">=0.14,<0.20" +imagesize = ">=1.3" +importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} +Jinja2 = ">=3.0" +packaging = ">=21.0" +Pygments = ">=2.12" +requests = ">=2.5.0" +snowballstemmer = ">=2.0" +sphinxcontrib-applehelp = "*" +sphinxcontrib-devhelp = "*" +sphinxcontrib-htmlhelp = ">=2.0.0" +sphinxcontrib-jsmath = "*" +sphinxcontrib-qthelp = "*" +sphinxcontrib-serializinghtml = ">=1.1.5" + +[package.extras] +docs = ["sphinxcontrib-websupport"] +lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-bugbear", "flake8-comprehensions", "flake8-simplify", "isort", "mypy (>=0.981)", "sphinx-lint", "types-requests", "types-typed-ast"] +test = ["cython", "html5lib", "pytest (>=4.6)", "typed_ast"] + +[[package]] +name = "sphinx-autobuild" +version = "2021.3.14" +description = "Rebuild Sphinx documentation on changes, with live-reload in the browser." +optional = false +python-versions = ">=3.6" +files = [ + {file = "sphinx-autobuild-2021.3.14.tar.gz", hash = "sha256:de1ca3b66e271d2b5b5140c35034c89e47f263f2cd5db302c9217065f7443f05"}, + {file = "sphinx_autobuild-2021.3.14-py3-none-any.whl", hash = "sha256:8fe8cbfdb75db04475232f05187c776f46f6e9e04cacf1e49ce81bdac649ccac"}, +] + +[package.dependencies] +colorama = "*" +livereload = "*" +sphinx = "*" + +[package.extras] +test = ["pytest", "pytest-cov"] + +[[package]] +name = "sphinx-rtd-theme" +version = "1.3.0" +description = "Read the Docs theme for Sphinx" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "sphinx_rtd_theme-1.3.0-py2.py3-none-any.whl", hash = "sha256:46ddef89cc2416a81ecfbeaceab1881948c014b1b6e4450b815311a89fb977b0"}, + {file = "sphinx_rtd_theme-1.3.0.tar.gz", hash = "sha256:590b030c7abb9cf038ec053b95e5380b5c70d61591eb0b552063fbe7c41f0931"}, +] + +[package.dependencies] +docutils = "<0.19" +sphinx = ">=1.6,<8" +sphinxcontrib-jquery = ">=4,<5" + +[package.extras] +dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] + +[[package]] +name = "sphinxcontrib-applehelp" +version = "1.0.8" +description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_applehelp-1.0.8-py3-none-any.whl", hash = "sha256:cb61eb0ec1b61f349e5cc36b2028e9e7ca765be05e49641c97241274753067b4"}, + {file = "sphinxcontrib_applehelp-1.0.8.tar.gz", hash = "sha256:c40a4f96f3776c4393d933412053962fac2b84f4c99a7982ba42e09576a70619"}, +] + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-devhelp" +version = "1.0.6" +description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_devhelp-1.0.6-py3-none-any.whl", hash = "sha256:6485d09629944511c893fa11355bda18b742b83a2b181f9a009f7e500595c90f"}, + {file = "sphinxcontrib_devhelp-1.0.6.tar.gz", hash = "sha256:9893fd3f90506bc4b97bdb977ceb8fbd823989f4316b28c3841ec128544372d3"}, +] + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-htmlhelp" +version = "2.0.5" +description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_htmlhelp-2.0.5-py3-none-any.whl", hash = "sha256:393f04f112b4d2f53d93448d4bce35842f62b307ccdc549ec1585e950bc35e04"}, + {file = "sphinxcontrib_htmlhelp-2.0.5.tar.gz", hash = "sha256:0dc87637d5de53dd5eec3a6a01753b1ccf99494bd756aafecd74b4fa9e729015"}, +] + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] +test = ["html5lib", "pytest"] + +[[package]] +name = "sphinxcontrib-jquery" +version = "4.1" +description = "Extension to include jQuery on newer Sphinx releases" +optional = false +python-versions = ">=2.7" +files = [ + {file = "sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a"}, + {file = "sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae"}, +] + +[package.dependencies] +Sphinx = ">=1.8" + +[[package]] +name = "sphinxcontrib-jsmath" +version = "1.0.1" +description = "A sphinx extension which renders display math in HTML via JavaScript" +optional = false +python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, + {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, +] + +[package.extras] +test = ["flake8", "mypy", "pytest"] + +[[package]] +name = "sphinxcontrib-qthelp" +version = "1.0.7" +description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_qthelp-1.0.7-py3-none-any.whl", hash = "sha256:e2ae3b5c492d58fcbd73281fbd27e34b8393ec34a073c792642cd8e529288182"}, + {file = "sphinxcontrib_qthelp-1.0.7.tar.gz", hash = "sha256:053dedc38823a80a7209a80860b16b722e9e0209e32fea98c90e4e6624588ed6"}, +] + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-serializinghtml" +version = "1.1.10" +description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_serializinghtml-1.1.10-py3-none-any.whl", hash = "sha256:326369b8df80a7d2d8d7f99aa5ac577f51ea51556ed974e7716cfd4fca3f6cb7"}, + {file = "sphinxcontrib_serializinghtml-1.1.10.tar.gz", hash = "sha256:93f3f5dc458b91b192fe10c397e324f262cf163d79f3282c158e8436a2c4511f"}, +] + +[package.extras] +lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] +test = ["pytest"] + +[[package]] +name = "stevedore" +version = "5.2.0" +description = "Manage dynamic plugins for Python applications" +optional = false +python-versions = ">=3.8" +files = [ + {file = "stevedore-5.2.0-py3-none-any.whl", hash = "sha256:1c15d95766ca0569cad14cb6272d4d31dae66b011a929d7c18219c176ea1b5c9"}, + {file = "stevedore-5.2.0.tar.gz", hash = "sha256:46b93ca40e1114cea93d738a6c1e365396981bb6bb78c27045b7587c9473544d"}, +] + +[package.dependencies] +pbr = ">=2.0.0,<2.1.0 || >2.1.0" + +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + +[[package]] +name = "tornado" +version = "6.4" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +optional = false +python-versions = ">= 3.8" +files = [ + {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"}, + {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"}, + {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"}, + {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"}, + {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, +] + +[[package]] +name = "typing-extensions" +version = "4.11.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, + {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, +] + +[[package]] +name = "urllib3" +version = "2.2.1" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "zipp" +version = "3.18.1" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.8" +files = [ + {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"}, + {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] + +[metadata] +lock-version = "2.0" +python-versions = "^3.9" +content-hash = "ccf89a86edde084c1dfe51235749c730fc79dc57f4dc388f4ec5912f585a82c4" diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..c15e146 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,46 @@ +[tool.poetry] +name = "threat-modeling-with-attack" +version = "1.0.0" +description = "Threat Modeling with ATT&CK" +authors = ["CTID "] + +license = "Apache" + +[tool.poetry.dependencies] +python = "^3.9" + +[tool.poetry.group.dev.dependencies] +bandit = "1.7.0" +black = "^22.3.0" +bumpver = "^2022.1119" +pytest = "^7.1.2" +pytest-cov = "2.11.1" +safety = "1.10.3" +isort = "^5.12.0" +mypy = "^1.2.0" +sphinx = "^5.0.0" +sphinx-autobuild = "^2021.3.14" +sphinx-rtd-theme = "^1.0.0" + +[tool.black] +line-length = 88 +target-version = ['py39'] + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" + +[tool.bumpver] +version = "v1.0.0" +version_pattern = "vMAJOR.MINOR.PATCH" +commit_message = "Bump version {old_version} -> {new_version}" +commit = true +tag = true + +[tool.bumpver.file_patterns] +"pyproject.toml" = ['version = "{pep440_version}"', 'version = "{version}"'] +"docs/conf.py" = ['version = "{version}"'] + +[tool.isort] +profile = "black" +skip_gitignore = true