├── 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 | [](https://www.python.org/downloads/release/python-360/)
3 | [](https://pypi.org/project/alphaagent/)
4 | 
5 | 
6 | 
7 | 
8 | 
9 |
10 |
11 |

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 |
--------------------------------------------------------------------------------