From 6f1e52995db1f92459679a2d76e60d47e868dea8 Mon Sep 17 00:00:00 2001 From: daquinteroflex Date: Wed, 5 Nov 2025 20:07:37 +0100 Subject: [PATCH] testpypi --- .../tidy3d-docs-sync-readthedocs-repo.yml | 11 - .../workflows/tidy3d-python-client-deploy.yml | 328 ++++++++++++++++++ .../tidy3d-python-client-release.yml | 156 ++++++--- dev.Dockerfile | 7 + poetry.lock | 103 +++++- pyproject.toml | 9 +- 6 files changed, 545 insertions(+), 69 deletions(-) create mode 100644 .github/workflows/tidy3d-python-client-deploy.yml diff --git a/.github/workflows/tidy3d-docs-sync-readthedocs-repo.yml b/.github/workflows/tidy3d-docs-sync-readthedocs-repo.yml index 3c06ec1e2a..981f493417 100644 --- a/.github/workflows/tidy3d-docs-sync-readthedocs-repo.yml +++ b/.github/workflows/tidy3d-docs-sync-readthedocs-repo.yml @@ -32,17 +32,6 @@ on: synced_ref: description: 'The ref that was synced to the mirror' value: ${{ jobs.build-and-deploy.outputs.synced_ref }} - - push: - branches: - - main - - latest - - develop - - 'pre/*' - - 'demo/*' - tags: - - 'v*' - - 'demo/*' permissions: contents: read diff --git a/.github/workflows/tidy3d-python-client-deploy.yml b/.github/workflows/tidy3d-python-client-deploy.yml new file mode 100644 index 0000000000..1f5be51135 --- /dev/null +++ b/.github/workflows/tidy3d-python-client-deploy.yml @@ -0,0 +1,328 @@ +name: "public/tidy3d/python-client-deploy" + +on: + workflow_dispatch: + inputs: + release_tag: + description: 'Release tag to deploy (e.g., v2.10.0, v2.10.0rc1)' + required: true + type: string + + deploy_testpypi: + description: 'Deploy to TestPyPI (recommended first step)' + type: boolean + default: false + + deploy_pypi: + description: 'Deploy to production PyPI' + type: boolean + default: false + + deploy_aws: + description: 'Deploy to AWS CodeArtifact' + type: boolean + default: false + + workflow_call: + inputs: + release_tag: + description: 'Release tag to deploy' + required: true + type: string + deploy_testpypi: + type: boolean + default: false + deploy_pypi: + type: boolean + default: false + deploy_aws: + type: boolean + default: false + +permissions: + contents: read + +env: + AWS_REGION: "us-east-1" + +jobs: + validate-inputs: + name: validate-deployment-inputs + runs-on: ubuntu-latest + outputs: + release_tag: ${{ env.RELEASE_TAG }} + deploy_testpypi: ${{ env.DEPLOY_TESTPYPI }} + deploy_pypi: ${{ env.DEPLOY_PYPI }} + deploy_aws: ${{ env.DEPLOY_AWS }} + env: + RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.release_tag || inputs.release_tag }} + DEPLOY_TESTPYPI: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.deploy_testpypi || inputs.deploy_testpypi }} + DEPLOY_PYPI: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.deploy_pypi || inputs.deploy_pypi }} + DEPLOY_AWS: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.deploy_aws || inputs.deploy_aws }} + steps: + - name: validate-inputs + run: | + set -e + echo "=== Deployment Configuration ===" + echo "Release tag: $RELEASE_TAG" + echo "Deploy to TestPyPI: $DEPLOY_TESTPYPI" + echo "Deploy to PyPI: $DEPLOY_PYPI" + echo "Deploy to AWS CodeArtifact: $DEPLOY_AWS" + echo "" + + # Validate at least one target is selected + if [[ "$DEPLOY_TESTPYPI" != "true" && "$DEPLOY_PYPI" != "true" && "$DEPLOY_AWS" != "true" ]]; then + echo "Error: At least one deployment target must be selected" + exit 1 + fi + + # Validate tag format + TAG_REGEX='^v[0-9]+\.[0-9]+\.[0-9]+(rc[0-9]+)?$' + if [[ ! "$RELEASE_TAG" =~ $TAG_REGEX ]]; then + echo " Warning: Tag format doesn't match standard pattern v{major}.{minor}.{patch}[rc{num}]" + echo " Tag: $RELEASE_TAG" + echo " Continuing anyway..." + fi + + echo "Validation passed" + + build-package: + name: build-distribution-package + needs: validate-inputs + runs-on: ubuntu-latest + steps: + - name: checkout-tag + uses: actions/checkout@v4 + with: + ref: ${{ needs.validate-inputs.outputs.release_tag }} + persist-credentials: false + + - name: setup-python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: install-poetry + run: | + python -m pip install --upgrade pip + python -m pip install poetry + + - name: build-package + env: + RELEASE_TAG: ${{ needs.validate-inputs.outputs.release_tag }} + run: | + echo "Building package from tag ${RELEASE_TAG}..." + poetry build + echo "" + echo "Build artifacts:" + ls -lh dist/ + echo "" + echo "Package built successfully" + + - name: upload-artifacts + uses: actions/upload-artifact@v4 + with: + name: dist-${{ needs.validate-inputs.outputs.release_tag }} + path: dist/ + retention-days: 7 + + deploy-testpypi: + name: deploy-to-testpypi + needs: [validate-inputs, build-package] + if: needs.validate-inputs.outputs.deploy_testpypi == 'true' + runs-on: ubuntu-latest + steps: + - name: download-artifacts + uses: actions/download-artifact@v4 + with: + name: dist-${{ needs.validate-inputs.outputs.release_tag }} + path: dist/ + + - name: setup-python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: install-twine + run: | + python -m pip install --upgrade pip + python -m pip install twine + + - name: publish-to-testpypi + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }} + run: | + echo "Publishing to TestPyPI..." + # zizmor: ignore[use-trusted-publishing] + python -m twine upload \ + --repository-url https://test.pypi.org/legacy/ \ + --verbose \ + dist/* + echo "" + echo "Successfully published to TestPyPI" + echo "View at: https://test.pypi.org/project/tidy3d/" + + deploy-pypi: + name: deploy-to-pypi + needs: [validate-inputs, build-package, deploy-testpypi] + # Run after TestPyPI succeeds (or is skipped if not selected) + if: | + always() && + needs.validate-inputs.outputs.deploy_pypi == 'true' && + needs.build-package.result == 'success' && + (needs.deploy-testpypi.result == 'success' || needs.deploy-testpypi.result == 'skipped') + runs-on: ubuntu-latest + steps: + - run: echo "hi" + # - name: download-artifacts + # uses: actions/download-artifact@v4 + # with: + # name: dist-${{ needs.validate-inputs.outputs.release_tag }} + # path: dist/ + + # - name: setup-python + # uses: actions/setup-python@v5 + # with: + # python-version: '3.10' + + # - name: install-twine + # run: | + # python -m pip install --upgrade pip + # python -m pip install twine + + # - name: publish-to-pypi + # env: + # TWINE_USERNAME: __token__ + # TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} + # run: | + # echo "Publishing to production PyPI..." + # python -m twine upload \ + # --repository pypi \ + # --verbose \ + # dist/* + # echo "" + # echo "Successfully published to PyPI" + # echo " View at: https://pypi.org/project/tidy3d/" + + deploy-aws-codeartifact: + name: deploy-to-aws-codeartifact + needs: [validate-inputs, build-package] + if: | + always() && + needs.validate-inputs.outputs.deploy_aws == 'true' && + needs.build-package.result == 'success' + runs-on: ubuntu-latest + steps: + - name: download-artifacts + uses: actions/download-artifact@v4 + with: + name: dist-${{ needs.validate-inputs.outputs.release_tag }} + path: dist/ + + - name: setup-python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: install-twine + run: | + python -m pip install --upgrade pip + python -m pip install twine + + - name: configure-aws-credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-region: ${{ env.AWS_REGION }} + aws-access-key-id: ${{ secrets.AWS_CODEARTIFACT_ACCESS_KEY }} + aws-secret-access-key: ${{ secrets.AWS_CODEARTIFACT_ACCESS_SECRET }} + + - name: configure-codeartifact-package + run: | + echo "Configuring CodeArtifact package settings..." + aws codeartifact put-package-origin-configuration \ + --domain flexcompute \ + --repository pypi-releases \ + --format pypi \ + --package tidy3d \ + --restrictions '{"publish":"ALLOW", "upstream":"BLOCK"}' + + - name: get-codeartifact-token + run: | + echo "Getting CodeArtifact authorization token..." + CODEARTIFACT_AUTH_TOKEN=$(aws codeartifact get-authorization-token \ + --domain flexcompute \ + --domain-owner 625554095313 \ + --region us-east-1 \ + --query authorizationToken \ + --output text) + echo "CODEARTIFACT_AUTH_TOKEN=${CODEARTIFACT_AUTH_TOKEN}" >> $GITHUB_ENV + + + - name: publish-to-codeartifact + env: + TWINE_PASSWORD: ${{ env.CODEARTIFACT_AUTH_TOKEN }} + run: | + echo "Publishing to AWS CodeArtifact..." + # zizmor: ignore[use-trusted-publishing] + python -m twine upload \ + --repository-url https://flexcompute-625554095313.d.codeartifact.us-east-1.amazonaws.com/pypi/pypi-releases/ \ + --verbose \ + -u aws \ + -p "$TWINE_PASSWORD" \ + dist/* + echo "" + echo "Successfully published to AWS CodeArtifact" + + deployment-summary: + name: deployment-summary + needs: [validate-inputs, build-package, deploy-testpypi, deploy-pypi, deploy-aws-codeartifact] + if: always() + runs-on: ubuntu-latest + steps: + - name: generate-summary + env: + RELEASE_TAG: ${{ needs.validate-inputs.outputs.release_tag }} + BUILD_RESULT: ${{ needs.build-package.result }} + TESTPYPI_RESULT: ${{ needs.deploy-testpypi.result }} + PYPI_RESULT: ${{ needs.deploy-pypi.result }} + AWS_RESULT: ${{ needs.deploy-aws-codeartifact.result }} + DEPLOY_TESTPYPI: ${{ needs.validate-inputs.outputs.deploy_testpypi }} + DEPLOY_PYPI: ${{ needs.validate-inputs.outputs.deploy_pypi }} + DEPLOY_AWS: ${{ needs.validate-inputs.outputs.deploy_aws }} + run: | + echo "=== Deployment Summary ===" + echo "Release Tag: ${RELEASE_TAG}" + echo "" + echo "Build Package: ${BUILD_RESULT}" + echo "TestPyPI: ${TESTPYPI_RESULT}" + echo "PyPI: ${PYPI_RESULT}" + echo "AWS CodeArtifact: ${AWS_RESULT}" + echo "" + + # Check for failures + if [[ "${BUILD_RESULT}" == "failure" ]]; then + echo "Build failed" + exit 1 + fi + + # Check if any selected deployment failed + failed=false + if [[ "${DEPLOY_TESTPYPI}" == "true" && "${TESTPYPI_RESULT}" == "failure" ]]; then + echo "TestPyPI deployment failed" + failed=true + fi + if [[ "${DEPLOY_PYPI}" == "true" && "${PYPI_RESULT}" == "failure" ]]; then + echo "PyPI deployment failed" + failed=true + fi + if [[ "${DEPLOY_AWS}" == "true" && "${AWS_RESULT}" == "failure" ]]; then + echo "AWS CodeArtifact deployment failed" + failed=true + fi + + if [[ "$failed" == "true" ]]; then + exit 1 + fi + + echo "All selected deployments completed successfully" diff --git a/.github/workflows/tidy3d-python-client-release.yml b/.github/workflows/tidy3d-python-client-release.yml index 0cca1a3ff8..b064bcb8cb 100644 --- a/.github/workflows/tidy3d-python-client-release.yml +++ b/.github/workflows/tidy3d-python-client-release.yml @@ -9,13 +9,15 @@ on: type: string release_type: - description: 'Release Type (draft=test, final=PyPI)' + description: 'Release Type (determines deployment targets)' type: choice default: 'draft' required: false options: - draft - - final + - codeartifact + - testpypi + - pypi workflow_control: description: 'Workflow Stage Control' @@ -54,7 +56,7 @@ on: type: string release_type: - description: 'Release Type (draft=test, final=PyPI)' + description: 'Release Type (determines deployment targets)' type: string default: 'draft' required: false @@ -79,6 +81,21 @@ on: description: 'Run submodule tests' type: boolean default: true + + deploy_testpypi: + description: 'Deploy to TestPyPI' + type: boolean + default: false + + deploy_pypi: + description: 'Deploy to production PyPI' + type: boolean + default: false + + deploy_aws: + description: 'Deploy to AWS CodeArtifact' + type: boolean + default: false outputs: workflow_success: @@ -104,7 +121,9 @@ jobs: run_cli_tests: ${{ steps.determine-workflow-steps.outputs.run_cli_tests }} run_submodule_tests: ${{ steps.determine-workflow-steps.outputs.run_submodule_tests }} deploy_github_release: ${{ steps.determine-workflow-steps.outputs.deploy_github_release }} + deploy_testpypi: ${{ steps.determine-workflow-steps.outputs.deploy_testpypi }} deploy_pypi: ${{ steps.determine-workflow-steps.outputs.deploy_pypi }} + deploy_aws: ${{ steps.determine-workflow-steps.outputs.deploy_aws }} sync_readthedocs: ${{ steps.determine-workflow-steps.outputs.sync_readthedocs }} sync_branches: ${{ steps.determine-workflow-steps.outputs.sync_branches }} env: @@ -114,6 +133,9 @@ jobs: CLIENT_TESTS: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.client_tests || inputs.client_tests }} CLI_TESTS: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.cli_tests || inputs.cli_tests }} SUBMODULE_TESTS: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.submodule_tests || inputs.submodule_tests }} + DEPLOY_TESTPYPI: ${{ inputs.deploy_testpypi || false }} + DEPLOY_PYPI: ${{ inputs.deploy_pypi || false }} + DEPLOY_AWS: ${{ inputs.deploy_aws || false }} steps: - name: validate-tag-format run: | @@ -122,9 +144,9 @@ jobs: echo "Release tag: $RELEASE_TAG" echo "Release type: $RELEASE_TYPE" - # Only enforce strict validation for final releases - if [[ "$RELEASE_TYPE" == "final" ]]; then - echo "Final release detected - applying strict tag validation" + # Only enforce strict validation for PyPI releases + if [[ "$RELEASE_TYPE" == "pypi" ]]; then + echo "PyPI release detected - applying strict tag validation" # Tag must match semantic versioning: v{major}.{minor}.{patch}[rc{num}] TAG_REGEX='^v[0-9]+\.[0-9]+\.[0-9]+(rc[0-9]+)?$' @@ -138,7 +160,7 @@ jobs: echo "Tag format is valid" else - echo "Draft release - skipping strict tag validation" + echo "Non-PyPI release - skipping strict tag validation" echo "Tag accepted: $RELEASE_TAG" fi @@ -153,6 +175,9 @@ jobs: echo "CLIENT_TESTS: $CLIENT_TESTS" echo "CLI_TESTS: $CLI_TESTS" echo "SUBMODULE_TESTS: $SUBMODULE_TESTS" + echo "DEPLOY_TESTPYPI: $DEPLOY_TESTPYPI" + echo "DEPLOY_PYPI: $DEPLOY_PYPI" + echo "DEPLOY_AWS: $DEPLOY_AWS" echo "" # ============================================ @@ -220,19 +245,19 @@ jobs: SEMVER_REGEX='^v[0-9]+\.[0-9]+\.[0-9]+$' # Only push to latest if: - # 1. Release type is final + # 1. Release type is pypi # 2. Not an RC release # 3. Tag matches semantic versioning pattern v{major}.{minor}.{patch} - if [[ "$RELEASE_TYPE" == "final" && "$is_rc_release" == "false" && "$RELEASE_TAG" =~ $SEMVER_REGEX ]]; then + if [[ "$RELEASE_TYPE" == "pypi" && "$is_rc_release" == "false" && "$RELEASE_TAG" =~ $SEMVER_REGEX ]]; then push_to_latest=true echo "=== Push to Latest ===" echo "Will push to 'latest' branch in readthedocs" - echo " Conditions met: final release + non-RC + semantic version tag" + echo " Conditions met: pypi release + non-RC + semantic version tag" else echo "=== Push to Latest ===" echo " Will NOT push to 'latest' branch" - if [[ "$RELEASE_TYPE" != "final" ]]; then - echo " Reason: Not a final release (is $RELEASE_TYPE)" + if [[ "$RELEASE_TYPE" != "pypi" ]]; then + echo " Reason: Not a PyPI release (is $RELEASE_TYPE)" elif [[ "$is_rc_release" == "true" ]]; then echo " Reason: RC release" elif [[ ! "$RELEASE_TAG" =~ $SEMVER_REGEX ]]; then @@ -252,13 +277,13 @@ jobs: [[ "$CLIENT_TESTS" == "true" ]] && run_client_tests=true [[ "$CLI_TESTS" == "true" ]] && run_cli_tests=true - # Submodule tests: user input OR auto-enable for final non-RC releases + # Submodule tests: user input OR auto-enable for PyPI non-RC releases if [[ "$SUBMODULE_TESTS" == "true" ]]; then run_submodule_tests=true echo "?? Submodule tests enabled by user input" elif [[ "$push_to_latest" == "true" ]]; then run_submodule_tests=true - echo "?? Submodule tests auto-enabled for final non-RC release (push_to_latest=true)" + echo "?? Submodule tests auto-enabled for PyPI non-RC release (push_to_latest=true)" fi fi @@ -272,7 +297,9 @@ jobs: # PART 4: DEPLOYMENT CONTROL # ============================================ deploy_github_release=false + deploy_testpypi=false deploy_pypi=false + deploy_aws=false sync_readthedocs=false sync_branches=false @@ -281,16 +308,56 @@ jobs: deploy_github_release=true sync_readthedocs=true - # Only publish to PyPI and sync branches on final releases - if [[ "$RELEASE_TYPE" == "final" ]]; then - deploy_pypi=true + # Deployment target logic: + # 1. If any deployment checkbox is explicitly set, use those + # 2. Otherwise, use automatic defaults based on release_type + + if [[ "$DEPLOY_TESTPYPI" == "true" || "$DEPLOY_PYPI" == "true" || "$DEPLOY_AWS" == "true" ]]; then + # Manual override: use checkbox selections + echo "Using manual deployment target selections" + deploy_testpypi=$DEPLOY_TESTPYPI + deploy_pypi=$DEPLOY_PYPI + deploy_aws=$DEPLOY_AWS + else + # Automatic defaults based on release_type + echo "Using automatic deployment defaults for release_type: $RELEASE_TYPE" + case "$RELEASE_TYPE" in + pypi) + # PyPI releases: deploy to all targets (TestPyPI, PyPI, AWS CodeArtifact) + deploy_testpypi=true + deploy_pypi=true + deploy_aws=true + ;; + testpypi) + # TestPyPI releases: deploy to TestPyPI and AWS CodeArtifact + deploy_testpypi=true + deploy_aws=true + ;; + codeartifact) + # CodeArtifact only + deploy_aws=true + ;; + draft) + # Draft releases: no deployment + echo "Draft release - no automatic deployments" + ;; + *) + echo "Unknown release_type: $RELEASE_TYPE - no automatic deployments" + ;; + esac + fi + + # Sync branches on PyPI releases if deploying to PyPI + if [[ "$RELEASE_TYPE" == "pypi" && "$deploy_pypi" == "true" ]]; then sync_branches=true fi fi echo "=== Deployment Control ===" echo "deploy_github_release: $deploy_github_release" + echo "deploy_testpypi: $deploy_testpypi" echo "deploy_pypi: $deploy_pypi" + echo "deploy_aws: $deploy_aws" echo "sync_readthedocs: $sync_readthedocs" echo "sync_branches: $sync_branches" echo "" @@ -307,7 +374,9 @@ jobs: echo "run_cli_tests=$run_cli_tests" >> $GITHUB_OUTPUT echo "run_submodule_tests=$run_submodule_tests" >> $GITHUB_OUTPUT echo "deploy_github_release=$deploy_github_release" >> $GITHUB_OUTPUT + echo "deploy_testpypi=$deploy_testpypi" >> $GITHUB_OUTPUT echo "deploy_pypi=$deploy_pypi" >> $GITHUB_OUTPUT + echo "deploy_aws=$deploy_aws" >> $GITHUB_OUTPUT echo "sync_readthedocs=$sync_readthedocs" >> $GITHUB_OUTPUT echo "sync_branches=$sync_branches" >> $GITHUB_OUTPUT @@ -441,44 +510,23 @@ jobs: # env: # GITHUB_TOKEN: ${{ secrets.GH_PAT }} - pypi-release: - name: publish-to-pypi + deploy-packages: + name: deploy-to-package-repositories needs: [determine-workflow-scope, compile-tests-results] if: | always() && (needs.compile-tests-results.outputs.proceed_deploy == 'true' || needs.compile-tests-results.result == 'skipped') && - needs.determine-workflow-scope.outputs.deploy_pypi == 'true' - runs-on: ubuntu-latest - env: - RELEASE_TAG: ${{ needs.determine-workflow-scope.outputs.release_tag }} - steps: - - name: checkout-tag - uses: actions/checkout@v4 - with: - ref: ${{ env.RELEASE_TAG }} - persist-credentials: false - - - name: setup-python - uses: actions/setup-python@v5 - with: - python-version: '3.10' - - - name: install-build-tools - run: | - python -m pip install --upgrade pip - python -m pip install setuptools wheel twine build - - - name: build-package - run: | - echo "Building package from tag $RELEASE_TAG..." - python -m build - ls -lh dist/ - - - name: publish-to-pypi - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} - run: | # zizmor: ignore[use-trusted-publishing] - echo "Publishing to PyPI..." - python -m twine upload --repository pypi dist/* - echo "Published to PyPI" + needs.determine-workflow-scope.outputs.run_deploy == 'true' && + (needs.determine-workflow-scope.outputs.deploy_testpypi == 'true' || + needs.determine-workflow-scope.outputs.deploy_pypi == 'true' || + needs.determine-workflow-scope.outputs.deploy_aws == 'true') + uses: ./.github/workflows/tidy3d-python-client-deploy.yml + permissions: + contents: read + id-token: write + with: + release_tag: ${{ needs.determine-workflow-scope.outputs.release_tag }} + deploy_testpypi: ${{ needs.determine-workflow-scope.outputs.deploy_testpypi == 'true' }} + deploy_pypi: ${{ needs.determine-workflow-scope.outputs.deploy_pypi == 'true' }} + deploy_aws: ${{ needs.determine-workflow-scope.outputs.deploy_aws == 'true' }} + secrets: inherit diff --git a/dev.Dockerfile b/dev.Dockerfile index 7982e47693..de7dce7c78 100644 --- a/dev.Dockerfile +++ b/dev.Dockerfile @@ -10,6 +10,13 @@ RUN apt-get update && \ xsel \ xclip +RUN apt-get update && apt-get install -y zip unzip curl \ + && rm -rf /var/lib/apt/lists/* \ + && curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" \ + && unzip awscliv2.zip \ + && ./aws/install \ + && rm -rf aws awscliv2.zip + ENV POETRY_HOME=/opt/poetry RUN curl -sSL https://install.python-poetry.org | python3 - ENV PATH="/root/.local/bin:${POETRY_HOME}/bin:${PATH}" diff --git a/poetry.lock b/poetry.lock index 87c13d0116..b5c7338527 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.4 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. [[package]] name = "absl-py" @@ -1668,40 +1668,61 @@ markers = "extra == \"dev\" or extra == \"docs\" or extra == \"gdstk\"" files = [ {file = "gdstk-0.9.61-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8db8120b5b8864de074ed773d4c0788100b76eecd2bf327a6de338f011745e3f"}, {file = "gdstk-0.9.61-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ad942da613f6274e391371771b8cfef2854eb69f628914f716f518929567dcd4"}, + {file = "gdstk-0.9.61-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3b49ff5e43764783d2053b129fe1eac152910e2d062dfc2fd2408c9b91a043d5"}, {file = "gdstk-0.9.61-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5e53c0f765796b4fc449b72c800924df2e936820087816686e987962b3f0452a"}, {file = "gdstk-0.9.61-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc601258b850595b34e22b5c0fd1d98724a053faa4b1a23517c693b6eb01e275"}, + {file = "gdstk-0.9.61-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8ab2644f04a3d91e158bfce7c5dbdc60f09745cf7dc7fc19e9255cb6e6d9547b"}, {file = "gdstk-0.9.61-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:4aa897a629d20bca211cacf36e35a7316a5d6cfe03effb6af19c0eb7fd225421"}, {file = "gdstk-0.9.61-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9d20a09f06596ff2926e6b4ad12f3b0ae0ce545bf60211b96c2f9791f1df37fe"}, {file = "gdstk-0.9.61-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:688cc52aa1a5b9016eb0787a9cea4943a1aa2cc3d8d3cbeeaa44b3203f71e38f"}, {file = "gdstk-0.9.61-cp310-cp310-win_amd64.whl", hash = "sha256:5214c4f89fb9ff60ced79f6d2d28de4c5d5b588c9ef930fe72333edaa5e0bcf2"}, {file = "gdstk-0.9.61-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5fab80fa1e5ac4d956a04fdc78fb6971cb32a43418553939ee4ccf4eba6d4496"}, {file = "gdstk-0.9.61-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:82706a72f37c70340978fb70777cf94119408593f5a8c73c0700c0b84486a3fe"}, + {file = "gdstk-0.9.61-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6857359fc517fa91d6c0cd179cf09290aaebf538869d825585d9a0ed3cec754d"}, {file = "gdstk-0.9.61-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:459b1f28a6283bb61ed28c745aba3d49c5cbd9424fb81f76023d3f44b92c6257"}, {file = "gdstk-0.9.61-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3812aadf36764bb6ca86f1b9f4bdf8f8c41749bcdf1e3b45d6263e48b4f97eab"}, + {file = "gdstk-0.9.61-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3c6f0df208263039851ac5d3d94fcddbc80029a69918d53c0b7dc392725d8fb"}, {file = "gdstk-0.9.61-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:7e166ef1c26fc0f48fa8194e54683e61ca43b72d3342708d4229855dcad137ed"}, {file = "gdstk-0.9.61-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:79dc9f0f0c5f6860199c9af09564bbfed4c34885d3f5b46ab9514ab0716cff39"}, {file = "gdstk-0.9.61-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4b3e2b367e5962db05845eaaf3f9d8bcfa3914738c6e174455a152a63d78904c"}, {file = "gdstk-0.9.61-cp311-cp311-win_amd64.whl", hash = "sha256:0c3866dc287d657f78ae587e2e10de2747ebbf5d2824dc6ba4f9ece89c36a35a"}, {file = "gdstk-0.9.61-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:61f0ee05cdce9b4163ea812cbf2e2f5d8d01a293fa118ff98348280306bd91d6"}, {file = "gdstk-0.9.61-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fff1b104b6775e4c27ab2751b3f4ac6c1ce86a4e9afd5e5535ac4acefa6a7a07"}, + {file = "gdstk-0.9.61-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5218f8c5ab13b6e979665c0a7dc1272768003a1cb7add0682483837f7485faed"}, {file = "gdstk-0.9.61-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e79f3881d3b3666a600efd5b2c131454507f69d3c9b9eaf383d106cfbd6e7bc"}, {file = "gdstk-0.9.61-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e90a6e24c2145320e53e953a59c6297fd25c17c6ef098fa8602e64e64a5390ea"}, + {file = "gdstk-0.9.61-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a3a49401cbd26c5a17a4152d1befa73efb21af694524557bf09d15f4c8a874e6"}, {file = "gdstk-0.9.61-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:8738ac63bbe29dcb5abae6a19d207c4e0857f9dc1bd405c85af8a87f0dcfb348"}, {file = "gdstk-0.9.61-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:23bb023a49f3321673d0e32cdce2e2705a51d9e12328c928723ded49af970520"}, {file = "gdstk-0.9.61-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:81c2f19cab89623d1f56848e7a16e2fab82a93c61c8f7aa73f5ff59840b60c0f"}, {file = "gdstk-0.9.61-cp312-cp312-win_amd64.whl", hash = "sha256:4474f015ecc228b210165287cb7eea65639ea6308f60105cb49e970079bddc2b"}, {file = "gdstk-0.9.61-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:3beeae846fc523c7e3a01c47edcd3b7dd83c29650e56b82a371e528f9cb0ec3e"}, {file = "gdstk-0.9.61-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:575a21639b31e2fab4d9e918468b8b40a58183028db563e5963be594bff1403d"}, + {file = "gdstk-0.9.61-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:90d54b48223dcbb8257769faaa87542d12a749d8486e8d1187a45d06e9422859"}, {file = "gdstk-0.9.61-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35405bed95542a0b10f343b165ce0ad80740bf8127a4507565ec74222e6ec8d3"}, {file = "gdstk-0.9.61-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b311ddf8982995b52ac3bf3b32a6cf6d918afc4e66dea527d531e8af73896231"}, + {file = "gdstk-0.9.61-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6dcbfc60fba92d10f1c7d612b5409c343fcaf2a380640e9fb01c504ca948b412"}, {file = "gdstk-0.9.61-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:fab67ccdd8029ef7eb873f8c98f875dc2665a5e45af7cf3d2a7a0f401826a1d3"}, {file = "gdstk-0.9.61-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5852749e203d6978e06d02f8ef9e29ce4512cb1aedeb62c37b8e8b2c10c4f529"}, {file = "gdstk-0.9.61-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7ee38a54c799e77dbe219266f765bbd3b2906b62bc7b6fb64b1387e6db3dd187"}, {file = "gdstk-0.9.61-cp313-cp313-win_amd64.whl", hash = "sha256:6abb396873b2660dd7863d664b3822f00547bf7f216af27be9f1f812bc5e8027"}, + {file = "gdstk-0.9.61-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:a674af8be5cf1f8ea9f6c5b5f165f797d7e2ed74cbca68b4a22adb92b515fb35"}, + {file = "gdstk-0.9.61-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:38ec0b7285d6c9bf8cbc279731dc0d314633cda2ce9e6f9053554b3e5f004fcd"}, + {file = "gdstk-0.9.61-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3b63a77b57fb441c8017217aaf1e8b13d93cbee822031a8e2826adb716e01dd4"}, + {file = "gdstk-0.9.61-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7fae6eee627e837d1405b47d381ccd33dbba85473b1bb3822bdc8ae41dbc0dc"}, + {file = "gdstk-0.9.61-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:9e396694cac24bd87d0e38c37e6740d9ba0c13f6c9f2211a871d62288430f069"}, + {file = "gdstk-0.9.61-cp314-cp314-win_amd64.whl", hash = "sha256:7ea0c1200dc53b794e9c0cc6fe3ea51e49113dfdd9c3109e1961cda3cc2197c7"}, + {file = "gdstk-0.9.61-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:616dd1c3e7aea4a98aeb03db7cf76a853d134c54690790eaa25c63eede7b869a"}, + {file = "gdstk-0.9.61-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b0e898202fbb7fd4c39f8404831415a0aa0445656342102c4e77d4a7c2c15a1d"}, + {file = "gdstk-0.9.61-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:29bb862a1a814f5bbd6f8bbc2f99e1163df9e6307071cb6e11251dbe7542feb5"}, + {file = "gdstk-0.9.61-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c6c2a08d82a683aff50dc63f2943ed805d32d46bd984cbd4ac9cf876146d0ef9"}, + {file = "gdstk-0.9.61-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3ba52f95763052a6968583942e6531ceca20c14c762d44fe2bd887445e2f73b6"}, {file = "gdstk-0.9.61-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1033d4ddd2af34461c1133ef62213a4861f23d07d64d66e92fe8d2554a85ba6d"}, {file = "gdstk-0.9.61-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bad94f74dff3efaa5ade7bab5040464e575839fa65b935c8f872a47e1658f535"}, + {file = "gdstk-0.9.61-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c9c8738b57cb6100cb0d4346272af489d05f9b9908e0018a5ecbcb5ee485fa97"}, {file = "gdstk-0.9.61-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7f9dd95da53d3cdbc3dcaed446b7404d8d4dfbdbd68628eeddde6285bc5a5"}, {file = "gdstk-0.9.61-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f73637dc2abe3754906f2911557b563281f868f5d153332edea681d963b2a22"}, + {file = "gdstk-0.9.61-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:56d493bb7fc3fb33de63d8c1107ff3d645b62596d0c2073f1a390d90bef73233"}, {file = "gdstk-0.9.61-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:7905572cc10b2b85a960317eadb5cf95197b5a52b1ef9358336d5cd224e08314"}, {file = "gdstk-0.9.61-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:a4bc70f308653d63c26d15637b27e2435f7bdaa50d072db410c1f573db6d985b"}, {file = "gdstk-0.9.61-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3794115a278d5a38db5c5a8f0cfeff3e1701263bcfb58b7e1934e199578e14f1"}, @@ -6866,6 +6887,83 @@ files = [ {file = "threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e"}, ] +[[package]] +name = "tidy3d-extras" +version = "2.10.0rc3" +description = "tidy3d-extras is an optional plugin for Tidy3D providing addtional, more advanced local functionality." +optional = true +python-versions = ">=3.9" +groups = ["main"] +markers = "extra == \"extras\"" +files = [ + {file = "tidy3d_extras-2.10.0rc3-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:02912b2e1688042870d62770041f2a69cd647dd5c24dd8ec57bce37b12583a85"}, + {file = "tidy3d_extras-2.10.0rc3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d99e559af7038d48c4739dcd41f929035ee26b6efa010e0fd888007fecd565cd"}, + {file = "tidy3d_extras-2.10.0rc3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:082778277c0d2bc7864527051990b36d6614080ca2d4e7664fa4a8920df28e76"}, + {file = "tidy3d_extras-2.10.0rc3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4dae4af55adafc23d4dedd8683a944221c7a70d4d2b83fa9857ebd101f2afefd"}, + {file = "tidy3d_extras-2.10.0rc3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35e8a4e5641faa63f6c2057a5e38150005483e2e8f2d2607d059fcdc94f0df40"}, + {file = "tidy3d_extras-2.10.0rc3-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:7c896d22be4d113cc0eba00abb8b5320d2d7a80643f53faaa1ecd19c09ad8d83"}, + {file = "tidy3d_extras-2.10.0rc3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:334568fdcea9bc54a5255bb23bc32045be1cd6a5886223cb1649fca183dd9f96"}, + {file = "tidy3d_extras-2.10.0rc3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:836b6d86a59623038d512ed40cb8973ccf32cca102d79f3c6575cffbf5fd7984"}, + {file = "tidy3d_extras-2.10.0rc3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:18205a38000e4e54bb5349cb477f87f6021283009a5963da798434645f802959"}, + {file = "tidy3d_extras-2.10.0rc3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2c356636fa6293cb038a410f42ad141fbf686243a3c4753ca203df8e8602b12f"}, + {file = "tidy3d_extras-2.10.0rc3-cp310-cp310-win_amd64.whl", hash = "sha256:28afb568efe969d636a508bf9eb2570cc5740237c8ea78175ad71a1df59fe9cf"}, + {file = "tidy3d_extras-2.10.0rc3-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:af35a2901bbc89bfe72d8ce69dcf0944c79ea9d6864683d991451bf6b9cfc8b9"}, + {file = "tidy3d_extras-2.10.0rc3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:33bb9139aa9c8a0eef8e8ed8fa5a2e5b439f6cb0e6d263c5ec7c392779967a0d"}, + {file = "tidy3d_extras-2.10.0rc3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2491f49a64e80205cdf9efb81d54db8fda13cf2ce4bb5eb15454d48e0f9af5c0"}, + {file = "tidy3d_extras-2.10.0rc3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7bd3070b164dbf48dcd763a454ad2f1adb5978d778a9875463190d3839d043f8"}, + {file = "tidy3d_extras-2.10.0rc3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bddfbe2d4317b5bd2861b439fdc29e76c64d0c269598d6f956a81fce09927efe"}, + {file = "tidy3d_extras-2.10.0rc3-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:07f2cc9f7d30396fc9992e78a29c07d4ab99f3d2d937f36b0717f967998d545c"}, + {file = "tidy3d_extras-2.10.0rc3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:bd45d9370289354a9378a063047920ab7b4687d75ef5421ab74cf67e20b8bb94"}, + {file = "tidy3d_extras-2.10.0rc3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f97c8aee751c9863397c5dd8f2f75dcb86510644a7a4397454a2fa5477253651"}, + {file = "tidy3d_extras-2.10.0rc3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:31dd1f70e1a8736bb94dc212f8d77f7c4ffb0fbd346cd2b7146f7d60c6e809f0"}, + {file = "tidy3d_extras-2.10.0rc3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d1216cbc298922187978c706f367efd477108897a83893bd07817c42fdb713e5"}, + {file = "tidy3d_extras-2.10.0rc3-cp311-cp311-win_amd64.whl", hash = "sha256:0d92e526cf26ab3da4960f7b9c205cd2e0e71e8dae9f7f3f1032173948b04b59"}, + {file = "tidy3d_extras-2.10.0rc3-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:eb5d424c46edf6162a98bb51ed501bd55cbef071a565aac63e12b50ecf3ddfc9"}, + {file = "tidy3d_extras-2.10.0rc3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2c17ccd561570f135a34273745c8fd213e30e57693e4331d9949003eefae476a"}, + {file = "tidy3d_extras-2.10.0rc3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:741e8d20711bded069cf436edce3b2b48ed08c05d79a0ca8b54182a922072bcb"}, + {file = "tidy3d_extras-2.10.0rc3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:16ae603c458bc7c588df2ed93cf4efbb70c32e343c74f495ac68b95cb1145f1e"}, + {file = "tidy3d_extras-2.10.0rc3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dc05e87efd59b3efb93528fd15790cd2b3b3525a24edf075220980921a4096b"}, + {file = "tidy3d_extras-2.10.0rc3-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8ff36ae1b9c9dfe908ee2107e7ccc040ef5cca64b8d2bb02207f63f51073b332"}, + {file = "tidy3d_extras-2.10.0rc3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:03a4752d6dae7bb37b01f69839e38ccc5985c6444894def6ad458dfd00e58a69"}, + {file = "tidy3d_extras-2.10.0rc3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a0f56ca54a974d79976171e237aad247747dc6a893c61d065231ddbc8b999810"}, + {file = "tidy3d_extras-2.10.0rc3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:72adf65053878e78667d06eede4cf3d742e5693b98e063efda675b4566e50fcc"}, + {file = "tidy3d_extras-2.10.0rc3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:82a92f9ff525e7594a14ae041bb3e9eb03392c641475d24b2189b43802ccb4ee"}, + {file = "tidy3d_extras-2.10.0rc3-cp312-cp312-win_amd64.whl", hash = "sha256:4cc65f89e68201c57494211d9cbe907a9a87f8be605760df0decfee54ba4186e"}, + {file = "tidy3d_extras-2.10.0rc3-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:e7b3d365c657f5c450ff5c6e754d5fbeb5db5a61bc9fd204fa9bb46afc804f6c"}, + {file = "tidy3d_extras-2.10.0rc3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:564c836dec74928cd9fca6dacf681e860994f1a39a3ee7806a12e8f479579d53"}, + {file = "tidy3d_extras-2.10.0rc3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e437b62dd54615b50b2462427c15bac19a0f913f5cef7f99679463cc6be7f46"}, + {file = "tidy3d_extras-2.10.0rc3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ed6aa1cf6e4f689e040c31e2393b5164178682c10b70744448b31b62a9fc7bb"}, + {file = "tidy3d_extras-2.10.0rc3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02786c95d1737c6988cd8ff1de64b3ada2a025b09054bd414dad98ff8b8b3444"}, + {file = "tidy3d_extras-2.10.0rc3-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:548a81a95c05c31fde4946537cae0aca374266fb55a1530ab1233ac337d17c25"}, + {file = "tidy3d_extras-2.10.0rc3-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:c6cb5291ceae38164ddd369be9a0ef9932092e4d1fb766a7675f8eadaf45d02e"}, + {file = "tidy3d_extras-2.10.0rc3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:992d3b1a579c8dfc8596cc3fe7c76442807781f852dada35609459adf8071744"}, + {file = "tidy3d_extras-2.10.0rc3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f936096bd7911020d9b6228a45ca8ac639cbc3b55979a992bb831b57028052b0"}, + {file = "tidy3d_extras-2.10.0rc3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e56fbb845de2959aa76721696e6fc545087e5babf941a978f9a5b81f6d931dac"}, + {file = "tidy3d_extras-2.10.0rc3-cp313-cp313-win_amd64.whl", hash = "sha256:ac7be6a770adc8112b50e819bf42b0684b140dff918f381f02d08b85fcfdb99b"}, + {file = "tidy3d_extras-2.10.0rc3-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:1a8f6282395f5b243456f50d2ce5016de337e6c44855b35464851619a203fc86"}, + {file = "tidy3d_extras-2.10.0rc3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8fe49c7c3115d9f28afb07723610ee9def9f7ce98d88d6e83384fdb48a9aee3"}, + {file = "tidy3d_extras-2.10.0rc3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33f9f561bb4df1ca2ff5579d3f6693861d78cf0f935f11cbc0ff2f3684271d6e"}, + {file = "tidy3d_extras-2.10.0rc3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d44cb9b614efa796abaee30670637d694e9ed86f919f7a5b37c2d90e2d21e88b"}, + {file = "tidy3d_extras-2.10.0rc3-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:4b3b5ca1a45cb5398c8a87a28fe6f74ab73ece247f92358715eefab32fef6e1d"}, + {file = "tidy3d_extras-2.10.0rc3-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:a047fc223b99ee8cef4d5f1b272b4ede6d8a745d871f308471c70e04f4647c03"}, + {file = "tidy3d_extras-2.10.0rc3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f26112afa4d1f44b884be2ac28eedcb3e126e3245cce3eab7387b3860d15ea7d"}, + {file = "tidy3d_extras-2.10.0rc3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:95691af98eb0a4b5f3449771ac9d31a8e844526df9240687187176c0bb164d43"}, + {file = "tidy3d_extras-2.10.0rc3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06cd06a35cfd8e189b7f64dd925991ed3e5a84a7c98c374ea553636d0eb2be37"}, +] + +[package.dependencies] +numpy = ">=2.0" +tidy3d = "2.10.0rc3" +xarray = ">=2024.6" + +[package.extras] +test = ["pytest (>=7.2)"] + +[package.source] +type = "legacy" +url = "https://test.pypi.org/simple" +reference = "testpypi" + [[package]] name = "tinycss2" version = "1.4.0" @@ -7605,6 +7703,7 @@ files = [ design = ["bayesian-optimization", "pygad", "pyswarms"] dev = ["bayesian-optimization", "cma", "coverage", "devsim", "diff-cover", "dill", "gdstk", "grcwa", "ipython", "ipython", "jinja2", "jupyter", "memory_profiler", "mypy", "myst-parser", "nbconvert", "nbdime", "nbsphinx", "networkx", "openpyxl", "optax", "pre-commit", "psutil", "pydata-sphinx-theme", "pygad", "pylint", "pyswarms", "pytest", "pytest-cov", "pytest-env", "pytest-timeout", "pytest-xdist", "rtree", "ruff", "sax", "scikit-rf", "signac", "sphinx", "sphinx-book-theme", "sphinx-copybutton", "sphinx-design", "sphinx-favicon", "sphinx-notfound-page", "sphinx-sitemap", "sphinx-tabs", "sphinxemoji", "tmm", "torch", "torch", "tox", "trimesh", "vtk", "zizmor"] docs = ["cma", "devsim", "gdstk", "grcwa", "ipython", "jinja2", "jupyter", "myst-parser", "nbconvert", "nbdime", "nbsphinx", "openpyxl", "optax", "pydata-sphinx-theme", "pylint", "sax", "signac", "sphinx", "sphinx-book-theme", "sphinx-copybutton", "sphinx-design", "sphinx-favicon", "sphinx-notfound-page", "sphinx-sitemap", "sphinx-tabs", "sphinxemoji", "tmm"] +extras = ["tidy3d-extras"] gdstk = ["gdstk"] heatcharge = ["devsim", "trimesh", "vtk"] pytorch = ["torch", "torch"] @@ -7616,4 +7715,4 @@ vtk = ["vtk"] [metadata] lock-version = "2.1" python-versions = ">=3.10,<3.14" -content-hash = "deab3d5c68d8ee1fce2e7c86f2c90d1b601025f5ff2c5465767c0bc479b992be" +content-hash = "41558c532e8d923b6c253ab6ed376f64f129f4ed3bf508a9336c762ee99c2877" diff --git a/pyproject.toml b/pyproject.toml index 29ca4ae5f2..6c02e0039c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -120,7 +120,7 @@ sphinxemoji = { version = "*", optional = true } devsim = { version = "*", optional = true } cma = { version = "*", optional = true } openpyxl = { version = "*", optional = true } -# tidy3d-extras = { version = "2.10.0rc3", optional = true } +tidy3d-extras = { version = "2.10.0rc3", optional = true, source = "testpypi" } [tool.poetry.extras] dev = [ @@ -217,7 +217,7 @@ heatcharge = ["trimesh", "vtk", "devsim"] # plugins with extra deps pytorch = ["torch"] design = ["bayesian-optimization", "pygad", "pyswarms"] -# extras = ["tidy3d-extras"] +extras = ["tidy3d-extras"] [tool.poetry.scripts] tidy3d = "tidy3d.web.cli:tidy3d_cli" @@ -233,6 +233,11 @@ url = "https://download.pytorch.org/whl/cpu" priority = "explicit" +[[tool.poetry.source]] +name = "testpypi" +url = "https://test.pypi.org/simple/" +priority = "primary" + [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api"