├── CHANGELOG.md ├── docs └── .gitkeep ├── alphaagent ├── config │ ├── README.md │ └── llm_config.py └── utils │ └── llm_utils.py ├── AlphaAgent.png ├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── question.md │ ├── feature_request.md │ └── bug_report.md ├── workflows │ ├── release-drafter.yml │ ├── greetings.yml │ └── build.yml ├── .stale.yml ├── release-drafter.yml └── PULL_REQUEST_TEMPLATE.md ├── test └── test_llm.py ├── .pre-commit-config.yaml ├── .editorconfig ├── requirements.txt ├── cookiecutter-config-file.yml ├── LICENCE ├── SECURITY.md ├── CONTRIBUTING.md ├── Makefile ├── README.md ├── CODE_OF_CONDUCT.md ├── pyproject.toml ├── .gitignore └── poetry.lock /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /alphaagent/config/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /AlphaAgent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LLMQuant/Alpha-Agent/HEAD/AlphaAgent.png -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | # Configuration: https://help.github.com/en/github/building-a-strong-community/configuring-issue-templates-for-your-repository 2 | 3 | blank_issues_enabled: false 4 | -------------------------------------------------------------------------------- /test/test_llm.py: -------------------------------------------------------------------------------- 1 | from alphaagent.utils.llm_utils import LLMReferenceAgent 2 | 3 | llm_reference = LLMReferenceAgent() 4 | 5 | print( 6 | llm_reference.complete_message( 7 | system_prompt="You are a helpful assistant.", 8 | user_prompt="What is the capital of France?", 9 | ) 10 | ) 11 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | default_stages: [commit, push] 2 | 3 | repos: 4 | - repo: https://github.com/pre-commit/pre-commit-hooks 5 | rev: v2.5.0 6 | hooks: 7 | - id: check-yaml 8 | - id: end-of-file-fixer 9 | exclude: LICENCE 10 | 11 | - repo: local 12 | hooks: 13 | - id: ruff 14 | name: ruff 15 | entry: poetry run ruff check 16 | types: [python] 17 | language: system 18 | # UPDATEME with additional hooks 19 | -------------------------------------------------------------------------------- /.github/workflows/release-drafter.yml: -------------------------------------------------------------------------------- 1 | name: Release Drafter 2 | 3 | on: 4 | push: 5 | # branches to consider in the event; optional, defaults to all 6 | branches: 7 | - master 8 | 9 | jobs: 10 | update_release_draft: 11 | runs-on: ubuntu-latest 12 | steps: 13 | # Drafts your next Release notes as Pull Requests are merged into "master" 14 | - uses: release-drafter/release-drafter@v5.15.0 15 | env: 16 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 17 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Check http://editorconfig.org for more information 2 | # This is the main config file for this project: 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | end_of_line = lf 8 | insert_final_newline = true 9 | indent_style = space 10 | indent_size = 2 11 | trim_trailing_whitespace = true 12 | 13 | [*.{py, pyi}] 14 | indent_style = space 15 | indent_size = 4 16 | 17 | [Makefile] 18 | indent_style = tab 19 | 20 | [*.md] 21 | trim_trailing_whitespace = false 22 | 23 | [*.{diff,patch}] 24 | trim_trailing_whitespace = false 25 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" 2 | colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" 3 | commonmark==0.9.1 ; python_version >= "3.8" and python_version < "4.0" 4 | pygments==2.18.0 ; python_version >= "3.8" and python_version < "4.0" 5 | rich==12.6.0 ; python_version >= "3.8" and python_version < "4.0" 6 | shellingham==1.5.4 ; python_version >= "3.8" and python_version < "4.0" 7 | typer[all]==0.7.0 ; python_version >= "3.8" and python_version < "4.0" 8 | typing-extensions==4.12.2 ; python_version >= "3.8" and python_version < "3.9" 9 | -------------------------------------------------------------------------------- /.github/workflows/greetings.yml: -------------------------------------------------------------------------------- 1 | name: Greetings 2 | 3 | on: [pull_request, issues] 4 | 5 | jobs: 6 | greeting: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/first-interaction@v1 10 | with: 11 | repo-token: ${{ secrets.GITHUB_TOKEN }} 12 | pr-message: 'Hello @${{ github.actor }}, thank you for submitting a PR! We will respond as soon as possible.' 13 | issue-message: | 14 | Hello @${{ github.actor }}, thank you for your interest in our work! 15 | 16 | If this is a bug report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you. 17 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "red_question_mark Question" 3 | about: Ask a question about this project 🎓 4 | title: '' 5 | labels: question, needs-triage 6 | assignees: 7 | --- 8 | 9 | ## Checklist 10 | 11 | 12 | 13 | - [ ] I've searched the project's [`issues`][1], looking for the following terms: 14 | - [...] 15 | 16 | ## :question: Question 17 | 18 | 19 | 20 | How can I [...]? 21 | 22 | Is it possible to [...]? 23 | 24 | ## :paperclip: Additional context 25 | 26 | 27 | 28 | [1]: https://github.com/llmquant/alphaagent/issues 29 | -------------------------------------------------------------------------------- /cookiecutter-config-file.yml: -------------------------------------------------------------------------------- 1 | # This file contains values from Cookiecutter 2 | # Made with https://gitlab.com/manoelpqueiroz/galactipy 3 | 4 | default_context: 5 | project_name: "AlphaAgent" 6 | repo_name: "alphaagent" 7 | package_name: "alphaagent" 8 | project_description: "Awesome `alphaagent` is a Python cli/package created with https://gitlab.com/manoelpqueiroz/galactipy" 9 | version: "0.1.0" 10 | author: "LLMQuant" 11 | scm_platform: "GitHub" 12 | scm_username: "llmquant" 13 | email: "info@llmquant.com" 14 | licence: "MIT" 15 | minimal_python_version: 3.8 16 | use_ruff: True 17 | line_length: 88 18 | docstring_style: "numpy" 19 | create_cli: True 20 | create_docker: False 21 | create_docs: True 22 | -------------------------------------------------------------------------------- /.github/.stale.yml: -------------------------------------------------------------------------------- 1 | # Number of days of inactivity before an issue becomes stale 2 | daysUntilStale: 60 3 | # Number of days of inactivity before a stale issue is closed 4 | daysUntilClose: 7 5 | # Issues with these labels will never be considered stale 6 | exemptLabels: 7 | - pinned 8 | - security 9 | # Label to use when marking an issue as stale 10 | staleLabel: wontfix 11 | # Comment to post when marking an issue as stale. Set to `false` to disable 12 | markComment: > 13 | This issue has been automatically marked as stale because it has not had 14 | recent activity. It will be closed if no further activity occurs. Thank you 15 | for your contributions. 16 | # Comment to post when closing a stale issue. Set to `false` to disable 17 | closeComment: false 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: ":rocket: Feature request" 3 | about: Suggest an idea for this project 🏖 4 | title: '' 5 | labels: enhancement, needs-triage 6 | assignees: 7 | --- 8 | 9 | ## :rocket: Feature Request 10 | 11 | 12 | 13 | ## :sound: Motivation 14 | 15 | 16 | 17 | ## :satellite: Alternatives 18 | 19 | 20 | 21 | ## :paperclip: Additional context 22 | 23 | 24 | -------------------------------------------------------------------------------- /.github/release-drafter.yml: -------------------------------------------------------------------------------- 1 | # Release drafter configuration https://github.com/release-drafter/release-drafter#configuration 2 | # Emojis were chosen to match the https://gitmoji.dev/ 3 | 4 | name-template: "v$NEXT_PATCH_VERSION" 5 | tag-template: "v$NEXT_PATCH_VERSION" 6 | 7 | categories: 8 | - title: ":rocket: Features" 9 | labels: [enhancement, feature] 10 | - title: ":wrench: Fixes & Refactoring" 11 | labels: [bug, refactoring, bugfix, fix] 12 | - title: ":package: Build System & CI/CD" 13 | labels: [build, ci, testing] 14 | - title: ":boom: Breaking Changes" 15 | labels: [breaking] 16 | - title: ":memo: Documentation" 17 | labels: [documentation] 18 | - title: ":arrow_up: Dependencies updates" 19 | labels: [dependencies] 20 | 21 | template: | 22 | ## What's Changed 23 | 24 | $CHANGES 25 | 26 | ## :busts_in_silhouette: List of contributors 27 | 28 | $CONTRIBUTORS 29 | -------------------------------------------------------------------------------- /alphaagent/config/llm_config.py: -------------------------------------------------------------------------------- 1 | from dotenv import load_dotenv 2 | from pydantic_settings import BaseSettings 3 | 4 | # make sure that env variable is loaded while calling 5 | load_dotenv(verbose=True, override=True) 6 | 7 | 8 | class LLMConfig(BaseSettings): 9 | """LLM basic configuration.""" 10 | 11 | openai_api_key: str = "" 12 | chat_openai_api_key: str = "" 13 | chat_api_base: str = "" 14 | chat_api_version: str = "" 15 | chat_model: str = "" 16 | chat_max_tokens: int = 3000 17 | chat_temperature: float = 0.5 18 | chat_stream: bool = True 19 | chat_seed: int | None = None 20 | chat_frequency_penalty: float = 0.0 21 | chat_presence_penalty: float = 0.0 22 | chat_token_limit: int = 100000 # 100000 is the maximum limit of gpt4, which might increase in the future version of gpt 23 | default_system_prompt: str = "You are an Finace AI assistant who helps to answer user's questions in finance domain." 24 | max_past_message_include: int = 5 25 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: ":bug: Bug report" 3 | about: If something isn't working 🔧 4 | title: '' 5 | labels: bug, needs-triage 6 | assignees: 7 | --- 8 | 9 | ## :bug: Bug Report 10 | 11 | 12 | 13 | ## :microscope: How To Reproduce 14 | 15 | Steps to reproduce the behaviour: 16 | 17 | 1. ... 18 | 19 | ### Code sample 20 | 21 | 22 | 23 | ### Environment 24 | 25 | * OS: [e.g. Linux / Windows / macOS] 26 | * Python version, get it with: 27 | 28 | ```bash 29 | python --version 30 | ``` 31 | 32 | ### Screenshots 33 | 34 | 35 | 36 | ## :chart_with_upwards_trend: Expected behavior 37 | 38 | 39 | 40 | ## :paperclip: Additional context 41 | 42 | 43 | -------------------------------------------------------------------------------- /LICENCE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright (c) 2024 LLMQuant 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 19 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE 20 | OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | 2 | # UPDATEME to suit your project's workflow 3 | name: build 4 | 5 | on: [push, pull_request] 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | strategy: 11 | matrix: 12 | python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] 13 | 14 | steps: 15 | - uses: actions/checkout@v2 16 | - name: Set up Python ${{ matrix.python-version }} 17 | uses: actions/setup-python@v2.2.2 18 | with: 19 | python-version: ${{ matrix.python-version }} 20 | 21 | - name: Install poetry 22 | run: make poetry-download 23 | 24 | - name: Set up cache 25 | uses: actions/cache@v2.1.6 26 | with: 27 | path: .venv 28 | key: venv-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml') }}-${{ hashFiles('poetry.lock') }} 29 | - name: Install dependencies 30 | run: | 31 | poetry config virtualenvs.in-project true 32 | poetry install 33 | 34 | - name: Run style checks 35 | run: | 36 | make check-codestyle 37 | 38 | - name: Run tests 39 | run: | 40 | make test 41 | 42 | - name: Run safety checks 43 | run: | 44 | make check-safety 45 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security 2 | 3 | ## :closed_lock_with_key: Reporting Security Issues 4 | 5 | > Do not open issues that might have security implications! 6 | > It is critical that security related issues are reported privately so we have time to address them before they become public knowledge. 7 | 8 | Vulnerabilities can be reported by emailing core members: 9 | 10 | - LLMQuant <[info@llmquant.com][1]> 11 | 12 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: 13 | 14 | - Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) 15 | - Full paths of source file(s) related to the manifestation of the issue 16 | - The location of the affected source code (tag/branch/commit or direct URL) 17 | - Any special configuration required to reproduce the issue 18 | - Environment (e.g. Linux / Windows / macOS) 19 | - Step-by-step instructions to reproduce the issue 20 | - Proof-of-concept or exploit code (if possible) 21 | - Impact of the issue, including how an attacker might exploit the issue 22 | 23 | This information will help us triage your report more quickly. 24 | 25 | ## Preferred Languages 26 | 27 | We prefer all communications to be in English. 28 | 29 | [1]: mailto:info@llmquant.com 30 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Description 2 | 3 | 4 | 5 | ## Related Issue 6 | 7 | 8 | 9 | ## Type of Change 10 | 11 | 12 | 13 | - [ ] :books: Examples, docs, tutorials or dependencies update; 14 | - [ ] :wrench: Bug fix (non-breaking change which fixes an issue); 15 | - [ ] :clinking_glasses: Improvement (non-breaking change which improves an existing feature); 16 | - [ ] :rocket: New feature (non-breaking change which adds functionality); 17 | - [ ] :boom: Breaking change (fix or feature that would cause existing functionality to change); 18 | - [ ] :closed_lock_with_key: Security fix. 19 | 20 | ## Checklist 21 | 22 | 23 | 24 | - [ ] I've read the [`CODE_OF_CONDUCT.md`][1] document; 25 | - [ ] I've read the [`CONTRIBUTING.md`][2] guide; 26 | - [ ] I've updated the code style using `make codestyle`; 27 | - [ ] I've written tests for all new methods and classes that I created; 28 | - [ ] I've written the docstring in `Numpy` format for all the methods and classes that I used. 29 | 30 | [1]: https://github.com/llmquant/alphaagent/blob/master/CODE_OF_CONDUCT.md 31 | [2]: https://github.com/llmquant/alphaagent/blob/master/CONTRIBUTING.md 32 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to contribute 2 | 3 | ## Dependencies 4 | 5 | We use `poetry` to manage the [dependencies][1]. 6 | If you dont have `poetry`, you should install with `make poetry-download`. 7 | 8 | To install dependencies and prepare [`pre-commit`][2] hooks you would need to run `install` command: 9 | 10 | ```bash 11 | make install 12 | make pre-commit-install 13 | ``` 14 | 15 | To activate your `virtualenv` run `poetry shell`. 16 | 17 | ## Codestyle 18 | 19 | After installation you may execute code formatting. 20 | 21 | ```bash 22 | make codestyle 23 | ``` 24 | 25 | ### Checks 26 | 27 | Many checks are configured for this project. Command `make check-codestyle` will check pyupgrade, black and isort. 28 | The `make check-safety` command will look at the security of your code. 29 | 30 | Comand `make lint-all` applies all checks. 31 | 32 | ### Before submitting 33 | 34 | Before submitting your code please do the following steps: 35 | 36 | 1. Add any changes you want 37 | 1. Add tests for the new changes 38 | 1. Edit documentation if you have changed something significant 39 | 1. Run `make codestyle` to format your changes. 40 | 1. Run `make lint-all` to ensure that types, security and docstrings are okay. 41 | 42 | ## Other help 43 | 44 | You can contribute by spreading a word about this library. 45 | It would also be a huge contribution to write 46 | a short article on how you are using this project. 47 | You can also share your best practices with us. 48 | 49 | [1]: https://github.com/python-poetry/poetry 50 | [2]: https://pre-commit.com/ 51 | -------------------------------------------------------------------------------- /alphaagent/utils/llm_utils.py: -------------------------------------------------------------------------------- 1 | """All llm related utils classes which to call llm api.""" 2 | 3 | from openai import OpenAI 4 | 5 | from alphaagent.config.llm_config import LLMConfig 6 | 7 | 8 | class LLMReferenceAgent: 9 | def __init__(self): 10 | self.llm_config = LLMConfig() 11 | self.api_key = self.llm_config.openai_api_key 12 | self.chat_api_base = self.llm_config.chat_api_base 13 | self.model = self.llm_config.chat_model 14 | self.temperature = self.llm_config.chat_temperature 15 | self.former_messages = [] 16 | 17 | def build_messages( 18 | self, 19 | system_prompt: str | None = None, 20 | user_prompt: str | None = None, 21 | former_messages: list[dict] | None = None, 22 | ) -> list[dict[str, str]]: 23 | if former_messages is None: 24 | former_messages = [] 25 | system_prompt = ( 26 | self.llm_config.default_system_prompt 27 | if system_prompt is None 28 | else system_prompt 29 | ) 30 | messages = [{"role": "system", "content": system_prompt}] 31 | messages.extend( 32 | former_messages[-1 * self.llm_config.max_past_message_include :] 33 | ) 34 | messages.append({"role": "user", "content": user_prompt}) 35 | return messages 36 | 37 | def complete_message(self, *, system_prompt: str, user_prompt: str | None = None) -> (str | None): 38 | """Complete the message.""" 39 | messages = self.build_messages(system_prompt, user_prompt, self.former_messages) 40 | 41 | client = OpenAI(api_key=self.api_key, base_url=self.chat_api_base) 42 | chat_completion = client.chat.completions.create( 43 | messages=messages, model=self.model 44 | ) 45 | return chat_completion.choices[0].message.content 46 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | #* Variables 2 | SHELL := /usr/bin/env bash 3 | PYTHON := python 4 | PYTHONPATH := `pwd` 5 | 6 | 7 | #* Poetry 8 | .PHONY: poetry-download 9 | poetry-download: 10 | curl -sSL https://install.python-poetry.org | $(PYTHON) - 11 | 12 | .PHONY: poetry-remove 13 | poetry-remove: 14 | curl -sSL https://install.python-poetry.org | $(PYTHON) - --uninstall 15 | 16 | .PHONY: poetry-plugins 17 | poetry-plugins: 18 | poetry self add poetry-plugin-up 19 | 20 | .PHONY: update-dev-deps 21 | update-dev-deps: 22 | poetry up --only=dev-dependencies --latest 23 | 24 | 25 | #* Installation 26 | .PHONY: install 27 | install: 28 | poetry lock -n && poetry export --without-hashes > requirements.txt 29 | poetry install -n 30 | -poetry run mypy --install-types --non-interactive ./ 31 | 32 | .PHONY: pre-commit-install 33 | pre-commit-install: 34 | poetry run pre-commit install 35 | 36 | 37 | #* Formatters 38 | .PHONY: codestyle 39 | codestyle: 40 | poetry run ruff format 41 | 42 | .PHONE: formatting 43 | formatting: codestyle 44 | 45 | 46 | #* Linting 47 | .PHONY: test 48 | test: 49 | PYTHONPATH=$(PYTHONPATH) poetry run pytest -c pyproject.toml --cov-report=html --cov=alphaagent tests/ 50 | 51 | .PHONY: check-linter 52 | check-linter: 53 | poetry run ruff check 54 | 55 | .PHONY: check-formatting 56 | check-formatting: 57 | poetry run ruff format --check 58 | 59 | .PHONY: mypy 60 | mypy: 61 | poetry run mypy --config-file pyproject.toml ./ 62 | 63 | .PHONY: check-safety 64 | check-safety: 65 | poetry check 66 | poetry run safety check --full-report 67 | poetry run bandit -ll --recursive alphaagent tests 68 | 69 | .PHONY: lint-all 70 | lint: test check-linter check-formatting mypy check-safety 71 | 72 | 73 | #* Cleaning 74 | .PHONY: pycache-remove 75 | pycache-remove: 76 | find . | grep -E "(__pycache__|\.pyc|\.pyo$$)" | xargs rm -rf 77 | 78 | .PHONY: dsstore-remove 79 | dsstore-remove: 80 | find . | grep -E ".DS_Store" | xargs rm -rf 81 | 82 | .PHONY: mypycache-remove 83 | mypycache-remove: 84 | find . | grep -E ".mypy_cache" | xargs rm -rf 85 | 86 | .PHONY: ipynbcheckpoints-remove 87 | ipynbcheckpoints-remove: 88 | find . | grep -E ".ipynb_checkpoints" | xargs rm -rf 89 | 90 | .PHONY: pytestcache-remove 91 | pytestcache-remove: 92 | find . | grep -E ".pytest_cache" | xargs rm -rf 93 | 94 | .PHONY: build-remove 95 | build-remove: 96 | rm -rf build/ 97 | 98 | .PHONY: cleanup 99 | cleanup: pycache-remove dsstore-remove mypycache-remove ipynbcheckpoints-remove pytestcache-remove 100 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Alpha Agent: Industrial-Grade Multi-Agent Based Framework for Alpha Research in Quantitative Investment 2 | [![Python 3.8](https://img.shields.io/badge/python-3.8-blue.svg)](https://www.python.org/downloads/release/python-360/) 3 | [![PyPI](https://img.shields.io/pypi/v/alphaagent.svg)](https://pypi.org/project/alphaagent/) 4 | ![License](https://img.shields.io/github/license/LLMQuant/alphaagent.svg?color=brightgreen) 5 | ![](https://img.shields.io/github/issues-raw/LLMQuant/alphaagent?label=Issues) 6 | ![](https://img.shields.io/github/issues-closed-raw/LLMQuant/alphaagent?label=Closed+Issues) 7 | ![](https://img.shields.io/github/issues-pr-raw/LLMQuant/alphaagent?label=Open+PRs) 8 | ![](https://img.shields.io/github/issues-pr-closed-raw/LLMQuant/alphaagent?label=Closed+PRs) 9 | 10 |
11 | image 12 |
13 | 14 | **AlphaAgent** is a practical and adaptive multi-agent framework for real-world quantitative research and development. Built upon the principles of [RD-Agent(Q)](https://arxiv.org/abs/2505.15155), it emphasizes **production-grade alpha discovery**, **market-aware modeling**, and **automated deployment**, leveraging live data streams, evolving knowledge bases, and robust backtesting infrastructure. 15 | 16 | --- 17 | 18 | ## 🌐 Core Objectives 19 | 20 | AlphaAgent enables: 21 | - Continuous mining and curation of high-value factor/model ideas from domain knowledge sources 22 | - Dynamic retrieval of strategies that align with real-time market characteristics 23 | - Self-refinement of hypotheses using prior experiments and contextual relevance 24 | - Code generation, error correction, and backtest integration with minimal human intervention 25 | - Automatic research documentation and decision support outputs for industrial use 26 | 27 | ## 🔁 System Pipeline 28 | 29 | The full pipeline operates in a continuous feedback loop: 30 | 31 | 1. **Knowledge Base Construction** 32 | Extract alpha factor and model ideas from large-scale research reports and academic papers via [`LLMQuant/quant-wiki`](https://github.com/LLMQuant/quant-wiki). 33 | 34 | 2. **Market Feature Extraction** 35 | Continuously monitor financial news and macroeconomic updates via [`LLMQuant/MarketPulse`](https://github.com/LLMQuant/MarketPulse) to characterize market regimes (e.g., volatility, liquidity, sentiment, momentum). 36 | 37 | 3. **Contextual Retrieval & Hypothesis Generation** 38 | Match current market regimes with relevant strategies from the internal knowledge base. Use similarity scoring and prior backtest records to refine retrieved hypotheses or generate novel ones. 39 | 40 | 4. **Code Synthesis** 41 | Translate structured hypotheses into executable Python code using Co-STEER-style reasoning and knowledge transfer. Support chain-of-thought debugging and structured error recovery. 42 | 43 | 5. **Live Backtesting** 44 | Deploy generated strategies into a Qlib-based real-time backtest pipeline. Evaluate under transaction cost, slippage, sector neutrality, and dynamic rebalancing conditions. 45 | 46 | 6. **Research Report Generation** 47 | Summarize each experiment into human-readable research reports with metric tables, charts, diagnostics, and improvement suggestions. 48 | 49 | > 🚧 AlphaAgent is under construction — exciting features and demos are coming soon. Stay tuned! 50 | 51 | --- 52 | 53 |

From Knowledge to Alpha
Made with ❤️ by LLMQuant

-------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, caste, color, religion, or sexual 10 | identity and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the overall 26 | community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or advances of 31 | any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email address, 35 | without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | [info@llmquant.com][mail]. All complaints will be reviewed and 64 | investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series of 86 | actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or permanent 93 | ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within the 113 | community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.1, available at 119 | [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. 120 | 121 | Community Impact Guidelines were inspired by 122 | [Mozilla's code of conduct enforcement ladder][Mozilla CoC]. 123 | 124 | For answers to common questions about this code of conduct, see the FAQ at 125 | [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at 126 | [https://www.contributor-covenant.org/translations][translations]. 127 | 128 | [homepage]: https://www.contributor-covenant.org 129 | [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html 130 | [Mozilla CoC]: https://github.com/mozilla/diversity 131 | [FAQ]: https://www.contributor-covenant.org/faq 132 | [translations]: https://www.contributor-covenant.org/translations 133 | [mail]: mailto:info@llmquant.com 134 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | 2 | # Poetry pyproject.toml: https://python-poetry.org/docs/pyproject/ 3 | [build-system] 4 | requires = ["poetry_core>=1.0.0"] 5 | build-backend = "poetry.core.masonry.api" 6 | 7 | 8 | [tool.poetry] 9 | name = "AlphaAgent" 10 | version = "0.1.0" 11 | description = "Awesome `alphaagent` is a Python cli/package created with https://gitlab.com/manoelpqueiroz/galactipy" 12 | readme = "README.md" 13 | authors = ["LLMQuant "] 14 | license = "MIT" 15 | repository = "https://github.com/llmquant/alphaagent" 16 | homepage = "https://github.com/llmquant/alphaagent" 17 | packages = [ 18 | {include = "alphaagent"} 19 | ] 20 | 21 | 22 | # Keywords description https://python-poetry.org/docs/pyproject/#keywords 23 | keywords = [] # UPDATEME with relevant keywords 24 | 25 | 26 | # Pypi classifiers: https://pypi.org/classifiers/ 27 | classifiers = [ # UPDATEME with additional classifiers; remove last classifier to allow publishing on PyPI 28 | "Development Status :: 3 - Alpha", 29 | "Intended Audience :: Developers", 30 | "Operating System :: OS Independent", 31 | "Topic :: Software Development :: Libraries :: Python Modules", 32 | "License :: OSI Approved :: MIT License", 33 | "Programming Language :: Python :: 3", 34 | "Programming Language :: Python :: 3.8", 35 | "Programming Language :: Python :: 3.9", 36 | "Programming Language :: Python :: 3.10", 37 | "Programming Language :: Python :: 3.11", 38 | "Programming Language :: Python :: 3.12", 39 | "Private :: Do Not Upload" 40 | ] 41 | 42 | 43 | [tool.poetry.scripts] 44 | # Entry points for the package https://python-poetry.org/docs/pyproject/#scripts 45 | "alphaagent" = "alphaagent.__main__:app" 46 | 47 | 48 | [tool.poetry.dependencies] 49 | python = "^3.8" 50 | 51 | typer = {extras = ["all"], version = "^0.7.0"} 52 | rich = "^12.6.0" 53 | 54 | 55 | [tool.poetry.group.dev.dependencies] 56 | mypy = "^1.0.0" 57 | mypy-extensions = "^0.4.3" 58 | pre-commit = "^2.21.0" 59 | bandit = "^1.7.5" 60 | safety = "^2.3.4" 61 | 62 | ruff = "^0.4.3" 63 | 64 | pytest = "^7.2.1" 65 | pytest-html = "^3.2.0" 66 | pytest-cov = "^4.1.0" 67 | pytest-mock = "^3.10.0" 68 | pytest-timeout = "^2.2.0" 69 | pytest-benchmark = "^4.0.0" 70 | pytest-sugar = "^0.9.7" 71 | pytest-click = "^1.1.0" 72 | pytest-pikachu = "^1.0.0" 73 | coverage = "^7.3.0" 74 | ipykernel = "^6.29.5" 75 | 76 | 77 | [tool.ruff] 78 | # https://github.com/astral-sh/ruff 79 | # https://docs.astral.sh/ruff/settings 80 | output-format = "grouped" 81 | show-fixes = true 82 | target-version = "py38" 83 | 84 | [tool.ruff.format] 85 | docstring-code-format = true 86 | docstring-code-line-length = 79 87 | skip-magic-trailing-comma = true 88 | 89 | [tool.ruff.lint] 90 | select = [ # UPDATEME with additional rules from https://docs.astral.sh/ruff/rules/ 91 | "F", 92 | "E", 93 | "W", 94 | "I", 95 | "N", 96 | "D", 97 | "S", 98 | "B", 99 | "UP", 100 | "C90", 101 | "T20", 102 | "EM", 103 | "PL", 104 | "C4", 105 | "PT", 106 | "TD", 107 | "ANN", 108 | "ICN", 109 | "RET", 110 | "ISC", 111 | "RSE", 112 | "ARG", 113 | "FBT", 114 | "SIM", 115 | "TID", 116 | "PTH", 117 | "TCH", 118 | "FIX", 119 | "BLE", 120 | "ERA", 121 | "TRY", 122 | "FLY", 123 | "YTT", 124 | "CPY", 125 | "RUF" 126 | ] 127 | ignore = ["D200", "D104", "E501", "D101", "D100", "D102", "ANN101", "T201"] 128 | task-tags = ["TODO", "FIXME", "XXX", "UPDATEME"] # UPDATEME by modifying or removing this setting after addressing all UPDATEMEs 129 | 130 | [tool.ruff.lint.per-file-ignores] 131 | "tests/**.py" = ["D100", "D101", "D102", "D103", "D104", "S101"] 132 | "__main__.py" = ["D100", "D101"] 133 | 134 | [tool.ruff.lint.flake8-annotations] 135 | ignore-fully-untyped = true 136 | suppress-dummy-args = true 137 | 138 | [tool.ruff.lint.flake8-pytest-style] 139 | fixture-parentheses = false 140 | mark-parentheses = false 141 | 142 | [tool.ruff.lint.flake8-tidy-imports] 143 | ban-relative-imports = "all" 144 | 145 | [tool.ruff.lint.pycodestyle] 146 | max-line-length = 88 147 | max-doc-length = 79 148 | 149 | [tool.ruff.lint.pydocstyle] 150 | convention = "numpy" 151 | 152 | [tool.ruff.lint.flake8-copyright] 153 | author = "LLMQuant" 154 | 155 | [tool.ruff.lint.pylint] 156 | max-bool-expr = 3 157 | 158 | [tool.ruff.lint.isort] 159 | split-on-trailing-comma = false 160 | known-first-party = ["alphaagent"] 161 | sections.typing = ["typing", "types", "typing_extensions", "mypy", "mypy_extensions"] 162 | sections.testing = ["pytest", "tests"] 163 | section-order = [ 164 | "future", 165 | "typing", 166 | "standard-library", 167 | "third-party", 168 | "first-party", 169 | "local-folder", 170 | "testing" 171 | ] 172 | 173 | 174 | [tool.mypy] 175 | # https://github.com/python/mypy 176 | # https://mypy.readthedocs.io/en/latest/config_file.html#using-a-pyproject-toml-file 177 | python_version = 3.8 178 | pretty = true 179 | show_traceback = true 180 | color_output = true 181 | 182 | allow_redefinition = false 183 | check_untyped_defs = true 184 | disallow_any_generics = true 185 | disallow_incomplete_defs = true 186 | ignore_missing_imports = true 187 | implicit_reexport = false 188 | no_implicit_optional = true 189 | show_column_numbers = true 190 | show_error_codes = true 191 | show_error_context = true 192 | strict_equality = true 193 | strict_optional = true 194 | warn_no_return = true 195 | warn_redundant_casts = true 196 | warn_return_any = true 197 | warn_unreachable = true 198 | warn_unused_configs = true 199 | warn_unused_ignores = true 200 | 201 | 202 | [tool.pytest.ini_options] 203 | # https://github.com/pytest-dev/pytest 204 | # https://docs.pytest.org/en/6.2.x/customize.html#pyproject-toml 205 | # Directories that are not visited by pytest collector: 206 | norecursedirs =[ 207 | "hooks", 208 | "*.egg", 209 | ".eggs", 210 | "dist", 211 | "build", 212 | "docs", 213 | ".tox", 214 | ".git", 215 | "__pycache__" 216 | ] 217 | doctest_optionflags = ["NUMBER", "NORMALIZE_WHITESPACE", "IGNORE_EXCEPTION_DETAIL"] 218 | timeout = 10 219 | 220 | # Extra options: 221 | addopts = [ 222 | "--strict-markers", 223 | "--tb=short", 224 | "--doctest-modules", 225 | "--doctest-continue-on-failure", 226 | "--pikachu" 227 | ] 228 | 229 | 230 | [tool.coverage.run] 231 | source = ["tests"] 232 | branch = true 233 | 234 | 235 | [tool.coverage.report] 236 | exclude_also = [ 237 | "def main", 238 | "if __name__ == .__main__.:" 239 | ] 240 | fail_under = 50 241 | show_missing = true 242 | 243 | 244 | [tool.coverage.paths] 245 | source = ["alphaagent"] 246 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.toptal.com/developers/gitignore/api/linux,archlinuxpackages,osx,windows,python,c,django,database,pycharm,visualstudio,visualstudiocode,vim,zsh,git,diff,microsoftoffice,spreadsheet,ssh,certificates 2 | # Edit at https://www.toptal.com/developers/gitignore?templates=linux,archlinuxpackages,osx,windows,python,c,django,database,pycharm,visualstudio,visualstudiocode,vim,zsh,git,diff,microsoftoffice,spreadsheet,ssh,certificates 3 | 4 | ### ArchLinuxPackages ### 5 | *.tar 6 | *.tar.* 7 | *.jar 8 | *.exe 9 | *.msi 10 | *.zip 11 | *.tgz 12 | *.log 13 | *.log.* 14 | *.sig 15 | 16 | pkg/ 17 | src/ 18 | 19 | ### C ### 20 | # Prerequisites 21 | *.d 22 | 23 | # Object files 24 | *.o 25 | *.ko 26 | *.obj 27 | *.elf 28 | 29 | # Linker output 30 | *.ilk 31 | *.map 32 | *.exp 33 | 34 | # Precompiled Headers 35 | *.gch 36 | *.pch 37 | 38 | # Libraries 39 | *.lib 40 | *.a 41 | *.la 42 | *.lo 43 | 44 | # Shared objects (inc. Windows DLLs) 45 | *.dll 46 | *.so 47 | *.so.* 48 | *.dylib 49 | 50 | # Executables 51 | *.out 52 | *.app 53 | *.i*86 54 | *.x86_64 55 | *.hex 56 | 57 | # Debug files 58 | *.dSYM/ 59 | *.su 60 | *.idb 61 | *.pdb 62 | 63 | # Kernel Module Compile Results 64 | *.mod* 65 | *.cmd 66 | .tmp_versions/ 67 | modules.order 68 | Module.symvers 69 | Mkfile.old 70 | dkms.conf 71 | 72 | ### certificates ### 73 | *.pem 74 | *.key 75 | *.crt 76 | *.cer 77 | *.der 78 | *.priv 79 | 80 | ### Database ### 81 | *.accdb 82 | *.db 83 | *.dbf 84 | *.mdb 85 | *.sqlite3 86 | *.db-shm 87 | *.db-wal 88 | 89 | ### Diff ### 90 | *.patch 91 | *.diff 92 | 93 | ### Django ### 94 | *.pot 95 | *.pyc 96 | __pycache__/ 97 | local_settings.py 98 | db.sqlite3 99 | db.sqlite3-journal 100 | media 101 | 102 | # If your build process includes running collectstatic, then you probably don't need or want to include staticfiles/ 103 | # in your Git repository. Update and uncomment the following line accordingly. 104 | # /staticfiles/ 105 | 106 | ### Django.Python Stack ### 107 | # Byte-compiled / optimized / DLL files 108 | *.py[cod] 109 | *$py.class 110 | 111 | # C extensions 112 | 113 | # Distribution / packaging 114 | .Python 115 | build/ 116 | develop-eggs/ 117 | dist/ 118 | downloads/ 119 | eggs/ 120 | .eggs/ 121 | lib/ 122 | lib64/ 123 | parts/ 124 | sdist/ 125 | var/ 126 | wheels/ 127 | share/python-wheels/ 128 | *.egg-info/ 129 | .installed.cfg 130 | *.egg 131 | MANIFEST 132 | 133 | # PyInstaller 134 | # Usually these files are written by a python script from a template 135 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 136 | *.manifest 137 | *.spec 138 | 139 | # Installer logs 140 | pip-log.txt 141 | pip-delete-this-directory.txt 142 | 143 | # Unit test / coverage reports 144 | htmlcov/ 145 | .tox/ 146 | .nox/ 147 | .coverage 148 | .coverage.* 149 | .cache 150 | nosetests.xml 151 | coverage.xml 152 | *.cover 153 | *.py,cover 154 | .hypothesis/ 155 | .pytest_cache/ 156 | cover/ 157 | 158 | # Translations 159 | *.mo 160 | 161 | # Django stuff: 162 | 163 | # Flask stuff: 164 | instance/ 165 | .webassets-cache 166 | 167 | # Scrapy stuff: 168 | .scrapy 169 | 170 | # Sphinx documentation 171 | docs/_build/ 172 | 173 | # PyBuilder 174 | .pybuilder/ 175 | target/ 176 | 177 | # Jupyter Notebook 178 | .ipynb_checkpoints 179 | 180 | # IPython 181 | profile_default/ 182 | ipython_config.py 183 | 184 | # pyenv 185 | # For a library or package, you might want to ignore these files since the code is 186 | # intended to run in multiple environments; otherwise, check them in: 187 | # .python-version 188 | 189 | # pipenv 190 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 191 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 192 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 193 | # install all needed dependencies. 194 | #Pipfile.lock 195 | 196 | # poetry 197 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 198 | # This is especially recommended for binary packages to ensure reproducibility, and is more 199 | # commonly ignored for libraries. 200 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 201 | #poetry.lock 202 | 203 | # pdm 204 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 205 | #pdm.lock 206 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 207 | # in version control. 208 | # https://pdm.fming.dev/#use-with-ide 209 | .pdm.toml 210 | 211 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 212 | __pypackages__/ 213 | 214 | # Celery stuff 215 | celerybeat-schedule 216 | celerybeat.pid 217 | 218 | # SageMath parsed files 219 | *.sage.py 220 | 221 | # Environments 222 | .env 223 | .venv 224 | env/ 225 | venv/ 226 | ENV/ 227 | env.bak/ 228 | venv.bak/ 229 | 230 | # Spyder project settings 231 | .spyderproject 232 | .spyproject 233 | 234 | # Rope project settings 235 | .ropeproject 236 | 237 | # mkdocs documentation 238 | /site 239 | 240 | # mypy 241 | .mypy_cache/ 242 | .dmypy.json 243 | dmypy.json 244 | 245 | # Pyre type checker 246 | .pyre/ 247 | 248 | # pytype static type analyzer 249 | .pytype/ 250 | 251 | # Cython debug symbols 252 | cython_debug/ 253 | 254 | # PyCharm 255 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 256 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 257 | # and can be added to the global gitignore or merged into this file. For a more nuclear 258 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 259 | #.idea/ 260 | 261 | ### Git ### 262 | # Created by git for backups. To disable backups in Git: 263 | # $ git config --global mergetool.keepBackup false 264 | *.orig 265 | 266 | # Created by git when using merge tools for conflicts 267 | *.BACKUP.* 268 | *.BASE.* 269 | *.LOCAL.* 270 | *.REMOTE.* 271 | *_BACKUP_*.txt 272 | *_BASE_*.txt 273 | *_LOCAL_*.txt 274 | *_REMOTE_*.txt 275 | 276 | ### Linux ### 277 | *~ 278 | 279 | # temporary files which can be created if a process still has a handle open of a deleted file 280 | .fuse_hidden* 281 | 282 | # KDE directory preferences 283 | .directory 284 | 285 | # Linux trash folder which might appear on any partition or disk 286 | .Trash-* 287 | 288 | # .nfs files are created when an open file is removed but is still being accessed 289 | .nfs* 290 | 291 | ### MicrosoftOffice ### 292 | *.tmp 293 | 294 | # Word temporary 295 | ~$*.doc* 296 | 297 | # Word Auto Backup File 298 | Backup of *.doc* 299 | 300 | # Excel temporary 301 | ~$*.xls* 302 | 303 | # Excel Backup File 304 | *.xlk 305 | 306 | # PowerPoint temporary 307 | ~$*.ppt* 308 | 309 | # Visio autosave temporary files 310 | *.~vsd* 311 | 312 | ### OSX ### 313 | # General 314 | .DS_Store 315 | .AppleDouble 316 | .LSOverride 317 | 318 | # Icon must end with two \r 319 | Icon 320 | 321 | # Thumbnails 322 | ._* 323 | 324 | # Files that might appear in the root of a volume 325 | .DocumentRevisions-V100 326 | .fseventsd 327 | .Spotlight-V100 328 | .TemporaryItems 329 | .Trashes 330 | .VolumeIcon.icns 331 | .com.apple.timemachine.donotpresent 332 | 333 | # Directories potentially created on remote AFP share 334 | .AppleDB 335 | .AppleDesktop 336 | Network Trash Folder 337 | Temporary Items 338 | .apdisk 339 | 340 | ### PyCharm ### 341 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider 342 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 343 | 344 | # User-specific stuff 345 | .idea/**/workspace.xml 346 | .idea/**/tasks.xml 347 | .idea/**/usage.statistics.xml 348 | .idea/**/dictionaries 349 | .idea/**/shelf 350 | 351 | # AWS User-specific 352 | .idea/**/aws.xml 353 | 354 | # Generated files 355 | .idea/**/contentModel.xml 356 | 357 | # Sensitive or high-churn files 358 | .idea/**/dataSources/ 359 | .idea/**/dataSources.ids 360 | .idea/**/dataSources.local.xml 361 | .idea/**/sqlDataSources.xml 362 | .idea/**/dynamic.xml 363 | .idea/**/uiDesigner.xml 364 | .idea/**/dbnavigator.xml 365 | 366 | # Gradle 367 | .idea/**/gradle.xml 368 | .idea/**/libraries 369 | 370 | # Gradle and Maven with auto-import 371 | # When using Gradle or Maven with auto-import, you should exclude module files, 372 | # since they will be recreated, and may cause churn. Uncomment if using 373 | # auto-import. 374 | # .idea/artifacts 375 | # .idea/compiler.xml 376 | # .idea/jarRepositories.xml 377 | # .idea/modules.xml 378 | # .idea/*.iml 379 | # .idea/modules 380 | # *.iml 381 | # *.ipr 382 | 383 | # CMake 384 | cmake-build-*/ 385 | 386 | # Mongo Explorer plugin 387 | .idea/**/mongoSettings.xml 388 | 389 | # File-based project format 390 | *.iws 391 | 392 | # IntelliJ 393 | out/ 394 | 395 | # mpeltonen/sbt-idea plugin 396 | .idea_modules/ 397 | 398 | # JIRA plugin 399 | atlassian-ide-plugin.xml 400 | 401 | # Cursive Clojure plugin 402 | .idea/replstate.xml 403 | 404 | # SonarLint plugin 405 | .idea/sonarlint/ 406 | 407 | # Crashlytics plugin (for Android Studio and IntelliJ) 408 | com_crashlytics_export_strings.xml 409 | crashlytics.properties 410 | crashlytics-build.properties 411 | fabric.properties 412 | 413 | # Editor-based Rest Client 414 | .idea/httpRequests 415 | 416 | # Android studio 3.1+ serialized cache file 417 | .idea/caches/build_file_checksums.ser 418 | 419 | ### PyCharm Patch ### 420 | # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 421 | 422 | # *.iml 423 | # modules.xml 424 | # .idea/misc.xml 425 | # *.ipr 426 | 427 | # Sonarlint plugin 428 | # https://plugins.jetbrains.com/plugin/7973-sonarlint 429 | .idea/**/sonarlint/ 430 | 431 | # SonarQube Plugin 432 | # https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin 433 | .idea/**/sonarIssues.xml 434 | 435 | # Markdown Navigator plugin 436 | # https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced 437 | .idea/**/markdown-navigator.xml 438 | .idea/**/markdown-navigator-enh.xml 439 | .idea/**/markdown-navigator/ 440 | 441 | # Cache file creation bug 442 | # See https://youtrack.jetbrains.com/issue/JBR-2257 443 | .idea/$CACHE_FILE$ 444 | 445 | # CodeStream plugin 446 | # https://plugins.jetbrains.com/plugin/12206-codestream 447 | .idea/codestream.xml 448 | 449 | # Azure Toolkit for IntelliJ plugin 450 | # https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij 451 | .idea/**/azureSettings.xml 452 | 453 | ### Python ### 454 | # Byte-compiled / optimized / DLL files 455 | 456 | # C extensions 457 | 458 | # Distribution / packaging 459 | 460 | # PyInstaller 461 | # Usually these files are written by a python script from a template 462 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 463 | 464 | # Installer logs 465 | 466 | # Unit test / coverage reports 467 | 468 | # Translations 469 | 470 | # Django stuff: 471 | 472 | # Flask stuff: 473 | 474 | # Scrapy stuff: 475 | 476 | # Sphinx documentation 477 | 478 | # PyBuilder 479 | 480 | # Jupyter Notebook 481 | 482 | # IPython 483 | 484 | # pyenv 485 | # For a library or package, you might want to ignore these files since the code is 486 | # intended to run in multiple environments; otherwise, check them in: 487 | # .python-version 488 | 489 | # pipenv 490 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 491 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 492 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 493 | # install all needed dependencies. 494 | 495 | # poetry 496 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 497 | # This is especially recommended for binary packages to ensure reproducibility, and is more 498 | # commonly ignored for libraries. 499 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 500 | 501 | # pdm 502 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 503 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 504 | # in version control. 505 | # https://pdm.fming.dev/#use-with-ide 506 | 507 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 508 | 509 | # Celery stuff 510 | 511 | # SageMath parsed files 512 | 513 | # Environments 514 | 515 | # Spyder project settings 516 | 517 | # Rope project settings 518 | 519 | # mkdocs documentation 520 | 521 | # mypy 522 | 523 | # Pyre type checker 524 | 525 | # pytype static type analyzer 526 | 527 | # Cython debug symbols 528 | 529 | # PyCharm 530 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 531 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 532 | # and can be added to the global gitignore or merged into this file. For a more nuclear 533 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 534 | 535 | ### Python Patch ### 536 | # Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration 537 | poetry.toml 538 | 539 | # ruff 540 | .ruff_cache/ 541 | 542 | # LSP config files 543 | pyrightconfig.json 544 | 545 | ### Spreadsheet ### 546 | *.xlr 547 | *.xls 548 | *.xlsx 549 | 550 | ### SSH ### 551 | **/.ssh/id_* 552 | **/.ssh/*_id_* 553 | **/.ssh/known_hosts 554 | 555 | ### Vim ### 556 | # Swap 557 | [._]*.s[a-v][a-z] 558 | !*.svg # comment out if you don't need vector files 559 | [._]*.sw[a-p] 560 | [._]s[a-rt-v][a-z] 561 | [._]ss[a-gi-z] 562 | [._]sw[a-p] 563 | 564 | # Session 565 | Session.vim 566 | Sessionx.vim 567 | 568 | # Temporary 569 | .netrwhist 570 | # Auto-generated tag files 571 | tags 572 | # Persistent undo 573 | [._]*.un~ 574 | 575 | ### VisualStudioCode ### 576 | .vscode/* 577 | !.vscode/settings.json 578 | !.vscode/tasks.json 579 | !.vscode/launch.json 580 | !.vscode/extensions.json 581 | !.vscode/*.code-snippets 582 | 583 | # Local History for Visual Studio Code 584 | .history/ 585 | 586 | # Built Visual Studio Code Extensions 587 | *.vsix 588 | 589 | ### VisualStudioCode Patch ### 590 | # Ignore all local history of files 591 | .history 592 | .ionide 593 | 594 | ### Windows ### 595 | # Windows thumbnail cache files 596 | Thumbs.db 597 | Thumbs.db:encryptable 598 | ehthumbs.db 599 | ehthumbs_vista.db 600 | 601 | # Dump file 602 | *.stackdump 603 | 604 | # Folder config file 605 | [Dd]esktop.ini 606 | 607 | # Recycle Bin used on file shares 608 | $RECYCLE.BIN/ 609 | 610 | # Windows Installer files 611 | *.cab 612 | *.msix 613 | *.msm 614 | *.msp 615 | 616 | # Windows shortcuts 617 | *.lnk 618 | 619 | ### Zsh ### 620 | # Zsh compiled script + zrecompile backup 621 | *.zwc 622 | *.zwc.old 623 | 624 | # Zsh completion-optimization dumpfile 625 | *zcompdump* 626 | 627 | # Zsh history 628 | .zsh_history 629 | 630 | # Zsh sessions 631 | .zsh_sessions 632 | 633 | # Zsh zcalc history 634 | .zcalc_history 635 | 636 | # A popular plugin manager's files 637 | ._zinit 638 | .zinit_lstupd 639 | 640 | # zdharma/zshelldoc tool's files 641 | zsdoc/data 642 | 643 | # robbyrussell/oh-my-zsh/plugins/per-directory-history plugin's files 644 | # (when set-up to store the history in the local directory) 645 | .directory_history 646 | 647 | # MichaelAquilina/zsh-autoswitch-virtualenv plugin's files 648 | # (for Zsh plugins using Python) 649 | 650 | # Zunit tests' output 651 | /tests/_output/* 652 | !/tests/_output/.gitkeep 653 | 654 | ### VisualStudio ### 655 | ## Ignore Visual Studio temporary files, build results, and 656 | ## files generated by popular Visual Studio add-ons. 657 | ## 658 | ## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore 659 | 660 | # User-specific files 661 | *.rsuser 662 | *.suo 663 | *.user 664 | *.userosscache 665 | *.sln.docstates 666 | 667 | # User-specific files (MonoDevelop/Xamarin Studio) 668 | *.userprefs 669 | 670 | # Mono auto generated files 671 | mono_crash.* 672 | 673 | # Build results 674 | [Dd]ebug/ 675 | [Dd]ebugPublic/ 676 | [Rr]elease/ 677 | [Rr]eleases/ 678 | x64/ 679 | x86/ 680 | [Ww][Ii][Nn]32/ 681 | [Aa][Rr][Mm]/ 682 | [Aa][Rr][Mm]64/ 683 | bld/ 684 | [Bb]in/ 685 | [Oo]bj/ 686 | [Ll]og/ 687 | [Ll]ogs/ 688 | 689 | # Visual Studio 2015/2017 cache/options directory 690 | .vs/ 691 | # Uncomment if you have tasks that create the project's static files in wwwroot 692 | #wwwroot/ 693 | 694 | # Visual Studio 2017 auto generated files 695 | Generated\ Files/ 696 | 697 | # MSTest test Results 698 | [Tt]est[Rr]esult*/ 699 | [Bb]uild[Ll]og.* 700 | 701 | # NUnit 702 | *.VisualState.xml 703 | TestResult.xml 704 | nunit-*.xml 705 | 706 | # Build Results of an ATL Project 707 | [Dd]ebugPS/ 708 | [Rr]eleasePS/ 709 | dlldata.c 710 | 711 | # Benchmark Results 712 | BenchmarkDotNet.Artifacts/ 713 | 714 | # .NET Core 715 | project.lock.json 716 | project.fragment.lock.json 717 | artifacts/ 718 | 719 | # ASP.NET Scaffolding 720 | ScaffoldingReadMe.txt 721 | 722 | # StyleCop 723 | StyleCopReport.xml 724 | 725 | # Files built by Visual Studio 726 | *_i.c 727 | *_p.c 728 | *_h.h 729 | *.meta 730 | *.iobj 731 | *.ipdb 732 | *.pgc 733 | *.pgd 734 | *.rsp 735 | *.sbr 736 | *.tlb 737 | *.tli 738 | *.tlh 739 | *.tmp_proj 740 | *_wpftmp.csproj 741 | *.tlog 742 | *.vspscc 743 | *.vssscc 744 | .builds 745 | *.pidb 746 | *.svclog 747 | *.scc 748 | 749 | # Chutzpah Test files 750 | _Chutzpah* 751 | 752 | # Visual C++ cache files 753 | ipch/ 754 | *.aps 755 | *.ncb 756 | *.opendb 757 | *.opensdf 758 | *.sdf 759 | *.cachefile 760 | *.VC.db 761 | *.VC.VC.opendb 762 | 763 | # Visual Studio profiler 764 | *.psess 765 | *.vsp 766 | *.vspx 767 | *.sap 768 | 769 | # Visual Studio Trace Files 770 | *.e2e 771 | 772 | # TFS 2012 Local Workspace 773 | $tf/ 774 | 775 | # Guidance Automation Toolkit 776 | *.gpState 777 | 778 | # ReSharper is a .NET coding add-in 779 | _ReSharper*/ 780 | *.[Rr]e[Ss]harper 781 | *.DotSettings.user 782 | 783 | # TeamCity is a build add-in 784 | _TeamCity* 785 | 786 | # DotCover is a Code Coverage Tool 787 | *.dotCover 788 | 789 | # AxoCover is a Code Coverage Tool 790 | .axoCover/* 791 | !.axoCover/settings.json 792 | 793 | # Coverlet is a free, cross platform Code Coverage Tool 794 | coverage*.json 795 | coverage*.xml 796 | coverage*.info 797 | 798 | # Visual Studio code coverage results 799 | *.coverage 800 | *.coveragexml 801 | 802 | # NCrunch 803 | _NCrunch_* 804 | .*crunch*.local.xml 805 | nCrunchTemp_* 806 | 807 | # MightyMoose 808 | *.mm.* 809 | AutoTest.Net/ 810 | 811 | # Web workbench (sass) 812 | .sass-cache/ 813 | 814 | # Installshield output folder 815 | [Ee]xpress/ 816 | 817 | # DocProject is a documentation generator add-in 818 | DocProject/buildhelp/ 819 | DocProject/Help/*.HxT 820 | DocProject/Help/*.HxC 821 | DocProject/Help/*.hhc 822 | DocProject/Help/*.hhk 823 | DocProject/Help/*.hhp 824 | DocProject/Help/Html2 825 | DocProject/Help/html 826 | 827 | # Click-Once directory 828 | publish/ 829 | 830 | # Publish Web Output 831 | *.[Pp]ublish.xml 832 | *.azurePubxml 833 | # Note: Comment the next line if you want to checkin your web deploy settings, 834 | # but database connection strings (with potential passwords) will be unencrypted 835 | *.pubxml 836 | *.publishproj 837 | 838 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 839 | # checkin your Azure Web App publish settings, but sensitive information contained 840 | # in these scripts will be unencrypted 841 | PublishScripts/ 842 | 843 | # NuGet Packages 844 | *.nupkg 845 | # NuGet Symbol Packages 846 | *.snupkg 847 | # The packages folder can be ignored because of Package Restore 848 | **/[Pp]ackages/* 849 | # except build/, which is used as an MSBuild target. 850 | !**/[Pp]ackages/build/ 851 | # Uncomment if necessary however generally it will be regenerated when needed 852 | #!**/[Pp]ackages/repositories.config 853 | # NuGet v3's project.json files produces more ignorable files 854 | *.nuget.props 855 | *.nuget.targets 856 | 857 | # Microsoft Azure Build Output 858 | csx/ 859 | *.build.csdef 860 | 861 | # Microsoft Azure Emulator 862 | ecf/ 863 | rcf/ 864 | 865 | # Windows Store app package directories and files 866 | AppPackages/ 867 | BundleArtifacts/ 868 | Package.StoreAssociation.xml 869 | _pkginfo.txt 870 | *.appx 871 | *.appxbundle 872 | *.appxupload 873 | 874 | # Visual Studio cache files 875 | # files ending in .cache can be ignored 876 | *.[Cc]ache 877 | # but keep track of directories ending in .cache 878 | !?*.[Cc]ache/ 879 | 880 | # Others 881 | ClientBin/ 882 | ~$* 883 | *.dbmdl 884 | *.dbproj.schemaview 885 | *.jfm 886 | *.pfx 887 | *.publishsettings 888 | orleans.codegen.cs 889 | 890 | # Including strong name files can present a security risk 891 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 892 | #*.snk 893 | 894 | # Since there are multiple workflows, uncomment next line to ignore bower_components 895 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 896 | #bower_components/ 897 | 898 | # RIA/Silverlight projects 899 | Generated_Code/ 900 | 901 | # Backup & report files from converting an old project file 902 | # to a newer Visual Studio version. Backup files are not needed, 903 | # because we have git ;-) 904 | _UpgradeReport_Files/ 905 | Backup*/ 906 | UpgradeLog*.XML 907 | UpgradeLog*.htm 908 | ServiceFabricBackup/ 909 | *.rptproj.bak 910 | 911 | # SQL Server files 912 | *.mdf 913 | *.ldf 914 | *.ndf 915 | 916 | # Business Intelligence projects 917 | *.rdl.data 918 | *.bim.layout 919 | *.bim_*.settings 920 | *.rptproj.rsuser 921 | *- [Bb]ackup.rdl 922 | *- [Bb]ackup ([0-9]).rdl 923 | *- [Bb]ackup ([0-9][0-9]).rdl 924 | 925 | # Microsoft Fakes 926 | FakesAssemblies/ 927 | 928 | # GhostDoc plugin setting file 929 | *.GhostDoc.xml 930 | 931 | # Node.js Tools for Visual Studio 932 | .ntvs_analysis.dat 933 | node_modules/ 934 | 935 | # Visual Studio 6 build log 936 | *.plg 937 | 938 | # Visual Studio 6 workspace options file 939 | *.opt 940 | 941 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 942 | *.vbw 943 | 944 | # Visual Studio 6 auto-generated project file (contains which files were open etc.) 945 | *.vbp 946 | 947 | # Visual Studio 6 workspace and project file (working project files containing files to include in project) 948 | *.dsw 949 | *.dsp 950 | 951 | # Visual Studio 6 technical files 952 | 953 | # Visual Studio LightSwitch build output 954 | **/*.HTMLClient/GeneratedArtifacts 955 | **/*.DesktopClient/GeneratedArtifacts 956 | **/*.DesktopClient/ModelManifest.xml 957 | **/*.Server/GeneratedArtifacts 958 | **/*.Server/ModelManifest.xml 959 | _Pvt_Extensions 960 | 961 | # Paket dependency manager 962 | .paket/paket.exe 963 | paket-files/ 964 | 965 | # FAKE - F# Make 966 | .fake/ 967 | 968 | # CodeRush personal settings 969 | .cr/personal 970 | 971 | # Python Tools for Visual Studio (PTVS) 972 | 973 | # Cake - Uncomment if you are using it 974 | # tools/** 975 | # !tools/packages.config 976 | 977 | # Tabs Studio 978 | *.tss 979 | 980 | # Telerik's JustMock configuration file 981 | *.jmconfig 982 | 983 | # BizTalk build output 984 | *.btp.cs 985 | *.btm.cs 986 | *.odx.cs 987 | *.xsd.cs 988 | 989 | # OpenCover UI analysis results 990 | OpenCover/ 991 | 992 | # Azure Stream Analytics local run output 993 | ASALocalRun/ 994 | 995 | # MSBuild Binary and Structured Log 996 | *.binlog 997 | 998 | # NVidia Nsight GPU debugger configuration file 999 | *.nvuser 1000 | 1001 | # MFractors (Xamarin productivity tool) working folder 1002 | .mfractor/ 1003 | 1004 | # Local History for Visual Studio 1005 | .localhistory/ 1006 | 1007 | # Visual Studio History (VSHistory) files 1008 | .vshistory/ 1009 | 1010 | # BeatPulse healthcheck temp database 1011 | healthchecksdb 1012 | 1013 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 1014 | MigrationBackup/ 1015 | 1016 | # Ionide (cross platform F# VS Code tools) working folder 1017 | .ionide/ 1018 | 1019 | # Fody - auto-generated XML schema 1020 | FodyWeavers.xsd 1021 | 1022 | # VS Code files for those working on multiple tools 1023 | *.code-workspace 1024 | 1025 | # Local History for Visual Studio Code 1026 | 1027 | # Windows Installer files from build outputs 1028 | 1029 | # JetBrains Rider 1030 | *.sln.iml 1031 | 1032 | ### VisualStudio Patch ### 1033 | # Additional files built by Visual Studio 1034 | 1035 | # End of https://www.toptal.com/developers/gitignore/api/linux,archlinuxpackages,osx,windows,python,c,django,database,pycharm,visualstudio,visualstudiocode,vim,zsh,git,diff,microsoftoffice,spreadsheet,ssh,certificates 1036 | -------------------------------------------------------------------------------- /poetry.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. 2 | 3 | [[package]] 4 | name = "appnope" 5 | version = "0.1.4" 6 | description = "Disable App Nap on macOS >= 10.9" 7 | optional = false 8 | python-versions = ">=3.6" 9 | files = [ 10 | {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, 11 | {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, 12 | ] 13 | 14 | [[package]] 15 | name = "asttokens" 16 | version = "2.4.1" 17 | description = "Annotate AST trees with source code positions" 18 | optional = false 19 | python-versions = "*" 20 | files = [ 21 | {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, 22 | {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, 23 | ] 24 | 25 | [package.dependencies] 26 | six = ">=1.12.0" 27 | 28 | [package.extras] 29 | astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] 30 | test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] 31 | 32 | [[package]] 33 | name = "backcall" 34 | version = "0.2.0" 35 | description = "Specifications for callback functions passed in to an API" 36 | optional = false 37 | python-versions = "*" 38 | files = [ 39 | {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, 40 | {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, 41 | ] 42 | 43 | [[package]] 44 | name = "bandit" 45 | version = "1.7.9" 46 | description = "Security oriented static analyser for python code." 47 | optional = false 48 | python-versions = ">=3.8" 49 | files = [ 50 | {file = "bandit-1.7.9-py3-none-any.whl", hash = "sha256:52077cb339000f337fb25f7e045995c4ad01511e716e5daac37014b9752de8ec"}, 51 | {file = "bandit-1.7.9.tar.gz", hash = "sha256:7c395a436743018f7be0a4cbb0a4ea9b902b6d87264ddecf8cfdc73b4f78ff61"}, 52 | ] 53 | 54 | [package.dependencies] 55 | colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""} 56 | PyYAML = ">=5.3.1" 57 | rich = "*" 58 | stevedore = ">=1.20.0" 59 | 60 | [package.extras] 61 | baseline = ["GitPython (>=3.1.30)"] 62 | sarif = ["jschema-to-python (>=1.2.3)", "sarif-om (>=1.0.4)"] 63 | test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)"] 64 | toml = ["tomli (>=1.1.0)"] 65 | yaml = ["PyYAML"] 66 | 67 | [[package]] 68 | name = "certifi" 69 | version = "2024.7.4" 70 | description = "Python package for providing Mozilla's CA Bundle." 71 | optional = false 72 | python-versions = ">=3.6" 73 | files = [ 74 | {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, 75 | {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, 76 | ] 77 | 78 | [[package]] 79 | name = "cffi" 80 | version = "1.17.0" 81 | description = "Foreign Function Interface for Python calling C code." 82 | optional = false 83 | python-versions = ">=3.8" 84 | files = [ 85 | {file = "cffi-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f9338cc05451f1942d0d8203ec2c346c830f8e86469903d5126c1f0a13a2bcbb"}, 86 | {file = "cffi-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0ce71725cacc9ebf839630772b07eeec220cbb5f03be1399e0457a1464f8e1a"}, 87 | {file = "cffi-1.17.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c815270206f983309915a6844fe994b2fa47e5d05c4c4cef267c3b30e34dbe42"}, 88 | {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6bdcd415ba87846fd317bee0774e412e8792832e7805938987e4ede1d13046d"}, 89 | {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a98748ed1a1df4ee1d6f927e151ed6c1a09d5ec21684de879c7ea6aa96f58f2"}, 90 | {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a048d4f6630113e54bb4b77e315e1ba32a5a31512c31a273807d0027a7e69ab"}, 91 | {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24aa705a5f5bd3a8bcfa4d123f03413de5d86e497435693b638cbffb7d5d8a1b"}, 92 | {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:856bf0924d24e7f93b8aee12a3a1095c34085600aa805693fb7f5d1962393206"}, 93 | {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:4304d4416ff032ed50ad6bb87416d802e67139e31c0bde4628f36a47a3164bfa"}, 94 | {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:331ad15c39c9fe9186ceaf87203a9ecf5ae0ba2538c9e898e3a6967e8ad3db6f"}, 95 | {file = "cffi-1.17.0-cp310-cp310-win32.whl", hash = "sha256:669b29a9eca6146465cc574659058ed949748f0809a2582d1f1a324eb91054dc"}, 96 | {file = "cffi-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:48b389b1fd5144603d61d752afd7167dfd205973a43151ae5045b35793232aa2"}, 97 | {file = "cffi-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c5d97162c196ce54af6700949ddf9409e9833ef1003b4741c2b39ef46f1d9720"}, 98 | {file = "cffi-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ba5c243f4004c750836f81606a9fcb7841f8874ad8f3bf204ff5e56332b72b9"}, 99 | {file = "cffi-1.17.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bb9333f58fc3a2296fb1d54576138d4cf5d496a2cc118422bd77835e6ae0b9cb"}, 100 | {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:435a22d00ec7d7ea533db494da8581b05977f9c37338c80bc86314bec2619424"}, 101 | {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1df34588123fcc88c872f5acb6f74ae59e9d182a2707097f9e28275ec26a12d"}, 102 | {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df8bb0010fdd0a743b7542589223a2816bdde4d94bb5ad67884348fa2c1c67e8"}, 103 | {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8b5b9712783415695663bd463990e2f00c6750562e6ad1d28e072a611c5f2a6"}, 104 | {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ffef8fd58a36fb5f1196919638f73dd3ae0db1a878982b27a9a5a176ede4ba91"}, 105 | {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e67d26532bfd8b7f7c05d5a766d6f437b362c1bf203a3a5ce3593a645e870b8"}, 106 | {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45f7cd36186db767d803b1473b3c659d57a23b5fa491ad83c6d40f2af58e4dbb"}, 107 | {file = "cffi-1.17.0-cp311-cp311-win32.whl", hash = "sha256:a9015f5b8af1bb6837a3fcb0cdf3b874fe3385ff6274e8b7925d81ccaec3c5c9"}, 108 | {file = "cffi-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:b50aaac7d05c2c26dfd50c3321199f019ba76bb650e346a6ef3616306eed67b0"}, 109 | {file = "cffi-1.17.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aec510255ce690d240f7cb23d7114f6b351c733a74c279a84def763660a2c3bc"}, 110 | {file = "cffi-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2770bb0d5e3cc0e31e7318db06efcbcdb7b31bcb1a70086d3177692a02256f59"}, 111 | {file = "cffi-1.17.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db9a30ec064129d605d0f1aedc93e00894b9334ec74ba9c6bdd08147434b33eb"}, 112 | {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a47eef975d2b8b721775a0fa286f50eab535b9d56c70a6e62842134cf7841195"}, 113 | {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f3e0992f23bbb0be00a921eae5363329253c3b86287db27092461c887b791e5e"}, 114 | {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6107e445faf057c118d5050560695e46d272e5301feffda3c41849641222a828"}, 115 | {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb862356ee9391dc5a0b3cbc00f416b48c1b9a52d252d898e5b7696a5f9fe150"}, 116 | {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c1c13185b90bbd3f8b5963cd8ce7ad4ff441924c31e23c975cb150e27c2bf67a"}, 117 | {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17c6d6d3260c7f2d94f657e6872591fe8733872a86ed1345bda872cfc8c74885"}, 118 | {file = "cffi-1.17.0-cp312-cp312-win32.whl", hash = "sha256:c3b8bd3133cd50f6b637bb4322822c94c5ce4bf0d724ed5ae70afce62187c492"}, 119 | {file = "cffi-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:dca802c8db0720ce1c49cce1149ff7b06e91ba15fa84b1d59144fef1a1bc7ac2"}, 120 | {file = "cffi-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6ce01337d23884b21c03869d2f68c5523d43174d4fc405490eb0091057943118"}, 121 | {file = "cffi-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cab2eba3830bf4f6d91e2d6718e0e1c14a2f5ad1af68a89d24ace0c6b17cced7"}, 122 | {file = "cffi-1.17.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14b9cbc8f7ac98a739558eb86fabc283d4d564dafed50216e7f7ee62d0d25377"}, 123 | {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b00e7bcd71caa0282cbe3c90966f738e2db91e64092a877c3ff7f19a1628fdcb"}, 124 | {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41f4915e09218744d8bae14759f983e466ab69b178de38066f7579892ff2a555"}, 125 | {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4760a68cab57bfaa628938e9c2971137e05ce48e762a9cb53b76c9b569f1204"}, 126 | {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:011aff3524d578a9412c8b3cfaa50f2c0bd78e03eb7af7aa5e0df59b158efb2f"}, 127 | {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:a003ac9edc22d99ae1286b0875c460351f4e101f8c9d9d2576e78d7e048f64e0"}, 128 | {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ef9528915df81b8f4c7612b19b8628214c65c9b7f74db2e34a646a0a2a0da2d4"}, 129 | {file = "cffi-1.17.0-cp313-cp313-win32.whl", hash = "sha256:70d2aa9fb00cf52034feac4b913181a6e10356019b18ef89bc7c12a283bf5f5a"}, 130 | {file = "cffi-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:b7b6ea9e36d32582cda3465f54c4b454f62f23cb083ebc7a94e2ca6ef011c3a7"}, 131 | {file = "cffi-1.17.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:964823b2fc77b55355999ade496c54dde161c621cb1f6eac61dc30ed1b63cd4c"}, 132 | {file = "cffi-1.17.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:516a405f174fd3b88829eabfe4bb296ac602d6a0f68e0d64d5ac9456194a5b7e"}, 133 | {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dec6b307ce928e8e112a6bb9921a1cb00a0e14979bf28b98e084a4b8a742bd9b"}, 134 | {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4094c7b464cf0a858e75cd14b03509e84789abf7b79f8537e6a72152109c76e"}, 135 | {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2404f3de742f47cb62d023f0ba7c5a916c9c653d5b368cc966382ae4e57da401"}, 136 | {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aa9d43b02a0c681f0bfbc12d476d47b2b2b6a3f9287f11ee42989a268a1833c"}, 137 | {file = "cffi-1.17.0-cp38-cp38-win32.whl", hash = "sha256:0bb15e7acf8ab35ca8b24b90af52c8b391690ef5c4aec3d31f38f0d37d2cc499"}, 138 | {file = "cffi-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:93a7350f6706b31f457c1457d3a3259ff9071a66f312ae64dc024f049055f72c"}, 139 | {file = "cffi-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1a2ddbac59dc3716bc79f27906c010406155031a1c801410f1bafff17ea304d2"}, 140 | {file = "cffi-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6327b572f5770293fc062a7ec04160e89741e8552bf1c358d1a23eba68166759"}, 141 | {file = "cffi-1.17.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbc183e7bef690c9abe5ea67b7b60fdbca81aa8da43468287dae7b5c046107d4"}, 142 | {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bdc0f1f610d067c70aa3737ed06e2726fd9d6f7bfee4a351f4c40b6831f4e82"}, 143 | {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d872186c1617d143969defeadac5a904e6e374183e07977eedef9c07c8953bf"}, 144 | {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d46ee4764b88b91f16661a8befc6bfb24806d885e27436fdc292ed7e6f6d058"}, 145 | {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f76a90c345796c01d85e6332e81cab6d70de83b829cf1d9762d0a3da59c7932"}, 146 | {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e60821d312f99d3e1569202518dddf10ae547e799d75aef3bca3a2d9e8ee693"}, 147 | {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:eb09b82377233b902d4c3fbeeb7ad731cdab579c6c6fda1f763cd779139e47c3"}, 148 | {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:24658baf6224d8f280e827f0a50c46ad819ec8ba380a42448e24459daf809cf4"}, 149 | {file = "cffi-1.17.0-cp39-cp39-win32.whl", hash = "sha256:0fdacad9e0d9fc23e519efd5ea24a70348305e8d7d85ecbb1a5fa66dc834e7fb"}, 150 | {file = "cffi-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:7cbc78dc018596315d4e7841c8c3a7ae31cc4d638c9b627f87d52e8abaaf2d29"}, 151 | {file = "cffi-1.17.0.tar.gz", hash = "sha256:f3157624b7558b914cb039fd1af735e5e8049a87c817cc215109ad1c8779df76"}, 152 | ] 153 | 154 | [package.dependencies] 155 | pycparser = "*" 156 | 157 | [[package]] 158 | name = "cfgv" 159 | version = "3.4.0" 160 | description = "Validate configuration and produce human readable error messages." 161 | optional = false 162 | python-versions = ">=3.8" 163 | files = [ 164 | {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, 165 | {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, 166 | ] 167 | 168 | [[package]] 169 | name = "charset-normalizer" 170 | version = "3.3.2" 171 | description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." 172 | optional = false 173 | python-versions = ">=3.7.0" 174 | files = [ 175 | {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, 176 | {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, 177 | {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, 178 | {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, 179 | {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, 180 | {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, 181 | {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, 182 | {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, 183 | {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, 184 | {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, 185 | {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, 186 | {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, 187 | {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, 188 | {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, 189 | {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, 190 | {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, 191 | {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, 192 | {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, 193 | {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, 194 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, 195 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, 196 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, 197 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, 198 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, 199 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, 200 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, 201 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, 202 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, 203 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, 204 | {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, 205 | {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, 206 | {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, 207 | {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, 208 | {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, 209 | {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, 210 | {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, 211 | {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, 212 | {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, 213 | {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, 214 | {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, 215 | {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, 216 | {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, 217 | {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, 218 | {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, 219 | {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, 220 | {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, 221 | {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, 222 | {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, 223 | {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, 224 | {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, 225 | {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, 226 | {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, 227 | {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, 228 | {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, 229 | {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, 230 | {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, 231 | {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, 232 | {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, 233 | {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, 234 | {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, 235 | {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, 236 | {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, 237 | {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, 238 | {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, 239 | {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, 240 | {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, 241 | {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, 242 | {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, 243 | {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, 244 | {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, 245 | {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, 246 | {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, 247 | {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, 248 | {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, 249 | {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, 250 | {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, 251 | {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, 252 | {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, 253 | {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, 254 | {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, 255 | {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, 256 | {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, 257 | {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, 258 | {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, 259 | {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, 260 | {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, 261 | {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, 262 | {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, 263 | {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, 264 | {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, 265 | ] 266 | 267 | [[package]] 268 | name = "click" 269 | version = "8.1.7" 270 | description = "Composable command line interface toolkit" 271 | optional = false 272 | python-versions = ">=3.7" 273 | files = [ 274 | {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, 275 | {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, 276 | ] 277 | 278 | [package.dependencies] 279 | colorama = {version = "*", markers = "platform_system == \"Windows\""} 280 | 281 | [[package]] 282 | name = "colorama" 283 | version = "0.4.6" 284 | description = "Cross-platform colored terminal text." 285 | optional = false 286 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" 287 | files = [ 288 | {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, 289 | {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, 290 | ] 291 | 292 | [[package]] 293 | name = "comm" 294 | version = "0.2.2" 295 | description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." 296 | optional = false 297 | python-versions = ">=3.8" 298 | files = [ 299 | {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, 300 | {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, 301 | ] 302 | 303 | [package.dependencies] 304 | traitlets = ">=4" 305 | 306 | [package.extras] 307 | test = ["pytest"] 308 | 309 | [[package]] 310 | name = "commonmark" 311 | version = "0.9.1" 312 | description = "Python parser for the CommonMark Markdown spec" 313 | optional = false 314 | python-versions = "*" 315 | files = [ 316 | {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"}, 317 | {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"}, 318 | ] 319 | 320 | [package.extras] 321 | test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] 322 | 323 | [[package]] 324 | name = "coverage" 325 | version = "7.6.1" 326 | description = "Code coverage measurement for Python" 327 | optional = false 328 | python-versions = ">=3.8" 329 | files = [ 330 | {file = "coverage-7.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b06079abebbc0e89e6163b8e8f0e16270124c154dc6e4a47b413dd538859af16"}, 331 | {file = "coverage-7.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cf4b19715bccd7ee27b6b120e7e9dd56037b9c0681dcc1adc9ba9db3d417fa36"}, 332 | {file = "coverage-7.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61c0abb4c85b095a784ef23fdd4aede7a2628478e7baba7c5e3deba61070a02"}, 333 | {file = "coverage-7.6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd21f6ae3f08b41004dfb433fa895d858f3f5979e7762d052b12aef444e29afc"}, 334 | {file = "coverage-7.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f59d57baca39b32db42b83b2a7ba6f47ad9c394ec2076b084c3f029b7afca23"}, 335 | {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a1ac0ae2b8bd743b88ed0502544847c3053d7171a3cff9228af618a068ed9c34"}, 336 | {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e6a08c0be454c3b3beb105c0596ebdc2371fab6bb90c0c0297f4e58fd7e1012c"}, 337 | {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f5796e664fe802da4f57a168c85359a8fbf3eab5e55cd4e4569fbacecc903959"}, 338 | {file = "coverage-7.6.1-cp310-cp310-win32.whl", hash = "sha256:7bb65125fcbef8d989fa1dd0e8a060999497629ca5b0efbca209588a73356232"}, 339 | {file = "coverage-7.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:3115a95daa9bdba70aea750db7b96b37259a81a709223c8448fa97727d546fe0"}, 340 | {file = "coverage-7.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7dea0889685db8550f839fa202744652e87c60015029ce3f60e006f8c4462c93"}, 341 | {file = "coverage-7.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed37bd3c3b063412f7620464a9ac1314d33100329f39799255fb8d3027da50d3"}, 342 | {file = "coverage-7.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85f5e9a5f8b73e2350097c3756ef7e785f55bd71205defa0bfdaf96c31616ff"}, 343 | {file = "coverage-7.6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bc572be474cafb617672c43fe989d6e48d3c83af02ce8de73fff1c6bb3c198d"}, 344 | {file = "coverage-7.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0420b573964c760df9e9e86d1a9a622d0d27f417e1a949a8a66dd7bcee7bc6"}, 345 | {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1f4aa8219db826ce6be7099d559f8ec311549bfc4046f7f9fe9b5cea5c581c56"}, 346 | {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:fc5a77d0c516700ebad189b587de289a20a78324bc54baee03dd486f0855d234"}, 347 | {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b48f312cca9621272ae49008c7f613337c53fadca647d6384cc129d2996d1133"}, 348 | {file = "coverage-7.6.1-cp311-cp311-win32.whl", hash = "sha256:1125ca0e5fd475cbbba3bb67ae20bd2c23a98fac4e32412883f9bcbaa81c314c"}, 349 | {file = "coverage-7.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:8ae539519c4c040c5ffd0632784e21b2f03fc1340752af711f33e5be83a9d6c6"}, 350 | {file = "coverage-7.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:95cae0efeb032af8458fc27d191f85d1717b1d4e49f7cb226cf526ff28179778"}, 351 | {file = "coverage-7.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5621a9175cf9d0b0c84c2ef2b12e9f5f5071357c4d2ea6ca1cf01814f45d2391"}, 352 | {file = "coverage-7.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:260933720fdcd75340e7dbe9060655aff3af1f0c5d20f46b57f262ab6c86a5e8"}, 353 | {file = "coverage-7.6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07e2ca0ad381b91350c0ed49d52699b625aab2b44b65e1b4e02fa9df0e92ad2d"}, 354 | {file = "coverage-7.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c44fee9975f04b33331cb8eb272827111efc8930cfd582e0320613263ca849ca"}, 355 | {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:877abb17e6339d96bf08e7a622d05095e72b71f8afd8a9fefc82cf30ed944163"}, 356 | {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3e0cadcf6733c09154b461f1ca72d5416635e5e4ec4e536192180d34ec160f8a"}, 357 | {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c3c02d12f837d9683e5ab2f3d9844dc57655b92c74e286c262e0fc54213c216d"}, 358 | {file = "coverage-7.6.1-cp312-cp312-win32.whl", hash = "sha256:e05882b70b87a18d937ca6768ff33cc3f72847cbc4de4491c8e73880766718e5"}, 359 | {file = "coverage-7.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:b5d7b556859dd85f3a541db6a4e0167b86e7273e1cdc973e5b175166bb634fdb"}, 360 | {file = "coverage-7.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a4acd025ecc06185ba2b801f2de85546e0b8ac787cf9d3b06e7e2a69f925b106"}, 361 | {file = "coverage-7.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a6d3adcf24b624a7b778533480e32434a39ad8fa30c315208f6d3e5542aeb6e9"}, 362 | {file = "coverage-7.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0c212c49b6c10e6951362f7c6df3329f04c2b1c28499563d4035d964ab8e08c"}, 363 | {file = "coverage-7.6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e81d7a3e58882450ec4186ca59a3f20a5d4440f25b1cff6f0902ad890e6748a"}, 364 | {file = "coverage-7.6.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78b260de9790fd81e69401c2dc8b17da47c8038176a79092a89cb2b7d945d060"}, 365 | {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a78d169acd38300060b28d600344a803628c3fd585c912cacc9ea8790fe96862"}, 366 | {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2c09f4ce52cb99dd7505cd0fc8e0e37c77b87f46bc9c1eb03fe3bc9991085388"}, 367 | {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6878ef48d4227aace338d88c48738a4258213cd7b74fd9a3d4d7582bb1d8a155"}, 368 | {file = "coverage-7.6.1-cp313-cp313-win32.whl", hash = "sha256:44df346d5215a8c0e360307d46ffaabe0f5d3502c8a1cefd700b34baf31d411a"}, 369 | {file = "coverage-7.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:8284cf8c0dd272a247bc154eb6c95548722dce90d098c17a883ed36e67cdb129"}, 370 | {file = "coverage-7.6.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d3296782ca4eab572a1a4eca686d8bfb00226300dcefdf43faa25b5242ab8a3e"}, 371 | {file = "coverage-7.6.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:502753043567491d3ff6d08629270127e0c31d4184c4c8d98f92c26f65019962"}, 372 | {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a89ecca80709d4076b95f89f308544ec8f7b4727e8a547913a35f16717856cb"}, 373 | {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a318d68e92e80af8b00fa99609796fdbcdfef3629c77c6283566c6f02c6d6704"}, 374 | {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13b0a73a0896988f053e4fbb7de6d93388e6dd292b0d87ee51d106f2c11b465b"}, 375 | {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4421712dbfc5562150f7554f13dde997a2e932a6b5f352edcce948a815efee6f"}, 376 | {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:166811d20dfea725e2e4baa71fffd6c968a958577848d2131f39b60043400223"}, 377 | {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:225667980479a17db1048cb2bf8bfb39b8e5be8f164b8f6628b64f78a72cf9d3"}, 378 | {file = "coverage-7.6.1-cp313-cp313t-win32.whl", hash = "sha256:170d444ab405852903b7d04ea9ae9b98f98ab6d7e63e1115e82620807519797f"}, 379 | {file = "coverage-7.6.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b9f222de8cded79c49bf184bdbc06630d4c58eec9459b939b4a690c82ed05657"}, 380 | {file = "coverage-7.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6db04803b6c7291985a761004e9060b2bca08da6d04f26a7f2294b8623a0c1a0"}, 381 | {file = "coverage-7.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f1adfc8ac319e1a348af294106bc6a8458a0f1633cc62a1446aebc30c5fa186a"}, 382 | {file = "coverage-7.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a95324a9de9650a729239daea117df21f4b9868ce32e63f8b650ebe6cef5595b"}, 383 | {file = "coverage-7.6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b43c03669dc4618ec25270b06ecd3ee4fa94c7f9b3c14bae6571ca00ef98b0d3"}, 384 | {file = "coverage-7.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8929543a7192c13d177b770008bc4e8119f2e1f881d563fc6b6305d2d0ebe9de"}, 385 | {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:a09ece4a69cf399510c8ab25e0950d9cf2b42f7b3cb0374f95d2e2ff594478a6"}, 386 | {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9054a0754de38d9dbd01a46621636689124d666bad1936d76c0341f7d71bf569"}, 387 | {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0dbde0f4aa9a16fa4d754356a8f2e36296ff4d83994b2c9d8398aa32f222f989"}, 388 | {file = "coverage-7.6.1-cp38-cp38-win32.whl", hash = "sha256:da511e6ad4f7323ee5702e6633085fb76c2f893aaf8ce4c51a0ba4fc07580ea7"}, 389 | {file = "coverage-7.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:3f1156e3e8f2872197af3840d8ad307a9dd18e615dc64d9ee41696f287c57ad8"}, 390 | {file = "coverage-7.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abd5fd0db5f4dc9289408aaf34908072f805ff7792632250dcb36dc591d24255"}, 391 | {file = "coverage-7.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:547f45fa1a93154bd82050a7f3cddbc1a7a4dd2a9bf5cb7d06f4ae29fe94eaf8"}, 392 | {file = "coverage-7.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:645786266c8f18a931b65bfcefdbf6952dd0dea98feee39bd188607a9d307ed2"}, 393 | {file = "coverage-7.6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e0b2df163b8ed01d515807af24f63de04bebcecbd6c3bfeff88385789fdf75a"}, 394 | {file = "coverage-7.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:609b06f178fe8e9f89ef676532760ec0b4deea15e9969bf754b37f7c40326dbc"}, 395 | {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:702855feff378050ae4f741045e19a32d57d19f3e0676d589df0575008ea5004"}, 396 | {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2bdb062ea438f22d99cba0d7829c2ef0af1d768d1e4a4f528087224c90b132cb"}, 397 | {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9c56863d44bd1c4fe2abb8a4d6f5371d197f1ac0ebdee542f07f35895fc07f36"}, 398 | {file = "coverage-7.6.1-cp39-cp39-win32.whl", hash = "sha256:6e2cd258d7d927d09493c8df1ce9174ad01b381d4729a9d8d4e38670ca24774c"}, 399 | {file = "coverage-7.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:06a737c882bd26d0d6ee7269b20b12f14a8704807a01056c80bb881a4b2ce6ca"}, 400 | {file = "coverage-7.6.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:e9a6e0eb86070e8ccaedfbd9d38fec54864f3125ab95419970575b42af7541df"}, 401 | {file = "coverage-7.6.1.tar.gz", hash = "sha256:953510dfb7b12ab69d20135a0662397f077c59b1e6379a768e97c59d852ee51d"}, 402 | ] 403 | 404 | [package.dependencies] 405 | tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} 406 | 407 | [package.extras] 408 | toml = ["tomli"] 409 | 410 | [[package]] 411 | name = "debugpy" 412 | version = "1.8.5" 413 | description = "An implementation of the Debug Adapter Protocol for Python" 414 | optional = false 415 | python-versions = ">=3.8" 416 | files = [ 417 | {file = "debugpy-1.8.5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:7e4d594367d6407a120b76bdaa03886e9eb652c05ba7f87e37418426ad2079f7"}, 418 | {file = "debugpy-1.8.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4413b7a3ede757dc33a273a17d685ea2b0c09dbd312cc03f5534a0fd4d40750a"}, 419 | {file = "debugpy-1.8.5-cp310-cp310-win32.whl", hash = "sha256:dd3811bd63632bb25eda6bd73bea8e0521794cda02be41fa3160eb26fc29e7ed"}, 420 | {file = "debugpy-1.8.5-cp310-cp310-win_amd64.whl", hash = "sha256:b78c1250441ce893cb5035dd6f5fc12db968cc07f91cc06996b2087f7cefdd8e"}, 421 | {file = "debugpy-1.8.5-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:606bccba19f7188b6ea9579c8a4f5a5364ecd0bf5a0659c8a5d0e10dcee3032a"}, 422 | {file = "debugpy-1.8.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db9fb642938a7a609a6c865c32ecd0d795d56c1aaa7a7a5722d77855d5e77f2b"}, 423 | {file = "debugpy-1.8.5-cp311-cp311-win32.whl", hash = "sha256:4fbb3b39ae1aa3e5ad578f37a48a7a303dad9a3d018d369bc9ec629c1cfa7408"}, 424 | {file = "debugpy-1.8.5-cp311-cp311-win_amd64.whl", hash = "sha256:345d6a0206e81eb68b1493ce2fbffd57c3088e2ce4b46592077a943d2b968ca3"}, 425 | {file = "debugpy-1.8.5-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:5b5c770977c8ec6c40c60d6f58cacc7f7fe5a45960363d6974ddb9b62dbee156"}, 426 | {file = "debugpy-1.8.5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0a65b00b7cdd2ee0c2cf4c7335fef31e15f1b7056c7fdbce9e90193e1a8c8cb"}, 427 | {file = "debugpy-1.8.5-cp312-cp312-win32.whl", hash = "sha256:c9f7c15ea1da18d2fcc2709e9f3d6de98b69a5b0fff1807fb80bc55f906691f7"}, 428 | {file = "debugpy-1.8.5-cp312-cp312-win_amd64.whl", hash = "sha256:28ced650c974aaf179231668a293ecd5c63c0a671ae6d56b8795ecc5d2f48d3c"}, 429 | {file = "debugpy-1.8.5-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:3df6692351172a42af7558daa5019651f898fc67450bf091335aa8a18fbf6f3a"}, 430 | {file = "debugpy-1.8.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cd04a73eb2769eb0bfe43f5bfde1215c5923d6924b9b90f94d15f207a402226"}, 431 | {file = "debugpy-1.8.5-cp38-cp38-win32.whl", hash = "sha256:8f913ee8e9fcf9d38a751f56e6de12a297ae7832749d35de26d960f14280750a"}, 432 | {file = "debugpy-1.8.5-cp38-cp38-win_amd64.whl", hash = "sha256:a697beca97dad3780b89a7fb525d5e79f33821a8bc0c06faf1f1289e549743cf"}, 433 | {file = "debugpy-1.8.5-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:0a1029a2869d01cb777216af8c53cda0476875ef02a2b6ff8b2f2c9a4b04176c"}, 434 | {file = "debugpy-1.8.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84c276489e141ed0b93b0af648eef891546143d6a48f610945416453a8ad406"}, 435 | {file = "debugpy-1.8.5-cp39-cp39-win32.whl", hash = "sha256:ad84b7cde7fd96cf6eea34ff6c4a1b7887e0fe2ea46e099e53234856f9d99a34"}, 436 | {file = "debugpy-1.8.5-cp39-cp39-win_amd64.whl", hash = "sha256:7b0fe36ed9d26cb6836b0a51453653f8f2e347ba7348f2bbfe76bfeb670bfb1c"}, 437 | {file = "debugpy-1.8.5-py2.py3-none-any.whl", hash = "sha256:55919dce65b471eff25901acf82d328bbd5b833526b6c1364bd5133754777a44"}, 438 | {file = "debugpy-1.8.5.zip", hash = "sha256:b2112cfeb34b4507399d298fe7023a16656fc553ed5246536060ca7bd0e668d0"}, 439 | ] 440 | 441 | [[package]] 442 | name = "decorator" 443 | version = "5.1.1" 444 | description = "Decorators for Humans" 445 | optional = false 446 | python-versions = ">=3.5" 447 | files = [ 448 | {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, 449 | {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, 450 | ] 451 | 452 | [[package]] 453 | name = "distlib" 454 | version = "0.3.8" 455 | description = "Distribution utilities" 456 | optional = false 457 | python-versions = "*" 458 | files = [ 459 | {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"}, 460 | {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, 461 | ] 462 | 463 | [[package]] 464 | name = "dparse" 465 | version = "0.6.3" 466 | description = "A parser for Python dependency files" 467 | optional = false 468 | python-versions = ">=3.6" 469 | files = [ 470 | {file = "dparse-0.6.3-py3-none-any.whl", hash = "sha256:0d8fe18714056ca632d98b24fbfc4e9791d4e47065285ab486182288813a5318"}, 471 | {file = "dparse-0.6.3.tar.gz", hash = "sha256:27bb8b4bcaefec3997697ba3f6e06b2447200ba273c0b085c3d012a04571b528"}, 472 | ] 473 | 474 | [package.dependencies] 475 | packaging = "*" 476 | tomli = {version = "*", markers = "python_version < \"3.11\""} 477 | 478 | [package.extras] 479 | conda = ["pyyaml"] 480 | pipenv = ["pipenv (<=2022.12.19)"] 481 | 482 | [[package]] 483 | name = "exceptiongroup" 484 | version = "1.2.2" 485 | description = "Backport of PEP 654 (exception groups)" 486 | optional = false 487 | python-versions = ">=3.7" 488 | files = [ 489 | {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, 490 | {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, 491 | ] 492 | 493 | [package.extras] 494 | test = ["pytest (>=6)"] 495 | 496 | [[package]] 497 | name = "executing" 498 | version = "2.0.1" 499 | description = "Get the currently executing AST node of a frame, and other information" 500 | optional = false 501 | python-versions = ">=3.5" 502 | files = [ 503 | {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"}, 504 | {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"}, 505 | ] 506 | 507 | [package.extras] 508 | tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] 509 | 510 | [[package]] 511 | name = "filelock" 512 | version = "3.15.4" 513 | description = "A platform independent file lock." 514 | optional = false 515 | python-versions = ">=3.8" 516 | files = [ 517 | {file = "filelock-3.15.4-py3-none-any.whl", hash = "sha256:6ca1fffae96225dab4c6eaf1c4f4f28cd2568d3ec2a44e15a08520504de468e7"}, 518 | {file = "filelock-3.15.4.tar.gz", hash = "sha256:2207938cbc1844345cb01a5a95524dae30f0ce089eba5b00378295a17e3e90cb"}, 519 | ] 520 | 521 | [package.extras] 522 | docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] 523 | testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-asyncio (>=0.21)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)", "virtualenv (>=20.26.2)"] 524 | typing = ["typing-extensions (>=4.8)"] 525 | 526 | [[package]] 527 | name = "identify" 528 | version = "2.6.0" 529 | description = "File identification library for Python" 530 | optional = false 531 | python-versions = ">=3.8" 532 | files = [ 533 | {file = "identify-2.6.0-py2.py3-none-any.whl", hash = "sha256:e79ae4406387a9d300332b5fd366d8994f1525e8414984e1a59e058b2eda2dd0"}, 534 | {file = "identify-2.6.0.tar.gz", hash = "sha256:cb171c685bdc31bcc4c1734698736a7d5b6c8bf2e0c15117f4d469c8640ae5cf"}, 535 | ] 536 | 537 | [package.extras] 538 | license = ["ukkonen"] 539 | 540 | [[package]] 541 | name = "idna" 542 | version = "3.7" 543 | description = "Internationalized Domain Names in Applications (IDNA)" 544 | optional = false 545 | python-versions = ">=3.5" 546 | files = [ 547 | {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, 548 | {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, 549 | ] 550 | 551 | [[package]] 552 | name = "importlib-metadata" 553 | version = "8.4.0" 554 | description = "Read metadata from Python packages" 555 | optional = false 556 | python-versions = ">=3.8" 557 | files = [ 558 | {file = "importlib_metadata-8.4.0-py3-none-any.whl", hash = "sha256:66f342cc6ac9818fc6ff340576acd24d65ba0b3efabb2b4ac08b598965a4a2f1"}, 559 | {file = "importlib_metadata-8.4.0.tar.gz", hash = "sha256:9a547d3bc3608b025f93d403fdd1aae741c24fbb8314df4b155675742ce303c5"}, 560 | ] 561 | 562 | [package.dependencies] 563 | zipp = ">=0.5" 564 | 565 | [package.extras] 566 | doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] 567 | perf = ["ipython"] 568 | test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] 569 | 570 | [[package]] 571 | name = "iniconfig" 572 | version = "2.0.0" 573 | description = "brain-dead simple config-ini parsing" 574 | optional = false 575 | python-versions = ">=3.7" 576 | files = [ 577 | {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, 578 | {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, 579 | ] 580 | 581 | [[package]] 582 | name = "ipykernel" 583 | version = "6.29.5" 584 | description = "IPython Kernel for Jupyter" 585 | optional = false 586 | python-versions = ">=3.8" 587 | files = [ 588 | {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, 589 | {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, 590 | ] 591 | 592 | [package.dependencies] 593 | appnope = {version = "*", markers = "platform_system == \"Darwin\""} 594 | comm = ">=0.1.1" 595 | debugpy = ">=1.6.5" 596 | ipython = ">=7.23.1" 597 | jupyter-client = ">=6.1.12" 598 | jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" 599 | matplotlib-inline = ">=0.1" 600 | nest-asyncio = "*" 601 | packaging = "*" 602 | psutil = "*" 603 | pyzmq = ">=24" 604 | tornado = ">=6.1" 605 | traitlets = ">=5.4.0" 606 | 607 | [package.extras] 608 | cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] 609 | docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] 610 | pyqt5 = ["pyqt5"] 611 | pyside6 = ["pyside6"] 612 | test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] 613 | 614 | [[package]] 615 | name = "ipython" 616 | version = "8.12.3" 617 | description = "IPython: Productive Interactive Computing" 618 | optional = false 619 | python-versions = ">=3.8" 620 | files = [ 621 | {file = "ipython-8.12.3-py3-none-any.whl", hash = "sha256:b0340d46a933d27c657b211a329d0be23793c36595acf9e6ef4164bc01a1804c"}, 622 | {file = "ipython-8.12.3.tar.gz", hash = "sha256:3910c4b54543c2ad73d06579aa771041b7d5707b033bd488669b4cf544e3b363"}, 623 | ] 624 | 625 | [package.dependencies] 626 | appnope = {version = "*", markers = "sys_platform == \"darwin\""} 627 | backcall = "*" 628 | colorama = {version = "*", markers = "sys_platform == \"win32\""} 629 | decorator = "*" 630 | jedi = ">=0.16" 631 | matplotlib-inline = "*" 632 | pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} 633 | pickleshare = "*" 634 | prompt-toolkit = ">=3.0.30,<3.0.37 || >3.0.37,<3.1.0" 635 | pygments = ">=2.4.0" 636 | stack-data = "*" 637 | traitlets = ">=5" 638 | typing-extensions = {version = "*", markers = "python_version < \"3.10\""} 639 | 640 | [package.extras] 641 | all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] 642 | black = ["black"] 643 | doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] 644 | kernel = ["ipykernel"] 645 | nbconvert = ["nbconvert"] 646 | nbformat = ["nbformat"] 647 | notebook = ["ipywidgets", "notebook"] 648 | parallel = ["ipyparallel"] 649 | qtconsole = ["qtconsole"] 650 | test = ["pytest (<7.1)", "pytest-asyncio", "testpath"] 651 | test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"] 652 | 653 | [[package]] 654 | name = "jedi" 655 | version = "0.19.1" 656 | description = "An autocompletion tool for Python that can be used for text editors." 657 | optional = false 658 | python-versions = ">=3.6" 659 | files = [ 660 | {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, 661 | {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, 662 | ] 663 | 664 | [package.dependencies] 665 | parso = ">=0.8.3,<0.9.0" 666 | 667 | [package.extras] 668 | docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] 669 | qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] 670 | testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] 671 | 672 | [[package]] 673 | name = "jupyter-client" 674 | version = "8.6.2" 675 | description = "Jupyter protocol implementation and client libraries" 676 | optional = false 677 | python-versions = ">=3.8" 678 | files = [ 679 | {file = "jupyter_client-8.6.2-py3-none-any.whl", hash = "sha256:50cbc5c66fd1b8f65ecb66bc490ab73217993632809b6e505687de18e9dea39f"}, 680 | {file = "jupyter_client-8.6.2.tar.gz", hash = "sha256:2bda14d55ee5ba58552a8c53ae43d215ad9868853489213f37da060ced54d8df"}, 681 | ] 682 | 683 | [package.dependencies] 684 | importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} 685 | jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" 686 | python-dateutil = ">=2.8.2" 687 | pyzmq = ">=23.0" 688 | tornado = ">=6.2" 689 | traitlets = ">=5.3" 690 | 691 | [package.extras] 692 | docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] 693 | test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] 694 | 695 | [[package]] 696 | name = "jupyter-core" 697 | version = "5.7.2" 698 | description = "Jupyter core package. A base package on which Jupyter projects rely." 699 | optional = false 700 | python-versions = ">=3.8" 701 | files = [ 702 | {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, 703 | {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, 704 | ] 705 | 706 | [package.dependencies] 707 | platformdirs = ">=2.5" 708 | pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} 709 | traitlets = ">=5.3" 710 | 711 | [package.extras] 712 | docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] 713 | test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] 714 | 715 | [[package]] 716 | name = "matplotlib-inline" 717 | version = "0.1.7" 718 | description = "Inline Matplotlib backend for Jupyter" 719 | optional = false 720 | python-versions = ">=3.8" 721 | files = [ 722 | {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, 723 | {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, 724 | ] 725 | 726 | [package.dependencies] 727 | traitlets = "*" 728 | 729 | [[package]] 730 | name = "mypy" 731 | version = "1.0.1" 732 | description = "Optional static typing for Python" 733 | optional = false 734 | python-versions = ">=3.7" 735 | files = [ 736 | {file = "mypy-1.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:71a808334d3f41ef011faa5a5cd8153606df5fc0b56de5b2e89566c8093a0c9a"}, 737 | {file = "mypy-1.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:920169f0184215eef19294fa86ea49ffd4635dedfdea2b57e45cb4ee85d5ccaf"}, 738 | {file = "mypy-1.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27a0f74a298769d9fdc8498fcb4f2beb86f0564bcdb1a37b58cbbe78e55cf8c0"}, 739 | {file = "mypy-1.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:65b122a993d9c81ea0bfde7689b3365318a88bde952e4dfa1b3a8b4ac05d168b"}, 740 | {file = "mypy-1.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:5deb252fd42a77add936b463033a59b8e48eb2eaec2976d76b6878d031933fe4"}, 741 | {file = "mypy-1.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2013226d17f20468f34feddd6aae4635a55f79626549099354ce641bc7d40262"}, 742 | {file = "mypy-1.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:48525aec92b47baed9b3380371ab8ab6e63a5aab317347dfe9e55e02aaad22e8"}, 743 | {file = "mypy-1.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c96b8a0c019fe29040d520d9257d8c8f122a7343a8307bf8d6d4a43f5c5bfcc8"}, 744 | {file = "mypy-1.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:448de661536d270ce04f2d7dddaa49b2fdba6e3bd8a83212164d4174ff43aa65"}, 745 | {file = "mypy-1.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:d42a98e76070a365a1d1c220fcac8aa4ada12ae0db679cb4d910fabefc88b994"}, 746 | {file = "mypy-1.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e64f48c6176e243ad015e995de05af7f22bbe370dbb5b32bd6988438ec873919"}, 747 | {file = "mypy-1.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fdd63e4f50e3538617887e9aee91855368d9fc1dea30da743837b0df7373bc4"}, 748 | {file = "mypy-1.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:dbeb24514c4acbc78d205f85dd0e800f34062efcc1f4a4857c57e4b4b8712bff"}, 749 | {file = "mypy-1.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a2948c40a7dd46c1c33765718936669dc1f628f134013b02ff5ac6c7ef6942bf"}, 750 | {file = "mypy-1.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5bc8d6bd3b274dd3846597855d96d38d947aedba18776aa998a8d46fabdaed76"}, 751 | {file = "mypy-1.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:17455cda53eeee0a4adb6371a21dd3dbf465897de82843751cf822605d152c8c"}, 752 | {file = "mypy-1.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e831662208055b006eef68392a768ff83596035ffd6d846786578ba1714ba8f6"}, 753 | {file = "mypy-1.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e60d0b09f62ae97a94605c3f73fd952395286cf3e3b9e7b97f60b01ddfbbda88"}, 754 | {file = "mypy-1.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:0af4f0e20706aadf4e6f8f8dc5ab739089146b83fd53cb4a7e0e850ef3de0bb6"}, 755 | {file = "mypy-1.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:24189f23dc66f83b839bd1cce2dfc356020dfc9a8bae03978477b15be61b062e"}, 756 | {file = "mypy-1.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93a85495fb13dc484251b4c1fd7a5ac370cd0d812bbfc3b39c1bafefe95275d5"}, 757 | {file = "mypy-1.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f546ac34093c6ce33f6278f7c88f0f147a4849386d3bf3ae193702f4fe31407"}, 758 | {file = "mypy-1.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c6c2ccb7af7154673c591189c3687b013122c5a891bb5651eca3db8e6c6c55bd"}, 759 | {file = "mypy-1.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:15b5a824b58c7c822c51bc66308e759243c32631896743f030daf449fe3677f3"}, 760 | {file = "mypy-1.0.1-py3-none-any.whl", hash = "sha256:eda5c8b9949ed411ff752b9a01adda31afe7eae1e53e946dbdf9db23865e66c4"}, 761 | {file = "mypy-1.0.1.tar.gz", hash = "sha256:28cea5a6392bb43d266782983b5a4216c25544cd7d80be681a155ddcdafd152d"}, 762 | ] 763 | 764 | [package.dependencies] 765 | mypy-extensions = ">=0.4.3" 766 | tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} 767 | typing-extensions = ">=3.10" 768 | 769 | [package.extras] 770 | dmypy = ["psutil (>=4.0)"] 771 | install-types = ["pip"] 772 | python2 = ["typed-ast (>=1.4.0,<2)"] 773 | reports = ["lxml"] 774 | 775 | [[package]] 776 | name = "mypy-extensions" 777 | version = "0.4.4" 778 | description = "Experimental type system extensions for programs checked with the mypy typechecker." 779 | optional = false 780 | python-versions = ">=2.7" 781 | files = [ 782 | {file = "mypy_extensions-0.4.4.tar.gz", hash = "sha256:c8b707883a96efe9b4bb3aaf0dcc07e7e217d7d8368eec4db4049ee9e142f4fd"}, 783 | ] 784 | 785 | [[package]] 786 | name = "nest-asyncio" 787 | version = "1.6.0" 788 | description = "Patch asyncio to allow nested event loops" 789 | optional = false 790 | python-versions = ">=3.5" 791 | files = [ 792 | {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, 793 | {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, 794 | ] 795 | 796 | [[package]] 797 | name = "nodeenv" 798 | version = "1.9.1" 799 | description = "Node.js virtual environment builder" 800 | optional = false 801 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" 802 | files = [ 803 | {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, 804 | {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, 805 | ] 806 | 807 | [[package]] 808 | name = "packaging" 809 | version = "24.1" 810 | description = "Core utilities for Python packages" 811 | optional = false 812 | python-versions = ">=3.8" 813 | files = [ 814 | {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, 815 | {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, 816 | ] 817 | 818 | [[package]] 819 | name = "parso" 820 | version = "0.8.4" 821 | description = "A Python Parser" 822 | optional = false 823 | python-versions = ">=3.6" 824 | files = [ 825 | {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, 826 | {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, 827 | ] 828 | 829 | [package.extras] 830 | qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] 831 | testing = ["docopt", "pytest"] 832 | 833 | [[package]] 834 | name = "pbr" 835 | version = "6.0.0" 836 | description = "Python Build Reasonableness" 837 | optional = false 838 | python-versions = ">=2.6" 839 | files = [ 840 | {file = "pbr-6.0.0-py2.py3-none-any.whl", hash = "sha256:4a7317d5e3b17a3dccb6a8cfe67dab65b20551404c52c8ed41279fa4f0cb4cda"}, 841 | {file = "pbr-6.0.0.tar.gz", hash = "sha256:d1377122a5a00e2f940ee482999518efe16d745d423a670c27773dfbc3c9a7d9"}, 842 | ] 843 | 844 | [[package]] 845 | name = "pexpect" 846 | version = "4.9.0" 847 | description = "Pexpect allows easy control of interactive console applications." 848 | optional = false 849 | python-versions = "*" 850 | files = [ 851 | {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, 852 | {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, 853 | ] 854 | 855 | [package.dependencies] 856 | ptyprocess = ">=0.5" 857 | 858 | [[package]] 859 | name = "pickleshare" 860 | version = "0.7.5" 861 | description = "Tiny 'shelve'-like database with concurrency support" 862 | optional = false 863 | python-versions = "*" 864 | files = [ 865 | {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, 866 | {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, 867 | ] 868 | 869 | [[package]] 870 | name = "platformdirs" 871 | version = "4.2.2" 872 | description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." 873 | optional = false 874 | python-versions = ">=3.8" 875 | files = [ 876 | {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, 877 | {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, 878 | ] 879 | 880 | [package.extras] 881 | docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] 882 | test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] 883 | type = ["mypy (>=1.8)"] 884 | 885 | [[package]] 886 | name = "pluggy" 887 | version = "1.5.0" 888 | description = "plugin and hook calling mechanisms for python" 889 | optional = false 890 | python-versions = ">=3.8" 891 | files = [ 892 | {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, 893 | {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, 894 | ] 895 | 896 | [package.extras] 897 | dev = ["pre-commit", "tox"] 898 | testing = ["pytest", "pytest-benchmark"] 899 | 900 | [[package]] 901 | name = "pre-commit" 902 | version = "2.21.0" 903 | description = "A framework for managing and maintaining multi-language pre-commit hooks." 904 | optional = false 905 | python-versions = ">=3.7" 906 | files = [ 907 | {file = "pre_commit-2.21.0-py2.py3-none-any.whl", hash = "sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad"}, 908 | {file = "pre_commit-2.21.0.tar.gz", hash = "sha256:31ef31af7e474a8d8995027fefdfcf509b5c913ff31f2015b4ec4beb26a6f658"}, 909 | ] 910 | 911 | [package.dependencies] 912 | cfgv = ">=2.0.0" 913 | identify = ">=1.0.0" 914 | nodeenv = ">=0.11.1" 915 | pyyaml = ">=5.1" 916 | virtualenv = ">=20.10.0" 917 | 918 | [[package]] 919 | name = "prompt-toolkit" 920 | version = "3.0.47" 921 | description = "Library for building powerful interactive command lines in Python" 922 | optional = false 923 | python-versions = ">=3.7.0" 924 | files = [ 925 | {file = "prompt_toolkit-3.0.47-py3-none-any.whl", hash = "sha256:0d7bfa67001d5e39d02c224b663abc33687405033a8c422d0d675a5a13361d10"}, 926 | {file = "prompt_toolkit-3.0.47.tar.gz", hash = "sha256:1e1b29cb58080b1e69f207c893a1a7bf16d127a5c30c9d17a25a5d77792e5360"}, 927 | ] 928 | 929 | [package.dependencies] 930 | wcwidth = "*" 931 | 932 | [[package]] 933 | name = "psutil" 934 | version = "6.0.0" 935 | description = "Cross-platform lib for process and system monitoring in Python." 936 | optional = false 937 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" 938 | files = [ 939 | {file = "psutil-6.0.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a021da3e881cd935e64a3d0a20983bda0bb4cf80e4f74fa9bfcb1bc5785360c6"}, 940 | {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:1287c2b95f1c0a364d23bc6f2ea2365a8d4d9b726a3be7294296ff7ba97c17f0"}, 941 | {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:a9a3dbfb4de4f18174528d87cc352d1f788b7496991cca33c6996f40c9e3c92c"}, 942 | {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:6ec7588fb3ddaec7344a825afe298db83fe01bfaaab39155fa84cf1c0d6b13c3"}, 943 | {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:1e7c870afcb7d91fdea2b37c24aeb08f98b6d67257a5cb0a8bc3ac68d0f1a68c"}, 944 | {file = "psutil-6.0.0-cp27-none-win32.whl", hash = "sha256:02b69001f44cc73c1c5279d02b30a817e339ceb258ad75997325e0e6169d8b35"}, 945 | {file = "psutil-6.0.0-cp27-none-win_amd64.whl", hash = "sha256:21f1fb635deccd510f69f485b87433460a603919b45e2a324ad65b0cc74f8fb1"}, 946 | {file = "psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0"}, 947 | {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0"}, 948 | {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd"}, 949 | {file = "psutil-6.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e8d0054fc88153ca0544f5c4d554d42e33df2e009c4ff42284ac9ebdef4132"}, 950 | {file = "psutil-6.0.0-cp36-cp36m-win32.whl", hash = "sha256:fc8c9510cde0146432bbdb433322861ee8c3efbf8589865c8bf8d21cb30c4d14"}, 951 | {file = "psutil-6.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:34859b8d8f423b86e4385ff3665d3f4d94be3cdf48221fbe476e883514fdb71c"}, 952 | {file = "psutil-6.0.0-cp37-abi3-win32.whl", hash = "sha256:a495580d6bae27291324fe60cea0b5a7c23fa36a7cd35035a16d93bdcf076b9d"}, 953 | {file = "psutil-6.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:33ea5e1c975250a720b3a6609c490db40dae5d83a4eb315170c4fe0d8b1f34b3"}, 954 | {file = "psutil-6.0.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:ffe7fc9b6b36beadc8c322f84e1caff51e8703b88eee1da46d1e3a6ae11b4fd0"}, 955 | {file = "psutil-6.0.0.tar.gz", hash = "sha256:8faae4f310b6d969fa26ca0545338b21f73c6b15db7c4a8d934a5482faa818f2"}, 956 | ] 957 | 958 | [package.extras] 959 | test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] 960 | 961 | [[package]] 962 | name = "ptyprocess" 963 | version = "0.7.0" 964 | description = "Run a subprocess in a pseudo terminal" 965 | optional = false 966 | python-versions = "*" 967 | files = [ 968 | {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, 969 | {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, 970 | ] 971 | 972 | [[package]] 973 | name = "pure-eval" 974 | version = "0.2.3" 975 | description = "Safely evaluate AST nodes without side effects" 976 | optional = false 977 | python-versions = "*" 978 | files = [ 979 | {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, 980 | {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, 981 | ] 982 | 983 | [package.extras] 984 | tests = ["pytest"] 985 | 986 | [[package]] 987 | name = "py" 988 | version = "1.11.0" 989 | description = "library with cross-python path, ini-parsing, io, code, log facilities" 990 | optional = false 991 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 992 | files = [ 993 | {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, 994 | {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, 995 | ] 996 | 997 | [[package]] 998 | name = "py-cpuinfo" 999 | version = "9.0.0" 1000 | description = "Get CPU info with pure Python" 1001 | optional = false 1002 | python-versions = "*" 1003 | files = [ 1004 | {file = "py-cpuinfo-9.0.0.tar.gz", hash = "sha256:3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690"}, 1005 | {file = "py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5"}, 1006 | ] 1007 | 1008 | [[package]] 1009 | name = "pycparser" 1010 | version = "2.22" 1011 | description = "C parser in Python" 1012 | optional = false 1013 | python-versions = ">=3.8" 1014 | files = [ 1015 | {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, 1016 | {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, 1017 | ] 1018 | 1019 | [[package]] 1020 | name = "pygments" 1021 | version = "2.18.0" 1022 | description = "Pygments is a syntax highlighting package written in Python." 1023 | optional = false 1024 | python-versions = ">=3.8" 1025 | files = [ 1026 | {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, 1027 | {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, 1028 | ] 1029 | 1030 | [package.extras] 1031 | windows-terminal = ["colorama (>=0.4.6)"] 1032 | 1033 | [[package]] 1034 | name = "pytest" 1035 | version = "7.4.4" 1036 | description = "pytest: simple powerful testing with Python" 1037 | optional = false 1038 | python-versions = ">=3.7" 1039 | files = [ 1040 | {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, 1041 | {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, 1042 | ] 1043 | 1044 | [package.dependencies] 1045 | colorama = {version = "*", markers = "sys_platform == \"win32\""} 1046 | exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} 1047 | iniconfig = "*" 1048 | packaging = "*" 1049 | pluggy = ">=0.12,<2.0" 1050 | tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} 1051 | 1052 | [package.extras] 1053 | testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] 1054 | 1055 | [[package]] 1056 | name = "pytest-benchmark" 1057 | version = "4.0.0" 1058 | description = "A ``pytest`` fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer." 1059 | optional = false 1060 | python-versions = ">=3.7" 1061 | files = [ 1062 | {file = "pytest-benchmark-4.0.0.tar.gz", hash = "sha256:fb0785b83efe599a6a956361c0691ae1dbb5318018561af10f3e915caa0048d1"}, 1063 | {file = "pytest_benchmark-4.0.0-py3-none-any.whl", hash = "sha256:fdb7db64e31c8b277dff9850d2a2556d8b60bcb0ea6524e36e28ffd7c87f71d6"}, 1064 | ] 1065 | 1066 | [package.dependencies] 1067 | py-cpuinfo = "*" 1068 | pytest = ">=3.8" 1069 | 1070 | [package.extras] 1071 | aspect = ["aspectlib"] 1072 | elasticsearch = ["elasticsearch"] 1073 | histogram = ["pygal", "pygaljs"] 1074 | 1075 | [[package]] 1076 | name = "pytest-click" 1077 | version = "1.1.0" 1078 | description = "Pytest plugin for Click" 1079 | optional = false 1080 | python-versions = "*" 1081 | files = [ 1082 | {file = "pytest_click-1.1.0-py3-none-any.whl", hash = "sha256:eade4742c2f02c345e78a32534a43e8db04acf98d415090539dacc880b7cd0e9"}, 1083 | {file = "pytest_click-1.1.0.tar.gz", hash = "sha256:fdd9f6721f877dda021e7c5dc73e70aecd37e5ed23ec6820f8a7b3fd7b4f8d30"}, 1084 | ] 1085 | 1086 | [package.dependencies] 1087 | click = ">=6.0" 1088 | pytest = ">=5.0" 1089 | 1090 | [[package]] 1091 | name = "pytest-cov" 1092 | version = "4.1.0" 1093 | description = "Pytest plugin for measuring coverage." 1094 | optional = false 1095 | python-versions = ">=3.7" 1096 | files = [ 1097 | {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, 1098 | {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, 1099 | ] 1100 | 1101 | [package.dependencies] 1102 | coverage = {version = ">=5.2.1", extras = ["toml"]} 1103 | pytest = ">=4.6" 1104 | 1105 | [package.extras] 1106 | testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] 1107 | 1108 | [[package]] 1109 | name = "pytest-html" 1110 | version = "3.2.0" 1111 | description = "pytest plugin for generating HTML reports" 1112 | optional = false 1113 | python-versions = ">=3.6" 1114 | files = [ 1115 | {file = "pytest-html-3.2.0.tar.gz", hash = "sha256:c4e2f4bb0bffc437f51ad2174a8a3e71df81bbc2f6894604e604af18fbe687c3"}, 1116 | {file = "pytest_html-3.2.0-py3-none-any.whl", hash = "sha256:868c08564a68d8b2c26866f1e33178419bb35b1e127c33784a28622eb827f3f3"}, 1117 | ] 1118 | 1119 | [package.dependencies] 1120 | py = ">=1.8.2" 1121 | pytest = ">=5.0,<6.0.0 || >6.0.0" 1122 | pytest-metadata = "*" 1123 | 1124 | [[package]] 1125 | name = "pytest-metadata" 1126 | version = "3.1.1" 1127 | description = "pytest plugin for test session metadata" 1128 | optional = false 1129 | python-versions = ">=3.8" 1130 | files = [ 1131 | {file = "pytest_metadata-3.1.1-py3-none-any.whl", hash = "sha256:c8e0844db684ee1c798cfa38908d20d67d0463ecb6137c72e91f418558dd5f4b"}, 1132 | {file = "pytest_metadata-3.1.1.tar.gz", hash = "sha256:d2a29b0355fbc03f168aa96d41ff88b1a3b44a3b02acbe491801c98a048017c8"}, 1133 | ] 1134 | 1135 | [package.dependencies] 1136 | pytest = ">=7.0.0" 1137 | 1138 | [package.extras] 1139 | test = ["black (>=22.1.0)", "flake8 (>=4.0.1)", "pre-commit (>=2.17.0)", "tox (>=3.24.5)"] 1140 | 1141 | [[package]] 1142 | name = "pytest-mock" 1143 | version = "3.14.0" 1144 | description = "Thin-wrapper around the mock package for easier use with pytest" 1145 | optional = false 1146 | python-versions = ">=3.8" 1147 | files = [ 1148 | {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, 1149 | {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, 1150 | ] 1151 | 1152 | [package.dependencies] 1153 | pytest = ">=6.2.5" 1154 | 1155 | [package.extras] 1156 | dev = ["pre-commit", "pytest-asyncio", "tox"] 1157 | 1158 | [[package]] 1159 | name = "pytest-pikachu" 1160 | version = "1.0.0" 1161 | description = "Show surprise when tests are passing" 1162 | optional = false 1163 | python-versions = "*" 1164 | files = [ 1165 | {file = "pytest-pikachu-1.0.0.tar.gz", hash = "sha256:8acd13fdc51491e86aff5106cfaa31f80f4584ac41dcc3ae512d471c18333fd7"}, 1166 | {file = "pytest_pikachu-1.0.0-py3-none-any.whl", hash = "sha256:c20cfe20a84978e11e69af24f7a9d07beb90cbca805ae5011e2061c14a486eb6"}, 1167 | ] 1168 | 1169 | [package.dependencies] 1170 | pytest = "*" 1171 | 1172 | [[package]] 1173 | name = "pytest-sugar" 1174 | version = "0.9.7" 1175 | description = "pytest-sugar is a plugin for pytest that changes the default look and feel of pytest (e.g. progressbar, show tests that fail instantly)." 1176 | optional = false 1177 | python-versions = "*" 1178 | files = [ 1179 | {file = "pytest-sugar-0.9.7.tar.gz", hash = "sha256:f1e74c1abfa55f7241cf7088032b6e378566f16b938f3f08905e2cf4494edd46"}, 1180 | {file = "pytest_sugar-0.9.7-py2.py3-none-any.whl", hash = "sha256:8cb5a4e5f8bbcd834622b0235db9e50432f4cbd71fef55b467fe44e43701e062"}, 1181 | ] 1182 | 1183 | [package.dependencies] 1184 | packaging = ">=21.3" 1185 | pytest = ">=6.2.0" 1186 | termcolor = ">=2.1.0" 1187 | 1188 | [package.extras] 1189 | dev = ["black", "flake8", "pre-commit"] 1190 | 1191 | [[package]] 1192 | name = "pytest-timeout" 1193 | version = "2.3.1" 1194 | description = "pytest plugin to abort hanging tests" 1195 | optional = false 1196 | python-versions = ">=3.7" 1197 | files = [ 1198 | {file = "pytest-timeout-2.3.1.tar.gz", hash = "sha256:12397729125c6ecbdaca01035b9e5239d4db97352320af155b3f5de1ba5165d9"}, 1199 | {file = "pytest_timeout-2.3.1-py3-none-any.whl", hash = "sha256:68188cb703edfc6a18fad98dc25a3c61e9f24d644b0b70f33af545219fc7813e"}, 1200 | ] 1201 | 1202 | [package.dependencies] 1203 | pytest = ">=7.0.0" 1204 | 1205 | [[package]] 1206 | name = "python-dateutil" 1207 | version = "2.9.0.post0" 1208 | description = "Extensions to the standard Python datetime module" 1209 | optional = false 1210 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" 1211 | files = [ 1212 | {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, 1213 | {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, 1214 | ] 1215 | 1216 | [package.dependencies] 1217 | six = ">=1.5" 1218 | 1219 | [[package]] 1220 | name = "pywin32" 1221 | version = "306" 1222 | description = "Python for Window Extensions" 1223 | optional = false 1224 | python-versions = "*" 1225 | files = [ 1226 | {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, 1227 | {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, 1228 | {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, 1229 | {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, 1230 | {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, 1231 | {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"}, 1232 | {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"}, 1233 | {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"}, 1234 | {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"}, 1235 | {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"}, 1236 | {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"}, 1237 | {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"}, 1238 | {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, 1239 | {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, 1240 | ] 1241 | 1242 | [[package]] 1243 | name = "pyyaml" 1244 | version = "6.0.2" 1245 | description = "YAML parser and emitter for Python" 1246 | optional = false 1247 | python-versions = ">=3.8" 1248 | files = [ 1249 | {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, 1250 | {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, 1251 | {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, 1252 | {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, 1253 | {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, 1254 | {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, 1255 | {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, 1256 | {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, 1257 | {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, 1258 | {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, 1259 | {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, 1260 | {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, 1261 | {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, 1262 | {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, 1263 | {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, 1264 | {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, 1265 | {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, 1266 | {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, 1267 | {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, 1268 | {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, 1269 | {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, 1270 | {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, 1271 | {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, 1272 | {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, 1273 | {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, 1274 | {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, 1275 | {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, 1276 | {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, 1277 | {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, 1278 | {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, 1279 | {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, 1280 | {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, 1281 | {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, 1282 | {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, 1283 | {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, 1284 | {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, 1285 | {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, 1286 | {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, 1287 | {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, 1288 | {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, 1289 | {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, 1290 | {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, 1291 | {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, 1292 | {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, 1293 | {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, 1294 | {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, 1295 | {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, 1296 | {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, 1297 | {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, 1298 | {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, 1299 | {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, 1300 | {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, 1301 | {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, 1302 | ] 1303 | 1304 | [[package]] 1305 | name = "pyzmq" 1306 | version = "26.1.1" 1307 | description = "Python bindings for 0MQ" 1308 | optional = false 1309 | python-versions = ">=3.7" 1310 | files = [ 1311 | {file = "pyzmq-26.1.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:b1bb952d1e407463c9333ea7e0c0600001e54e08ce836d4f0aff1fb3f902cf63"}, 1312 | {file = "pyzmq-26.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:65e2a18e845c6ea7ab849c70db932eaeadee5edede9e379eb21c0a44cf523b2e"}, 1313 | {file = "pyzmq-26.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:def7ae3006924b8a0c146a89ab4008310913fa903beedb95e25dea749642528e"}, 1314 | {file = "pyzmq-26.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8234571df7816f99dde89c3403cb396d70c6554120b795853a8ea56fcc26cd3"}, 1315 | {file = "pyzmq-26.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18da8e84dbc30688fd2baefd41df7190607511f916be34f9a24b0e007551822e"}, 1316 | {file = "pyzmq-26.1.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:c70dab93d98b2bf3f0ac1265edbf6e7f83acbf71dabcc4611889bb0dea45bed7"}, 1317 | {file = "pyzmq-26.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:fcb90592c5d5c562e1b1a1ceccf6f00036d73c51db0271bf4d352b8d6b31d468"}, 1318 | {file = "pyzmq-26.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cf4be7460a0c1bc71e9b0e64ecdd75a86386ca6afaa36641686f5542d0314e9d"}, 1319 | {file = "pyzmq-26.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4cbecda4ddbfc1e309c3be04d333f9be3fc6178b8b6592b309676f929767a15"}, 1320 | {file = "pyzmq-26.1.1-cp310-cp310-win32.whl", hash = "sha256:583f73b113b8165713b6ce028d221402b1b69483055b5aa3f991937e34dd1ead"}, 1321 | {file = "pyzmq-26.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:5e6f39ecb8eb7bfcb976c49262e8cf83ff76e082b77ca23ba90c9b6691a345be"}, 1322 | {file = "pyzmq-26.1.1-cp310-cp310-win_arm64.whl", hash = "sha256:8d042d6446cab3a1388b38596f5acabb9926b0b95c3894c519356b577a549458"}, 1323 | {file = "pyzmq-26.1.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:362cac2423e36966d336d79d3ec3eafeabc153ee3e7a5cf580d7e74a34b3d912"}, 1324 | {file = "pyzmq-26.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0841633446cb1539a832a19bb24c03a20c00887d0cedd1d891b495b07e5c5cb5"}, 1325 | {file = "pyzmq-26.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e1fcdc333afbf9918d0a614a6e10858aede7da49a60f6705a77e343fe86a317"}, 1326 | {file = "pyzmq-26.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc8d655627d775475eafdcf0e49e74bcc1e5e90afd9ab813b4da98f092ed7b93"}, 1327 | {file = "pyzmq-26.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32de51744820857a6f7c3077e620ab3f607d0e4388dfead885d5124ab9bcdc5e"}, 1328 | {file = "pyzmq-26.1.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a880240597010914ffb1d6edd04d3deb7ce6a2abf79a0012751438d13630a671"}, 1329 | {file = "pyzmq-26.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:26131b1cec02f941ed2d2b4b8cc051662b1c248b044eff5069df1f500bbced56"}, 1330 | {file = "pyzmq-26.1.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ce05841322b58510607f9508a573138d995a46c7928887bc433de9cb760fd2ad"}, 1331 | {file = "pyzmq-26.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:32123ff0a6db521aadf2b95201e967a4e0d11fb89f73663a99d2f54881c07214"}, 1332 | {file = "pyzmq-26.1.1-cp311-cp311-win32.whl", hash = "sha256:e790602d7ea1d6c7d8713d571226d67de7ffe47b1e22ae2c043ebd537de1bccb"}, 1333 | {file = "pyzmq-26.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:717960855f2d6fdc2dba9df49dff31c414187bb11c76af36343a57d1f7083d9a"}, 1334 | {file = "pyzmq-26.1.1-cp311-cp311-win_arm64.whl", hash = "sha256:08956c26dbcd4fd8835cb777a16e21958ed2412317630e19f0018d49dbeeb470"}, 1335 | {file = "pyzmq-26.1.1-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:e80345900ae241c2c51bead7c9fa247bba6d4b2a83423e9791bae8b0a7f12c52"}, 1336 | {file = "pyzmq-26.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ec8fe214fcc45dfb0c32e4a7ad1db20244ba2d2fecbf0cbf9d5242d81ca0a375"}, 1337 | {file = "pyzmq-26.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf4e283f97688d993cb7a8acbc22889effbbb7cbaa19ee9709751f44be928f5d"}, 1338 | {file = "pyzmq-26.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2508bdc8ab246e5ed7c92023d4352aaad63020ca3b098a4e3f1822db202f703d"}, 1339 | {file = "pyzmq-26.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:741bdb4d96efe8192616abdc3671931d51a8bcd38c71da2d53fb3127149265d1"}, 1340 | {file = "pyzmq-26.1.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:76154943e4c4054b2591792eb3484ef1dd23d59805759f9cebd2f010aa30ee8c"}, 1341 | {file = "pyzmq-26.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9498ac427d20d0e0ef0e4bbd6200841e91640dfdf619f544ceec7f464cfb6070"}, 1342 | {file = "pyzmq-26.1.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6f34453ef3496ca3462f30435bf85f535f9550392987341f9ccc92c102825a79"}, 1343 | {file = "pyzmq-26.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:50f0669324e27cc2091ef6ab76ca7112f364b6249691790b4cffce31e73fda28"}, 1344 | {file = "pyzmq-26.1.1-cp312-cp312-win32.whl", hash = "sha256:3ee5cbf2625b94de21c68d0cefd35327c8dfdbd6a98fcc41682b4e8bb00d841f"}, 1345 | {file = "pyzmq-26.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:75bd448a28b1001b6928679015bc95dd5f172703ed30135bb9e34fc9cda0a3e7"}, 1346 | {file = "pyzmq-26.1.1-cp312-cp312-win_arm64.whl", hash = "sha256:4350233569b4bbef88595c5e77ee38995a6f1f1790fae148b578941bfffd1c24"}, 1347 | {file = "pyzmq-26.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c8087a3281c20b1d11042d372ed5a47734af05975d78e4d1d6e7bd1018535f3"}, 1348 | {file = "pyzmq-26.1.1-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:ebef7d3fe11fe4c688f08bc0211a976c3318c097057f258428200737b9fff4da"}, 1349 | {file = "pyzmq-26.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a5342110510045a47de1e87f5f1dcc1d9d90109522316dc9830cfc6157c800f"}, 1350 | {file = "pyzmq-26.1.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:af690ea4be6ca92a67c2b44a779a023bf0838e92d48497a2268175dc4a505691"}, 1351 | {file = "pyzmq-26.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc994e220c1403ae087d7f0fa45129d583e46668a019e389060da811a5a9320e"}, 1352 | {file = "pyzmq-26.1.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:b8e153f5dffb0310af71fc6fc9cd8174f4c8ea312c415adcb815d786fee78179"}, 1353 | {file = "pyzmq-26.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:0065026e624052a51033857e5cd45a94b52946b44533f965f0bdf182460e965d"}, 1354 | {file = "pyzmq-26.1.1-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:63351392f948b5d50b9f55161994bc4feedbfb3f3cfe393d2f503dea2c3ec445"}, 1355 | {file = "pyzmq-26.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ffecc43b3c18e36b62fcec995761829b6ac325d8dd74a4f2c5c1653afbb4495a"}, 1356 | {file = "pyzmq-26.1.1-cp313-cp313-win32.whl", hash = "sha256:6ff14c2fae6c0c2c1c02590c5c5d75aa1db35b859971b3ca2fcd28f983d9f2b6"}, 1357 | {file = "pyzmq-26.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:85f2d2ee5ea9a8f1de86a300e1062fbab044f45b5ce34d20580c0198a8196db0"}, 1358 | {file = "pyzmq-26.1.1-cp313-cp313-win_arm64.whl", hash = "sha256:cc09b1de8b985ca5a0ca343dd7fb007267c6b329347a74e200f4654268084239"}, 1359 | {file = "pyzmq-26.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:bc904e86de98f8fc5bd41597da5d61232d2d6d60c4397f26efffabb961b2b245"}, 1360 | {file = "pyzmq-26.1.1-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:00f39c367bbd6aa8e4bc36af6510561944c619b58eb36199fa334b594a18f615"}, 1361 | {file = "pyzmq-26.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de6f384864a959866b782e6a3896538d1424d183f2d3c7ef079f71dcecde7284"}, 1362 | {file = "pyzmq-26.1.1-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3abb15df0c763339edb27a644c19381b2425ddd1aea3dbd77c1601a3b31867b8"}, 1363 | {file = "pyzmq-26.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40908ec2dd3b29bbadc0916a0d3c87f8dbeebbd8fead8e618539f09e0506dec4"}, 1364 | {file = "pyzmq-26.1.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:c11a95d3f6fc7e714ccd1066f68f9c1abd764a8b3596158be92f46dd49f41e03"}, 1365 | {file = "pyzmq-26.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:4437af9fee7a58302dbd511cc49f0cc2b35c112a33a1111fb123cf0be45205ca"}, 1366 | {file = "pyzmq-26.1.1-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:76390d3d66406cb01b9681c382874400e9dfd77f30ecdea4bd1bf5226dd4aff0"}, 1367 | {file = "pyzmq-26.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:4d4c7fe5e50e269f9c63a260638488fec194a73993008618a59b54c47ef6ae72"}, 1368 | {file = "pyzmq-26.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:25d128524207f53f7aae7c5abdc2b63f8957a060b00521af5ffcd20986b5d8f4"}, 1369 | {file = "pyzmq-26.1.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d74b925d997e4f92b042bdd7085cd0a309ee0fd7cb4dc376059bbff6b32ff34f"}, 1370 | {file = "pyzmq-26.1.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:732f957441e5b1c65a7509395e6b6cafee9e12df9aa5f4bf92ed266fe0ba70ee"}, 1371 | {file = "pyzmq-26.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0a45102ad7ed9f9ddf2bd699cc5df37742cf7301111cba06001b927efecb120"}, 1372 | {file = "pyzmq-26.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9f380d5333fc7cd17423f486125dcc073918676e33db70a6a8172b19fc78d23d"}, 1373 | {file = "pyzmq-26.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:8eaffcd6bf6a9d00b66a2052a33fa7e6a6575427e9644395f13c3d070f2918dc"}, 1374 | {file = "pyzmq-26.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:f1483d4975ae1b387b39bb8e23d1ff32fe5621aa9e4ed3055d05e9c5613fea53"}, 1375 | {file = "pyzmq-26.1.1-cp37-cp37m-win32.whl", hash = "sha256:a83653c6bbe5887caea55e49fbd2909c14b73acf43bcc051eb60b2d514bbd46e"}, 1376 | {file = "pyzmq-26.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9763a8d3f5f74ef679989b373c37cc22e8d07e56d26439205cb83edb7722357f"}, 1377 | {file = "pyzmq-26.1.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2b045647caf620ce0ed6c8fd9fb6a73116f99aceed966b152a5ba1b416d25311"}, 1378 | {file = "pyzmq-26.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f66dcb6625c002f209cdc12cae1a1fec926493cd2262efe37dc6b25a30cea863"}, 1379 | {file = "pyzmq-26.1.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0cf1d980c969fb9e538f52abd2227f09e015096bc5c3ef7aa26e0d64051c1db8"}, 1380 | {file = "pyzmq-26.1.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:443ebf5e261a95ee9725693f2a5a71401f89b89df0e0ea58844b074067aac2f1"}, 1381 | {file = "pyzmq-26.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29de77ba1b1877fe7defc1b9140e65cbd35f72a63bc501e56c2eae55bde5fff4"}, 1382 | {file = "pyzmq-26.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f6071ec95af145d7b659dae6786871cd85f0acc599286b6f8ba0c74592d83dd"}, 1383 | {file = "pyzmq-26.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6f0512fc87629ad968889176bf2165d721cd817401a281504329e2a2ed0ca6a3"}, 1384 | {file = "pyzmq-26.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5ccfcf13e80719f6a2d9c0a021d9e47d4550907a29253554be2c09582f6d7963"}, 1385 | {file = "pyzmq-26.1.1-cp38-cp38-win32.whl", hash = "sha256:809673947e95752e407aaaaf03f205ee86ebfff9ca51db6d4003dfd87b8428d1"}, 1386 | {file = "pyzmq-26.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:62b5180e23e6f581600459cd983473cd723fdc64350f606d21407c99832aaf5f"}, 1387 | {file = "pyzmq-26.1.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:fe73d7c89d6f803bed122135ff5783364e8cdb479cf6fe2d764a44b6349e7e0f"}, 1388 | {file = "pyzmq-26.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db1b7e2b50ef21f398036786da4c153db63203a402396d9f21e08ea61f3f8dba"}, 1389 | {file = "pyzmq-26.1.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7c506a51cb01bb997a3f6440db0d121e5e7a32396e9948b1fdb6a7bfa67243f4"}, 1390 | {file = "pyzmq-26.1.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:92eca4f80e8a748d880e55d3cf57ef487692e439f12d5c5a2e1cce84aaa7f6cb"}, 1391 | {file = "pyzmq-26.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14bdbae02f72f4716b0ffe7500e9da303d719ddde1f3dcfb4c4f6cc1cf73bb02"}, 1392 | {file = "pyzmq-26.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e03be7ed17836c9434cce0668ac1e2cc9143d7169f90f46a0167f6155e176e32"}, 1393 | {file = "pyzmq-26.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc5df31e36e4fddd4c8b5c42daee8d54d7b529e898ac984be97bf5517de166a7"}, 1394 | {file = "pyzmq-26.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f218179c90a12d660906e04b25a340dd63e9743000ba16232ddaf46888f269da"}, 1395 | {file = "pyzmq-26.1.1-cp39-cp39-win32.whl", hash = "sha256:7dfabc180a4da422a4b349c63077347392463a75fa07aa3be96712ed6d42c547"}, 1396 | {file = "pyzmq-26.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:c5248e6e0fcbbbc912982e99cdd51c342601f495b0fa5bd667f3bdbdbf3e170f"}, 1397 | {file = "pyzmq-26.1.1-cp39-cp39-win_arm64.whl", hash = "sha256:2ae7aa1408778dc74582a1226052b930f9083b54b64d7e6ef6ec0466cfdcdec2"}, 1398 | {file = "pyzmq-26.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:be3fc2b11c0c384949cf1f01f9a48555039408b0f3e877863b1754225635953e"}, 1399 | {file = "pyzmq-26.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48dee75c2a9fa4f4a583d4028d564a0453447ee1277a29b07acc3743c092e259"}, 1400 | {file = "pyzmq-26.1.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23f2fe4fb567e8098ebaa7204819658195b10ddd86958a97a6058eed2901eed3"}, 1401 | {file = "pyzmq-26.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:472cacd16f627c06d3c8b2d374345ab74446bae913584a6245e2aa935336d929"}, 1402 | {file = "pyzmq-26.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8285b25aa20fcc46f1ca4afbc39fd3d5f2fe4c4bbf7f2c7f907a214e87a70024"}, 1403 | {file = "pyzmq-26.1.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2067e63fd9d5c13cfe12624dab0366053e523b37a7a01678ce4321f839398939"}, 1404 | {file = "pyzmq-26.1.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cc109be2ee3638035d276e18eaf66a1e1f44201c0c4bea4ee0c692766bbd3570"}, 1405 | {file = "pyzmq-26.1.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d0da97e65ee73261dba70469cc8f63d8da3a8a825337a2e3d246b9e95141cdd0"}, 1406 | {file = "pyzmq-26.1.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa79c528706561306938b275f89bb2c6985ce08469c27e5de05bc680df5e826f"}, 1407 | {file = "pyzmq-26.1.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:3ddbd851a3a2651fdc5065a2804d50cf2f4b13b1bcd66de8e9e855d0217d4fcd"}, 1408 | {file = "pyzmq-26.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d3df226ab7464684ae6706e20a5cbab717c3735a7e409b3fa598b754d49f1946"}, 1409 | {file = "pyzmq-26.1.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abad7b897e960d577eb4a0f3f789c1780bc3ffe2e7c27cf317e7c90ad26acf12"}, 1410 | {file = "pyzmq-26.1.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c513d829a548c2d5c88983167be2b3aa537f6d1191edcdc6fcd8999e18bdd994"}, 1411 | {file = "pyzmq-26.1.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70af4c9c991714ef1c65957605a8de42ef0d0620dd5f125953c8e682281bdb80"}, 1412 | {file = "pyzmq-26.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8d4234f335b0d0842f7d661d8cd50cbad0729be58f1c4deb85cd96b38fe95025"}, 1413 | {file = "pyzmq-26.1.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2c0fdb7b758e0e1605157e480b00b3a599073068a37091a1c75ec65bf7498645"}, 1414 | {file = "pyzmq-26.1.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc657577f057d60dd3642c9f95f28b432889b73143140061f7c1331d02f03df6"}, 1415 | {file = "pyzmq-26.1.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e3b66fe6131b4f33d239f7d4c3bfb2f8532d8644bae3b3da4f3987073edac55"}, 1416 | {file = "pyzmq-26.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59b57e912feef6951aec8bb03fe0faa5ad5f36962883c72a30a9c965e6d988fd"}, 1417 | {file = "pyzmq-26.1.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:146956aec7d947c5afc5e7da0841423d7a53f84fd160fff25e682361dcfb32cb"}, 1418 | {file = "pyzmq-26.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:9521b874fd489495865172f344e46e0159095d1f161858e3fc6e28e43ca15160"}, 1419 | {file = "pyzmq-26.1.1.tar.gz", hash = "sha256:a7db05d8b7cd1a8c6610e9e9aa55d525baae7a44a43e18bc3260eb3f92de96c6"}, 1420 | ] 1421 | 1422 | [package.dependencies] 1423 | cffi = {version = "*", markers = "implementation_name == \"pypy\""} 1424 | 1425 | [[package]] 1426 | name = "requests" 1427 | version = "2.32.3" 1428 | description = "Python HTTP for Humans." 1429 | optional = false 1430 | python-versions = ">=3.8" 1431 | files = [ 1432 | {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, 1433 | {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, 1434 | ] 1435 | 1436 | [package.dependencies] 1437 | certifi = ">=2017.4.17" 1438 | charset-normalizer = ">=2,<4" 1439 | idna = ">=2.5,<4" 1440 | urllib3 = ">=1.21.1,<3" 1441 | 1442 | [package.extras] 1443 | socks = ["PySocks (>=1.5.6,!=1.5.7)"] 1444 | use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] 1445 | 1446 | [[package]] 1447 | name = "rich" 1448 | version = "12.6.0" 1449 | description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" 1450 | optional = false 1451 | python-versions = ">=3.6.3,<4.0.0" 1452 | files = [ 1453 | {file = "rich-12.6.0-py3-none-any.whl", hash = "sha256:a4eb26484f2c82589bd9a17c73d32a010b1e29d89f1604cd9bf3a2097b81bb5e"}, 1454 | {file = "rich-12.6.0.tar.gz", hash = "sha256:ba3a3775974105c221d31141f2c116f4fd65c5ceb0698657a11e9f295ec93fd0"}, 1455 | ] 1456 | 1457 | [package.dependencies] 1458 | commonmark = ">=0.9.0,<0.10.0" 1459 | pygments = ">=2.6.0,<3.0.0" 1460 | typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""} 1461 | 1462 | [package.extras] 1463 | jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"] 1464 | 1465 | [[package]] 1466 | name = "ruamel-yaml" 1467 | version = "0.18.6" 1468 | description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" 1469 | optional = false 1470 | python-versions = ">=3.7" 1471 | files = [ 1472 | {file = "ruamel.yaml-0.18.6-py3-none-any.whl", hash = "sha256:57b53ba33def16c4f3d807c0ccbc00f8a6081827e81ba2491691b76882d0c636"}, 1473 | {file = "ruamel.yaml-0.18.6.tar.gz", hash = "sha256:8b27e6a217e786c6fbe5634d8f3f11bc63e0f80f6a5890f28863d9c45aac311b"}, 1474 | ] 1475 | 1476 | [package.dependencies] 1477 | "ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.13\""} 1478 | 1479 | [package.extras] 1480 | docs = ["mercurial (>5.7)", "ryd"] 1481 | jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] 1482 | 1483 | [[package]] 1484 | name = "ruamel-yaml-clib" 1485 | version = "0.2.8" 1486 | description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" 1487 | optional = false 1488 | python-versions = ">=3.6" 1489 | files = [ 1490 | {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, 1491 | {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, 1492 | {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412"}, 1493 | {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:aa2267c6a303eb483de8d02db2871afb5c5fc15618d894300b88958f729ad74f"}, 1494 | {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334"}, 1495 | {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d"}, 1496 | {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win32.whl", hash = "sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d"}, 1497 | {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31"}, 1498 | {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069"}, 1499 | {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248"}, 1500 | {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b"}, 1501 | {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:1707814f0d9791df063f8c19bb51b0d1278b8e9a2353abbb676c2f685dee6afe"}, 1502 | {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899"}, 1503 | {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9"}, 1504 | {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win32.whl", hash = "sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7"}, 1505 | {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb"}, 1506 | {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1"}, 1507 | {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2"}, 1508 | {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"}, 1509 | {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:1dc67314e7e1086c9fdf2680b7b6c2be1c0d8e3a8279f2e993ca2a7545fecf62"}, 1510 | {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9"}, 1511 | {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d"}, 1512 | {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win32.whl", hash = "sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa"}, 1513 | {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win_amd64.whl", hash = "sha256:1758ce7d8e1a29d23de54a16ae867abd370f01b5a69e1a3ba75223eaa3ca1a1b"}, 1514 | {file = "ruamel.yaml.clib-0.2.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed"}, 1515 | {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942"}, 1516 | {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875"}, 1517 | {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:77159f5d5b5c14f7c34073862a6b7d34944075d9f93e681638f6d753606c6ce6"}, 1518 | {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"}, 1519 | {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7"}, 1520 | {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3"}, 1521 | {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win32.whl", hash = "sha256:75e1ed13e1f9de23c5607fe6bd1aeaae21e523b32d83bb33918245361e9cc51b"}, 1522 | {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675"}, 1523 | {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615"}, 1524 | {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337"}, 1525 | {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:305889baa4043a09e5b76f8e2a51d4ffba44259f6b4c72dec8ca56207d9c6fe1"}, 1526 | {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"}, 1527 | {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28"}, 1528 | {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d"}, 1529 | {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win32.whl", hash = "sha256:955eae71ac26c1ab35924203fda6220f84dce57d6d7884f189743e2abe3a9fbe"}, 1530 | {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312"}, 1531 | {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001"}, 1532 | {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf"}, 1533 | {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:a1a45e0bb052edf6a1d3a93baef85319733a888363938e1fc9924cb00c8df24c"}, 1534 | {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"}, 1535 | {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b"}, 1536 | {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880"}, 1537 | {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win32.whl", hash = "sha256:84b554931e932c46f94ab306913ad7e11bba988104c5cff26d90d03f68258cd5"}, 1538 | {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win_amd64.whl", hash = "sha256:25ac8c08322002b06fa1d49d1646181f0b2c72f5cbc15a85e80b4c30a544bb15"}, 1539 | {file = "ruamel.yaml.clib-0.2.8.tar.gz", hash = "sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512"}, 1540 | ] 1541 | 1542 | [[package]] 1543 | name = "ruff" 1544 | version = "0.4.10" 1545 | description = "An extremely fast Python linter and code formatter, written in Rust." 1546 | optional = false 1547 | python-versions = ">=3.7" 1548 | files = [ 1549 | {file = "ruff-0.4.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:5c2c4d0859305ac5a16310eec40e4e9a9dec5dcdfbe92697acd99624e8638dac"}, 1550 | {file = "ruff-0.4.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a79489607d1495685cdd911a323a35871abfb7a95d4f98fc6f85e799227ac46e"}, 1551 | {file = "ruff-0.4.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1dd1681dfa90a41b8376a61af05cc4dc5ff32c8f14f5fe20dba9ff5deb80cd6"}, 1552 | {file = "ruff-0.4.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c75c53bb79d71310dc79fb69eb4902fba804a81f374bc86a9b117a8d077a1784"}, 1553 | {file = "ruff-0.4.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18238c80ee3d9100d3535d8eb15a59c4a0753b45cc55f8bf38f38d6a597b9739"}, 1554 | {file = "ruff-0.4.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d8f71885bce242da344989cae08e263de29752f094233f932d4f5cfb4ef36a81"}, 1555 | {file = "ruff-0.4.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:330421543bd3222cdfec481e8ff3460e8702ed1e58b494cf9d9e4bf90db52b9d"}, 1556 | {file = "ruff-0.4.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9e9b6fb3a37b772628415b00c4fc892f97954275394ed611056a4b8a2631365e"}, 1557 | {file = "ruff-0.4.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f54c481b39a762d48f64d97351048e842861c6662d63ec599f67d515cb417f6"}, 1558 | {file = "ruff-0.4.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:67fe086b433b965c22de0b4259ddfe6fa541c95bf418499bedb9ad5fb8d1c631"}, 1559 | {file = "ruff-0.4.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:acfaaab59543382085f9eb51f8e87bac26bf96b164839955f244d07125a982ef"}, 1560 | {file = "ruff-0.4.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:3cea07079962b2941244191569cf3a05541477286f5cafea638cd3aa94b56815"}, 1561 | {file = "ruff-0.4.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:338a64ef0748f8c3a80d7f05785930f7965d71ca260904a9321d13be24b79695"}, 1562 | {file = "ruff-0.4.10-py3-none-win32.whl", hash = "sha256:ffe3cd2f89cb54561c62e5fa20e8f182c0a444934bf430515a4b422f1ab7b7ca"}, 1563 | {file = "ruff-0.4.10-py3-none-win_amd64.whl", hash = "sha256:67f67cef43c55ffc8cc59e8e0b97e9e60b4837c8f21e8ab5ffd5d66e196e25f7"}, 1564 | {file = "ruff-0.4.10-py3-none-win_arm64.whl", hash = "sha256:dd1fcee327c20addac7916ca4e2653fbbf2e8388d8a6477ce5b4e986b68ae6c0"}, 1565 | {file = "ruff-0.4.10.tar.gz", hash = "sha256:3aa4f2bc388a30d346c56524f7cacca85945ba124945fe489952aadb6b5cd804"}, 1566 | ] 1567 | 1568 | [[package]] 1569 | name = "safety" 1570 | version = "2.3.4" 1571 | description = "Checks installed dependencies for known vulnerabilities and licenses." 1572 | optional = false 1573 | python-versions = "*" 1574 | files = [ 1575 | {file = "safety-2.3.4-py3-none-any.whl", hash = "sha256:6224dcd9b20986a2b2c5e7acfdfba6bca42bb11b2783b24ed04f32317e5167ea"}, 1576 | {file = "safety-2.3.4.tar.gz", hash = "sha256:b9e74e794e82f54d11f4091c5d820c4d2d81de9f953bf0b4f33ac8bc402ae72c"}, 1577 | ] 1578 | 1579 | [package.dependencies] 1580 | Click = ">=8.0.2" 1581 | dparse = ">=0.6.2" 1582 | packaging = ">=21.0" 1583 | requests = "*" 1584 | "ruamel.yaml" = ">=0.17.21" 1585 | setuptools = ">=19.3" 1586 | 1587 | [package.extras] 1588 | github = ["jinja2 (>=3.1.0)", "pygithub (>=1.43.3)"] 1589 | gitlab = ["python-gitlab (>=1.3.0)"] 1590 | 1591 | [[package]] 1592 | name = "setuptools" 1593 | version = "73.0.1" 1594 | description = "Easily download, build, install, upgrade, and uninstall Python packages" 1595 | optional = false 1596 | python-versions = ">=3.8" 1597 | files = [ 1598 | {file = "setuptools-73.0.1-py3-none-any.whl", hash = "sha256:b208925fcb9f7af924ed2dc04708ea89791e24bde0d3020b27df0e116088b34e"}, 1599 | {file = "setuptools-73.0.1.tar.gz", hash = "sha256:d59a3e788ab7e012ab2c4baed1b376da6366883ee20d7a5fc426816e3d7b1193"}, 1600 | ] 1601 | 1602 | [package.extras] 1603 | core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] 1604 | doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] 1605 | test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.11.*)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (<0.4)", "pytest-ruff (>=0.2.1)", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] 1606 | 1607 | [[package]] 1608 | name = "shellingham" 1609 | version = "1.5.4" 1610 | description = "Tool to Detect Surrounding Shell" 1611 | optional = false 1612 | python-versions = ">=3.7" 1613 | files = [ 1614 | {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, 1615 | {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, 1616 | ] 1617 | 1618 | [[package]] 1619 | name = "six" 1620 | version = "1.16.0" 1621 | description = "Python 2 and 3 compatibility utilities" 1622 | optional = false 1623 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" 1624 | files = [ 1625 | {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, 1626 | {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, 1627 | ] 1628 | 1629 | [[package]] 1630 | name = "stack-data" 1631 | version = "0.6.3" 1632 | description = "Extract data from python stack frames and tracebacks for informative displays" 1633 | optional = false 1634 | python-versions = "*" 1635 | files = [ 1636 | {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, 1637 | {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, 1638 | ] 1639 | 1640 | [package.dependencies] 1641 | asttokens = ">=2.1.0" 1642 | executing = ">=1.2.0" 1643 | pure-eval = "*" 1644 | 1645 | [package.extras] 1646 | tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] 1647 | 1648 | [[package]] 1649 | name = "stevedore" 1650 | version = "5.2.0" 1651 | description = "Manage dynamic plugins for Python applications" 1652 | optional = false 1653 | python-versions = ">=3.8" 1654 | files = [ 1655 | {file = "stevedore-5.2.0-py3-none-any.whl", hash = "sha256:1c15d95766ca0569cad14cb6272d4d31dae66b011a929d7c18219c176ea1b5c9"}, 1656 | {file = "stevedore-5.2.0.tar.gz", hash = "sha256:46b93ca40e1114cea93d738a6c1e365396981bb6bb78c27045b7587c9473544d"}, 1657 | ] 1658 | 1659 | [package.dependencies] 1660 | pbr = ">=2.0.0,<2.1.0 || >2.1.0" 1661 | 1662 | [[package]] 1663 | name = "termcolor" 1664 | version = "2.4.0" 1665 | description = "ANSI color formatting for output in terminal" 1666 | optional = false 1667 | python-versions = ">=3.8" 1668 | files = [ 1669 | {file = "termcolor-2.4.0-py3-none-any.whl", hash = "sha256:9297c0df9c99445c2412e832e882a7884038a25617c60cea2ad69488d4040d63"}, 1670 | {file = "termcolor-2.4.0.tar.gz", hash = "sha256:aab9e56047c8ac41ed798fa36d892a37aca6b3e9159f3e0c24bc64a9b3ac7b7a"}, 1671 | ] 1672 | 1673 | [package.extras] 1674 | tests = ["pytest", "pytest-cov"] 1675 | 1676 | [[package]] 1677 | name = "tomli" 1678 | version = "2.0.1" 1679 | description = "A lil' TOML parser" 1680 | optional = false 1681 | python-versions = ">=3.7" 1682 | files = [ 1683 | {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, 1684 | {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, 1685 | ] 1686 | 1687 | [[package]] 1688 | name = "tornado" 1689 | version = "6.4.1" 1690 | description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." 1691 | optional = false 1692 | python-versions = ">=3.8" 1693 | files = [ 1694 | {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, 1695 | {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, 1696 | {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, 1697 | {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, 1698 | {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, 1699 | {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, 1700 | {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, 1701 | {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, 1702 | {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, 1703 | {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, 1704 | {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, 1705 | ] 1706 | 1707 | [[package]] 1708 | name = "traitlets" 1709 | version = "5.14.3" 1710 | description = "Traitlets Python configuration system" 1711 | optional = false 1712 | python-versions = ">=3.8" 1713 | files = [ 1714 | {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, 1715 | {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, 1716 | ] 1717 | 1718 | [package.extras] 1719 | docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] 1720 | test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] 1721 | 1722 | [[package]] 1723 | name = "typer" 1724 | version = "0.7.0" 1725 | description = "Typer, build great CLIs. Easy to code. Based on Python type hints." 1726 | optional = false 1727 | python-versions = ">=3.6" 1728 | files = [ 1729 | {file = "typer-0.7.0-py3-none-any.whl", hash = "sha256:b5e704f4e48ec263de1c0b3a2387cd405a13767d2f907f44c1a08cbad96f606d"}, 1730 | {file = "typer-0.7.0.tar.gz", hash = "sha256:ff797846578a9f2a201b53442aedeb543319466870fbe1c701eab66dd7681165"}, 1731 | ] 1732 | 1733 | [package.dependencies] 1734 | click = ">=7.1.1,<9.0.0" 1735 | colorama = {version = ">=0.4.3,<0.5.0", optional = true, markers = "extra == \"all\""} 1736 | rich = {version = ">=10.11.0,<13.0.0", optional = true, markers = "extra == \"all\""} 1737 | shellingham = {version = ">=1.3.0,<2.0.0", optional = true, markers = "extra == \"all\""} 1738 | 1739 | [package.extras] 1740 | all = ["colorama (>=0.4.3,<0.5.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"] 1741 | dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2.17.0,<3.0.0)"] 1742 | doc = ["cairosvg (>=2.5.2,<3.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pillow (>=9.3.0,<10.0.0)"] 1743 | test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.910)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"] 1744 | 1745 | [[package]] 1746 | name = "typing-extensions" 1747 | version = "4.12.2" 1748 | description = "Backported and Experimental Type Hints for Python 3.8+" 1749 | optional = false 1750 | python-versions = ">=3.8" 1751 | files = [ 1752 | {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, 1753 | {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, 1754 | ] 1755 | 1756 | [[package]] 1757 | name = "urllib3" 1758 | version = "2.2.2" 1759 | description = "HTTP library with thread-safe connection pooling, file post, and more." 1760 | optional = false 1761 | python-versions = ">=3.8" 1762 | files = [ 1763 | {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, 1764 | {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, 1765 | ] 1766 | 1767 | [package.extras] 1768 | brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] 1769 | h2 = ["h2 (>=4,<5)"] 1770 | socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] 1771 | zstd = ["zstandard (>=0.18.0)"] 1772 | 1773 | [[package]] 1774 | name = "virtualenv" 1775 | version = "20.26.3" 1776 | description = "Virtual Python Environment builder" 1777 | optional = false 1778 | python-versions = ">=3.7" 1779 | files = [ 1780 | {file = "virtualenv-20.26.3-py3-none-any.whl", hash = "sha256:8cc4a31139e796e9a7de2cd5cf2489de1217193116a8fd42328f1bd65f434589"}, 1781 | {file = "virtualenv-20.26.3.tar.gz", hash = "sha256:4c43a2a236279d9ea36a0d76f98d84bd6ca94ac4e0f4a3b9d46d05e10fea542a"}, 1782 | ] 1783 | 1784 | [package.dependencies] 1785 | distlib = ">=0.3.7,<1" 1786 | filelock = ">=3.12.2,<4" 1787 | platformdirs = ">=3.9.1,<5" 1788 | 1789 | [package.extras] 1790 | docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] 1791 | test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] 1792 | 1793 | [[package]] 1794 | name = "wcwidth" 1795 | version = "0.2.13" 1796 | description = "Measures the displayed width of unicode strings in a terminal" 1797 | optional = false 1798 | python-versions = "*" 1799 | files = [ 1800 | {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, 1801 | {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, 1802 | ] 1803 | 1804 | [[package]] 1805 | name = "zipp" 1806 | version = "3.20.0" 1807 | description = "Backport of pathlib-compatible object wrapper for zip files" 1808 | optional = false 1809 | python-versions = ">=3.8" 1810 | files = [ 1811 | {file = "zipp-3.20.0-py3-none-any.whl", hash = "sha256:58da6168be89f0be59beb194da1250516fdaa062ccebd30127ac65d30045e10d"}, 1812 | {file = "zipp-3.20.0.tar.gz", hash = "sha256:0145e43d89664cfe1a2e533adc75adafed82fe2da404b4bbb6b026c0157bdb31"}, 1813 | ] 1814 | 1815 | [package.extras] 1816 | doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] 1817 | test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] 1818 | 1819 | [metadata] 1820 | lock-version = "2.0" 1821 | python-versions = "^3.8" 1822 | content-hash = "441f64cb4609e09168aa89599d847b9ec35dde93deca3bcdc77bbc68fa41ee4a" 1823 | --------------------------------------------------------------------------------