From f9dce672bc3b34b970eb0a26aa3f9104965a8395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Wi=C5=9Bniewski?= Date: Sun, 10 Nov 2024 13:50:49 +0100 Subject: [PATCH] Start separation of unit tests --- .github/workflows/code_quality.yaml | 67 -- ...ploy_docs.yaml => deploy_latest_docs.yaml} | 21 +- .github/workflows/release_to_pypi.yaml | 11 +- .github/workflows/release_to_test_pypi.yaml | 9 +- .github/workflows/test_all.yaml | 66 ++ .github/workflows/test_e2e.yaml | 66 ++ .github/workflows/test_style.yaml | 44 ++ .../{unit_tests.yaml => test_unit.yaml} | 49 +- .pre-commit-config.yaml | 2 +- .vscode/settings.json | 1 + poetry.lock | 577 +----------------- pyproject.toml | 71 ++- test/{test_vm => unit}/__init__.py | 0 .../test_vm}/__init__.py | 0 test/{ => unit}/test_vm/command_builders.py | 0 .../test_vm/test_commands}/__init__.py | 0 .../test_shape_segments}/__init__.py | 0 .../test_shape_segments/test_arc.py | 0 .../test_shape_segments/test_line.py | 0 test/{ => unit}/test_vm/test_pillow.py | 2 +- .../test_vm/test_pillow_assets/test_0_180.png | Bin .../test_vm/test_pillow_assets/test_0_90.png | Bin .../test_pillow_assets/test_135_225.png | Bin .../test_pillow_assets/test_180_270.png | Bin .../test_pillow_assets/test_180_360.png | Bin .../test_pillow_assets/test_225_315.png | Bin .../test_pillow_assets/test_270_360.png | Bin .../test_pillow_assets/test_270_420.png | Bin .../test_pillow_assets/test_315_405.png | Bin .../test_pillow_assets/test_45_135.png | Bin .../test_pillow_assets/test_90_180.png | Bin .../test_pillow_assets/test_90_270.png | Bin .../test_draw_circle_in_center.png | Bin ...test_draw_circle_over_circle_in_center.png | Bin ...test_draw_obround_horizontal_in_center.png | Bin .../test_draw_obround_vertical_in_center.png | Bin .../test_draw_rectangle_in_center.png | Bin .../test_full_circle_with_quarter_arcs.png | Bin ...0_0_circle_at_2_2_expect_circle_at_2_2.png | Bin ...gin_0_0_paste_0_0_expect_circle_at_0_0.png | Bin ...2_2_circle_at_2_2_expect_circle_at_4_4.png | Bin ...gin_0_0_paste_2_2_expect_circle_at_2_2.png | Bin ...gin_0_0_paste_8_8_expect_circle_at_8_8.png | Bin ...paste_0_0_expect_circle_at_neg_2_neg_2.png | Bin ...2_2_circle_at_2_2_expect_circle_at_2_2.png | Bin ...gin_2_2_paste_2_2_expect_circle_at_0_0.png | Bin ...gin_8_8_paste_8_8_expect_circle_at_0_0.png | Bin ...gin_0_0_paste_0_0_expect_circle_at_0_0.png | Bin ...gin_0_0_paste_2_2_expect_circle_at_2_2.png | Bin ...paste_0_0_expect_circle_at_neg_2_neg_2.png | Bin ...gin_2_2_paste_2_2_expect_circle_at_0_0.png | Bin ...2_2_circle_at_2_2_expect_circle_at_0_0.png | Bin ...pect_circle_at_0_0_no_main_origin_mark.png | Bin ...est_paste_circle_over_circle_in_center.png | Bin ...ste_circle_over_paste_circle_in_center.png | Bin ...est_paste_negative_rectangle_in_center.png | Bin .../test_paste_rectangle_in_center.png | Bin test/{ => unit}/test_vm/test_shapely.py | 2 +- test/unit/test_vm/test_types/__init__.py | 0 .../{ => unit}/test_vm/test_types/test_box.py | 0 test/{ => unit}/test_vm/test_vector.py | 0 test/{ => unit}/test_vm/test_vm.py | 0 62 files changed, 267 insertions(+), 721 deletions(-) delete mode 100644 .github/workflows/code_quality.yaml rename .github/workflows/{build_n_deploy_docs.yaml => deploy_latest_docs.yaml} (62%) create mode 100644 .github/workflows/test_all.yaml create mode 100644 .github/workflows/test_e2e.yaml create mode 100644 .github/workflows/test_style.yaml rename .github/workflows/{unit_tests.yaml => test_unit.yaml} (55%) rename test/{test_vm => unit}/__init__.py (100%) rename test/{test_vm/test_commands => unit/test_vm}/__init__.py (100%) rename test/{ => unit}/test_vm/command_builders.py (100%) rename test/{test_vm/test_commands/test_shape_segments => unit/test_vm/test_commands}/__init__.py (100%) rename test/{test_vm/test_types => unit/test_vm/test_commands/test_shape_segments}/__init__.py (100%) rename test/{ => unit}/test_vm/test_commands/test_shape_segments/test_arc.py (100%) rename test/{ => unit}/test_vm/test_commands/test_shape_segments/test_line.py (100%) rename test/{ => unit}/test_vm/test_pillow.py (99%) rename test/{ => unit}/test_vm/test_pillow_assets/test_0_180.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_0_90.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_135_225.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_180_270.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_180_360.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_225_315.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_270_360.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_270_420.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_315_405.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_45_135.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_90_180.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_90_270.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_draw_circle_in_center.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_draw_circle_over_circle_in_center.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_draw_obround_horizontal_in_center.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_draw_obround_vertical_in_center.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_draw_rectangle_in_center.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_full_circle_with_quarter_arcs.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_0_0_circle_at_2_2_expect_circle_at_2_2.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_0_0_expect_circle_at_0_0.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_2_2_circle_at_2_2_expect_circle_at_4_4.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_2_2_expect_circle_at_2_2.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_8_8_expect_circle_at_8_8.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_2_2_paste_0_0_expect_circle_at_neg_2_neg_2.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_2_2_paste_2_2_circle_at_2_2_expect_circle_at_2_2.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_2_2_paste_2_2_expect_circle_at_0_0.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_8_8_paste_8_8_expect_circle_at_0_0.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_0_0_paste_0_0_expect_circle_at_0_0.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_0_0_paste_2_2_expect_circle_at_2_2.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_2_2_paste_0_0_expect_circle_at_neg_2_neg_2.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_2_2_paste_2_2_expect_circle_at_0_0.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_main_origin_neg_8_neg_8_layer_origin_4_4_paste_2_2_circle_at_2_2_expect_circle_at_0_0.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_main_origin_neg_8_neg_8_layer_origin_4_4_paste_2_2_circle_at_2_2_expect_circle_at_0_0_no_main_origin_mark.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_paste_circle_over_circle_in_center.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_paste_circle_over_paste_circle_in_center.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_paste_negative_rectangle_in_center.png (100%) rename test/{ => unit}/test_vm/test_pillow_assets/test_paste_rectangle_in_center.png (100%) rename test/{ => unit}/test_vm/test_shapely.py (99%) create mode 100644 test/unit/test_vm/test_types/__init__.py rename test/{ => unit}/test_vm/test_types/test_box.py (100%) rename test/{ => unit}/test_vm/test_vector.py (100%) rename test/{ => unit}/test_vm/test_vm.py (100%) diff --git a/.github/workflows/code_quality.yaml b/.github/workflows/code_quality.yaml deleted file mode 100644 index d2cdb6cb..00000000 --- a/.github/workflows/code_quality.yaml +++ /dev/null @@ -1,67 +0,0 @@ ---- -name: Code Quality - -on: - push: - branches: - - main - - dev - - fix/** - - hotfix/** - - feature/** - - release/** - - dependabot/** - - maintenance/** - - refactor/** - - pull_request: - branches: - - main - - dev - - fix/** - - hotfix/** - - feature/** - - release/** - - dependabot/** - - maintenance/** - types: - - opened - - reopened - - schedule: - - cron: 0 12 * * 6 - - workflow_dispatch: - -concurrency: - group: ${{ github.action_path }}-${{ github.ref }}-code-quality - cancel-in-progress: false - -jobs: - run-code-quality-checks: - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest] - python-version: ["3.8", "3.11"] - - runs-on: ${{ matrix.os }} - - steps: - - name: Checkout code - uses: actions/checkout@v3.6.0 - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4.7.0 - with: - python-version: ${{ matrix.python-version }} - architecture: "x64" - - - name: Install Poetry - run: pip install poetry==1.6.1 - - - name: Install dependencies - run: poetry install --no-cache --sync - - - name: Run code quality checks with pre-commit - run: poetry run poe run-code-quality-checks diff --git a/.github/workflows/build_n_deploy_docs.yaml b/.github/workflows/deploy_latest_docs.yaml similarity index 62% rename from .github/workflows/build_n_deploy_docs.yaml rename to .github/workflows/deploy_latest_docs.yaml index 3c6c98b3..deb3e669 100644 --- a/.github/workflows/build_n_deploy_docs.yaml +++ b/.github/workflows/deploy_latest_docs.yaml @@ -1,19 +1,18 @@ --- -name: Build & Deploy Docs +name: Deploy Latest Documentation on: push: tags: - "v*" - workflow_dispatch: concurrency: - group: ${{ github.action_path }}-${{ github.ref }}-build-n-deploy-docs + group: ${{ github.action_path }}-${{ github.ref }}-latest-docs cancel-in-progress: false jobs: - run-build-n-deploy-docs: + docs: strategy: fail-fast: false matrix: @@ -35,16 +34,18 @@ jobs: architecture: "x64" - name: Install Poetry - run: pip install poetry==1.6.1 + run: pip install poetry==1.8.4 + + - name: Install base dependencies + run: poetry install --no-cache - - name: Install dependencies - run: poetry install --with=docs --no-cache --sync --extras=all + - name: Prepare environment for docs deploy + run: poetry run poe prepare-deploy-docs - name: Configure Git run: | git config user.name github-actions git config user.email argmaster.world@gmail.com - - name: Run build & deploy documentation - run: | - poetry run mike deploy --push --update-aliases $(poetry version | awk '{ print $2 }') latest -F mkdocs.yaml + - name: Deploy documentation + run: poetry run poe run deploy-latest-docs diff --git a/.github/workflows/release_to_pypi.yaml b/.github/workflows/release_to_pypi.yaml index 9d259a73..a30d5c9b 100644 --- a/.github/workflows/release_to_pypi.yaml +++ b/.github/workflows/release_to_pypi.yaml @@ -26,19 +26,14 @@ jobs: architecture: "x64" - name: Install Poetry 📜 - run: pip install poetry==1.6.1 + run: pip install poetry==1.8.4 - - name: Install dependencies 🗄️ - run: poetry install --no-cache --sync + - name: Install base dependencies 🗄️ + run: poetry install --no-cache - name: Build distribution 📦 run: poetry run poetry build - - name: Detect Version of project - id: project-version - run: | - echo "version=$(poetry version | awk '{ print $2 }')" >> $GITHUB_OUTPUT - - name: Publish distribution 📦 to PyPI # Executed only for version tag push event uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/.github/workflows/release_to_test_pypi.yaml b/.github/workflows/release_to_test_pypi.yaml index fafe0b29..6be3a6e8 100644 --- a/.github/workflows/release_to_test_pypi.yaml +++ b/.github/workflows/release_to_test_pypi.yaml @@ -5,10 +5,7 @@ name: Publish 📦 to Test PyPI on: push: branches: - - dev - main - - release/** - - maintenance/** jobs: deploy-to-pypi: @@ -27,10 +24,10 @@ jobs: architecture: "x64" - name: Install Poetry 📜 - run: pip install poetry==1.6.1 + run: pip install poetry==1.8.4 - - name: Install dependencies 🗄️ - run: poetry install --no-cache --sync + - name: Install base dependencies 🗄️ + run: poetry install --no-cache - name: Bump Version for development 🔨 release run: | diff --git a/.github/workflows/test_all.yaml b/.github/workflows/test_all.yaml new file mode 100644 index 00000000..92ffa209 --- /dev/null +++ b/.github/workflows/test_all.yaml @@ -0,0 +1,66 @@ +--- +name: All Tests + +on: + push: + paths: + - src/** + - test/** + - .github/** + - pyproject.toml + - poetry.lock + schedule: + - cron: 0 12 * * 6 + workflow_dispatch: + +concurrency: + group: ${{ github.action_path }}-${{ github.ref }}-test-all + cancel-in-progress: false + +jobs: + tests: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest] + python-version: ["3.8", "3.13"] + + env: + OS: ${{ matrix.os }} + PYTHON: ${{ matrix.python-version }} + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout code + uses: actions/checkout@v3.6.0 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4.7.0 + with: + python-version: ${{ matrix.python-version }} + architecture: "x64" + + - name: Install Poetry + run: pip install poetry==1.8.4 + + - name: Install basic dependencies + run: poetry install --no-cache + + - name: Prepare environment for all tests + run: poetry run poe prepare-test-all + + - name: Run all tests + run: poetry run poe test-all + + - name: Create XML coverage files + run: poetry run coverage xml + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 + with: + token: ${{ secrets.CODECOV_TOKEN }} + env_vars: OS,PYTHON + flags: all + files: ./coverage.xml + verbose: true diff --git a/.github/workflows/test_e2e.yaml b/.github/workflows/test_e2e.yaml new file mode 100644 index 00000000..dc4b15d6 --- /dev/null +++ b/.github/workflows/test_e2e.yaml @@ -0,0 +1,66 @@ +--- +name: End-to-End Tests + +on: + push: + paths: + - src/** + - test/** + - .github/** + - pyproject.toml + - poetry.lock + schedule: + - cron: 0 12 * * 6 + workflow_dispatch: + +concurrency: + group: ${{ github.action_path }}-${{ github.ref }}-test-e2e + cancel-in-progress: false + +jobs: + tests: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest] + python-version: ["3.9", "3.10", "3.11", "3.12"] + + env: + OS: ${{ matrix.os }} + PYTHON: ${{ matrix.python-version }} + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout code + uses: actions/checkout@v3.6.0 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4.7.0 + with: + python-version: ${{ matrix.python-version }} + architecture: "x64" + + - name: Install Poetry + run: pip install poetry==1.8.4 + + - name: Install basic dependencies + run: poetry install --no-cache + + - name: Prepare environment for e2e tests + run: poetry run poe prepare-test-e2e + + - name: Run e2e tests + run: poetry run poe test-e2e + + - name: Create XML coverage files + run: poetry run coverage xml + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 + with: + token: ${{ secrets.CODECOV_TOKEN }} + env_vars: OS,PYTHON + flags: e2e + files: ./coverage.xml + verbose: true diff --git a/.github/workflows/test_style.yaml b/.github/workflows/test_style.yaml new file mode 100644 index 00000000..79263183 --- /dev/null +++ b/.github/workflows/test_style.yaml @@ -0,0 +1,44 @@ +--- +name: Test Style + +on: + push: + schedule: + - cron: 0 12 * * 6 + workflow_dispatch: + +concurrency: + group: ${{ github.action_path }}-${{ github.ref }}-code-quality + cancel-in-progress: false + +jobs: + tests: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + python-version: ["3.8", "3.11"] + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout code + uses: actions/checkout@v3.6.0 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4.7.0 + with: + python-version: ${{ matrix.python-version }} + architecture: "x64" + + - name: Install Poetry + run: pip install poetry==1.8.4 + + - name: Install basic dependencies + run: poetry install --no-cache + + - name: Prepare environment for style tests + run: poetry run poe prepare-test-style + + - name: Run style tests + run: poetry run poe test-style diff --git a/.github/workflows/unit_tests.yaml b/.github/workflows/test_unit.yaml similarity index 55% rename from .github/workflows/unit_tests.yaml rename to .github/workflows/test_unit.yaml index 45ce8ac8..fb35d5d0 100644 --- a/.github/workflows/unit_tests.yaml +++ b/.github/workflows/test_unit.yaml @@ -3,53 +3,27 @@ name: Unit Tests on: push: - branches: - - main - - dev - - fix/** - - hotfix/** - - feature/** - - release/** - - dependabot/** - - maintenance/** - - refactor/** paths: - src/** - test/** - .github/** - pyproject.toml - poetry.lock - - pull_request: - branches: - - main - - dev - - fix/** - - hotfix/** - - feature/** - - release/** - - dependabot/** - - maintenance/** - types: - - opened - - reopened - schedule: - cron: 0 12 * * 6 - workflow_dispatch: concurrency: - group: ${{ github.action_path }}-${{ github.ref }}-unit-tests + group: ${{ github.action_path }}-${{ github.ref }}-test-unit cancel-in-progress: false jobs: - run-unit-tests: + tests: strategy: fail-fast: false matrix: - os: [ubuntu-latest, windows-latest] - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] + os: [ubuntu-24.04, ubuntu-22.04, ubuntu-20.04, windows-2022, windows-2019] + python-version: ["3.9", "3.10", "3.11", "3.12"] env: OS: ${{ matrix.os }} @@ -68,15 +42,18 @@ jobs: architecture: "x64" - name: Install Poetry - run: pip install poetry==1.6.1 + run: pip install poetry==1.8.4 + + - name: Install basic dependencies + run: poetry install --no-cache - - name: Install dependencies - run: poetry install --no-cache --sync --extras=svg + - name: Prepare environment for unit tests + run: poetry run poe prepare-test-unit - name: Run unit tests - run: poetry run poe run-unit-tests + run: poetry run poe test-unit - - name: Dump coverage + - name: Create XML coverage files run: poetry run coverage xml - name: Upload coverage to Codecov @@ -84,6 +61,6 @@ jobs: with: token: ${{ secrets.CODECOV_TOKEN }} env_vars: OS,PYTHON - flags: unittests + flags: unit files: ./coverage.xml verbose: true diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0327403d..52da076b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -38,7 +38,7 @@ repos: hooks: - id: mypy name: mypy - entry: poetry run poe run-type-checks + entry: poetry run poe test-type language: system types: [python] pass_filenames: false diff --git a/.vscode/settings.json b/.vscode/settings.json index 9d42d69c..5fdfe30e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -58,6 +58,7 @@ "Refdes", "RGBA", "Roboto", + "rvmc", "SOSTMT", "superfences", "tasklist", diff --git a/poetry.lock b/poetry.lock index aaf22d16..dd590fd6 100644 --- a/poetry.lock +++ b/poetry.lock @@ -14,35 +14,6 @@ files = [ [package.dependencies] typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} -[[package]] -name = "appnope" -version = "0.1.4" -description = "Disable App Nap on macOS >= 10.9" -optional = false -python-versions = ">=3.6" -files = [ - {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, - {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, -] - -[[package]] -name = "asttokens" -version = "2.4.1" -description = "Annotate AST trees with source code positions" -optional = false -python-versions = "*" -files = [ - {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, - {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, -] - -[package.dependencies] -six = ">=1.12.0" - -[package.extras] -astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] -test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] - [[package]] name = "astunparse" version = "1.6.3" @@ -109,17 +80,6 @@ pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} [package.extras] dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] -[[package]] -name = "backcall" -version = "0.2.0" -description = "Specifications for callback functions passed in to an API" -optional = false -python-versions = "*" -files = [ - {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, - {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, -] - [[package]] name = "backports-tarfile" version = "1.2.0" @@ -475,23 +435,6 @@ files = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -[[package]] -name = "comm" -version = "0.2.2" -description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -optional = false -python-versions = ">=3.8" -files = [ - {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, - {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, -] - -[package.dependencies] -traitlets = ">=4" - -[package.extras] -test = ["pytest"] - [[package]] name = "coverage" version = "7.6.1" @@ -628,52 +571,6 @@ ssh = ["bcrypt (>=3.1.5)"] test = ["certifi", "cryptography-vectors (==43.0.3)", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] -[[package]] -name = "debugpy" -version = "1.8.8" -description = "An implementation of the Debug Adapter Protocol for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "debugpy-1.8.8-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:e59b1607c51b71545cb3496876544f7186a7a27c00b436a62f285603cc68d1c6"}, - {file = "debugpy-1.8.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6531d952b565b7cb2fbd1ef5df3d333cf160b44f37547a4e7cf73666aca5d8d"}, - {file = "debugpy-1.8.8-cp310-cp310-win32.whl", hash = "sha256:b01f4a5e5c5fb1d34f4ccba99a20ed01eabc45a4684f4948b5db17a319dfb23f"}, - {file = "debugpy-1.8.8-cp310-cp310-win_amd64.whl", hash = "sha256:535f4fb1c024ddca5913bb0eb17880c8f24ba28aa2c225059db145ee557035e9"}, - {file = "debugpy-1.8.8-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:c399023146e40ae373753a58d1be0a98bf6397fadc737b97ad612886b53df318"}, - {file = "debugpy-1.8.8-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:09cc7b162586ea2171eea055985da2702b0723f6f907a423c9b2da5996ad67ba"}, - {file = "debugpy-1.8.8-cp311-cp311-win32.whl", hash = "sha256:eea8821d998ebeb02f0625dd0d76839ddde8cbf8152ebbe289dd7acf2cdc6b98"}, - {file = "debugpy-1.8.8-cp311-cp311-win_amd64.whl", hash = "sha256:d4483836da2a533f4b1454dffc9f668096ac0433de855f0c22cdce8c9f7e10c4"}, - {file = "debugpy-1.8.8-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:0cc94186340be87b9ac5a707184ec8f36547fb66636d1029ff4f1cc020e53996"}, - {file = "debugpy-1.8.8-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64674e95916e53c2e9540a056e5f489e0ad4872645399d778f7c598eacb7b7f9"}, - {file = "debugpy-1.8.8-cp312-cp312-win32.whl", hash = "sha256:5c6e885dbf12015aed73770f29dec7023cb310d0dc2ba8bfbeb5c8e43f80edc9"}, - {file = "debugpy-1.8.8-cp312-cp312-win_amd64.whl", hash = "sha256:19ffbd84e757a6ca0113574d1bf5a2298b3947320a3e9d7d8dc3377f02d9f864"}, - {file = "debugpy-1.8.8-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:705cd123a773d184860ed8dae99becd879dfec361098edbefb5fc0d3683eb804"}, - {file = "debugpy-1.8.8-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:890fd16803f50aa9cb1a9b9b25b5ec321656dd6b78157c74283de241993d086f"}, - {file = "debugpy-1.8.8-cp313-cp313-win32.whl", hash = "sha256:90244598214bbe704aa47556ec591d2f9869ff9e042e301a2859c57106649add"}, - {file = "debugpy-1.8.8-cp313-cp313-win_amd64.whl", hash = "sha256:4b93e4832fd4a759a0c465c967214ed0c8a6e8914bced63a28ddb0dd8c5f078b"}, - {file = "debugpy-1.8.8-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:143ef07940aeb8e7316de48f5ed9447644da5203726fca378f3a6952a50a9eae"}, - {file = "debugpy-1.8.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f95651bdcbfd3b27a408869a53fbefcc2bcae13b694daee5f1365b1b83a00113"}, - {file = "debugpy-1.8.8-cp38-cp38-win32.whl", hash = "sha256:26b461123a030e82602a750fb24d7801776aa81cd78404e54ab60e8b5fecdad5"}, - {file = "debugpy-1.8.8-cp38-cp38-win_amd64.whl", hash = "sha256:f3cbf1833e644a3100eadb6120f25be8a532035e8245584c4f7532937edc652a"}, - {file = "debugpy-1.8.8-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:53709d4ec586b525724819dc6af1a7703502f7e06f34ded7157f7b1f963bb854"}, - {file = "debugpy-1.8.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a9c013077a3a0000e83d97cf9cc9328d2b0bbb31f56b0e99ea3662d29d7a6a2"}, - {file = "debugpy-1.8.8-cp39-cp39-win32.whl", hash = "sha256:ffe94dd5e9a6739a75f0b85316dc185560db3e97afa6b215628d1b6a17561cb2"}, - {file = "debugpy-1.8.8-cp39-cp39-win_amd64.whl", hash = "sha256:5c0e5a38c7f9b481bf31277d2f74d2109292179081f11108e668195ef926c0f9"}, - {file = "debugpy-1.8.8-py2.py3-none-any.whl", hash = "sha256:ec684553aba5b4066d4de510859922419febc710df7bba04fe9e7ef3de15d34f"}, - {file = "debugpy-1.8.8.zip", hash = "sha256:e6355385db85cbd666be703a96ab7351bc9e6c61d694893206f8001e22aee091"}, -] - -[[package]] -name = "decorator" -version = "5.1.1" -description = "Decorators for Humans" -optional = false -python-versions = ">=3.5" -files = [ - {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, - {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, -] - [[package]] name = "distlib" version = "0.3.9" @@ -690,11 +587,8 @@ name = "docutils" version = "0.20.1" description = "Docutils -- Python Documentation Utilities" optional = false -python-versions = ">=3.7" -files = [ - {file = "docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6"}, - {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, -] +python-versions = "*" +files = [] [[package]] name = "drawsvg" @@ -811,20 +705,6 @@ files = [ [package.extras] testing = ["hatch", "pre-commit", "pytest", "tox"] -[[package]] -name = "executing" -version = "2.1.0" -description = "Get the currently executing AST node of a frame, and other information" -optional = false -python-versions = ">=3.8" -files = [ - {file = "executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf"}, - {file = "executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab"}, -] - -[package.extras] -tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] - [[package]] name = "filelock" version = "3.16.1" @@ -968,78 +848,6 @@ files = [ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] -[[package]] -name = "ipykernel" -version = "6.29.5" -description = "IPython Kernel for Jupyter" -optional = false -python-versions = ">=3.8" -files = [ - {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, - {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, -] - -[package.dependencies] -appnope = {version = "*", markers = "platform_system == \"Darwin\""} -comm = ">=0.1.1" -debugpy = ">=1.6.5" -ipython = ">=7.23.1" -jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -matplotlib-inline = ">=0.1" -nest-asyncio = "*" -packaging = "*" -psutil = "*" -pyzmq = ">=24" -tornado = ">=6.1" -traitlets = ">=5.4.0" - -[package.extras] -cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] -pyqt5 = ["pyqt5"] -pyside6 = ["pyside6"] -test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] - -[[package]] -name = "ipython" -version = "8.12.3" -description = "IPython: Productive Interactive Computing" -optional = false -python-versions = ">=3.8" -files = [ - {file = "ipython-8.12.3-py3-none-any.whl", hash = "sha256:b0340d46a933d27c657b211a329d0be23793c36595acf9e6ef4164bc01a1804c"}, - {file = "ipython-8.12.3.tar.gz", hash = "sha256:3910c4b54543c2ad73d06579aa771041b7d5707b033bd488669b4cf544e3b363"}, -] - -[package.dependencies] -appnope = {version = "*", markers = "sys_platform == \"darwin\""} -backcall = "*" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -decorator = "*" -jedi = ">=0.16" -matplotlib-inline = "*" -pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} -pickleshare = "*" -prompt-toolkit = ">=3.0.30,<3.0.37 || >3.0.37,<3.1.0" -pygments = ">=2.4.0" -stack-data = "*" -traitlets = ">=5" -typing-extensions = {version = "*", markers = "python_version < \"3.10\""} - -[package.extras] -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"] -black = ["black"] -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"] -kernel = ["ipykernel"] -nbconvert = ["nbconvert"] -nbformat = ["nbformat"] -notebook = ["ipywidgets", "notebook"] -parallel = ["ipyparallel"] -qtconsole = ["qtconsole"] -test = ["pytest (<7.1)", "pytest-asyncio", "testpath"] -test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"] - [[package]] name = "jaraco-classes" version = "3.4.0" @@ -1098,25 +906,6 @@ enabler = ["pytest-enabler (>=2.2)"] test = ["jaraco.classes", "pytest (>=6,!=8.1.*)"] type = ["pytest-mypy"] -[[package]] -name = "jedi" -version = "0.19.1" -description = "An autocompletion tool for Python that can be used for text editors." -optional = false -python-versions = ">=3.6" -files = [ - {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, - {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, -] - -[package.dependencies] -parso = ">=0.8.3,<0.9.0" - -[package.extras] -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)"] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] - [[package]] name = "jeepney" version = "0.8.0" @@ -1149,49 +938,6 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] -[[package]] -name = "jupyter-client" -version = "8.6.3" -description = "Jupyter protocol implementation and client libraries" -optional = false -python-versions = ">=3.8" -files = [ - {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, - {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, -] - -[package.dependencies] -importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" -python-dateutil = ">=2.8.2" -pyzmq = ">=23.0" -tornado = ">=6.2" -traitlets = ">=5.3" - -[package.extras] -docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] - -[[package]] -name = "jupyter-core" -version = "5.7.2" -description = "Jupyter core package. A base package on which Jupyter projects rely." -optional = false -python-versions = ">=3.8" -files = [ - {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, - {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, -] - -[package.dependencies] -platformdirs = ">=2.5" -pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} -traitlets = ">=5.3" - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] -test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] - [[package]] name = "keyring" version = "25.5.0" @@ -1348,20 +1094,6 @@ files = [ {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] -[[package]] -name = "matplotlib-inline" -version = "0.1.7" -description = "Inline Matplotlib backend for Jupyter" -optional = false -python-versions = ">=3.8" -files = [ - {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, - {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, -] - -[package.dependencies] -traitlets = "*" - [[package]] name = "mdurl" version = "0.1.2" @@ -1686,17 +1418,6 @@ files = [ {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] -[[package]] -name = "nest-asyncio" -version = "1.6.0" -description = "Patch asyncio to allow nested event loops" -optional = false -python-versions = ">=3.5" -files = [ - {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, - {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, -] - [[package]] name = "nh3" version = "0.2.18" @@ -1914,21 +1635,6 @@ files = [ dev = ["pytest", "tox"] lint = ["black"] -[[package]] -name = "parso" -version = "0.8.4" -description = "A Python Parser" -optional = false -python-versions = ">=3.6" -files = [ - {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, - {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, -] - -[package.extras] -qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["docopt", "pytest"] - [[package]] name = "pastel" version = "0.2.1" @@ -1951,31 +1657,6 @@ files = [ {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] -[[package]] -name = "pexpect" -version = "4.9.0" -description = "Pexpect allows easy control of interactive console applications." -optional = false -python-versions = "*" -files = [ - {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, - {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, -] - -[package.dependencies] -ptyprocess = ">=0.5" - -[[package]] -name = "pickleshare" -version = "0.7.5" -description = "Tiny 'shelve'-like database with concurrency support" -optional = false -python-versions = "*" -files = [ - {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, - {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, -] - [[package]] name = "pillow" version = "10.4.0" @@ -2247,20 +1928,6 @@ nodeenv = ">=0.11.1" pyyaml = ">=5.1" virtualenv = ">=20.10.0" -[[package]] -name = "prompt-toolkit" -version = "3.0.48" -description = "Library for building powerful interactive command lines in Python" -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, - {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, -] - -[package.dependencies] -wcwidth = "*" - [[package]] name = "psutil" version = "6.1.0" @@ -2291,31 +1958,6 @@ files = [ dev = ["black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest-cov", "requests", "rstcheck", "ruff", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "wheel"] test = ["pytest", "pytest-xdist", "setuptools"] -[[package]] -name = "ptyprocess" -version = "0.7.0" -description = "Run a subprocess in a pseudo terminal" -optional = false -python-versions = "*" -files = [ - {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, - {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, -] - -[[package]] -name = "pure-eval" -version = "0.2.3" -description = "Safely evaluate AST nodes without side effects" -optional = false -python-versions = "*" -files = [ - {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, - {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, -] - -[package.extras] -tests = ["pytest"] - [[package]] name = "pycparser" version = "2.22" @@ -2679,33 +2321,6 @@ files = [ {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, ] -[[package]] -name = "pywin32" -version = "308" -description = "Python for Window Extensions" -optional = false -python-versions = "*" -files = [ - {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, - {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, - {file = "pywin32-308-cp310-cp310-win_arm64.whl", hash = "sha256:a5ab5381813b40f264fa3495b98af850098f814a25a63589a8e9eb12560f450c"}, - {file = "pywin32-308-cp311-cp311-win32.whl", hash = "sha256:5d8c8015b24a7d6855b1550d8e660d8daa09983c80e5daf89a273e5c6fb5095a"}, - {file = "pywin32-308-cp311-cp311-win_amd64.whl", hash = "sha256:575621b90f0dc2695fec346b2d6302faebd4f0f45c05ea29404cefe35d89442b"}, - {file = "pywin32-308-cp311-cp311-win_arm64.whl", hash = "sha256:100a5442b7332070983c4cd03f2e906a5648a5104b8a7f50175f7906efd16bb6"}, - {file = "pywin32-308-cp312-cp312-win32.whl", hash = "sha256:587f3e19696f4bf96fde9d8a57cec74a57021ad5f204c9e627e15c33ff568897"}, - {file = "pywin32-308-cp312-cp312-win_amd64.whl", hash = "sha256:00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47"}, - {file = "pywin32-308-cp312-cp312-win_arm64.whl", hash = "sha256:9b4de86c8d909aed15b7011182c8cab38c8850de36e6afb1f0db22b8959e3091"}, - {file = "pywin32-308-cp313-cp313-win32.whl", hash = "sha256:1c44539a37a5b7b21d02ab34e6a4d314e0788f1690d65b48e9b0b89f31abbbed"}, - {file = "pywin32-308-cp313-cp313-win_amd64.whl", hash = "sha256:fd380990e792eaf6827fcb7e187b2b4b1cede0585e3d0c9e84201ec27b9905e4"}, - {file = "pywin32-308-cp313-cp313-win_arm64.whl", hash = "sha256:ef313c46d4c18dfb82a2431e3051ac8f112ccee1a34f29c263c583c568db63cd"}, - {file = "pywin32-308-cp37-cp37m-win32.whl", hash = "sha256:1f696ab352a2ddd63bd07430080dd598e6369152ea13a25ebcdd2f503a38f1ff"}, - {file = "pywin32-308-cp37-cp37m-win_amd64.whl", hash = "sha256:13dcb914ed4347019fbec6697a01a0aec61019c1046c2b905410d197856326a6"}, - {file = "pywin32-308-cp38-cp38-win32.whl", hash = "sha256:5794e764ebcabf4ff08c555b31bd348c9025929371763b2183172ff4708152f0"}, - {file = "pywin32-308-cp38-cp38-win_amd64.whl", hash = "sha256:3b92622e29d651c6b783e368ba7d6722b1634b8e70bd376fd7610fe1992e19de"}, - {file = "pywin32-308-cp39-cp39-win32.whl", hash = "sha256:7873ca4dc60ab3287919881a7d4f88baee4a6e639aa6962de25a98ba6b193341"}, - {file = "pywin32-308-cp39-cp39-win_amd64.whl", hash = "sha256:71b3322d949b4cc20776436a9c9ba0eeedcbc9c650daa536df63f0ff111bb920"}, -] - [[package]] name = "pywin32-ctypes" version = "0.2.3" @@ -2793,127 +2408,6 @@ files = [ [package.dependencies] pyyaml = "*" -[[package]] -name = "pyzmq" -version = "26.2.0" -description = "Python bindings for 0MQ" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:ddf33d97d2f52d89f6e6e7ae66ee35a4d9ca6f36eda89c24591b0c40205a3629"}, - {file = "pyzmq-26.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dacd995031a01d16eec825bf30802fceb2c3791ef24bcce48fa98ce40918c27b"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89289a5ee32ef6c439086184529ae060c741334b8970a6855ec0b6ad3ff28764"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5506f06d7dc6ecf1efacb4a013b1f05071bb24b76350832c96449f4a2d95091c"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ea039387c10202ce304af74def5021e9adc6297067f3441d348d2b633e8166a"}, - {file = "pyzmq-26.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2224fa4a4c2ee872886ed00a571f5e967c85e078e8e8c2530a2fb01b3309b88"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:28ad5233e9c3b52d76196c696e362508959741e1a005fb8fa03b51aea156088f"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1c17211bc037c7d88e85ed8b7d8f7e52db6dc8eca5590d162717c654550f7282"}, - {file = "pyzmq-26.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b8f86dd868d41bea9a5f873ee13bf5551c94cf6bc51baebc6f85075971fe6eea"}, - {file = "pyzmq-26.2.0-cp310-cp310-win32.whl", hash = "sha256:46a446c212e58456b23af260f3d9fb785054f3e3653dbf7279d8f2b5546b21c2"}, - {file = "pyzmq-26.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:49d34ab71db5a9c292a7644ce74190b1dd5a3475612eefb1f8be1d6961441971"}, - {file = "pyzmq-26.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:bfa832bfa540e5b5c27dcf5de5d82ebc431b82c453a43d141afb1e5d2de025fa"}, - {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:8f7e66c7113c684c2b3f1c83cdd3376103ee0ce4c49ff80a648643e57fb22218"}, - {file = "pyzmq-26.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3a495b30fc91db2db25120df5847d9833af237546fd59170701acd816ccc01c4"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77eb0968da535cba0470a5165468b2cac7772cfb569977cff92e240f57e31bef"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ace4f71f1900a548f48407fc9be59c6ba9d9aaf658c2eea6cf2779e72f9f317"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92a78853d7280bffb93df0a4a6a2498cba10ee793cc8076ef797ef2f74d107cf"}, - {file = "pyzmq-26.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:689c5d781014956a4a6de61d74ba97b23547e431e9e7d64f27d4922ba96e9d6e"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aca98bc423eb7d153214b2df397c6421ba6373d3397b26c057af3c904452e37"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f3496d76b89d9429a656293744ceca4d2ac2a10ae59b84c1da9b5165f429ad3"}, - {file = "pyzmq-26.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5c2b3bfd4b9689919db068ac6c9911f3fcb231c39f7dd30e3138be94896d18e6"}, - {file = "pyzmq-26.2.0-cp311-cp311-win32.whl", hash = "sha256:eac5174677da084abf378739dbf4ad245661635f1600edd1221f150b165343f4"}, - {file = "pyzmq-26.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:5a509df7d0a83a4b178d0f937ef14286659225ef4e8812e05580776c70e155d5"}, - {file = "pyzmq-26.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0e6091b157d48cbe37bd67233318dbb53e1e6327d6fc3bb284afd585d141003"}, - {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:ded0fc7d90fe93ae0b18059930086c51e640cdd3baebdc783a695c77f123dcd9"}, - {file = "pyzmq-26.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:17bf5a931c7f6618023cdacc7081f3f266aecb68ca692adac015c383a134ca52"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55cf66647e49d4621a7e20c8d13511ef1fe1efbbccf670811864452487007e08"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4661c88db4a9e0f958c8abc2b97472e23061f0bc737f6f6179d7a27024e1faa5"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea7f69de383cb47522c9c208aec6dd17697db7875a4674c4af3f8cfdac0bdeae"}, - {file = "pyzmq-26.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:7f98f6dfa8b8ccaf39163ce872bddacca38f6a67289116c8937a02e30bbe9711"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e3e0210287329272539eea617830a6a28161fbbd8a3271bf4150ae3e58c5d0e6"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6b274e0762c33c7471f1a7471d1a2085b1a35eba5cdc48d2ae319f28b6fc4de3"}, - {file = "pyzmq-26.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:29c6a4635eef69d68a00321e12a7d2559fe2dfccfa8efae3ffb8e91cd0b36a8b"}, - {file = "pyzmq-26.2.0-cp312-cp312-win32.whl", hash = "sha256:989d842dc06dc59feea09e58c74ca3e1678c812a4a8a2a419046d711031f69c7"}, - {file = "pyzmq-26.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a50625acdc7801bc6f74698c5c583a491c61d73c6b7ea4dee3901bb99adb27a"}, - {file = "pyzmq-26.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:4d29ab8592b6ad12ebbf92ac2ed2bedcfd1cec192d8e559e2e099f648570e19b"}, - {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726"}, - {file = "pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187"}, - {file = "pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115"}, - {file = "pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e"}, - {file = "pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5"}, - {file = "pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad"}, - {file = "pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797"}, - {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a"}, - {file = "pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797"}, - {file = "pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6"}, - {file = "pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0"}, - {file = "pyzmq-26.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3b55a4229ce5da9497dd0452b914556ae58e96a4381bb6f59f1305dfd7e53fc8"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9cb3a6460cdea8fe8194a76de8895707e61ded10ad0be97188cc8463ffa7e3a8"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8ab5cad923cc95c87bffee098a27856c859bd5d0af31bd346035aa816b081fe1"}, - {file = "pyzmq-26.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ed69074a610fad1c2fda66180e7b2edd4d31c53f2d1872bc2d1211563904cd9"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cccba051221b916a4f5e538997c45d7d136a5646442b1231b916d0164067ea27"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:0eaa83fc4c1e271c24eaf8fb083cbccef8fde77ec8cd45f3c35a9a123e6da097"}, - {file = "pyzmq-26.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9edda2df81daa129b25a39b86cb57dfdfe16f7ec15b42b19bfac503360d27a93"}, - {file = "pyzmq-26.2.0-cp37-cp37m-win32.whl", hash = "sha256:ea0eb6af8a17fa272f7b98d7bebfab7836a0d62738e16ba380f440fceca2d951"}, - {file = "pyzmq-26.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4ff9dc6bc1664bb9eec25cd17506ef6672d506115095411e237d571e92a58231"}, - {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2eb7735ee73ca1b0d71e0e67c3739c689067f055c764f73aac4cc8ecf958ee3f"}, - {file = "pyzmq-26.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a534f43bc738181aa7cbbaf48e3eca62c76453a40a746ab95d4b27b1111a7d2"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:aedd5dd8692635813368e558a05266b995d3d020b23e49581ddd5bbe197a8ab6"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8be4700cd8bb02cc454f630dcdf7cfa99de96788b80c51b60fe2fe1dac480289"}, - {file = "pyzmq-26.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fcc03fa4997c447dce58264e93b5aa2d57714fbe0f06c07b7785ae131512732"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:402b190912935d3db15b03e8f7485812db350d271b284ded2b80d2e5704be780"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8685fa9c25ff00f550c1fec650430c4b71e4e48e8d852f7ddcf2e48308038640"}, - {file = "pyzmq-26.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:76589c020680778f06b7e0b193f4b6dd66d470234a16e1df90329f5e14a171cd"}, - {file = "pyzmq-26.2.0-cp38-cp38-win32.whl", hash = "sha256:8423c1877d72c041f2c263b1ec6e34360448decfb323fa8b94e85883043ef988"}, - {file = "pyzmq-26.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:76589f2cd6b77b5bdea4fca5992dc1c23389d68b18ccc26a53680ba2dc80ff2f"}, - {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:b1d464cb8d72bfc1a3adc53305a63a8e0cac6bc8c5a07e8ca190ab8d3faa43c2"}, - {file = "pyzmq-26.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4da04c48873a6abdd71811c5e163bd656ee1b957971db7f35140a2d573f6949c"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d049df610ac811dcffdc147153b414147428567fbbc8be43bb8885f04db39d98"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:05590cdbc6b902101d0e65d6a4780af14dc22914cc6ab995d99b85af45362cc9"}, - {file = "pyzmq-26.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c811cfcd6a9bf680236c40c6f617187515269ab2912f3d7e8c0174898e2519db"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6835dd60355593de10350394242b5757fbbd88b25287314316f266e24c61d073"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc6bee759a6bddea5db78d7dcd609397449cb2d2d6587f48f3ca613b19410cfc"}, - {file = "pyzmq-26.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c530e1eecd036ecc83c3407f77bb86feb79916d4a33d11394b8234f3bd35b940"}, - {file = "pyzmq-26.2.0-cp39-cp39-win32.whl", hash = "sha256:367b4f689786fca726ef7a6c5ba606958b145b9340a5e4808132cc65759abd44"}, - {file = "pyzmq-26.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:e6fa2e3e683f34aea77de8112f6483803c96a44fd726d7358b9888ae5bb394ec"}, - {file = "pyzmq-26.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:7445be39143a8aa4faec43b076e06944b8f9d0701b669df4af200531b21e40bb"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:706e794564bec25819d21a41c31d4df2d48e1cc4b061e8d345d7fb4dd3e94072"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b435f2753621cd36e7c1762156815e21c985c72b19135dac43a7f4f31d28dd1"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:160c7e0a5eb178011e72892f99f918c04a131f36056d10d9c1afb223fc952c2d"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4a71d5d6e7b28a47a394c0471b7e77a0661e2d651e7ae91e0cab0a587859ca"}, - {file = "pyzmq-26.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:90412f2db8c02a3864cbfc67db0e3dcdbda336acf1c469526d3e869394fe001c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2ea4ad4e6a12e454de05f2949d4beddb52460f3de7c8b9d5c46fbb7d7222e02c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fc4f7a173a5609631bb0c42c23d12c49df3966f89f496a51d3eb0ec81f4519d6"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:878206a45202247781472a2d99df12a176fef806ca175799e1c6ad263510d57c"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17c412bad2eb9468e876f556eb4ee910e62d721d2c7a53c7fa31e643d35352e6"}, - {file = "pyzmq-26.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:0d987a3ae5a71c6226b203cfd298720e0086c7fe7c74f35fa8edddfbd6597eed"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:39887ac397ff35b7b775db7201095fc6310a35fdbae85bac4523f7eb3b840e20"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fdb5b3e311d4d4b0eb8b3e8b4d1b0a512713ad7e6a68791d0923d1aec433d919"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:226af7dcb51fdb0109f0016449b357e182ea0ceb6b47dfb5999d569e5db161d5"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bed0e799e6120b9c32756203fb9dfe8ca2fb8467fed830c34c877e25638c3fc"}, - {file = "pyzmq-26.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:29c7947c594e105cb9e6c466bace8532dc1ca02d498684128b339799f5248277"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cdeabcff45d1c219636ee2e54d852262e5c2e085d6cb476d938aee8d921356b3"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35cffef589bcdc587d06f9149f8d5e9e8859920a071df5a2671de2213bef592a"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18c8dc3b7468d8b4bdf60ce9d7141897da103c7a4690157b32b60acb45e333e6"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7133d0a1677aec369d67dd78520d3fa96dd7f3dcec99d66c1762870e5ea1a50a"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a96179a24b14fa6428cbfc08641c779a53f8fcec43644030328f44034c7f1f4"}, - {file = "pyzmq-26.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4f78c88905461a9203eac9faac157a2a0dbba84a0fd09fd29315db27be40af9f"}, - {file = "pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f"}, -] - -[package.dependencies] -cffi = {version = "*", markers = "implementation_name == \"pypy\""} - [[package]] name = "readme-renderer" version = "43.0" @@ -3215,25 +2709,6 @@ files = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -[[package]] -name = "stack-data" -version = "0.6.3" -description = "Extract data from python stack frames and tracebacks for informative displays" -optional = false -python-versions = "*" -files = [ - {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, - {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, -] - -[package.dependencies] -asttokens = ">=2.1.0" -executing = ">=1.2.0" -pure-eval = "*" - -[package.extras] -tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] - [[package]] name = "super-collections" version = "0.5.3" @@ -3276,41 +2751,6 @@ files = [ {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, ] -[[package]] -name = "tornado" -version = "6.4.1" -description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -optional = false -python-versions = ">=3.8" -files = [ - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, - {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"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, - {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, - {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, - {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, -] - -[[package]] -name = "traitlets" -version = "5.14.3" -description = "Traitlets Python configuration system" -optional = false -python-versions = ">=3.8" -files = [ - {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, - {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, -] - -[package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] - [[package]] name = "twine" version = "5.1.1" @@ -3496,17 +2936,6 @@ files = [ [package.extras] watchmedo = ["PyYAML (>=3.10)"] -[[package]] -name = "wcwidth" -version = "0.2.13" -description = "Measures the displayed width of unicode strings in a terminal" -optional = false -python-versions = "*" -files = [ - {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, - {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, -] - [[package]] name = "wheel" version = "0.45.0" @@ -3550,4 +2979,4 @@ svg = ["drawsvg"] [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "2a7968552d2d87fa30356dd7652f2e7f04a0cc26c4def85b53c9df04360699f0" +content-hash = "8265741752152b882fd54583370687115429b134b74bdaea9ff0cf1a200bedbe" diff --git a/pyproject.toml b/pyproject.toml index fdb51b1a..4d2841b5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -74,26 +74,34 @@ pygments = { version = ">=2.10.0,<3.0.0", optional = true } shapely = { version = ">=2.0.0,<3.0.0", optional = true } [tool.poetry.group.dev.dependencies] -mypy = "^1.13.0" poethepoet = "^0.29.0" -pytest = "^8.3.3" -ruff = "^0.7.3" jinja2 = "^3.1.2" -pre-commit = "^3.3.3" autoflake = "^2.2.0" -types-tzlocal = "^5.0.1.1" -ipykernel = "^6.25.0" -twine = ">=4.0.2,<6.0.0" -docutils = "0.20.1" filelock = "^3.14.0" dulwich = "^0.22.1" tzlocal = "^5.0.1" +types-tzlocal = "^5.0.1.1" pytest-xdist = { extras = ["psutil"], version = "^3.3.1" } +pytest = "^8.3.3" pytest-cov = ">=4.1,<6.0" pytest-lsp = "^0.4.2" pytest-asyncio = ">=0.23.7,<0.25.0" pytest-mock = "^3.14.0" +[tool.poetry.group.style] +optional = true + +[tool.poetry.group.style.dependencies] +ruff = "^0.7.3" +mypy = "^1.13.0" +pre-commit = "^3.3.3" + +[tool.poetry.group.deploy] +optional = true + +[tool.poetry.group.deploy.dependencies] +twine = "^5.1" + [tool.poetry.group.docs] optional = true @@ -132,24 +140,52 @@ gerber_lexer = "pygerber.gerber.pygments:GerberLexer" # ------------------------------------------------------------------------------------- # git hooks install-hooks = [ - { cmd = "poetry install --sync --with=docs --extras=all --no-ansi" }, + { cmd = "poetry install --sync --with=docs,style --extras=all --no-ansi" }, { cmd = "poetry run python -m scripts.install_hooks" }, { cmd = "poetry run pre-commit install --install-hooks --overwrite" }, ] -# ------------- -# hook triggers -run-code-quality-checks = [ - { cmd = "poetry install --sync --with=docs --extras=all --no-ansi" }, +prepare-test-style = [ + { cmd = "poetry install --sync --with=docs,style --extras=all --no-ansi" }, +] +test-style = [ { cmd = "poetry run pre-commit run --all-files -v" }, ] -# ------------------------------------------------------------------------------------- -run-unit-tests = [ +prepare-test-all = [ + { cmd = "poetry install --sync --with=docs --extras=all --no-ansi" }, +] +test-all = [ + { cmd = "poetry run pytest -s -n logical --cov=pygerber --cov-report=term-missing:skip-covered test/" }, +] +prepare-test-unit = [ + { cmd = "poetry install --sync --with=docs --extras=all --no-ansi" }, +] +test-unit = [ + { cmd = "poetry run pytest -s -n logical --cov=pygerber --cov-report=term-missing:skip-covered test/unit/" }, +] +prepare-test-e2e = [ { cmd = "poetry install --sync --with=docs --extras=all --no-ansi" }, - { cmd = "poetry run pytest --log-level=DEBUG -s -n logical --cov=pygerber --cov-report=term-missing:skip-covered" }, ] -run-type-checks = [ +test-e2e = [ + { cmd = "poetry run pytest -s -n logical --cov=pygerber --cov-report=term-missing:skip-covered test/e2e/" }, +] +prepare-test-type = [ + { cmd = "poetry install --sync --with=docs,style --extras=all --no-ansi" }, +] +test-type = [ { cmd = "poetry run mypy --config-file=pyproject.toml src/pygerber/ test/" }, ] +prepare-deploy-docs = [ + { cmd = "poetry install --sync --with=docs --extras=all --no-ansi" }, +] +deploy-latest-docs = [ + { cmd = "poetry run mike deploy --push --update-aliases $(poetry version | awk '{ print $2 }') latest --config-file mkdocs.yaml" } +] +deploy-stable-docs = [ + { cmd = "poetry run mike deploy --push --update-aliases $(poetry version | awk '{ print $2 }') stable --config-file mkdocs.yaml" } +] +prepare-deploy-package = [ + { cmd = "poetry install --sync --with=deploy --extras=all --no-ansi" }, +] [tool.ruff] lint.select = ["ALL"] @@ -345,3 +381,4 @@ required_plugins = [ "pytest-xdist", "pytest-cov", ] +asyncio_default_fixture_loop_scope = "function" diff --git a/test/test_vm/__init__.py b/test/unit/__init__.py similarity index 100% rename from test/test_vm/__init__.py rename to test/unit/__init__.py diff --git a/test/test_vm/test_commands/__init__.py b/test/unit/test_vm/__init__.py similarity index 100% rename from test/test_vm/test_commands/__init__.py rename to test/unit/test_vm/__init__.py diff --git a/test/test_vm/command_builders.py b/test/unit/test_vm/command_builders.py similarity index 100% rename from test/test_vm/command_builders.py rename to test/unit/test_vm/command_builders.py diff --git a/test/test_vm/test_commands/test_shape_segments/__init__.py b/test/unit/test_vm/test_commands/__init__.py similarity index 100% rename from test/test_vm/test_commands/test_shape_segments/__init__.py rename to test/unit/test_vm/test_commands/__init__.py diff --git a/test/test_vm/test_types/__init__.py b/test/unit/test_vm/test_commands/test_shape_segments/__init__.py similarity index 100% rename from test/test_vm/test_types/__init__.py rename to test/unit/test_vm/test_commands/test_shape_segments/__init__.py diff --git a/test/test_vm/test_commands/test_shape_segments/test_arc.py b/test/unit/test_vm/test_commands/test_shape_segments/test_arc.py similarity index 100% rename from test/test_vm/test_commands/test_shape_segments/test_arc.py rename to test/unit/test_vm/test_commands/test_shape_segments/test_arc.py diff --git a/test/test_vm/test_commands/test_shape_segments/test_line.py b/test/unit/test_vm/test_commands/test_shape_segments/test_line.py similarity index 100% rename from test/test_vm/test_commands/test_shape_segments/test_line.py rename to test/unit/test_vm/test_commands/test_shape_segments/test_line.py diff --git a/test/test_vm/test_pillow.py b/test/unit/test_vm/test_pillow.py similarity index 99% rename from test/test_vm/test_pillow.py rename to test/unit/test_vm/test_pillow.py index 63d3b78d..3bd6c23d 100644 --- a/test/test_vm/test_pillow.py +++ b/test/unit/test_vm/test_pillow.py @@ -16,7 +16,7 @@ build_main_origin_x_y_layer_origin_x_y_paste_x_y, build_main_origin_x_y_layer_origin_x_y_paste_x_y_no_main_origin_mark, ) -from test.test_vm.command_builders import ( +from test.unit.test_vm.command_builders import ( make_circle_in_center_fixed_canvas, make_circle_over_circle_in_center_fixed_canvas, make_main_layer, diff --git a/test/test_vm/test_pillow_assets/test_0_180.png b/test/unit/test_vm/test_pillow_assets/test_0_180.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_0_180.png rename to test/unit/test_vm/test_pillow_assets/test_0_180.png diff --git a/test/test_vm/test_pillow_assets/test_0_90.png b/test/unit/test_vm/test_pillow_assets/test_0_90.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_0_90.png rename to test/unit/test_vm/test_pillow_assets/test_0_90.png diff --git a/test/test_vm/test_pillow_assets/test_135_225.png b/test/unit/test_vm/test_pillow_assets/test_135_225.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_135_225.png rename to test/unit/test_vm/test_pillow_assets/test_135_225.png diff --git a/test/test_vm/test_pillow_assets/test_180_270.png b/test/unit/test_vm/test_pillow_assets/test_180_270.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_180_270.png rename to test/unit/test_vm/test_pillow_assets/test_180_270.png diff --git a/test/test_vm/test_pillow_assets/test_180_360.png b/test/unit/test_vm/test_pillow_assets/test_180_360.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_180_360.png rename to test/unit/test_vm/test_pillow_assets/test_180_360.png diff --git a/test/test_vm/test_pillow_assets/test_225_315.png b/test/unit/test_vm/test_pillow_assets/test_225_315.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_225_315.png rename to test/unit/test_vm/test_pillow_assets/test_225_315.png diff --git a/test/test_vm/test_pillow_assets/test_270_360.png b/test/unit/test_vm/test_pillow_assets/test_270_360.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_270_360.png rename to test/unit/test_vm/test_pillow_assets/test_270_360.png diff --git a/test/test_vm/test_pillow_assets/test_270_420.png b/test/unit/test_vm/test_pillow_assets/test_270_420.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_270_420.png rename to test/unit/test_vm/test_pillow_assets/test_270_420.png diff --git a/test/test_vm/test_pillow_assets/test_315_405.png b/test/unit/test_vm/test_pillow_assets/test_315_405.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_315_405.png rename to test/unit/test_vm/test_pillow_assets/test_315_405.png diff --git a/test/test_vm/test_pillow_assets/test_45_135.png b/test/unit/test_vm/test_pillow_assets/test_45_135.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_45_135.png rename to test/unit/test_vm/test_pillow_assets/test_45_135.png diff --git a/test/test_vm/test_pillow_assets/test_90_180.png b/test/unit/test_vm/test_pillow_assets/test_90_180.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_90_180.png rename to test/unit/test_vm/test_pillow_assets/test_90_180.png diff --git a/test/test_vm/test_pillow_assets/test_90_270.png b/test/unit/test_vm/test_pillow_assets/test_90_270.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_90_270.png rename to test/unit/test_vm/test_pillow_assets/test_90_270.png diff --git a/test/test_vm/test_pillow_assets/test_draw_circle_in_center.png b/test/unit/test_vm/test_pillow_assets/test_draw_circle_in_center.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_draw_circle_in_center.png rename to test/unit/test_vm/test_pillow_assets/test_draw_circle_in_center.png diff --git a/test/test_vm/test_pillow_assets/test_draw_circle_over_circle_in_center.png b/test/unit/test_vm/test_pillow_assets/test_draw_circle_over_circle_in_center.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_draw_circle_over_circle_in_center.png rename to test/unit/test_vm/test_pillow_assets/test_draw_circle_over_circle_in_center.png diff --git a/test/test_vm/test_pillow_assets/test_draw_obround_horizontal_in_center.png b/test/unit/test_vm/test_pillow_assets/test_draw_obround_horizontal_in_center.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_draw_obround_horizontal_in_center.png rename to test/unit/test_vm/test_pillow_assets/test_draw_obround_horizontal_in_center.png diff --git a/test/test_vm/test_pillow_assets/test_draw_obround_vertical_in_center.png b/test/unit/test_vm/test_pillow_assets/test_draw_obround_vertical_in_center.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_draw_obround_vertical_in_center.png rename to test/unit/test_vm/test_pillow_assets/test_draw_obround_vertical_in_center.png diff --git a/test/test_vm/test_pillow_assets/test_draw_rectangle_in_center.png b/test/unit/test_vm/test_pillow_assets/test_draw_rectangle_in_center.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_draw_rectangle_in_center.png rename to test/unit/test_vm/test_pillow_assets/test_draw_rectangle_in_center.png diff --git a/test/test_vm/test_pillow_assets/test_full_circle_with_quarter_arcs.png b/test/unit/test_vm/test_pillow_assets/test_full_circle_with_quarter_arcs.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_full_circle_with_quarter_arcs.png rename to test/unit/test_vm/test_pillow_assets/test_full_circle_with_quarter_arcs.png diff --git a/test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_0_0_circle_at_2_2_expect_circle_at_2_2.png b/test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_0_0_circle_at_2_2_expect_circle_at_2_2.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_0_0_circle_at_2_2_expect_circle_at_2_2.png rename to test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_0_0_circle_at_2_2_expect_circle_at_2_2.png diff --git a/test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_0_0_expect_circle_at_0_0.png b/test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_0_0_expect_circle_at_0_0.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_0_0_expect_circle_at_0_0.png rename to test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_0_0_expect_circle_at_0_0.png diff --git a/test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_2_2_circle_at_2_2_expect_circle_at_4_4.png b/test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_2_2_circle_at_2_2_expect_circle_at_4_4.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_2_2_circle_at_2_2_expect_circle_at_4_4.png rename to test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_2_2_circle_at_2_2_expect_circle_at_4_4.png diff --git a/test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_2_2_expect_circle_at_2_2.png b/test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_2_2_expect_circle_at_2_2.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_2_2_expect_circle_at_2_2.png rename to test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_2_2_expect_circle_at_2_2.png diff --git a/test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_8_8_expect_circle_at_8_8.png b/test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_8_8_expect_circle_at_8_8.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_8_8_expect_circle_at_8_8.png rename to test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_0_0_paste_8_8_expect_circle_at_8_8.png diff --git a/test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_2_2_paste_0_0_expect_circle_at_neg_2_neg_2.png b/test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_2_2_paste_0_0_expect_circle_at_neg_2_neg_2.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_2_2_paste_0_0_expect_circle_at_neg_2_neg_2.png rename to test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_2_2_paste_0_0_expect_circle_at_neg_2_neg_2.png diff --git a/test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_2_2_paste_2_2_circle_at_2_2_expect_circle_at_2_2.png b/test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_2_2_paste_2_2_circle_at_2_2_expect_circle_at_2_2.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_2_2_paste_2_2_circle_at_2_2_expect_circle_at_2_2.png rename to test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_2_2_paste_2_2_circle_at_2_2_expect_circle_at_2_2.png diff --git a/test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_2_2_paste_2_2_expect_circle_at_0_0.png b/test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_2_2_paste_2_2_expect_circle_at_0_0.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_2_2_paste_2_2_expect_circle_at_0_0.png rename to test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_2_2_paste_2_2_expect_circle_at_0_0.png diff --git a/test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_8_8_paste_8_8_expect_circle_at_0_0.png b/test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_8_8_paste_8_8_expect_circle_at_0_0.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_8_8_paste_8_8_expect_circle_at_0_0.png rename to test/unit/test_vm/test_pillow_assets/test_main_origin_0_0_layer_origin_8_8_paste_8_8_expect_circle_at_0_0.png diff --git a/test/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_0_0_paste_0_0_expect_circle_at_0_0.png b/test/unit/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_0_0_paste_0_0_expect_circle_at_0_0.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_0_0_paste_0_0_expect_circle_at_0_0.png rename to test/unit/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_0_0_paste_0_0_expect_circle_at_0_0.png diff --git a/test/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_0_0_paste_2_2_expect_circle_at_2_2.png b/test/unit/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_0_0_paste_2_2_expect_circle_at_2_2.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_0_0_paste_2_2_expect_circle_at_2_2.png rename to test/unit/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_0_0_paste_2_2_expect_circle_at_2_2.png diff --git a/test/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_2_2_paste_0_0_expect_circle_at_neg_2_neg_2.png b/test/unit/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_2_2_paste_0_0_expect_circle_at_neg_2_neg_2.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_2_2_paste_0_0_expect_circle_at_neg_2_neg_2.png rename to test/unit/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_2_2_paste_0_0_expect_circle_at_neg_2_neg_2.png diff --git a/test/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_2_2_paste_2_2_expect_circle_at_0_0.png b/test/unit/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_2_2_paste_2_2_expect_circle_at_0_0.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_2_2_paste_2_2_expect_circle_at_0_0.png rename to test/unit/test_vm/test_pillow_assets/test_main_origin_2_2_layer_origin_2_2_paste_2_2_expect_circle_at_0_0.png diff --git a/test/test_vm/test_pillow_assets/test_main_origin_neg_8_neg_8_layer_origin_4_4_paste_2_2_circle_at_2_2_expect_circle_at_0_0.png b/test/unit/test_vm/test_pillow_assets/test_main_origin_neg_8_neg_8_layer_origin_4_4_paste_2_2_circle_at_2_2_expect_circle_at_0_0.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_main_origin_neg_8_neg_8_layer_origin_4_4_paste_2_2_circle_at_2_2_expect_circle_at_0_0.png rename to test/unit/test_vm/test_pillow_assets/test_main_origin_neg_8_neg_8_layer_origin_4_4_paste_2_2_circle_at_2_2_expect_circle_at_0_0.png diff --git a/test/test_vm/test_pillow_assets/test_main_origin_neg_8_neg_8_layer_origin_4_4_paste_2_2_circle_at_2_2_expect_circle_at_0_0_no_main_origin_mark.png b/test/unit/test_vm/test_pillow_assets/test_main_origin_neg_8_neg_8_layer_origin_4_4_paste_2_2_circle_at_2_2_expect_circle_at_0_0_no_main_origin_mark.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_main_origin_neg_8_neg_8_layer_origin_4_4_paste_2_2_circle_at_2_2_expect_circle_at_0_0_no_main_origin_mark.png rename to test/unit/test_vm/test_pillow_assets/test_main_origin_neg_8_neg_8_layer_origin_4_4_paste_2_2_circle_at_2_2_expect_circle_at_0_0_no_main_origin_mark.png diff --git a/test/test_vm/test_pillow_assets/test_paste_circle_over_circle_in_center.png b/test/unit/test_vm/test_pillow_assets/test_paste_circle_over_circle_in_center.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_paste_circle_over_circle_in_center.png rename to test/unit/test_vm/test_pillow_assets/test_paste_circle_over_circle_in_center.png diff --git a/test/test_vm/test_pillow_assets/test_paste_circle_over_paste_circle_in_center.png b/test/unit/test_vm/test_pillow_assets/test_paste_circle_over_paste_circle_in_center.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_paste_circle_over_paste_circle_in_center.png rename to test/unit/test_vm/test_pillow_assets/test_paste_circle_over_paste_circle_in_center.png diff --git a/test/test_vm/test_pillow_assets/test_paste_negative_rectangle_in_center.png b/test/unit/test_vm/test_pillow_assets/test_paste_negative_rectangle_in_center.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_paste_negative_rectangle_in_center.png rename to test/unit/test_vm/test_pillow_assets/test_paste_negative_rectangle_in_center.png diff --git a/test/test_vm/test_pillow_assets/test_paste_rectangle_in_center.png b/test/unit/test_vm/test_pillow_assets/test_paste_rectangle_in_center.png similarity index 100% rename from test/test_vm/test_pillow_assets/test_paste_rectangle_in_center.png rename to test/unit/test_vm/test_pillow_assets/test_paste_rectangle_in_center.png diff --git a/test/test_vm/test_shapely.py b/test/unit/test_vm/test_shapely.py similarity index 99% rename from test/test_vm/test_shapely.py rename to test/unit/test_vm/test_shapely.py index 1bc53ae7..4fba19f3 100644 --- a/test/test_vm/test_shapely.py +++ b/test/unit/test_vm/test_shapely.py @@ -16,7 +16,7 @@ build_main_origin_x_y_layer_origin_x_y_paste_x_y, build_main_origin_x_y_layer_origin_x_y_paste_x_y_no_main_origin_mark, ) -from test.test_vm.command_builders import ( +from test.unit.test_vm.command_builders import ( make_circle_in_center_fixed_canvas, make_circle_over_circle_in_center_fixed_canvas, make_intersecting_circle_circle, diff --git a/test/unit/test_vm/test_types/__init__.py b/test/unit/test_vm/test_types/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/test/test_vm/test_types/test_box.py b/test/unit/test_vm/test_types/test_box.py similarity index 100% rename from test/test_vm/test_types/test_box.py rename to test/unit/test_vm/test_types/test_box.py diff --git a/test/test_vm/test_vector.py b/test/unit/test_vm/test_vector.py similarity index 100% rename from test/test_vm/test_vector.py rename to test/unit/test_vm/test_vector.py diff --git a/test/test_vm/test_vm.py b/test/unit/test_vm/test_vm.py similarity index 100% rename from test/test_vm/test_vm.py rename to test/unit/test_vm/test_vm.py