From 3de3c8de731a9b0d98b8eec8bc8eb6b8b7766aad Mon Sep 17 00:00:00 2001 From: blakeNaccarato Date: Wed, 24 Apr 2024 15:14:37 -0700 Subject: [PATCH] Sync with template --- .copier-answers.yml | 2 +- .github/workflows/ci.yml | 142 +++++++++++---- .github/workflows/contrib.yml | 18 +- .github/workflows/docs.yml | 55 ------ .github/workflows/high.yml | 133 +++++++++++++- .github/workflows/release.yml | 6 +- .pre-commit-config.yaml | 15 +- .python-versions | 2 + .vscode/launch.json | 6 + changelog/towncrier_template.md.jinja | 5 +- docs/pyproject.toml | 12 +- lock-high.json | 1 + lock.json | 22 +-- pyproject.toml | 9 +- requirements/dev.in | 7 +- requirements/override.txt | 0 requirements/uv.in | 2 +- scripts/Common.ps1 | 24 ++- scripts/Initialize-Shell.ps1 | 14 +- scripts/Sync-Py.ps1 | 99 +++++----- scripts/c_therm_tci_tools/__main__.py | 43 ++--- scripts/c_therm_tci_tools/sync.py | 249 ++++++++++++++++---------- scripts/c_therm_tci_tools/types.py | 8 + scripts/pyproject.toml | 15 +- tests/pyproject.toml | 1 + 25 files changed, 540 insertions(+), 350 deletions(-) delete mode 100644 .github/workflows/docs.yml create mode 100644 .python-versions create mode 100644 lock-high.json create mode 100644 requirements/override.txt create mode 100644 scripts/c_therm_tci_tools/types.py diff --git a/.copier-answers.yml b/.copier-answers.yml index 80570de..6455dc8 100644 --- a/.copier-answers.yml +++ b/.copier-answers.yml @@ -1,5 +1,5 @@ # Changes here will be overwritten by Copier; NEVER EDIT MANUALLY -_commit: 37a16cc +_commit: 903d929 _src_path: gh:blakeNaccarato/copier-python actions_runner: ubuntu-22.04 active: false diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bafc5b2..a042144 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,64 +15,140 @@ env: UV_CACHE_DIR: ".cache/uv-cache" UV_SYSTEM_PYTHON: "true" jobs: + sync: + strategy: + matrix: + runner: ["ubuntu-22.04"] + python: ["3.11"] + runs-on: "${{ matrix.runner }}" + steps: + - uses: "actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f" # v4.1.3 + with: + submodules: True + - uses: "actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d" # v5.1.0 + with: + python-version: "${{ matrix.python }}" + - run: "scripts/Sync-Py.ps1" + - uses: "actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808" # v4.3.3 + with: + name: "lock" + path: "lock.json" + - uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2 + with: + path: "${{ env.UV_CACHE_DIR }}" + key: "uv-${{ matrix.runner }}-${{ matrix.python }}-${{ hashFiles('lock.json') }}" + build-docs: + needs: "sync" + strategy: + matrix: + runner: ["ubuntu-22.04"] + python: ["3.11"] + runs-on: "${{ matrix.runner }}" + steps: + - uses: "actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f" # v4.1.3 + with: + submodules: True + - uses: "actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e" # v4.1.7 + with: + name: "lock" + - uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2 + with: + path: "${{ env.UV_CACHE_DIR }}" + key: "uv-${{ matrix.runner }}-${{ matrix.python }}-${{ hashFiles('lock.json') }}" + - uses: "actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d" # v5.1.0 + with: + python-version: "${{ matrix.python }}" + - run: "scripts/Sync-Py.ps1" + - run: "sphinx-build -EaT docs _site" + - uses: "actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa" # v3.0.1 + deploy-docs: + if: github.event_name != 'pull_request' + needs: "build-docs" + permissions: + pages: "write" + id-token: "write" + strategy: + matrix: + runner: ["ubuntu-22.04"] + python: ["3.11"] + environment: + name: "github-pages" + url: "${{ steps.deployment.outputs.page_url }}" + runs-on: "${{ matrix.runner }}" + steps: + - id: "deployment" + uses: "actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e" # v4.0.5 ruff: + needs: "sync" strategy: matrix: runner: ["ubuntu-22.04"] python: ["3.11"] runs-on: "${{ matrix.runner }}" steps: - - uses: "actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11" # v4.1.1 + - uses: "actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f" # v4.1.3 with: submodules: True - - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: "actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e" # v4.1.7 + with: + name: "lock" + - uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2 with: path: "${{ env.UV_CACHE_DIR }}" - key: "uv-${{ matrix.runner }}-${{ matrix.python}}-${{ hashFiles('lock.json') }}" + key: "uv-${{ matrix.runner }}-${{ matrix.python }}-${{ hashFiles('lock.json') }}" - uses: "actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d" # v5.1.0 with: python-version: "${{ matrix.python }}" - run: "scripts/Sync-Py.ps1" - run: "ruff check --no-fix --output-format github ." fawltydeps: + needs: "sync" strategy: matrix: runner: ["ubuntu-22.04"] python: ["3.11"] runs-on: "${{ matrix.runner }}" steps: - - uses: "actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11" # v4.1.1 + - uses: "actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f" # v4.1.3 with: submodules: True - - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: "actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e" # v4.1.7 + with: + name: "lock" + - uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2 with: path: "${{ env.UV_CACHE_DIR }}" - key: "uv-${{ matrix.runner }}-${{ matrix.python}}-${{ hashFiles('lock.json') }}" + key: "uv-${{ matrix.runner }}-${{ matrix.python }}-${{ hashFiles('lock.json') }}" - uses: "actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d" # v5.1.0 with: python-version: "${{ matrix.python }}" - run: "scripts/Sync-Py.ps1" - run: "fawltydeps" pyright: + needs: "sync" strategy: matrix: runner: ["ubuntu-22.04"] python: ["3.11"] runs-on: "${{ matrix.runner }}" steps: - - uses: "actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11" # v4.1.1 + - uses: "actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f" # v4.1.3 with: submodules: True - - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: "actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e" # v4.1.7 + with: + name: "lock" + - uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2 with: path: "${{ env.UV_CACHE_DIR }}" - key: "uv-${{ matrix.runner }}-${{ matrix.python}}-${{ hashFiles('lock.json') }}" + key: "uv-${{ matrix.runner }}-${{ matrix.python }}-${{ hashFiles('lock.json') }}" - uses: "actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d" # v5.1.0 with: python-version: "${{ matrix.python }}" - run: "scripts/Sync-Py.ps1" - run: pyright test: + needs: "sync" strategy: matrix: runner: @@ -82,17 +158,20 @@ jobs: python: # - "3.10" # ? `scripts` currently requires `tomllib`, which is > 3.10 - "3.11" - - "3.12" + # - "3.12" # ? No support in my commit-pinned fork of cachier # - "3.13.0-alpha.5" # ? https://github.com/PyO3/pyo3/issues/3555 runs-on: "${{ matrix.runner }}" steps: - - uses: "actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11" # v4.1.1 + - uses: "actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f" # v4.1.3 with: submodules: True - - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: "actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e" # v4.1.7 + with: + name: "lock" + - uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2 with: path: "${{ env.UV_CACHE_DIR }}" - key: "uv-${{ matrix.runner }}-${{ matrix.python}}-${{ hashFiles('lock.json') }}" + key: "uv-${{ matrix.runner }}-${{ matrix.python }}-${{ hashFiles('lock.json') }}" - uses: "actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d" # v5.1.0 with: python-version: "${{ matrix.python }}" @@ -100,42 +179,37 @@ jobs: # ! https://github.com/pytest-dev/pytest-cov/issues/479#issuecomment-1247444988 - run: "pytest --cov --cov-config pyproject.toml" - if: startsWith(matrix.runner, 'ubuntu') && matrix.python == '3.11' - uses: "codecov/codecov-action@c16abc29c95fcf9174b58eb7e1abf4c866893bc8" # v4.1.1 + uses: "codecov/codecov-action@84508663e988701840491b86de86b666e8a86bed" # v4.3.0 env: CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}" - - uses: "actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3" # v4.3.1 - with: - path: ".comps" - name: "requirements_${{ matrix.runner }}_${{ matrix.python }}" - sync: - strategy: - matrix: - runner: ["ubuntu-22.04"] - python: ["3.11"] - permissions: - contents: "write" + lock: needs: - "ruff" - "fawltydeps" - "pyright" - "test" + permissions: + contents: "write" + strategy: + matrix: + runner: ["ubuntu-22.04"] + python: ["3.11"] runs-on: "${{ matrix.runner }}" steps: - - uses: "actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11" # v4.1.1 + - uses: "actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f" # v4.1.3 with: submodules: True - - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: "actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e" # v4.1.7 + with: + name: "lock" + - uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2 with: path: "${{ env.UV_CACHE_DIR }}" - key: "uv-${{ matrix.runner }}-${{ matrix.python}}-${{ hashFiles('lock.json') }}" + key: "uv-${{ matrix.runner }}-${{ matrix.python }}-${{ hashFiles('lock.json') }}" - uses: "actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d" # v5.1.0 with: python-version: "${{ matrix.python }}" - - uses: "actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427" # v4.1.4 - with: - path: ".comps" - merge-multiple: True - - run: "scripts/Sync-Py.ps1 -Lock" - - uses: "stefanzweifel/git-auto-commit-action@8756aa072ef5b4a080af5dc8fef36c5d586e521d" # v5.0.0 + - run: "scripts/Sync-Py.ps1" + - uses: "stefanzweifel/git-auto-commit-action@8621497c8c39c72f3e2a999a26b4ca1b5058a842" # v5.0.1 with: commit_message: "Sync and lock" diff --git a/.github/workflows/contrib.yml b/.github/workflows/contrib.yml index 525d532..0e4de63 100644 --- a/.github/workflows/contrib.yml +++ b/.github/workflows/contrib.yml @@ -32,38 +32,38 @@ jobs: python: ["3.11"] runs-on: "${{ matrix.runner }}" steps: - - uses: "actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11" # v4.1.1 + - uses: "actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f" # v4.1.3 with: submodules: True - - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2 with: path: "${{ env.UV_CACHE_DIR }}" - key: "uv-${{ matrix.runner }}-${{ matrix.python}}-${{ hashFiles('lock.json') }}" + key: "uv-${{ matrix.runner }}-${{ matrix.python }}-${{ hashFiles('lock.json') }}" - uses: "actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d" # v5.1.0 with: python-version: "${{ matrix.python }}" - - run: "scripts/Sync-Py.ps1 -Lock -Version '3.11'" + - run: "scripts/Sync-Py.ps1 -Version '3.11'" spaces-in-path: strategy: matrix: runner: - - "macos-13" + - "macos-14" - "ubuntu-22.04" - "windows-2022" python: ["3.11"] runs-on: "${{ matrix.runner }}" steps: - run: "New-Item -ItemType Directory 'repo path with spaces'" - - uses: "actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11" # v4.1.1 + - uses: "actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f" # v4.1.3 with: submodules: True path: "repo path with spaces" - - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2 with: path: "${{ env.UV_CACHE_DIR }}" - key: "uv-${{ matrix.runner }}-${{ matrix.python}}-${{ hashFiles('lock.json') }}" + key: "uv-${{ matrix.runner }}-${{ matrix.python }}-${{ hashFiles('lock.json') }}" - uses: "actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d" # v5.1.0 with: python-version: "${{ matrix.python }}" - working-directory: "repo path with spaces" - run: "scripts/Sync-Py.ps1 -Lock -Version '3.11'" + run: "scripts/Sync-Py.ps1 -Version '3.11'" diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index 24f0384..0000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,55 +0,0 @@ -# Build and publish documentation -name: "docs" -permissions: - contents: "read" - pages: "write" - id-token: "write" -concurrency: - group: "${{ github.workflow }}-${{ github.ref }}" - cancel-in-progress: True -on: - workflow_dispatch: - pull_request: - push: - branches: ["main"] -defaults: - run: - shell: "pwsh" -env: - UV_CACHE_DIR: ".cache/uv-cache" - UV_SYSTEM_PYTHON: "true" -jobs: - build: - strategy: - matrix: - runner: ["ubuntu-22.04"] - python: ["3.11"] - runs-on: "${{ matrix.runner }}" - steps: - - uses: "actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11" # v4.1.1 - with: - submodules: True - - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 - with: - path: "${{ env.UV_CACHE_DIR }}" - key: "uv-${{ matrix.runner }}-${{ matrix.python}}-${{ hashFiles('lock.json') }}" - - uses: "actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d" # v5.1.0 - with: - python-version: "${{ matrix.python }}" - - run: "scripts/Sync-Py.ps1" - - run: "sphinx-build -EaT docs _site" - - uses: "actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa" # v3.0.1 - deploy: - if: github.event_name != 'pull_request' - strategy: - matrix: - runner: ["ubuntu-22.04"] - python: ["3.11"] - environment: - name: "github-pages" - url: "${{ steps.deployment.outputs.page_url }}" - runs-on: "${{ matrix.runner }}" - needs: "build" - steps: - - id: "deployment" - uses: "actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e" # v4.0.5 diff --git a/.github/workflows/high.yml b/.github/workflows/high.yml index 2a36346..d09f572 100644 --- a/.github/workflows/high.yml +++ b/.github/workflows/high.yml @@ -3,35 +3,150 @@ name: "high" on: workflow_dispatch: schedule: - - cron: "38 16 * * 4" + - cron: "15 10 * * 0" defaults: run: shell: "pwsh" env: UV_CACHE_DIR: ".cache/uv-cache" UV_SYSTEM_PYTHON: "true" + SYNC_PY_HIGH: "true" jobs: + sync: + strategy: + matrix: + runner: ["ubuntu-22.04"] + python: ["3.11"] + runs-on: "${{ matrix.runner }}" + steps: + - uses: "actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f" # v4.1.3 + with: + submodules: True + - uses: "actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d" # v5.1.0 + with: + python-version: "${{ matrix.python }}" + - run: "scripts/Sync-Py.ps1" + - uses: "actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808" # v4.3.3 + with: + name: "lock" + path: "lock-high.json" + build-docs: + needs: "sync" + strategy: + matrix: + runner: ["ubuntu-22.04"] + python: ["3.11"] + runs-on: "${{ matrix.runner }}" + steps: + - uses: "actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f" # v4.1.3 + with: + submodules: True + - uses: "actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e" # v4.1.7 + with: + name: "lock" + - uses: "actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d" # v5.1.0 + with: + python-version: "${{ matrix.python }}" + - run: "scripts/Sync-Py.ps1" + - run: "sphinx-build -EaT docs _site" + - uses: "actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa" # v3.0.1 + ruff: + needs: "sync" + strategy: + matrix: + runner: ["ubuntu-22.04"] + python: ["3.11"] + runs-on: "${{ matrix.runner }}" + steps: + - uses: "actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f" # v4.1.3 + with: + submodules: True + - uses: "actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e" # v4.1.7 + with: + name: "lock" + - uses: "actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d" # v5.1.0 + with: + python-version: "${{ matrix.python }}" + - run: "scripts/Sync-Py.ps1" + - run: "ruff check --no-fix --output-format github ." + fawltydeps: + needs: "sync" + strategy: + matrix: + runner: ["ubuntu-22.04"] + python: ["3.11"] + runs-on: "${{ matrix.runner }}" + steps: + - uses: "actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f" # v4.1.3 + with: + submodules: True + - uses: "actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e" # v4.1.7 + with: + name: "lock" + - uses: "actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d" # v5.1.0 + with: + python-version: "${{ matrix.python }}" + - run: "scripts/Sync-Py.ps1" + - run: "fawltydeps" + pyright: + needs: "sync" + strategy: + matrix: + runner: ["ubuntu-22.04"] + python: ["3.11"] + runs-on: "${{ matrix.runner }}" + steps: + - uses: "actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f" # v4.1.3 + with: + submodules: True + - uses: "actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e" # v4.1.7 + with: + name: "lock" + - uses: "actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d" # v5.1.0 + with: + python-version: "${{ matrix.python }}" + - run: "scripts/Sync-Py.ps1" + - run: pyright test: + needs: "sync" strategy: matrix: runner: - "macos-14" - "ubuntu-22.04" - "windows-2022" - python: - - "3.11" - - "3.12" + python: ["3.11"] runs-on: "${{ matrix.runner }}" steps: - - uses: "actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11" # v4.1.1 + - uses: "actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f" # v4.1.3 with: submodules: True - - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: "actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e" # v4.1.7 with: - path: "${{ env.UV_CACHE_DIR }}" - key: "uv-${{ matrix.runner }}-${{ matrix.python}}-${{ hashFiles('lock.json') }}" + name: "lock" - uses: "actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d" # v5.1.0 with: python-version: "${{ matrix.python }}" - - run: "scripts/Sync-Py.ps1 -High -Version '${{ matrix.python }}'" + - run: "scripts/Sync-Py.ps1 -Version '${{ matrix.python }}'" - run: "pytest" + lock: + needs: + - "ruff" + - "fawltydeps" + - "pyright" + - "test" + permissions: + contents: "write" + strategy: + matrix: + runner: ["ubuntu-22.04"] + python: ["3.11"] + runs-on: "${{ matrix.runner }}" + steps: + - uses: "actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f" # v4.1.3 + - uses: "actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e" # v4.1.7 + with: + name: "lock" + - uses: "stefanzweifel/git-auto-commit-action@8621497c8c39c72f3e2a999a26b4ca1b5058a842" # v5.0.1 + with: + commit_message: "Sync and lock highest dependencies" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 25f0889..488d631 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,13 +20,13 @@ jobs: with: github_token: "${{ secrets.GITHUB_TOKEN }}" tag_prefix: "" - - uses: "actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11" # v4.1.1 + - uses: "actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f" # v4.1.3 with: submodules: True - - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: "actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9" # v4.0.2 with: path: "${{ env.UV_CACHE_DIR }}" - key: "uv-${{ matrix.runner }}-${{ matrix.python}}-${{ hashFiles('lock.json') }}" + key: "uv-${{ matrix.runner }}-${{ matrix.python }}-${{ hashFiles('lock.json') }}" - uses: "actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d" # v5.1.0 with: python-version: "${{ matrix.python }}" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 13aa276..8c8305e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,3 +1,7 @@ +exclude: | + (?x)^( + \.copier-answers\.yml + $) ci: skip: - "sync" @@ -23,11 +27,14 @@ repos: stages: - "pre-commit" - "post-checkout" - always_run: true pass_filenames: false language: "system" entry: | pwsh -Command ". scripts/Initialize-Shell.ps1; scripts/Sync-Py.ps1" + exclude: | + (?x)^( + lock.+\.json + $) - id: "fawltydeps-src" name: "fawltydeps-src" pass_filenames: false @@ -76,12 +83,12 @@ repos: |tests/.* )$ - repo: "https://github.com/pre-commit/pre-commit-hooks" - rev: "v4.5.0" + rev: "v4.6.0" hooks: - id: "end-of-file-fixer" - id: "trailing-whitespace" - repo: "https://github.com/DavidAnson/markdownlint-cli2" - rev: "v0.12.1" + rev: "v0.13.0" hooks: - id: "markdownlint-cli2" - repo: "https://github.com/srstevenson/nb-clean" @@ -101,7 +108,7 @@ repos: |tests/.* )$ - repo: "https://github.com/charliermarsh/ruff-pre-commit" - rev: "v0.3.4" + rev: "v0.4.1" hooks: - id: "ruff" args: ["--extend-fixable", "PIE790"] diff --git a/.python-versions b/.python-versions new file mode 100644 index 0000000..546cc92 --- /dev/null +++ b/.python-versions @@ -0,0 +1,2 @@ +3.11 +3.12 diff --git a/.vscode/launch.json b/.vscode/launch.json index 0bde3ac..fd92797 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -23,6 +23,12 @@ "program": "${file}", "console": "internalConsole" }, + { + "name": "Python: Current file (interactive terminal)", + "type": "debugpy", + "request": "launch", + "program": "${file}" + }, { "name": "Python: Current file with args", "type": "debugpy", diff --git a/changelog/towncrier_template.md.jinja b/changelog/towncrier_template.md.jinja index eaa2061..7d08a17 100644 --- a/changelog/towncrier_template.md.jinja +++ b/changelog/towncrier_template.md.jinja @@ -5,14 +5,13 @@ These changes reflect the current [development progress](https://github.com/blak ::: {# CHANGELOG.md entries #}{% else -%} ## [{{ versiondata["version"] }}](https://github.com/blakeNaccarato/c-therm-tci/tree/{{ versiondata["version"] }}){% endif %} - {% for section, _ in sections.items() %} + {% for category, val in definitions.items() if category in sections[section] %} ### {{ definitions[category]['name'] }} {% for text, values in sections[section][category].items() %} -- {{ text }} -{{ values|join(',\n ') }} +- {{ text }} ({{ values|join(', ') }}) {% endfor %} {% endfor %} diff --git a/docs/pyproject.toml b/docs/pyproject.toml index 07fb657..6442b43 100644 --- a/docs/pyproject.toml +++ b/docs/pyproject.toml @@ -8,20 +8,20 @@ version = "0.0.0" description = "Docs." dependencies = [ # ? Core docs - "docutils==0.20.1", + "docutils==0.21.2", "linkify-it-py==2.0.3", - "myst-nb==1.0.0", - "myst-parser==2.0.0", + "myst-nb==1.1.0", + "myst-parser==3.0.0", "numpydoc==1.7.0", "ruamel-yaml==0.18.6", - "sphinx-autobuild==2024.2.4", + "sphinx-autobuild==2024.4.16", "sphinx-autodoc2==0.5.0", "sphinx-book-theme==1.1.2", "sphinx-design==0.5.0", "sphinx-thebe==0.3.1", - "sphinx-tippy==0.4.1", + "sphinx-tippy==0.4.3", "sphinx-togglebutton==0.3.2", - "sphinx==7.2.6", + "sphinx==7.3.7", "sphinxcontrib-bibtex==2.6.2", "sphinxcontrib-mermaid==0.9.2", "sphinxcontrib-towncrier==0.4.0a0", diff --git a/lock-high.json b/lock-high.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/lock-high.json @@ -0,0 +1 @@ +{} diff --git a/lock.json b/lock.json index 7e1a4c0..f05486b 100644 --- a/lock.json +++ b/lock.json @@ -1,18 +1,8 @@ { - "macos-13_3.11": "# This file was autogenerated by uv via the following command:\n# uv pip compile --python-version 3.11 --resolution lowest-direct --exclude-newer 2024-03-27T23:42:09.436493Z --all-extras pyproject.toml requirements/dev.in\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nappnope==0.1.4\n# via ipykernel\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via jupyter-cache\ncolorama==0.4.6\n# via\n# copier\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.1.1\n# via c-therm-tci-tools\ncoverage==7.4.4\n# via pytest-cov\ncssselect==1.2.0\n# via parsel\ncyclopts==2.5.0\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via\n# copier\n# ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.20.1\n# via\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.19.2\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.3\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\ngreenlet==3.0.3\n# via sqlalchemy\nidentify==2.5.35\n# via pre-commit\nidna==3.6\n# via requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# keyring\n# myst-nb\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.22.2\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.3.1\n# via keyring\njaraco-context==4.3.0\n# via keyring\njaraco-functools==4.0.0\n# via keyring\njedi==0.19.1\n# via ipython\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.0.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlivereload==2.6.3\n# via sphinx-autobuild\nlxml==5.1.0\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.6\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.0.0\n# via c-therm-tci-docs\nmyst-parser==2.0.0\n# via myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.3\n# via\n# c-therm-tci-docs\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.8.1\n# via c-therm-tci\nparso==0.8.3\n# via jedi\npathspec==0.12.1\n# via copier\npexpect==4.9.0\n# via ipython\npip-requirements-parser==32.0.1\n# via fawltydeps\nplatformdirs==4.2.0\n# via\n# jupyter-core\n# virtualenv\npluggy==1.4.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\n# via c-therm-tci-tools\nprompt-toolkit==3.0.43\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\nptyprocess==0.7.0\n# via pexpect\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npydantic==2.6.4\n# via\n# copier\n# fawltydeps\npydantic-core==2.16.3\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.356\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\n# pyyaml-include\npyyaml-include==1.4.1\n# via copier\npyzmq==25.1.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==1.10.0\n# via copier\nreferencing==0.34.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruff==0.3.4\nsetuptools==69.2.0\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# livereload\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery-cli==1.16.0\nsphinx==7.2.6\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\nsphinx-autobuild==2024.2.4\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.1\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\ntabulate==0.9.0\n# via jupyter-cache\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# livereload\n# snakeviz\ntraitlets==5.14.2\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.10.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nvirtualenv==20.25.1\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwcwidth==0.2.13\n# via prompt-toolkit\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\nzstandard==0.22.0\n# via c-therm-tci-tools\n", - "macos-13_3.11_high": "# This file was autogenerated by uv via the following command:\n# uv pip compile --python-version 3.11 --resolution highest --exclude-newer 2024-03-27T23:42:10.486330Z --all-extras pyproject.toml requirements/dev.in\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nappnope==0.1.4\n# via ipykernel\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via jupyter-cache\ncolorama==0.4.6\n# via\n# copier\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.1.1\n# via c-therm-tci-tools\ncoverage==7.4.4\n# via pytest-cov\ncssselect==1.2.0\n# via parsel\ncyclopts==2.5.0\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via\n# copier\n# ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.20.1\n# via\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.19.2\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.3\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\ngreenlet==3.0.3\n# via sqlalchemy\nidentify==2.5.35\n# via pre-commit\nidna==3.6\n# via requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# keyring\n# myst-nb\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.22.2\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.3.1\n# via keyring\njaraco-context==4.3.0\n# via keyring\njaraco-functools==4.0.0\n# via keyring\njedi==0.19.1\n# via ipython\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.0.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlivereload==2.6.3\n# via sphinx-autobuild\nlxml==5.1.0\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.6\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.0.0\n# via c-therm-tci-docs\nmyst-parser==2.0.0\n# via myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.3\n# via\n# c-therm-tci-docs\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.9.0\n# via c-therm-tci\nparso==0.8.3\n# via jedi\npathspec==0.12.1\n# via copier\npexpect==4.9.0\n# via ipython\npip-requirements-parser==32.0.1\n# via fawltydeps\nplatformdirs==4.2.0\n# via\n# jupyter-core\n# virtualenv\npluggy==1.4.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\n# via c-therm-tci-tools\nprompt-toolkit==3.0.43\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\nptyprocess==0.7.0\n# via pexpect\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npydantic==2.6.4\n# via\n# copier\n# fawltydeps\npydantic-core==2.16.3\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.356\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\n# pyyaml-include\npyyaml-include==1.4.1\n# via copier\npyzmq==25.1.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==1.10.0\n# via copier\nreferencing==0.34.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruff==0.3.4\nsetuptools==69.2.0\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# livereload\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery-cli==1.16.0\nsphinx==7.2.6\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\nsphinx-autobuild==2024.2.4\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.1\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\ntabulate==0.9.0\n# via jupyter-cache\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# livereload\n# snakeviz\ntraitlets==5.14.2\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.10.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nvirtualenv==20.25.1\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwcwidth==0.2.13\n# via prompt-toolkit\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\nzstandard==0.22.0\n# via c-therm-tci-tools\n", - "macos-13_3.12": "# This file was autogenerated by uv via the following command:\n# uv pip compile --python-version 3.12 --resolution lowest-direct --exclude-newer 2024-03-27T23:40:30.510991Z --all-extras pyproject.toml requirements/dev.in\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nappnope==0.1.4\n# via ipykernel\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via jupyter-cache\ncolorama==0.4.6\n# via\n# copier\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.1.1\n# via c-therm-tci-tools\ncoverage==7.4.4\n# via pytest-cov\ncssselect==1.2.0\n# via parsel\ncyclopts==2.5.0\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via\n# copier\n# ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.20.1\n# via\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.19.2\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.3\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\nidentify==2.5.35\n# via pre-commit\nidna==3.6\n# via requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# myst-nb\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.22.2\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.3.1\n# via keyring\njaraco-context==4.3.0\n# via keyring\njaraco-functools==4.0.0\n# via keyring\njedi==0.19.1\n# via ipython\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.0.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlivereload==2.6.3\n# via sphinx-autobuild\nlxml==5.1.0\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.6\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.0.0\n# via c-therm-tci-docs\nmyst-parser==2.0.0\n# via myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.3\n# via\n# c-therm-tci-docs\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.8.1\n# via c-therm-tci\nparso==0.8.3\n# via jedi\npathspec==0.12.1\n# via copier\npexpect==4.9.0\n# via ipython\npip-requirements-parser==32.0.1\n# via fawltydeps\nplatformdirs==4.2.0\n# via\n# jupyter-core\n# virtualenv\npluggy==1.4.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\n# via c-therm-tci-tools\nprompt-toolkit==3.0.43\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\nptyprocess==0.7.0\n# via pexpect\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npydantic==2.6.4\n# via\n# copier\n# fawltydeps\npydantic-core==2.16.3\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.356\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\n# pyyaml-include\npyyaml-include==1.4.1\n# via copier\npyzmq==25.1.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==1.10.0\n# via copier\nreferencing==0.34.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruff==0.3.4\nsetuptools==69.2.0\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# livereload\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery-cli==1.16.0\nsphinx==7.2.6\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\nsphinx-autobuild==2024.2.4\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.1\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\ntabulate==0.9.0\n# via jupyter-cache\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# livereload\n# snakeviz\ntraitlets==5.14.2\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.10.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nvirtualenv==20.25.1\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwcwidth==0.2.13\n# via prompt-toolkit\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\nzstandard==0.22.0\n# via c-therm-tci-tools\n", - "macos-13_3.12_high": "# This file was autogenerated by uv via the following command:\n# uv pip compile --python-version 3.12 --resolution highest --exclude-newer 2024-03-27T23:40:31.063130Z --all-extras pyproject.toml requirements/dev.in\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nappnope==0.1.4\n# via ipykernel\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via jupyter-cache\ncolorama==0.4.6\n# via\n# copier\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.1.1\n# via c-therm-tci-tools\ncoverage==7.4.4\n# via pytest-cov\ncssselect==1.2.0\n# via parsel\ncyclopts==2.5.0\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via\n# copier\n# ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.20.1\n# via\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.19.2\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.3\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\nidentify==2.5.35\n# via pre-commit\nidna==3.6\n# via requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# myst-nb\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.22.2\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.3.1\n# via keyring\njaraco-context==4.3.0\n# via keyring\njaraco-functools==4.0.0\n# via keyring\njedi==0.19.1\n# via ipython\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.0.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlivereload==2.6.3\n# via sphinx-autobuild\nlxml==5.1.0\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.6\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.0.0\n# via c-therm-tci-docs\nmyst-parser==2.0.0\n# via myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.3\n# via\n# c-therm-tci-docs\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.9.0\n# via c-therm-tci\nparso==0.8.3\n# via jedi\npathspec==0.12.1\n# via copier\npexpect==4.9.0\n# via ipython\npip-requirements-parser==32.0.1\n# via fawltydeps\nplatformdirs==4.2.0\n# via\n# jupyter-core\n# virtualenv\npluggy==1.4.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\n# via c-therm-tci-tools\nprompt-toolkit==3.0.43\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\nptyprocess==0.7.0\n# via pexpect\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npydantic==2.6.4\n# via\n# copier\n# fawltydeps\npydantic-core==2.16.3\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.356\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\n# pyyaml-include\npyyaml-include==1.4.1\n# via copier\npyzmq==25.1.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==1.10.0\n# via copier\nreferencing==0.34.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruff==0.3.4\nsetuptools==69.2.0\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# livereload\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery-cli==1.16.0\nsphinx==7.2.6\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\nsphinx-autobuild==2024.2.4\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.1\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\ntabulate==0.9.0\n# via jupyter-cache\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# livereload\n# snakeviz\ntraitlets==5.14.2\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.10.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nvirtualenv==20.25.1\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwcwidth==0.2.13\n# via prompt-toolkit\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\nzstandard==0.22.0\n# via c-therm-tci-tools\n", - "macos-14_3.11": "# This file was autogenerated by uv via the following command:\n# uv pip compile --python-version 3.11 --resolution lowest-direct --exclude-newer 2024-04-11T03:20:31.912307Z --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nappnope==0.1.4\n# via ipykernel\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbackports-tarfile==1.0.0\n# via jaraco-context\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\ncolorama==0.4.6\n# via\n# copier\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\ncoverage==7.4.4\n# via pytest-cov\ncssselect==1.2.0\n# via parsel\ncyclopts==2.5.0\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.20.1\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.19.2\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\nidentify==2.5.35\n# via pre-commit\nidna==3.6\n# via requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# keyring\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.18.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.0\n# via keyring\njedi==0.19.1\n# via ipython\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.0.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlivereload==2.6.3\n# via sphinx-autobuild\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.6\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.0.0\n# via c-therm-tci-docs\nmyst-parser==2.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.8.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npexpect==4.9.0\n# via ipython\npip-requirements-parser==32.0.1\n# via fawltydeps\nplatformdirs==4.2.0\n# via\n# jupyter-core\n# virtualenv\npluggy==1.4.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.36\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\nptyprocess==0.7.0\n# via pexpect\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npydantic==2.6.4\n# via\n# copier\n# fawltydeps\npydantic-core==2.16.3\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.356\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==25.1.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==2.0.1\n# via copier\nreferencing==0.34.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via c-therm-tci-docs\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.3.4\nsetuptools==69.2.0\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# livereload\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.2.6\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.2.4\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.1\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# livereload\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.2\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nvirtualenv==20.25.1\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwcwidth==0.2.13\n# via prompt-toolkit\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n", - "macos-14_3.11_high": "# This file was autogenerated by uv via the following command:\n# uv pip compile --python-version 3.11 --resolution highest --exclude-newer 2024-04-11T03:20:32.219350Z --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nappnope==0.1.4\n# via ipykernel\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbackports-tarfile==1.0.0\n# via jaraco-context\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\ncolorama==0.4.6\n# via\n# copier\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\ncoverage==7.4.4\n# via pytest-cov\ncssselect==1.2.0\n# via parsel\ncyclopts==2.5.0\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.20.1\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.19.2\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\nidentify==2.5.35\n# via pre-commit\nidna==3.6\n# via requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# keyring\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.18.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.0\n# via keyring\njedi==0.19.1\n# via ipython\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.0.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlivereload==2.6.3\n# via sphinx-autobuild\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.6\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.0.0\n# via c-therm-tci-docs\nmyst-parser==2.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.9.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npexpect==4.9.0\n# via ipython\npip-requirements-parser==32.0.1\n# via fawltydeps\nplatformdirs==4.2.0\n# via\n# jupyter-core\n# virtualenv\npluggy==1.4.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.36\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\nptyprocess==0.7.0\n# via pexpect\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npydantic==2.6.4\n# via\n# copier\n# fawltydeps\npydantic-core==2.16.3\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.356\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==25.1.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==2.0.1\n# via copier\nreferencing==0.34.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via c-therm-tci-docs\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.3.4\nsetuptools==69.2.0\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# livereload\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.2.6\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.2.4\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.1\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# livereload\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.2\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nvirtualenv==20.25.1\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwcwidth==0.2.13\n# via prompt-toolkit\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n", - "macos-14_3.12": "# This file was autogenerated by uv via the following command:\n# uv pip compile --python-version 3.12 --resolution lowest-direct --exclude-newer 2024-04-11T03:20:32.516178Z --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nappnope==0.1.4\n# via ipykernel\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\ncolorama==0.4.6\n# via\n# copier\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\ncoverage==7.4.4\n# via pytest-cov\ncssselect==1.2.0\n# via parsel\ncyclopts==2.5.0\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.20.1\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.19.2\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\nidentify==2.5.35\n# via pre-commit\nidna==3.6\n# via requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.18.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.0\n# via keyring\njedi==0.19.1\n# via ipython\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.0.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlivereload==2.6.3\n# via sphinx-autobuild\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.6\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.0.0\n# via c-therm-tci-docs\nmyst-parser==2.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.8.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npexpect==4.9.0\n# via ipython\npip-requirements-parser==32.0.1\n# via fawltydeps\nplatformdirs==4.2.0\n# via\n# jupyter-core\n# virtualenv\npluggy==1.4.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.36\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\nptyprocess==0.7.0\n# via pexpect\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npydantic==2.6.4\n# via\n# copier\n# fawltydeps\npydantic-core==2.16.3\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.356\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==25.1.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==2.0.1\n# via copier\nreferencing==0.34.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via c-therm-tci-docs\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.3.4\nsetuptools==69.2.0\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# livereload\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.2.6\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.2.4\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.1\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# livereload\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.2\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nvirtualenv==20.25.1\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwcwidth==0.2.13\n# via prompt-toolkit\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n", - "macos-14_3.12_high": "# This file was autogenerated by uv via the following command:\n# uv pip compile --python-version 3.12 --resolution highest --exclude-newer 2024-04-11T03:20:32.808043Z --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nappnope==0.1.4\n# via ipykernel\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\ncolorama==0.4.6\n# via\n# copier\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\ncoverage==7.4.4\n# via pytest-cov\ncssselect==1.2.0\n# via parsel\ncyclopts==2.5.0\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.20.1\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.19.2\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\nidentify==2.5.35\n# via pre-commit\nidna==3.6\n# via requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.18.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.0\n# via keyring\njedi==0.19.1\n# via ipython\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.0.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlivereload==2.6.3\n# via sphinx-autobuild\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.6\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.0.0\n# via c-therm-tci-docs\nmyst-parser==2.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.9.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npexpect==4.9.0\n# via ipython\npip-requirements-parser==32.0.1\n# via fawltydeps\nplatformdirs==4.2.0\n# via\n# jupyter-core\n# virtualenv\npluggy==1.4.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.36\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\nptyprocess==0.7.0\n# via pexpect\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npydantic==2.6.4\n# via\n# copier\n# fawltydeps\npydantic-core==2.16.3\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.356\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==25.1.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==2.0.1\n# via copier\nreferencing==0.34.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via c-therm-tci-docs\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.3.4\nsetuptools==69.2.0\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# livereload\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.2.6\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.2.4\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.1\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# livereload\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.2\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nvirtualenv==20.25.1\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwcwidth==0.2.13\n# via prompt-toolkit\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n", - "ubuntu-22.04_3.11": "# This file was autogenerated by uv via the following command:\n# uv pip compile --python-version 3.11 --resolution lowest-direct --exclude-newer 2024-04-11T03:22:43.556246Z --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbackports-tarfile==1.0.0\n# via jaraco-context\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncffi==1.16.0\n# via cryptography\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\ncolorama==0.4.6\n# via\n# copier\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\ncoverage==7.4.4\n# via pytest-cov\ncryptography==42.0.5\n# via secretstorage\ncssselect==1.2.0\n# via parsel\ncyclopts==2.5.0\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.20.1\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.19.2\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\ngreenlet==3.0.3\n# via sqlalchemy\nidentify==2.5.35\n# via pre-commit\nidna==3.6\n# via requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# keyring\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.18.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.0\n# via keyring\njedi==0.19.1\n# via ipython\njeepney==0.8.0\n# via\n# keyring\n# secretstorage\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.0.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlivereload==2.6.3\n# via sphinx-autobuild\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.6\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.0.0\n# via c-therm-tci-docs\nmyst-parser==2.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.8.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npexpect==4.9.0\n# via ipython\npip-requirements-parser==32.0.1\n# via fawltydeps\nplatformdirs==4.2.0\n# via\n# jupyter-core\n# virtualenv\npluggy==1.4.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.36\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\nptyprocess==0.7.0\n# via pexpect\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npycparser==2.22\n# via cffi\npydantic==2.6.4\n# via\n# copier\n# fawltydeps\npydantic-core==2.16.3\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.356\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==25.1.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==2.0.1\n# via copier\nreferencing==0.34.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via c-therm-tci-docs\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.3.4\nsecretstorage==3.3.3\n# via keyring\nsetuptools==69.2.0\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# livereload\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.2.6\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.2.4\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.1\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# livereload\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.2\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nvirtualenv==20.25.1\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwcwidth==0.2.13\n# via prompt-toolkit\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n", - "ubuntu-22.04_3.11_high": "# This file was autogenerated by uv via the following command:\n# uv pip compile --python-version 3.11 --resolution highest --exclude-newer 2024-04-11T03:22:43.996811Z --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbackports-tarfile==1.0.0\n# via jaraco-context\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncffi==1.16.0\n# via cryptography\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\ncolorama==0.4.6\n# via\n# copier\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\ncoverage==7.4.4\n# via pytest-cov\ncryptography==42.0.5\n# via secretstorage\ncssselect==1.2.0\n# via parsel\ncyclopts==2.5.0\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.20.1\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.19.2\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\ngreenlet==3.0.3\n# via sqlalchemy\nidentify==2.5.35\n# via pre-commit\nidna==3.6\n# via requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# keyring\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.18.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.0\n# via keyring\njedi==0.19.1\n# via ipython\njeepney==0.8.0\n# via\n# keyring\n# secretstorage\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.0.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlivereload==2.6.3\n# via sphinx-autobuild\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.6\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.0.0\n# via c-therm-tci-docs\nmyst-parser==2.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.9.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npexpect==4.9.0\n# via ipython\npip-requirements-parser==32.0.1\n# via fawltydeps\nplatformdirs==4.2.0\n# via\n# jupyter-core\n# virtualenv\npluggy==1.4.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.36\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\nptyprocess==0.7.0\n# via pexpect\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npycparser==2.22\n# via cffi\npydantic==2.6.4\n# via\n# copier\n# fawltydeps\npydantic-core==2.16.3\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.356\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==25.1.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==2.0.1\n# via copier\nreferencing==0.34.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via c-therm-tci-docs\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.3.4\nsecretstorage==3.3.3\n# via keyring\nsetuptools==69.2.0\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# livereload\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.2.6\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.2.4\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.1\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# livereload\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.2\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nvirtualenv==20.25.1\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwcwidth==0.2.13\n# via prompt-toolkit\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n", - "ubuntu-22.04_3.12": "# This file was autogenerated by uv via the following command:\n# uv pip compile --python-version 3.12 --resolution lowest-direct --exclude-newer 2024-04-11T03:20:32.010683Z --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncffi==1.16.0\n# via cryptography\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\ncolorama==0.4.6\n# via\n# copier\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\ncoverage==7.4.4\n# via pytest-cov\ncryptography==42.0.5\n# via secretstorage\ncssselect==1.2.0\n# via parsel\ncyclopts==2.5.0\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.20.1\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.19.2\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\ngreenlet==3.0.3\n# via sqlalchemy\nidentify==2.5.35\n# via pre-commit\nidna==3.6\n# via requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.18.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.0\n# via keyring\njedi==0.19.1\n# via ipython\njeepney==0.8.0\n# via\n# keyring\n# secretstorage\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.0.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlivereload==2.6.3\n# via sphinx-autobuild\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.6\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.0.0\n# via c-therm-tci-docs\nmyst-parser==2.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.8.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npexpect==4.9.0\n# via ipython\npip-requirements-parser==32.0.1\n# via fawltydeps\nplatformdirs==4.2.0\n# via\n# jupyter-core\n# virtualenv\npluggy==1.4.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.36\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\nptyprocess==0.7.0\n# via pexpect\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npycparser==2.22\n# via cffi\npydantic==2.6.4\n# via\n# copier\n# fawltydeps\npydantic-core==2.16.3\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.356\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==25.1.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==2.0.1\n# via copier\nreferencing==0.34.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via c-therm-tci-docs\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.3.4\nsecretstorage==3.3.3\n# via keyring\nsetuptools==69.2.0\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# livereload\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.2.6\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.2.4\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.1\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# livereload\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.2\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nvirtualenv==20.25.1\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwcwidth==0.2.13\n# via prompt-toolkit\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n", - "ubuntu-22.04_3.12_high": "# This file was autogenerated by uv via the following command:\n# uv pip compile --python-version 3.12 --resolution highest --exclude-newer 2024-04-11T03:20:32.401122Z --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncffi==1.16.0\n# via cryptography\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\ncolorama==0.4.6\n# via\n# copier\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\ncoverage==7.4.4\n# via pytest-cov\ncryptography==42.0.5\n# via secretstorage\ncssselect==1.2.0\n# via parsel\ncyclopts==2.5.0\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.20.1\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.19.2\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\ngreenlet==3.0.3\n# via sqlalchemy\nidentify==2.5.35\n# via pre-commit\nidna==3.6\n# via requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.18.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.0\n# via keyring\njedi==0.19.1\n# via ipython\njeepney==0.8.0\n# via\n# keyring\n# secretstorage\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.0.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlivereload==2.6.3\n# via sphinx-autobuild\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.6\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.0.0\n# via c-therm-tci-docs\nmyst-parser==2.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.9.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npexpect==4.9.0\n# via ipython\npip-requirements-parser==32.0.1\n# via fawltydeps\nplatformdirs==4.2.0\n# via\n# jupyter-core\n# virtualenv\npluggy==1.4.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.36\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\nptyprocess==0.7.0\n# via pexpect\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npycparser==2.22\n# via cffi\npydantic==2.6.4\n# via\n# copier\n# fawltydeps\npydantic-core==2.16.3\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.356\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==25.1.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==2.0.1\n# via copier\nreferencing==0.34.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via c-therm-tci-docs\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.3.4\nsecretstorage==3.3.3\n# via keyring\nsetuptools==69.2.0\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# livereload\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.2.6\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.2.4\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.1\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# livereload\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.2\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nvirtualenv==20.25.1\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwcwidth==0.2.13\n# via prompt-toolkit\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n", - "windows-2022_3.11": "# This file was autogenerated by uv via the following command:\n# uv pip compile --python-version 3.11 --resolution lowest-direct --exclude-newer 2024-04-11T03:21:00.232233Z --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbackports-tarfile==1.0.0\n# via jaraco-context\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\ncolorama==0.4.6\n# via\n# click\n# copier\n# ipython\n# pytest\n# sphinx\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\ncoverage==7.4.4\n# via pytest-cov\ncssselect==1.2.0\n# via parsel\ncyclopts==2.5.0\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.20.1\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.19.2\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\ngreenlet==3.0.3\n# via sqlalchemy\nidentify==2.5.35\n# via pre-commit\nidna==3.6\n# via requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# keyring\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.18.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.0\n# via keyring\njedi==0.19.1\n# via ipython\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.0.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlivereload==2.6.3\n# via sphinx-autobuild\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.6\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.0.0\n# via c-therm-tci-docs\nmyst-parser==2.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.8.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npip-requirements-parser==32.0.1\n# via fawltydeps\nplatformdirs==4.2.0\n# via\n# jupyter-core\n# virtualenv\npluggy==1.4.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.36\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npydantic==2.6.4\n# via\n# copier\n# fawltydeps\npydantic-core==2.16.3\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.356\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npywin32==306\n# via\n# jupyter-core\n# plumbum\npywin32-ctypes==0.2.2\n# via keyring\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==25.1.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==2.0.1\n# via copier\nreferencing==0.34.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via c-therm-tci-docs\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.3.4\nsetuptools==69.2.0\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# livereload\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.2.6\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.2.4\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.1\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# livereload\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.2\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nvirtualenv==20.25.1\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwcwidth==0.2.13\n# via prompt-toolkit\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n", - "windows-2022_3.11_high": "# This file was autogenerated by uv via the following command:\n# uv pip compile --python-version 3.11 --resolution highest --exclude-newer 2024-04-11T03:21:00.857241Z --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbackports-tarfile==1.0.0\n# via jaraco-context\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\ncolorama==0.4.6\n# via\n# click\n# copier\n# ipython\n# pytest\n# sphinx\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\ncoverage==7.4.4\n# via pytest-cov\ncssselect==1.2.0\n# via parsel\ncyclopts==2.5.0\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.20.1\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.19.2\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\ngreenlet==3.0.3\n# via sqlalchemy\nidentify==2.5.35\n# via pre-commit\nidna==3.6\n# via requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# keyring\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.18.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.0\n# via keyring\njedi==0.19.1\n# via ipython\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.0.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlivereload==2.6.3\n# via sphinx-autobuild\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.6\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.0.0\n# via c-therm-tci-docs\nmyst-parser==2.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.9.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npip-requirements-parser==32.0.1\n# via fawltydeps\nplatformdirs==4.2.0\n# via\n# jupyter-core\n# virtualenv\npluggy==1.4.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.36\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npydantic==2.6.4\n# via\n# copier\n# fawltydeps\npydantic-core==2.16.3\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.356\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npywin32==306\n# via\n# jupyter-core\n# plumbum\npywin32-ctypes==0.2.2\n# via keyring\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==25.1.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==2.0.1\n# via copier\nreferencing==0.34.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via c-therm-tci-docs\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.3.4\nsetuptools==69.2.0\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# livereload\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.2.6\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.2.4\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.1\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# livereload\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.2\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nvirtualenv==20.25.1\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwcwidth==0.2.13\n# via prompt-toolkit\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n", - "windows-2022_3.12": "# This file was autogenerated by uv via the following command:\n# uv pip compile --python-version 3.12 --resolution lowest-direct --exclude-newer 2024-04-11T03:20:53.872314Z --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\ncolorama==0.4.6\n# via\n# click\n# copier\n# ipython\n# pytest\n# sphinx\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\ncoverage==7.4.4\n# via pytest-cov\ncssselect==1.2.0\n# via parsel\ncyclopts==2.5.0\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.20.1\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.19.2\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\ngreenlet==3.0.3\n# via sqlalchemy\nidentify==2.5.35\n# via pre-commit\nidna==3.6\n# via requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.18.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.0\n# via keyring\njedi==0.19.1\n# via ipython\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.0.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlivereload==2.6.3\n# via sphinx-autobuild\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.6\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.0.0\n# via c-therm-tci-docs\nmyst-parser==2.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.8.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npip-requirements-parser==32.0.1\n# via fawltydeps\nplatformdirs==4.2.0\n# via\n# jupyter-core\n# virtualenv\npluggy==1.4.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.36\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npydantic==2.6.4\n# via\n# copier\n# fawltydeps\npydantic-core==2.16.3\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.356\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npywin32==306\n# via\n# jupyter-core\n# plumbum\npywin32-ctypes==0.2.2\n# via keyring\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==25.1.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==2.0.1\n# via copier\nreferencing==0.34.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via c-therm-tci-docs\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.3.4\nsetuptools==69.2.0\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# livereload\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.2.6\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.2.4\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.1\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# livereload\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.2\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nvirtualenv==20.25.1\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwcwidth==0.2.13\n# via prompt-toolkit\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n", - "windows-2022_3.12_high": "# This file was autogenerated by uv via the following command:\n# uv pip compile --python-version 3.12 --resolution highest --exclude-newer 2024-04-11T03:20:54.434795Z --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\ncolorama==0.4.6\n# via\n# click\n# copier\n# ipython\n# pytest\n# sphinx\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\ncoverage==7.4.4\n# via pytest-cov\ncssselect==1.2.0\n# via parsel\ncyclopts==2.5.0\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.20.1\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.19.2\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\ngreenlet==3.0.3\n# via sqlalchemy\nidentify==2.5.35\n# via pre-commit\nidna==3.6\n# via requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.18.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.0\n# via keyring\njedi==0.19.1\n# via ipython\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.0.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlivereload==2.6.3\n# via sphinx-autobuild\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.6\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.0.0\n# via c-therm-tci-docs\nmyst-parser==2.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.9.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npip-requirements-parser==32.0.1\n# via fawltydeps\nplatformdirs==4.2.0\n# via\n# jupyter-core\n# virtualenv\npluggy==1.4.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.36\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npydantic==2.6.4\n# via\n# copier\n# fawltydeps\npydantic-core==2.16.3\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.356\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npywin32==306\n# via\n# jupyter-core\n# plumbum\npywin32-ctypes==0.2.2\n# via keyring\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==25.1.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==2.0.1\n# via copier\nreferencing==0.34.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via c-therm-tci-docs\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.3.4\nsetuptools==69.2.0\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# livereload\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.2.6\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.2.4\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.1\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# livereload\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.2\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nvirtualenv==20.25.1\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwcwidth==0.2.13\n# via prompt-toolkit\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n" + "linux_3.11": "# uv 0.1.38\n# This file was autogenerated by uv via the following command:\n# uv pip compile --exclude-newer 2024-04-24T22:13:35.432091Z --python-platform linux --python-version 3.11 --resolution lowest-direct --override requirements/override.txt --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nanyio==4.3.0\n# via\n# starlette\n# watchfiles\nargcomplete==3.3.0\n# via pipx\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbackports-tarfile==1.1.1\n# via jaraco-context\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncffi==1.16.0\n# via cryptography\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\n# userpath\n# uvicorn\ncolorama==0.4.6\n# via\n# copier\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\n# via c-therm-tci-tools\ncoverage==7.5.0\n# via pytest-cov\ncryptography==42.0.5\n# via secretstorage\ncssselect==1.2.0\n# via parsel\ncyclopts==2.6.1\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.21.2\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.20.0\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\ngreenlet==3.0.3\n# via sqlalchemy\nh11==0.14.0\n# via uvicorn\nidentify==2.5.36\n# via pre-commit\nidna==3.7\n# via\n# anyio\n# requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# keyring\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.23.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.1\n# via keyring\njedi==0.19.1\n# via ipython\njeepney==0.8.0\n# via\n# keyring\n# secretstorage\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.1.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.7\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.1.0\n# via c-therm-tci-docs\nmyst-parser==3.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pipx\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.8.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npexpect==4.9.0\n# via ipython\npip-requirements-parser==32.0.1\n# via fawltydeps\npipx==1.5.0\n# via c-therm-tci-tools\nplatformdirs==4.2.1\n# via\n# jupyter-core\n# pipx\n# virtualenv\npluggy==1.5.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.43\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\nptyprocess==0.7.0\n# via pexpect\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npycparser==2.22\n# via cffi\npydantic==2.7.1\n# via\n# copier\n# fawltydeps\npydantic-core==2.18.2\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.360\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==26.0.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==1.10.0\n# via copier\nreferencing==0.35.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via\n# c-therm-tci-docs\n# c-therm-tci-tools\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.4.1\nsecretstorage==3.3.3\n# via keyring\nsetuptools==69.5.1\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsniffio==1.3.1\n# via anyio\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.3.7\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.4.16\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.3\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\nstarlette==0.37.2\n# via sphinx-autobuild\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.3\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# ipython\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nuserpath==1.9.2\n# via pipx\nuvicorn==0.29.0\n# via sphinx-autobuild\nvirtualenv==20.26.0\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwatchfiles==0.21.0\n# via sphinx-autobuild\nwcwidth==0.2.13\n# via prompt-toolkit\nwebsockets==12.0\n# via sphinx-autobuild\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n", + "linux_3.12": "# uv 0.1.38\n# This file was autogenerated by uv via the following command:\n# uv pip compile --exclude-newer 2024-04-24T22:13:36.356164Z --python-platform linux --python-version 3.12 --resolution lowest-direct --override requirements/override.txt --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nanyio==4.3.0\n# via\n# starlette\n# watchfiles\nargcomplete==3.3.0\n# via pipx\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncffi==1.16.0\n# via cryptography\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\n# userpath\n# uvicorn\ncolorama==0.4.6\n# via\n# copier\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\n# via c-therm-tci-tools\ncoverage==7.5.0\n# via pytest-cov\ncryptography==42.0.5\n# via secretstorage\ncssselect==1.2.0\n# via parsel\ncyclopts==2.6.1\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.21.2\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.20.0\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\ngreenlet==3.0.3\n# via sqlalchemy\nh11==0.14.0\n# via uvicorn\nidentify==2.5.36\n# via pre-commit\nidna==3.7\n# via\n# anyio\n# requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.23.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.1\n# via keyring\njedi==0.19.1\n# via ipython\njeepney==0.8.0\n# via\n# keyring\n# secretstorage\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.1.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.7\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.1.0\n# via c-therm-tci-docs\nmyst-parser==3.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pipx\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.8.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npexpect==4.9.0\n# via ipython\npip-requirements-parser==32.0.1\n# via fawltydeps\npipx==1.5.0\n# via c-therm-tci-tools\nplatformdirs==4.2.1\n# via\n# jupyter-core\n# pipx\n# virtualenv\npluggy==1.5.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.43\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\nptyprocess==0.7.0\n# via pexpect\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npycparser==2.22\n# via cffi\npydantic==2.7.1\n# via\n# copier\n# fawltydeps\npydantic-core==2.18.2\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.360\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==26.0.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==1.10.0\n# via copier\nreferencing==0.35.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via\n# c-therm-tci-docs\n# c-therm-tci-tools\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.4.1\nsecretstorage==3.3.3\n# via keyring\nsetuptools==69.5.1\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsniffio==1.3.1\n# via anyio\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.3.7\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.4.16\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.3\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\nstarlette==0.37.2\n# via sphinx-autobuild\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.3\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nuserpath==1.9.2\n# via pipx\nuvicorn==0.29.0\n# via sphinx-autobuild\nvirtualenv==20.26.0\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwatchfiles==0.21.0\n# via sphinx-autobuild\nwcwidth==0.2.13\n# via prompt-toolkit\nwebsockets==12.0\n# via sphinx-autobuild\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n", + "macos_3.11": "# uv 0.1.38\n# This file was autogenerated by uv via the following command:\n# uv pip compile --exclude-newer 2024-04-24T22:13:37.489152Z --python-platform macos --python-version 3.11 --resolution lowest-direct --override requirements/override.txt --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nanyio==4.3.0\n# via\n# starlette\n# watchfiles\nappnope==0.1.4\n# via ipykernel\nargcomplete==3.3.0\n# via pipx\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbackports-tarfile==1.1.1\n# via jaraco-context\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\n# userpath\n# uvicorn\ncolorama==0.4.6\n# via\n# copier\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\n# via c-therm-tci-tools\ncoverage==7.5.0\n# via pytest-cov\ncssselect==1.2.0\n# via parsel\ncyclopts==2.6.1\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.21.2\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.20.0\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\ngreenlet==3.0.3\n# via sqlalchemy\nh11==0.14.0\n# via uvicorn\nidentify==2.5.36\n# via pre-commit\nidna==3.7\n# via\n# anyio\n# requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# keyring\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.23.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.1\n# via keyring\njedi==0.19.1\n# via ipython\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.1.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.7\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.1.0\n# via c-therm-tci-docs\nmyst-parser==3.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pipx\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.8.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npexpect==4.9.0\n# via ipython\npip-requirements-parser==32.0.1\n# via fawltydeps\npipx==1.5.0\n# via c-therm-tci-tools\nplatformdirs==4.2.1\n# via\n# jupyter-core\n# pipx\n# virtualenv\npluggy==1.5.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.43\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\nptyprocess==0.7.0\n# via pexpect\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npydantic==2.7.1\n# via\n# copier\n# fawltydeps\npydantic-core==2.18.2\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.360\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==26.0.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==1.10.0\n# via copier\nreferencing==0.35.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via\n# c-therm-tci-docs\n# c-therm-tci-tools\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.4.1\nsetuptools==69.5.1\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsniffio==1.3.1\n# via anyio\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.3.7\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.4.16\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.3\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\nstarlette==0.37.2\n# via sphinx-autobuild\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.3\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# ipython\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nuserpath==1.9.2\n# via pipx\nuvicorn==0.29.0\n# via sphinx-autobuild\nvirtualenv==20.26.0\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwatchfiles==0.21.0\n# via sphinx-autobuild\nwcwidth==0.2.13\n# via prompt-toolkit\nwebsockets==12.0\n# via sphinx-autobuild\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n", + "macos_3.12": "# uv 0.1.38\n# This file was autogenerated by uv via the following command:\n# uv pip compile --exclude-newer 2024-04-24T22:13:38.143120Z --python-platform macos --python-version 3.12 --resolution lowest-direct --override requirements/override.txt --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nanyio==4.3.0\n# via\n# starlette\n# watchfiles\nappnope==0.1.4\n# via ipykernel\nargcomplete==3.3.0\n# via pipx\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\n# userpath\n# uvicorn\ncolorama==0.4.6\n# via\n# copier\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\n# via c-therm-tci-tools\ncoverage==7.5.0\n# via pytest-cov\ncssselect==1.2.0\n# via parsel\ncyclopts==2.6.1\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.21.2\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.20.0\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\ngreenlet==3.0.3\n# via sqlalchemy\nh11==0.14.0\n# via uvicorn\nidentify==2.5.36\n# via pre-commit\nidna==3.7\n# via\n# anyio\n# requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.23.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.1\n# via keyring\njedi==0.19.1\n# via ipython\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.1.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.7\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.1.0\n# via c-therm-tci-docs\nmyst-parser==3.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pipx\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.8.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npexpect==4.9.0\n# via ipython\npip-requirements-parser==32.0.1\n# via fawltydeps\npipx==1.5.0\n# via c-therm-tci-tools\nplatformdirs==4.2.1\n# via\n# jupyter-core\n# pipx\n# virtualenv\npluggy==1.5.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.43\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\nptyprocess==0.7.0\n# via pexpect\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npydantic==2.7.1\n# via\n# copier\n# fawltydeps\npydantic-core==2.18.2\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.360\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==26.0.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==1.10.0\n# via copier\nreferencing==0.35.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via\n# c-therm-tci-docs\n# c-therm-tci-tools\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.4.1\nsetuptools==69.5.1\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsniffio==1.3.1\n# via anyio\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.3.7\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.4.16\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.3\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\nstarlette==0.37.2\n# via sphinx-autobuild\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.3\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nuserpath==1.9.2\n# via pipx\nuvicorn==0.29.0\n# via sphinx-autobuild\nvirtualenv==20.26.0\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwatchfiles==0.21.0\n# via sphinx-autobuild\nwcwidth==0.2.13\n# via prompt-toolkit\nwebsockets==12.0\n# via sphinx-autobuild\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n", + "windows_3.11": "# uv 0.1.38\n# This file was autogenerated by uv via the following command:\n# uv pip compile --exclude-newer 2024-04-24T22:13:38.817197Z --python-platform windows --python-version 3.11 --resolution lowest-direct --override requirements/override.txt --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nanyio==4.3.0\n# via\n# starlette\n# watchfiles\nargcomplete==3.3.0\n# via pipx\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbackports-tarfile==1.1.1\n# via jaraco-context\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\n# userpath\n# uvicorn\ncolorama==0.4.6\n# via\n# click\n# copier\n# ipython\n# pipx\n# pytest\n# sphinx\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\n# via c-therm-tci-tools\ncoverage==7.5.0\n# via pytest-cov\ncssselect==1.2.0\n# via parsel\ncyclopts==2.6.1\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.21.2\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.20.0\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\ngreenlet==3.0.3\n# via sqlalchemy\nh11==0.14.0\n# via uvicorn\nidentify==2.5.36\n# via pre-commit\nidna==3.7\n# via\n# anyio\n# requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# keyring\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.23.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.1\n# via keyring\njedi==0.19.1\n# via ipython\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.1.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.7\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.1.0\n# via c-therm-tci-docs\nmyst-parser==3.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pipx\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.8.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npip-requirements-parser==32.0.1\n# via fawltydeps\npipx==1.5.0\n# via c-therm-tci-tools\nplatformdirs==4.2.1\n# via\n# jupyter-core\n# pipx\n# virtualenv\npluggy==1.5.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.43\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npydantic==2.7.1\n# via\n# copier\n# fawltydeps\npydantic-core==2.18.2\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.360\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npywin32==306\n# via\n# jupyter-core\n# plumbum\npywin32-ctypes==0.2.2\n# via keyring\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==26.0.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==1.10.0\n# via copier\nreferencing==0.35.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via\n# c-therm-tci-docs\n# c-therm-tci-tools\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.4.1\nsetuptools==69.5.1\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsniffio==1.3.1\n# via anyio\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.3.7\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.4.16\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.3\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\nstarlette==0.37.2\n# via sphinx-autobuild\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.3\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# ipython\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nuserpath==1.9.2\n# via pipx\nuvicorn==0.29.0\n# via sphinx-autobuild\nvirtualenv==20.26.0\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwatchfiles==0.21.0\n# via sphinx-autobuild\nwcwidth==0.2.13\n# via prompt-toolkit\nwebsockets==12.0\n# via sphinx-autobuild\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n", + "windows_3.12": "# uv 0.1.38\n# This file was autogenerated by uv via the following command:\n# uv pip compile --exclude-newer 2024-04-24T22:13:39.353875Z --python-platform windows --python-version 3.12 --resolution lowest-direct --override requirements/override.txt --all-extras requirements/dev.in pyproject.toml docs/pyproject.toml scripts/pyproject.toml tests/pyproject.toml\n-e .\n-e docs/\n-e scripts/\n-e tests/\naccessible-pygments==0.0.4\n# via pydata-sphinx-theme\nalabaster==0.7.16\n# via sphinx\nannotated-types==0.6.0\n# via pydantic\nanyio==4.3.0\n# via\n# starlette\n# watchfiles\nargcomplete==3.3.0\n# via pipx\nastroid==3.1.0\n# via sphinx-autodoc2\nasttokens==2.4.1\n# via stack-data\nattrs==23.2.0\n# via\n# cyclopts\n# jsonschema\n# jupyter-cache\n# referencing\nbabel==2.14.0\n# via\n# pydata-sphinx-theme\n# sphinx\nbeautifulsoup4==4.12.3\n# via\n# pydata-sphinx-theme\n# sphinx-tippy\ncertifi==2024.2.2\n# via requests\ncfgv==3.4.0\n# via pre-commit\ncharset-normalizer==3.3.2\n# via requests\nclick==8.1.7\n# via\n# jupyter-cache\n# towncrier\n# userpath\n# uvicorn\ncolorama==0.4.6\n# via\n# click\n# copier\n# ipython\n# pipx\n# pytest\n# sphinx\n# sphinx-autobuild\ncomm==0.2.2\n# via ipykernel\ncopier==9.2.0\n# via c-therm-tci-tools\ncoverage==7.5.0\n# via pytest-cov\ncssselect==1.2.0\n# via parsel\ncyclopts==2.6.1\n# via c-therm-tci-tools\ndebugpy==1.8.1\n# via ipykernel\ndecorator==5.1.1\n# via ipython\ndistlib==0.3.8\n# via virtualenv\ndocstring-parser==0.15\n# via cyclopts\ndocutils==0.21.2\n# via\n# c-therm-tci-docs\n# flit\n# myst-parser\n# pybtex-docutils\n# pydata-sphinx-theme\n# rich-rst\n# sphinx\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\ndunamai==1.20.0\n# via copier\nexecuting==2.0.1\n# via stack-data\nfastjsonschema==2.19.1\n# via nbformat\nfawltydeps==0.15.0\nfilelock==3.13.4\n# via virtualenv\nflit==3.9.0\nflit-core==3.9.0\n# via flit\nfuncy==2.0\n# via copier\ngreenlet==3.0.3\n# via sqlalchemy\nh11==0.14.0\n# via uvicorn\nidentify==2.5.36\n# via pre-commit\nidna==3.7\n# via\n# anyio\n# requests\nimagesize==1.4.1\n# via sphinx\nimportlib-metadata==7.1.0\n# via\n# fawltydeps\n# jupyter-cache\n# myst-nb\nincremental==22.10.0\n# via towncrier\niniconfig==2.0.0\n# via pytest\nipykernel==6.29.4\n# via myst-nb\nipython==8.23.0\n# via\n# ipykernel\n# myst-nb\nisort==5.13.2\n# via fawltydeps\njaraco-classes==3.4.0\n# via keyring\njaraco-context==5.3.0\n# via keyring\njaraco-functools==4.0.1\n# via keyring\njedi==0.19.1\n# via ipython\njinja2==3.1.3\n# via\n# copier\n# jinja2-ansible-filters\n# myst-parser\n# sphinx\n# sphinx-tippy\n# towncrier\njinja2-ansible-filters==1.3.2\n# via copier\njmespath==1.0.1\n# via parsel\njsonschema==4.21.1\n# via nbformat\njsonschema-specifications==2023.12.1\n# via jsonschema\njupyter-cache==1.0.0\n# via myst-nb\njupyter-client==8.6.1\n# via\n# ipykernel\n# nbclient\njupyter-core==5.7.2\n# via\n# ipykernel\n# jupyter-client\n# nbclient\n# nbformat\nkeyring==25.1.0\nlatexcodec==3.0.0\n# via pybtex\nlinkify-it-py==2.0.3\n# via c-therm-tci-docs\nlxml==5.2.1\n# via parsel\nmarkdown-it-py==3.0.0\n# via\n# mdit-py-plugins\n# myst-parser\n# rich\nmarkupsafe==2.1.5\n# via jinja2\nmatplotlib-inline==0.1.7\n# via\n# ipykernel\n# ipython\nmdit-py-plugins==0.4.0\n# via myst-parser\nmdurl==0.1.2\n# via markdown-it-py\nmore-itertools==10.2.0\n# via\n# jaraco-classes\n# jaraco-functools\nmyst-nb==1.1.0\n# via c-therm-tci-docs\nmyst-parser==3.0.0\n# via\n# c-therm-tci-docs\n# myst-nb\nnbclient==0.10.0\n# via\n# jupyter-cache\n# myst-nb\nnbformat==5.10.4\n# via\n# jupyter-cache\n# myst-nb\n# nbclient\nnest-asyncio==1.6.0\n# via ipykernel\nnodeenv==1.8.0\n# via\n# pre-commit\n# pyright\nnumpydoc==1.7.0\n# via c-therm-tci-docs\npackaging==24.0\n# via\n# copier\n# dunamai\n# ipykernel\n# parsel\n# pip-requirements-parser\n# pipx\n# pydata-sphinx-theme\n# pytest\n# sphinx\nparsel==1.8.1\n# via c-therm-tci\nparso==0.8.4\n# via jedi\npathspec==0.12.1\n# via copier\npip-requirements-parser==32.0.1\n# via fawltydeps\npipx==1.5.0\n# via c-therm-tci-tools\nplatformdirs==4.2.1\n# via\n# jupyter-core\n# pipx\n# virtualenv\npluggy==1.5.0\n# via pytest\nplumbum==1.8.2\n# via copier\npre-commit==3.7.0\nprompt-toolkit==3.0.43\n# via\n# ipython\n# questionary\npsutil==5.9.8\n# via ipykernel\npure-eval==0.2.2\n# via stack-data\npybtex==0.24.0\n# via\n# pybtex-docutils\n# sphinxcontrib-bibtex\npybtex-docutils==1.0.3\n# via sphinxcontrib-bibtex\npydantic==2.7.1\n# via\n# copier\n# fawltydeps\npydantic-core==2.18.2\n# via pydantic\npydata-sphinx-theme==0.15.2\n# via sphinx-book-theme\npygments==2.17.2\n# via\n# accessible-pygments\n# copier\n# ipython\n# pydata-sphinx-theme\n# rich\n# sphinx\npyparsing==3.1.2\n# via pip-requirements-parser\npyright==1.1.360\npytest==8.0.0\n# via\n# c-therm-tci-tests\n# pytest-cov\n# pytest-custom-exit-code\n# pytest-github-actions-annotate-failures\npytest-cov==4.1.0\n# via c-therm-tci-tests\npytest-custom-exit-code==0.3.0\n# via c-therm-tci-tests\npytest-github-actions-annotate-failures==0.2.0\n# via c-therm-tci-tests\npython-dateutil==2.9.0.post0\n# via jupyter-client\npywin32==306\n# via\n# jupyter-core\n# plumbum\npywin32-ctypes==0.2.2\n# via keyring\npyyaml==6.0.1\n# via\n# copier\n# jinja2-ansible-filters\n# jupyter-cache\n# myst-nb\n# myst-parser\n# pre-commit\n# pybtex\npyzmq==26.0.2\n# via\n# ipykernel\n# jupyter-client\nquestionary==1.10.0\n# via copier\nreferencing==0.35.0\n# via\n# jsonschema\n# jsonschema-specifications\nrequests==2.31.0\n# via\n# flit\n# sphinx\n# sphinx-tippy\nrich==13.7.1\n# via\n# cyclopts\n# rich-rst\nrich-rst==1.2.0\n# via cyclopts\nrpds-py==0.18.0\n# via\n# jsonschema\n# referencing\nruamel-yaml==0.18.6\n# via\n# c-therm-tci-docs\n# c-therm-tci-tools\nruamel-yaml-clib==0.2.8\n# via ruamel-yaml\nruff==0.4.1\nsetuptools==69.5.1\n# via\n# fawltydeps\n# nodeenv\n# sphinx-togglebutton\nsix==1.16.0\n# via\n# asttokens\n# pybtex\n# python-dateutil\nsnakeviz==2.2.0\nsniffio==1.3.1\n# via anyio\nsnowballstemmer==2.2.0\n# via sphinx\nsoupsieve==2.5\n# via beautifulsoup4\nsourcery==1.16.0\nsphinx==7.3.7\n# via\n# c-therm-tci-docs\n# myst-nb\n# myst-parser\n# numpydoc\n# pydata-sphinx-theme\n# sphinx-autobuild\n# sphinx-book-theme\n# sphinx-design\n# sphinx-thebe\n# sphinx-tippy\n# sphinx-togglebutton\n# sphinxcontrib-bibtex\n# sphinxcontrib-towncrier\nsphinx-autobuild==2024.4.16\n# via c-therm-tci-docs\nsphinx-autodoc2==0.5.0\n# via c-therm-tci-docs\nsphinx-book-theme==1.1.2\n# via c-therm-tci-docs\nsphinx-design==0.5.0\n# via c-therm-tci-docs\nsphinx-thebe==0.3.1\n# via c-therm-tci-docs\nsphinx-tippy==0.4.3\n# via c-therm-tci-docs\nsphinx-togglebutton==0.3.2\n# via c-therm-tci-docs\nsphinxcontrib-applehelp==1.0.8\n# via sphinx\nsphinxcontrib-bibtex==2.6.2\n# via c-therm-tci-docs\nsphinxcontrib-devhelp==1.0.6\n# via sphinx\nsphinxcontrib-htmlhelp==2.0.5\n# via sphinx\nsphinxcontrib-jsmath==1.0.1\n# via sphinx\nsphinxcontrib-mermaid==0.9.2\n# via c-therm-tci-docs\nsphinxcontrib-qthelp==1.0.7\n# via sphinx\nsphinxcontrib-serializinghtml==1.1.10\n# via sphinx\nsphinxcontrib-towncrier==0.4.0a0\n# via c-therm-tci-docs\nsqlalchemy==2.0.29\n# via jupyter-cache\nstack-data==0.6.3\n# via ipython\nstarlette==0.37.2\n# via sphinx-autobuild\ntabulate==0.9.0\n# via\n# jupyter-cache\n# numpydoc\ntomli-w==1.0.0\n# via flit\ntornado==6.4\n# via\n# ipykernel\n# jupyter-client\n# snakeviz\ntowncrier==23.11.0\n# via sphinxcontrib-towncrier\ntraitlets==5.14.3\n# via\n# comm\n# ipykernel\n# ipython\n# jupyter-client\n# jupyter-core\n# matplotlib-inline\n# nbclient\n# nbformat\ntyping-extensions==4.11.0\n# via\n# cyclopts\n# myst-nb\n# pydantic\n# pydantic-core\n# pydata-sphinx-theme\n# sphinx-autodoc2\n# sqlalchemy\nuc-micro-py==1.0.3\n# via linkify-it-py\nurllib3==2.2.1\n# via requests\nuserpath==1.9.2\n# via pipx\nuvicorn==0.29.0\n# via sphinx-autobuild\nvirtualenv==20.26.0\n# via pre-commit\nw3lib==2.1.2\n# via parsel\nwatchfiles==0.21.0\n# via sphinx-autobuild\nwcwidth==0.2.13\n# via prompt-toolkit\nwebsockets==12.0\n# via sphinx-autobuild\nwheel==0.43.0\n# via sphinx-togglebutton\nzipp==3.18.1\n# via importlib-metadata\n" } diff --git a/pyproject.toml b/pyproject.toml index 844d90c..dfe3788 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,12 @@ email = "blake.naccarato@gmail.com" [tool.coverage.run] branch = true -source = ["c_therm_tci", "c_therm_tci_docs", "c_therm_tci_tests", "c_therm_tci_tools"] +source = [ + "c_therm_tci", + "c_therm_tci_docs", + "c_therm_tci_tests", + "c_therm_tci_tools", +] [tool.coverage.report] ignore_errors = true [tool.fawltydeps] @@ -203,8 +208,10 @@ ignore = [ "FBT", # Allow boolean "traps" "FIX002", # Allow TODOs "FLY002", # Allow different string representations + "FURB118", # Incorrectly applies `itemgetter` "FURB140", # Don't replace comprehensions with starmap "G0", # Allow f-strings, etc. in Loguru logging + "ICN", # Don't require these ad-hoc "conventional" import names "INP001", # False positives. Checks for packages missing `__init__.py` "ISC", # False positives. Implicit string concatenation is fine. "PD009", # Allow `df.iat`. diff --git a/requirements/dev.in b/requirements/dev.in index c18f4cc..eac9300 100644 --- a/requirements/dev.in +++ b/requirements/dev.in @@ -2,14 +2,13 @@ --editable docs/ --editable scripts/ --editable tests/ -copier==9.2.0 debugpy==1.8.1 fawltydeps==0.15.0 flit==3.9.0 -keyring==25.0.0 +keyring==25.1.0 pre-commit==3.7.0 -pyright==1.1.356 -ruff==0.3.4 +pyright==1.1.360 +ruff==0.4.1 snakeviz==2.2.0 sourcery==1.16.0 towncrier==23.11.0 diff --git a/requirements/override.txt b/requirements/override.txt new file mode 100644 index 0000000..e69de29 diff --git a/requirements/uv.in b/requirements/uv.in index edc3832..4ab0555 100644 --- a/requirements/uv.in +++ b/requirements/uv.in @@ -1 +1 @@ -uv==0.1.27 +uv==0.1.38 diff --git a/scripts/Common.ps1 b/scripts/Common.ps1 index a1b7ec7..69dcf26 100644 --- a/scripts/Common.ps1 +++ b/scripts/Common.ps1 @@ -1,6 +1,8 @@ <#.SYNOPSIS Common utilities.#> +. scripts/Initialize-Shell.ps1 + function Get-Py { <#.SYNOPSIS Get virtual environment Python interpreter, creating it if necessary.#> @@ -11,7 +13,7 @@ function Get-Py { 'Virtual environment is the wrong Python version' | Write-Progress -Info Remove-Item -Recurse -Force $Env:VIRTUAL_ENV } - & $(Get-PySystem $Version) -m venv '.venv' + uv venv --python $(Get-PySystem $Version) return Start-PyVenv } @@ -42,7 +44,7 @@ function Get-PySystem { 'Could not find correct version of Python' | Write-Progress -Info 'DOWNLOADING AND INSTALLING CORRECT PYTHON VERSION TO PROJECT BIN' | Write-Progress $SysPyVenvPath = 'bin/sys_venv' - if (!(Test-Path $SysPyVenvPath)) { & $SysPy -m venv $SysPyVenvPath } + if (!(Test-Path $SysPyVenvPath)) { uv venv $SysPyVenvPath } $SysPyVenv = Start-PyVenv $SysPyVenvPath uv pip install $(Get-Content 'requirements/install.in') return & $SysPyVenv scripts/install.py $Version @@ -54,12 +56,20 @@ function Start-PyVenv { Param([Parameter(ValueFromPipeline)][string]$Path = '.venv') process { if (Test-Path ($scripts = "$Path/Scripts")) { - & "$scripts/Activate.ps1" - return "$scripts/python.exe" + & "$scripts/activate.ps1" + $Py = "$scripts/python.exe" + } + else { + $bin = "$Path/bin" + & "$bin/activate.ps1" + # ? uv-sourced, virtualenv-based `activate.ps1` incorrectly uses `;` sep + $Env:PATH = $Env:PATH -Replace ';', ':' + $Py = "$bin/python" } - $bin = "$Path/bin" - & "$bin/Activate.ps1" - return "$bin/python" + # ? Prepend local `bin` to PATH + $sep = $IsWindows ? ';' : ':' + $Env:PATH = "bin$sep$Env:PATH" + return $Py } } diff --git a/scripts/Initialize-Shell.ps1 b/scripts/Initialize-Shell.ps1 index 475edc8..b670564 100644 --- a/scripts/Initialize-Shell.ps1 +++ b/scripts/Initialize-Shell.ps1 @@ -27,13 +27,17 @@ $Env:PYTHONWARNINGS = 'ignore' function Set-Env { <#.SYNOPSIS Load `.env`, activate a virtual environment found here or in parent directories.#> - # ? Prepend local `bin` to PATH - $sep = $IsWindows ? ';' : ':' - $Env:PATH = "bin$sep$Env:PATH" # ? Activate virtual environment if one exists if (Test-Path '.venv') { - if ($IsWindows) { return .venv/Scripts/Activate.ps1 } - return .venv/bin/Activate.ps1 + if ($IsWindows) { .venv/scripts/activate.ps1 } + else { + .venv/bin/activate.ps1 + # ? uv-sourced, virtualenv-based `activate.ps1` incorrectly uses `;` sep + $Env:PATH = $Env:PATH -Replace ';', ':' + } } + # ? Prepend local `bin` to PATH + $sep = $IsWindows ? ';' : ':' + $Env:PATH = "bin$sep$Env:PATH" } Set-Env diff --git a/scripts/Sync-Py.ps1 b/scripts/Sync-Py.ps1 index 571ab21..8441e6e 100644 --- a/scripts/Sync-Py.ps1 +++ b/scripts/Sync-Py.ps1 @@ -5,33 +5,26 @@ Param( [string]$Version, # Sync to highest dependencies. [switch]$High, - # Add all local dependency compilations to the lock. - [switch]$Lock, - # Don't run pre-sync actions. - [switch]$NoPreSync, - # Don't run post-sync actions. - [switch]$NoPostSync + # Sync with template. + [switch]$NoSyncTemplate ) . scripts/Common.ps1 . scripts/Initialize-Shell.ps1 -'*** SYNCING' | Write-Progress +'****** SYNCING' | Write-Progress -# ? Allow toggling CI in order to test local dev workflows +'CHECKING ENVIRONMENT TYPE' | Write-Progress +$High = $High ? $High : [bool]$Env:SYNC_PY_HIGH $CI = $Env:SYNC_PY_DISABLE_CI ? $null : $Env:CI +$Devcontainer = $Env:SYNC_PY_DISABLE_DEVCONTAINER ? $null : $Env:DEVCONTAINER $Env:UV_SYSTEM_PYTHON = $CI ? 'true' : $null +if ($CI) { $msg = 'CI' } +elseif ($Devcontainer) { $msg = 'devcontainer' } +else { $msg = 'contributor environment' } +"Will run $msg steps" | Write-Progress -Info -# ? Don't pre-sync or post-sync in CI -$NoPreSync = $NoPreSync ? $NoPreSync : [bool]$CI -$NoPostSync = $NoPostSync ? $NoPostSync : [bool]$CI -( - $($CI ? 'Will run CI steps' : 'Will run local steps'), - $($NoPreSync ? "Won't run pre-sync tasks" : 'Will run pre-sync tasks'), - $($NoPostSync ? "Won't run post-sync tasks" : 'Will run post-sync tasks') -) | Write-Progress -Info - -# ? Install uv +'FINDING UV' | Write-Progress $uvVersionRe = Get-Content 'requirements/uv.in' | Select-String -Pattern '^uv==(.+)$' $uvVersion = $uvVersionRe.Matches.Groups[1].value if (!(Test-Path 'bin/uv*') -or !(uv --version | Select-String $uvVersion)) { @@ -52,7 +45,6 @@ if (!(Test-Path 'bin/uv*') -or !(uv --version | Select-String $uvVersion)) { 'UV INSTALLED' | Write-Progress -Done } -# ? Synchronize local environment and return if not in CI 'INSTALLING TOOLS' | Write-Progress $pyDevVersionRe = Get-Content '.copier-answers.yml' | Select-String -Pattern '^python_version:\s?["'']([^"'']+)["'']$' @@ -65,62 +57,51 @@ else { $py = Get-Py $Version "Using $(Resolve-Path $py -Relative)" | Write-Progress -Info } -# ? Install the `c_therm_tci_tools` Python module uv pip install --editable=scripts 'TOOLS INSTALLED' | Write-Progress -Done -# ? Pre-sync -if (!$NoPreSync) { - '*** RUNNING PRE-SYNC TASKS' | Write-Progress - 'SYNCING SUBMODULES' | Write-Progress - if ($Env:DEVCONTAINER) { - $repo = Get-ChildItem /workspaces - $submodules = Get-ChildItem "$repo/submodules" - $safeDirs = @($repo) + $submodules - foreach ($dir in $safeDirs) { - if (!($safeDirs -contains $dir)) { git config --global --add safe.directory $dir } - } +'*** RUNNING PRE-SYNC TASKS' | Write-Progress +if ($CI) { + 'SYNCING PROJECT WITH TEMPLATE' | Write-Progress + try {scripts/Sync-Template.ps1 -Stay} catch [System.Management.Automation.NativeCommandExitException] { + git stash save --include-untracked + scripts/Sync-Template.ps1 -Stay + git stash pop + git add --all + } + 'PROJECT SYNCED WITH TEMPLATE' | Write-Progress +} +if ($Devcontainer) { + $repo = Get-ChildItem '/workspaces' + $submodules = Get-ChildItem "$repo/submodules" + $safeDirs = @($repo) + $submodules + foreach ($dir in $safeDirs) { + if (!($safeDirs -contains $dir)) { git config --global --add safe.directory $dir } } +} +if (!$CI) { + 'SYNCING SUBMODULES' | Write-Progress git submodule update --init --merge 'SUBMODULES SYNCED' | Write-Progress -Done '' | Write-Host - '*** PRE-SYNC DONE ***' | Write-Progress -Done } +'*** PRE-SYNC DONE ***' | Write-Progress -Done -# ? Compile -'COMPILING' | Write-Progress -$Comps = & $py -m c_therm_tci_tools compile -$Comp = $High ? $Comps[1] : $Comps[0] -'COMPILED' | Write-Progress -Done - -# ? Sync 'SYNCING DEPENDENCIES' | Write-Progress -uv pip sync $Comp +c_therm_tci_tools compile $($High ? '--high' : '--no-high') | uv pip sync - 'DEPENDENCIES SYNCED' | Write-Progress -Done -# ? Post-sync -if (!$NoPostSync) { - '*** RUNNING POST-SYNC TASKS' | Write-Progress +'*** RUNNING POST-SYNC TASKS' | Write-Progress +if (!$CI) { 'INSTALLING PRE-COMMIT HOOKS' | Write-Progress pre-commit install - '*** POST-SYNC DONE ***' | Write-Progress -Done -} -# ? Sync project with template in CI -if ($CI) { - 'SYNCING PROJECT WITH TEMPLATE' | Write-Progress - scripts/Sync-Template.ps1 -Stay - 'PROJECT SYNCED WITH TEMPLATE' | Write-Progress -} - -# ? Lock -if ($Lock) { - 'LOCKING' | Write-Progress - & $py -m c_therm_tci_tools lock - 'LOCKED' | Write-Progress -Done + 'PRE-COMMIT HOOKS INSTALLED' | Write-Progress -Done + '' | Write-Host } - +'*** POST-SYNC DONE ***' | Write-Progress -Done '' | Write-Host -'*** DONE ***' | Write-Progress -Done + +'****** DONE ******' | Write-Progress -Done # ? Stop PSScriptAnalyzer from complaining about these "unused" variables $PSNativeCommandUseErrorActionPreference, $NoModifyPath | Out-Null diff --git a/scripts/c_therm_tci_tools/__main__.py b/scripts/c_therm_tci_tools/__main__.py index e0f417c..fc27950 100644 --- a/scripts/c_therm_tci_tools/__main__.py +++ b/scripts/c_therm_tci_tools/__main__.py @@ -3,12 +3,10 @@ from collections.abc import Collection from pathlib import Path from re import finditer -from typing import NamedTuple from cyclopts import App -from c_therm_tci_tools import sync -from c_therm_tci_tools.sync import COMPS, escape, get_comp_names +from c_therm_tci_tools.sync import check_compilation, escape APP = App(help_format="markdown") """CLI.""" @@ -18,36 +16,13 @@ def main(): # noqa: D103 APP() -class Comp(NamedTuple): - """Dependency compilation.""" +@APP.command +def compile(high: bool = False): # noqa: A001 + """Compile.""" + log(check_compilation(high)) - low: Path - """Path to the lowest direct dependency compilation.""" - high: Path - """Path to the highest dependency compilation.""" - -@APP.command() -def lock(): - """Lock dependencies.""" - log(sync.lock()) - - -@APP.command() -def compile(): # noqa: A001 - """Prepare a compilation. - - Args: - get: Get the compilation rather than compile it. - """ - comp_paths = Comp(*[COMPS / f"{name}.txt" for name in get_comp_names()]) - COMPS.mkdir(exist_ok=True, parents=True) - for path, comp in zip(comp_paths, sync.compile(), strict=True): - path.write_text(encoding="utf-8", data=comp) - log(comp_paths) - - -@APP.command() +@APP.command def get_actions(): """Get actions used by this repository. @@ -56,8 +31,10 @@ def get_actions(): paste the output of this command into the "Allow specified actions and reusable workflows" block. - Args: - high: Highest dependencies. + Parameters + ---------- + high + Highest dependencies. """ actions: list[str] = [] for contents in [ diff --git a/scripts/c_therm_tci_tools/sync.py b/scripts/c_therm_tci_tools/sync.py index 620c294..435bb7b 100644 --- a/scripts/c_therm_tci_tools/sync.py +++ b/scripts/c_therm_tci_tools/sync.py @@ -8,50 +8,52 @@ from shlex import quote, split from subprocess import run from sys import version_info -from typing import NamedTuple + +from ruamel.yaml import YAML + +from c_therm_tci_tools.types import Platform, PythonVersion + +# ! For local dev config tooling +PYTEST = Path("pytest.ini") +"""Resulting pytest configuration file.""" # ! Dependencies +COPIER_ANSWERS = Path(".copier-answers.yml") +"""Copier answers file.""" +PYTHON_VERSIONS_FILE = Path(".python-versions") +"""File containing supported Python versions.""" REQS = Path("requirements") """Requirements.""" +UV = REQS / "uv.in" +"""UV requirement.""" DEV = REQS / "dev.in" """Other development tools and editable local dependencies.""" NODEPS = REQS / "nodeps.in" """Dependencies appended to locks without compiling their dependencies.""" +OVERRIDE = REQS / "override.txt" +"""Overrides to satisfy otherwise incompatible combinations.""" +SYS_PYTHON_VERSION = YAML().load(COPIER_ANSWERS.read_text(encoding="utf-8"))[ + "python_version" +] +"""Python version.""" -# ! Platform -PLATFORM = platform(terse=True) +# ! Platforms and Python versions +SYS_PLATFORM: Platform = platform(terse=True).casefold().split("-")[0] # pyright: ignore[reportAssignmentType] 1.1.356 """Platform identifier.""" -match PLATFORM.casefold().split("-")[0]: - case "macos": - _runner = "macos-14" - case "windows": - _runner = "windows-2022" - case "linux": - _runner = "ubuntu-22.04" - case _: - raise ValueError(f"Unsupported platform: {PLATFORM}") -RUNNER = _runner -"""Runner associated with this platform.""" -match version_info[:2]: - case (3, 11): - _python_version = "3.11" - case (3, 12): - _python_version = "3.12" - case (3, 13): - _python_version = "3.13.0-alpha.5" - case _: - _python_version = ".".join(str(v) for v in version_info[:2]) - raise ValueError(f"Unsupported Python version: {_python_version}") -VERSION = _python_version +SYS_PYTHON_VERSION: PythonVersion = ".".join([str(v) for v in version_info[:2]]) # pyright: ignore[reportAssignmentType] 1.1.356 """Python version associated with this platform.""" - -# ! Compilation and locking -COMPS = Path(".comps") -"""Platform-specific dependency compilations.""" -LOCK = Path("lock.json") -"""Locked set of dependency compilations for different runner/Python combinations.""" +PLATFORMS: tuple[Platform, ...] = ("linux", "macos", "windows") +"""Supported platforms.""" +PYTHON_VERSIONS: tuple[PythonVersion, ...] = ( # pyright: ignore[reportAssignmentType] 1.1.356 + tuple(PYTHON_VERSIONS_FILE.read_text("utf-8").splitlines()) + if PYTHON_VERSIONS_FILE.exists() + else ("3.9", "3.10", "3.11", "3.12") +) +"""Supported Python versions.""" # ! Checking +UV_PAT = r"(?m)^# uv\s(?P.+)$" +"""Pattern for stored `uv` version comment.""" SUB_PAT = r"(?m)^# submodules/(?P[^\s]+)\s(?P[^\s]+)$" """Pattern for stored submodule revision comments.""" DEP_PAT = r"(?mi)^(?P[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])==.+$" @@ -61,90 +63,116 @@ """ -class Comp(NamedTuple): - """Dependency compilation.""" - - low: str - """Name of lowest direct dependency compilation or the compilation itself.""" - high: str - """Name of highest dependency compilation or the compilation itself.""" - - -def lock() -> Path: - """Lock all local dependency compilations.""" - LOCK.write_text( - encoding="utf-8", - data=dumps( - indent=2, - sort_keys=True, - obj={ - **(loads(LOCK.read_text("utf-8")) if LOCK.exists() else {}), - **{ - get_comp_key(comp.stem): comp.read_text("utf-8") - for comp in COMPS.iterdir() - }, - }, - ) - + "\n", - ) - return LOCK +def check_compilation(high: bool = False) -> str: # noqa: PLR0911 + """Check compilation, re-lock if incompatible, and return the compilation. - -def compile() -> Comp: # noqa: A001 - """Compile dependencies. Prefer the existing compilation if compatible.""" - old = get_comps() - if not old.low: - return recomp() # Old compilation missing - directs = comp(high=False, no_deps=True) + Parameters + ---------- + high + Highest dependencies. + """ + old = get_compilation(SYS_PLATFORM, SYS_PYTHON_VERSION, high) + if not old: + return lock(high) # Old compilation missing + old_uv = search(UV_PAT, old) + if not old_uv: + return lock(high) # Unknown `uv` version last used to compile + if old_uv["version"] != get_uv_version(): + return lock(high) # Older `uv` version last used to compile + directs = compile(SYS_PLATFORM, SYS_PYTHON_VERSION, high, no_deps=True) try: subs = dict( - zip(finditer(SUB_PAT, old.low), finditer(SUB_PAT, directs), strict=False) + zip(finditer(SUB_PAT, old), finditer(SUB_PAT, directs), strict=False) ) except ValueError: - return recomp() # Submodule missing + return lock(high) # Submodule missing if any(old_sub.groups() != new_sub.groups() for old_sub, new_sub in subs.items()): - return recomp() # Submodule pinned commit SHA mismatch + return lock(high) # Submodule pinned commit SHA mismatch old_directs: list[str] = [] for direct in finditer(DEP_PAT, directs): pat = rf"(?mi)^(?P{direct['name']})==(?P.+$)" - if match := search(pat, old.low): + if match := search(pat, old): old_directs.append(match.group()) continue - return recomp() # Direct dependency missing - low = comp(high=False, no_deps=False) - if any(d not in low for d in old_directs): - return Comp(low, comp(high=True, no_deps=False)) # Direct dep version mismatch - return old # Existing compilation is compatible + return lock(high) # Direct dependency missing + sys_compilation = compile(SYS_PLATFORM, SYS_PYTHON_VERSION, high) + if any(d not in sys_compilation for d in old_directs): + return lock(high, sys_compilation) # Direct dependency version mismatch + return old # The old compilation is compatible -def recomp() -> Comp: - """Recompile system dependencies.""" - return Comp(comp(high=False, no_deps=False), comp(high=True, no_deps=False)) +def lock(high: bool, sys_compilation: str = "") -> str: + """Lock dependencies for all platforms and Python versions.""" + lock_contents: dict[str, str] = {} + for platform in PLATFORMS: # noqa: F402 + for python_version in PYTHON_VERSIONS: + key = get_compilation_key(platform, python_version, high) + compilation = compile(platform, python_version, high) + if ( + not sys_compilation + and platform == SYS_PLATFORM + and python_version == SYS_PYTHON_VERSION + ): + sys_compilation = compilation + lock_contents[key] = compilation + get_lockfile(high).write_text( + encoding="utf-8", data=dumps(indent=2, sort_keys=True, obj=lock_contents) + "\n" + ) + return sys_compilation -def get_comps() -> Comp: - """Get existing dependency compilations.""" - if not LOCK.exists(): - return Comp("", "") - return Comp(*[ - loads(LOCK.read_text("utf-8")).get(get_comp_key(name)) or "" - for name in get_comp_names() - ]) +def get_compilation( + platform: Platform, python_version: PythonVersion, high: bool +) -> str: + """Get existing dependency compilations. + Parameters + ---------- + high + Highest dependencies. + platform + Platform to compile for. + python_version + Python version to compile for. + """ + lockfile = get_lockfile(high) + if not lockfile.exists(): + return "" + contents = loads(lockfile.read_text("utf-8")) + return contents.get(get_compilation_key(platform, python_version, high), "") -def get_comp_key(name: str) -> str: - """Get the key to a dependency compilation in the lock.""" - return name.removeprefix("requirements_") +def get_compilation_key( + platform: Platform, python_version: PythonVersion, high: bool +) -> str: + """Get the name of a dependency compilation. + + Parameters + ---------- + platform + Platform to compile for. + python_version + Python version to compile for. + high + Highest dependencies. + """ + return "_".join([platform, python_version, *(["high"] if high else [])]) -def get_comp_names() -> Comp: - """Get names of a dependency compilation.""" - sep = "_" - base = sep.join(["requirements", RUNNER, VERSION]) - return Comp(base, sep.join([base, "high"])) +def get_lockfile(high: bool) -> Path: + """Get lockfile path. -def comp(high: bool, no_deps: bool) -> str: + Parameters + ---------- + high + Highest dependencies. + """ + return Path(f"lock{'-high' if high else ''}.json") + + +def compile( # noqa: A001 + platform: Platform, python_version: PythonVersion, high: bool, no_deps: bool = False +) -> str: """Compile system dependencies. Parameters @@ -153,16 +181,22 @@ def comp(high: bool, no_deps: bool) -> str: Highest dependencies. no_deps Without transitive dependencies. + platform + Platform to compile for. + python_version + Python version to compile for. """ sep = " " result = run( args=split( sep.join([ - f"bin/uv pip compile --python-version {VERSION}", - f"--resolution {'highest' if high else 'lowest-direct'}", + "bin/uv pip compile", f"--exclude-newer {datetime.now(UTC).isoformat().replace('+00:00', 'Z')}", + f"--python-platform {platform} --python-version {python_version}", + f"--resolution {'highest' if high else 'lowest-direct'}", + f"--override {escape(OVERRIDE)}", f"--all-extras {'--no-deps' if no_deps else ''}", - sep.join([ + *[ escape(path) for path in [ DEV, @@ -174,7 +208,7 @@ def comp(high: bool, no_deps: bool) -> str: ) ], ] - ]), + ], ]) ), capture_output=True, @@ -195,6 +229,7 @@ def comp(high: bool, no_deps: bool) -> str: } return ( "\n".join([ + f"# uv {get_uv_version()}", *[f"# {sub} {rev}" for sub, rev in submodules.items()], *[line.strip() for line in deps.splitlines()], *[line.strip() for line in NODEPS.read_text("utf-8").splitlines()], @@ -203,6 +238,22 @@ def comp(high: bool, no_deps: bool) -> str: ) +def get_uv_version() -> str: + """Get the installed version of `uv`.""" + result = run( + args=split("bin/uv --version"), capture_output=True, check=False, text=True + ) + if result.returncode: + raise RuntimeError(result.stderr) + return result.stdout.strip().split(" ")[1] + + def escape(path: str | Path) -> str: - """Path escape suitable for all operating systems.""" + """Path escape suitable for all operating systems. + + Parameters + ---------- + path + Path to escape. + """ return quote(Path(path).as_posix()) diff --git a/scripts/c_therm_tci_tools/types.py b/scripts/c_therm_tci_tools/types.py new file mode 100644 index 0000000..55c87db --- /dev/null +++ b/scripts/c_therm_tci_tools/types.py @@ -0,0 +1,8 @@ +"""Types.""" + +from typing import Literal, TypeAlias + +Platform: TypeAlias = Literal["linux", "macos", "windows"] +"""Platform.""" +PythonVersion: TypeAlias = Literal["3.9", "3.10", "3.11", "3.12"] +"""Python version.""" diff --git a/scripts/pyproject.toml b/scripts/pyproject.toml index 0ada33d..0aa94b6 100644 --- a/scripts/pyproject.toml +++ b/scripts/pyproject.toml @@ -6,7 +6,13 @@ build-backend = "flit_core.buildapi" name = "c_therm_tci_tools" version = "0.0.0" description = "Tools." -dependencies = ["cyclopts==2.5.0"] +dependencies = [ + # ? Core script tools + "copier==9.2.0", + "cyclopts==2.6.1", + "pipx==1.5.0", + "ruamel-yaml==0.18.6", +] [project.scripts] "c_therm_tci_tools" = "c_therm_tci_tools.__main__:main" @@ -19,3 +25,10 @@ ignore_undeclared = [ "c_therm_tci_tools", "c_therm_tci", ] +ignore_unused = [ + # ? Core script tools + "copier", # For template sync + "pipx", # For `pipx run` of scripts with dependencies isolated by PEP 723 +] +[tool.fawltydeps.custom_mapping] +ruamel-yaml = ["ruamel"] diff --git a/tests/pyproject.toml b/tests/pyproject.toml index 90c5ee5..3b57f31 100644 --- a/tests/pyproject.toml +++ b/tests/pyproject.toml @@ -7,6 +7,7 @@ name = "c_therm_tci_tests" version = "0.0.0" description = "Tests." dependencies = [ + # ? Core testing "pytest-cov==4.1.0", "pytest-custom-exit-code==0.3.0", "pytest-github-actions-annotate-failures==0.2.0",