From 1a87f0ca569ad4b6a1bae3f2bd26e9237336e9a9 Mon Sep 17 00:00:00 2001 From: AaronTackeQC <156931896+aarontackeqc@users.noreply.github.com> Date: Tue, 13 Aug 2024 13:20:02 +0200 Subject: [PATCH] Initial commit --- .copier-answers.yml | 11 + .gitattributes | 8 + .github/CODEOWNERS | 1 + .github/PULL_REQUEST_TEMPLATE.md | 7 + .github/actions/mssql-linux/action.yml | 15 + .github/actions/mssql-windows/action.yml | 32 + .github/dependabot.yml | 10 + .github/release-drafter.yml | 100 + .github/workflows/build.yml | 46 + .github/workflows/chore.yml | 66 + .github/workflows/ci.yml | 58 + .github/workflows/docs.yml | 61 + .gitignore | 405 + .pre-commit-config.yaml | 69 + .prettierignore | 6 + .prettierrc | 7 + .readthedocs.yaml | 14 + LICENSE | 29 + README.md | 32 + conda.recipe/recipe.yaml | 43 + docs/Makefile | 20 + docs/_static/concept.png | Bin 0 -> 234881 bytes docs/_static/custom.css | 12 + docs/conf.py | 113 + docs/index.rst | 537 + docs/make.bat | 35 + pixi.lock | 20295 ++++++++++++++++ pixi.toml | 83 + pyproject.toml | 67 + tabulardelta/__init__.py | 40 + tabulardelta/comparators/__init__.py | 2 + tabulardelta/comparators/comparator.py | 35 + tabulardelta/comparators/pandas_comparator.py | 325 + .../comparators/sqlcompyre_comparator.py | 254 + .../comparators/sqlmetadata_comparator.py | 196 + .../comparators/tabulardelta_dataclasses.py | 420 + tabulardelta/formatters/__init__.py | 2 + .../formatters/detailed_text_formatter.py | 279 + tabulardelta/formatters/formatter.py | 33 + .../formatters/overview_row_formatter.py | 319 + .../formatters/tabulartext/__init__.py | 2 + tabulardelta/formatters/tabulartext/cell.py | 160 + tabulardelta/formatters/tabulartext/table.py | 386 + tabulardelta/py.typed | 0 tabulardelta/tabulardelta.py | 232 + tests/__init__.py | 2 + tests/mssql_container/__init__.py | 2 + .../mssql_container/cached_mssql_container.py | 194 + tests/mssql_container/docker-compose.yml | 14 + tests/test_assets/week24.csv | 33 + tests/test_assets/week25.csv | 31 + tests/test_comparators.py | 488 + tests/test_docs_examples.py | 334 + tests/test_formatters.py | 201 + tests/test_tabular_text.py | 141 + 55 files changed, 26307 insertions(+) create mode 100644 .copier-answers.yml create mode 100644 .gitattributes create mode 100644 .github/CODEOWNERS create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/actions/mssql-linux/action.yml create mode 100644 .github/actions/mssql-windows/action.yml create mode 100644 .github/dependabot.yml create mode 100644 .github/release-drafter.yml create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/chore.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/docs.yml create mode 100644 .gitignore create mode 100644 .pre-commit-config.yaml create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 .readthedocs.yaml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 conda.recipe/recipe.yaml create mode 100644 docs/Makefile create mode 100644 docs/_static/concept.png create mode 100644 docs/_static/custom.css create mode 100644 docs/conf.py create mode 100644 docs/index.rst create mode 100644 docs/make.bat create mode 100644 pixi.lock create mode 100644 pixi.toml create mode 100644 pyproject.toml create mode 100644 tabulardelta/__init__.py create mode 100644 tabulardelta/comparators/__init__.py create mode 100644 tabulardelta/comparators/comparator.py create mode 100644 tabulardelta/comparators/pandas_comparator.py create mode 100644 tabulardelta/comparators/sqlcompyre_comparator.py create mode 100644 tabulardelta/comparators/sqlmetadata_comparator.py create mode 100644 tabulardelta/comparators/tabulardelta_dataclasses.py create mode 100644 tabulardelta/formatters/__init__.py create mode 100644 tabulardelta/formatters/detailed_text_formatter.py create mode 100644 tabulardelta/formatters/formatter.py create mode 100644 tabulardelta/formatters/overview_row_formatter.py create mode 100644 tabulardelta/formatters/tabulartext/__init__.py create mode 100644 tabulardelta/formatters/tabulartext/cell.py create mode 100644 tabulardelta/formatters/tabulartext/table.py create mode 100644 tabulardelta/py.typed create mode 100644 tabulardelta/tabulardelta.py create mode 100644 tests/__init__.py create mode 100644 tests/mssql_container/__init__.py create mode 100644 tests/mssql_container/cached_mssql_container.py create mode 100644 tests/mssql_container/docker-compose.yml create mode 100644 tests/test_assets/week24.csv create mode 100644 tests/test_assets/week25.csv create mode 100644 tests/test_comparators.py create mode 100644 tests/test_docs_examples.py create mode 100644 tests/test_formatters.py create mode 100644 tests/test_tabular_text.py diff --git a/.copier-answers.yml b/.copier-answers.yml new file mode 100644 index 0000000..d90b9cb --- /dev/null +++ b/.copier-answers.yml @@ -0,0 +1,11 @@ +# This file is managed by Copier; DO NOT EDIT OR REMOVE. +_commit: v0.1.0 +_src_path: https://github.com/quantco/copier-template-python-open-source +add_autobump_workflow: true +github_url: https://github.com/quantco/tabulardelta +github_user: AaronTackeQC +minimal_python_version: py311 +project_name: TabularDelta +project_short_description: Simplify table comparisons. +project_slug: tabulardelta +use_devcontainer: false diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..5bce681 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,8 @@ +* text=auto + +*.{diff,patch} binary + +*.{py,yaml,yml,sh} text eol=lf +*.bat text eol=crlf + +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..04f9803 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @AaronTackeQC diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..3fa37b7 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,7 @@ +# Motivation + + + +# Changes + + diff --git a/.github/actions/mssql-linux/action.yml b/.github/actions/mssql-linux/action.yml new file mode 100644 index 0000000..4ee615c --- /dev/null +++ b/.github/actions/mssql-linux/action.yml @@ -0,0 +1,15 @@ +name: Launch MSSQL on GitHub Linux VMs + +runs: + using: composite + steps: + - name: Cache connection details + shell: bash -el {0} + run: echo '{"project_name":"","port":1434,"docker_compose_file":"","cache_file":""}' > ./tests/mssql_container/.mssql_container_cache.json + - name: Login to GHCR + shell: bash -el {0} + run: docker login ghcr.io -u ${{ github.actor }} -p ${{ github.token }} + - name: Launch MSSQL + shell: bash -el {0} + run: | + docker compose -f ./tests/mssql_container/docker-compose.yml up -d diff --git a/.github/actions/mssql-windows/action.yml b/.github/actions/mssql-windows/action.yml new file mode 100644 index 0000000..65cce40 --- /dev/null +++ b/.github/actions/mssql-windows/action.yml @@ -0,0 +1,32 @@ +name: Launch MSSQL on GitHub Windows VMs + +runs: + using: composite + steps: + - name: Cache connection details + shell: bash -el {0} + run: echo '{"project_name":"","port":null,"docker_compose_file":"","cache_file":""}' > ./tests/mssql_container/.mssql_container_cache.json + - name: Start SQL Server LocalDB + shell: bash -el {0} + run: | + SqlLocalDB.exe create "SQLLocalDB" + SqlLocalDB.exe share "SQLLocalDB" "MSSQLLocalDB" + SqlLocalDB.exe start "SQLLocalDB" + - name: Establish login for SQL Server LocalDB + shell: bash -el {0} + run: | + CONN_STR=$( + SqlLocalDB.exe info "SQLLocalDB" \ + | grep "Instance pipe name:" \ + | sed 's/^Instance pipe name: \(.*\)$/\1/' + ) + CREATE_USER_QUERY=$( + cat <Details + + ``` + ${{ steps.lint.outputs.error_message }} + ``` + + + - name: Delete comment about invalid PR title + if: success() + uses: marocchino/sticky-pull-request-comment@v2 + with: + header: conventional-commit-pr-title + delete: true + + release-drafter: + name: ${{ github.event_name == 'pull_request' && 'Assign Labels' || 'Draft Release' }} + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - name: ${{ github.event_name == 'pull_request' && 'Assign labels' || 'Update release draft' }} + uses: release-drafter/release-drafter@v6 + with: + disable-releaser: ${{ github.event_name == 'pull_request' }} + disable-autolabeler: ${{ github.event_name == 'push' }} + env: + GITHUB_TOKEN: ${{ github.token }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..d51a997 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,58 @@ +name: CI +on: [push] + +# Automatically stop old builds on the same branch/PR +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + pre-commit: + timeout-minutes: 30 + runs-on: ubuntu-latest + steps: + - name: Checkout branch + uses: actions/checkout@v4 + - name: Set up pixi + uses: prefix-dev/setup-pixi@ba3bb36eb2066252b2363392b7739741bb777659 + with: + environments: default lint + - name: pre-commit + run: pixi run pre-commit-run --color=always --show-diff-on-failure + + unit-tests: + name: pytest + timeout-minutes: 30 + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + environment: + - py311 + - py312 + - no-sql + os: + - ubuntu-latest + - windows-latest + steps: + - name: Checkout branch + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Install msodbcsql17 (Linux Only) + if: ${{ matrix.environment != 'no-sql' && matrix.os == 'ubuntu-latest' }} + run: sudo ACCEPT_EULA=Y apt-get install msodbcsql17 -y + - name: Launch MSSQL (Linux Only) + if: ${{ matrix.environment != 'no-sql' && matrix.os == 'ubuntu-latest' }} + uses: ./.github/actions/mssql-linux + - name: Launch MSSQL (Windows Only) + if: ${{ matrix.environment != 'no-sql' && matrix.os == 'windows-latest' }} + uses: ./.github/actions/mssql-windows + - name: Set up pixi + uses: prefix-dev/setup-pixi@ba3bb36eb2066252b2363392b7739741bb777659 + with: + environments: ${{ matrix.environment }} + - name: Install repository + run: pixi run -e ${{ matrix.environment }} postinstall + - name: Run pytest + run: pixi run -e ${{ matrix.environment }} test-coverage --color=yes ${{ matrix.environment=='no-sql' && '-m "not sql"' || ''}} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..41e52f0 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,61 @@ +name: Documentation +on: [push] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + name: Build Docs + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Set up pixi + uses: prefix-dev/setup-pixi@ba3bb36eb2066252b2363392b7739741bb777659 + with: + environments: docs + - name: Install package + run: pixi run -e docs postinstall + - name: Build docs + run: pixi run docs + - name: Upload html + uses: actions/upload-artifact@v4 + with: + name: docs + path: docs/_build/html + + upload: + name: Upload Docs + needs: build + runs-on: ubuntu-latest + permissions: + contents: read + id-token: write + steps: + - name: Download html + uses: actions/download-artifact@v4 + with: + name: docs + - name: Authenticate with GCP + uses: google-github-actions/auth@v2 + with: + workload_identity_provider: projects/610600912298/locations/global/workloadIdentityPools/doqker-devel-github-actions-pool/providers/github-actions-provider + service_account: sa-github-actions@doqker-devel.iam.gserviceaccount.com + token_format: access_token + - name: Setup gcloud + uses: google-github-actions/setup-gcloud@v2 + - name: Set ref (release) + if: startsWith(github.ref, 'refs/tags/') + run: echo "docs-path=${{ github.ref_name }}" >> $GITHUB_ENV + - name: Set ref (main) + if: github.ref == 'refs/heads/main' + run: echo "docs-path=latest" >> $GITHUB_ENV + - name: Set ref (pull_request) + if: startsWith(github.ref, 'refs/heads/') && github.ref != 'refs/heads/main' + run: echo "docs-path=${{ github.ref }}" >> $GITHUB_ENV + - name: Upload to Google Cloud Storage + run: gcloud storage cp -r * gs://qc-github-artifacts/${{ github.repository }}/${{ env.docs-path }}/ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f14f1ed --- /dev/null +++ b/.gitignore @@ -0,0 +1,405 @@ +# Explicitly unignore hidden files for ripgrep. Individual folders can still +# be ignored in the blocks below. +!.* + +# NOTE: The block below is NOT copied sic from https://www.toptal.com/developers/gitignore. +# Instead, it contains some customizations that should be taken into account when adjusting the +# block. + +# Created by https://www.toptal.com/developers/gitignore/api/linux,macos,direnv,python,windows,pycharm+all,visualstudiocode,vim +# Edit at https://www.toptal.com/developers/gitignore?templates=linux,macos,direnv,python,windows,pycharm+all,visualstudiocode,vim + +### direnv ### +.direnv +.envrc + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### macOS Patch ### +# iCloud generated files +*.icloud + +### PyCharm+all ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +# MsSql container cache file +tests/mssql_container/.mssql_container_cache.json + +### PyCharm+all Patch ### +# Ignore everything but code style settings and run configurations +# that are supposed to be shared within teams. + +.idea/* + +!.idea/codeStyles +!.idea/runConfigurations + +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ +docs/api/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pixi +# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +.pixi +#pixi.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +.idea/ + +### Python Patch ### +# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration +poetry.toml + +# ruff +.ruff_cache/ + +# LSP config files +pyrightconfig.json + +### Vim ### +# Swap +[._]*.s[a-v][a-z] +!*.svg # comment out if you don't need vector files +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim +Sessionx.vim + +# Temporary +.netrwhist +# Auto-generated tag files +tags +# Persistent undo +[._]*.un~ + +### VisualStudioCode ### +.vscode/ +#!.vscode/settings.json +#!.vscode/tasks.json +#!.vscode/launch.json +#!.vscode/extensions.json +#!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history +.ionide + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.toptal.com/developers/gitignore/api/linux,macos,direnv,python,windows,pycharm+all,visualstudiocode,vim + +# rattler-build +output/ +# setuptools-scm needs `.git/refs/tags`, don't ignore +!.git/refs/tags diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..e8c3e32 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,69 @@ +exclude: ^(\.copier-answers\.yml)|.pixi$ +repos: + - repo: local + hooks: + # ensure pixi environments are up to date + # workaround for https://github.com/prefix-dev/pixi/issues/1482 + - id: pixi-install + name: pixi-install + entry: pixi install -e default -e lint + language: system + always_run: true + require_serial: true + pass_filenames: false + # ruff + - id: ruff + name: ruff + entry: pixi run -e lint ruff check --fix --exit-non-zero-on-fix --force-exclude + language: system + types_or: [python, pyi] + require_serial: true + - id: ruff-format + name: ruff-format + entry: pixi run -e lint ruff format --force-exclude + language: system + types_or: [python, pyi] + require_serial: true + # mypy + - id: mypy + name: mypy + entry: pixi run -e default mypy + language: system + types: [python] + require_serial: true + # prettier + - id: prettier + name: prettier + entry: pixi run -e lint prettier --write --list-different --ignore-unknown + language: system + types: [text] + files: \.(md|yml|yaml)$ + # taplo + - id: taplo + name: taplo + entry: pixi run -e lint taplo format + language: system + types: [toml] + # pre-commit-hooks + - id: trailing-whitespace-fixer + name: trailing-whitespace-fixer + entry: pixi run -e lint trailing-whitespace-fixer + language: system + types: [text] + - id: end-of-file-fixer + name: end-of-file-fixer + entry: pixi run -e lint end-of-file-fixer + language: system + types: [text] + - id: check-merge-conflict + name: check-merge-conflict + entry: pixi run -e lint check-merge-conflict --assume-in-merge + language: system + types: [text] + # typos + - id: typos + name: typos + entry: pixi run -e lint typos --force-exclude + language: system + types: [text] + require_serial: true diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..c835e2c --- /dev/null +++ b/.prettierignore @@ -0,0 +1,6 @@ +build +conda.recipe +.copier-answers.yml + +*.html +*.properties diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..478cc53 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "singleQuote": false, + "bracketSpacing": true, + "printWidth": 200, + "endOfLine": "auto", + "tabWidth": 2 +} diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 0000000..1c07a25 --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,14 @@ +version: 2 +build: + os: ubuntu-20.04 + tools: + python: mambaforge-latest + commands: + - mamba install -c conda-forge -c nodefaults pixi + - pixi run -e docs postinstall + - pixi run -e docs docs + - pixi run -e docs readthedocs +sphinx: + configuration: docs/conf.py +formats: + - pdf diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..efc4f9d --- /dev/null +++ b/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2024, QuantCo +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..50700a9 --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ +# TabularDelta + +[![CI](https://img.shields.io/github/actions/workflow/status/quantco/tabulardelta/ci.yml?style=flat-square&branch=main)](https://github.com/quantco/tabulardelta/actions/workflows/ci.yml) +[![Documentation](https://img.shields.io/badge/docs-latest-success?branch=main&style=flat-square)](https://tabulardelta.readthedocs.io/en/latest/) +[![pypi-version](https://img.shields.io/pypi/v/tabulardelta.svg?logo=pypi&logoColor=white&style=flat-square)](https://pypi.org/project/tabulardelta) +[![python-version](https://img.shields.io/pypi/pyversions/tabulardelta?logoColor=white&logo=python&style=flat-square)](https://pypi.org/project/tabulardelta) + +Simplify table comparisons. + +## Development + +This project is managed by [pixi](https://pixi.sh). +You can install the package in development mode using: + +```bash +git clone https://github.com/quantco/tabulardelta +cd tabulardelta + +pixi run pre-commit-install +pixi run postinstall +pixi run test +``` + +## Testing + +- Make sure docker is installed +- Make sure `ODBC Driver 17 for SQL Server` is installed + - See [Download ODBC Driver for SQL Server](https://learn.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16) + - This may require setting the `ODBCSYSINI` environment variable to the path of msodbcsql17 +- Run `pixi run test` + +Setting up the MsSql docker container may take a while, but it will be cached for future runs as long as you keep it running. diff --git a/conda.recipe/recipe.yaml b/conda.recipe/recipe.yaml new file mode 100644 index 0000000..9484a17 --- /dev/null +++ b/conda.recipe/recipe.yaml @@ -0,0 +1,43 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json + +context: + name: tabulardelta + version: ${{ env.get('GIT_DESCRIBE_TAG') | trim('v') }}${{ ('.post' + env.get('GIT_DESCRIBE_NUMBER') + '+' + env.get('GIT_DESCRIBE_HASH')) if env.get('GIT_DESCRIBE_NUMBER', default='0') != '0' }} + +package: + name: ${{ name | lower }} + version: ${{ version }} + +source: + path: ../ + +build: + number: 0 + noarch: python + script: + - python -m pip install . --no-deps --ignore-installed -vv --no-build-isolation --disable-pip-version-check + +requirements: + host: + - python >=3.11 + - pip + - setuptools-scm + run: + - python >=3.11 + - numpy >=1.24.4,<3 + - pandas >=2.0.3,<3 + run_constraints: + - sqlalchemy + - sqlcompyre + - pyodbc + +tests: + - python: + imports: + - tabulardelta + pip_check: true + +about: + homepage: https://github.com/quantco/tabulardelta + license: LicenseRef-QuantCo + summary: "Simplify arbitrary table comparisons." diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..d4bb2cb --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/_static/concept.png b/docs/_static/concept.png new file mode 100644 index 0000000000000000000000000000000000000000..a91f909698f5081b39a1d20e714329b1145b32d4 GIT binary patch literal 234881 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 rmoX_u registration ---------------------- + + Joined on ['activity', 'valid_from']. + + Added columns: + โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“ + โ”ƒfree_days_until_registeredโ”ƒ + โ”ƒ(BIGINT) โ”ƒ + โ”ฃโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ซ + + Renamed columns: + โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“ + โ”ƒregistration โ†’ registration_dateโ”ƒ + โ”ƒ(DATETIME) โ”ƒ + โ”ฃโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ซ + + Old New + 769 780 + โ”โ”โ”ฏโ”โ”ฏโ”โ”ฏโ”โ”“โ•Œโ•Œโ•Œโ”โ”โ”ฏโ”โ”ฏโ”โ”ฏโ”โ”“----------------โ•ถโ•ฎ + โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ = โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ 757 identical โ”‚ 769 + โ” โ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”จโ•Œโ•Œโ•Œโ” โ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”จ---------------- โ”œโ•ดrows + โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ โ‰  โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ 12 changed โ”‚ joined + โ”—โ”โ”ทโ”โ”ทโ”โ”ทโ”โ”›โ•Œโ•Œโ•Œโ” โ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”จ----------------โ•ถโ•ฏ + โ”ƒ+โ”‚+โ”‚+โ”‚+โ”ƒ 11 added + โ”—โ”โ”ทโ”โ”ทโ”โ”ทโ”โ”› + + Column valid_until - 12 rows changed: + valid_until โ†’ valid_until example_valid_from example_activity + (12x) 9999-12-31 00:00:00 โ†’ 2024-06-28 00:00:00 2000-01-01 00:00:00 123 + + ADDED ROWS EXAMPLES: + activityโ”‚valid_from โ”‚registration_date โ”‚valid_until + 892 โ”‚2000-01-01 00:00:00โ”‚2024-07-18 00:00:00โ”‚9999-12-31 00:00:00 + 893 โ”‚2000-01-01 00:00:00โ”‚2024-07-18 00:00:00โ”‚9999-12-31 00:00:00 + 894 โ”‚2000-01-01 00:00:00โ”‚2024-07-18 00:00:00โ”‚9999-12-31 00:00:00 + + +Posting reports like this in a PR greatly helps reviewers to understand the changes. + +SQL Pipeline Validation in Pipedag +---------------------------------- + +Keeping track of changes in data pipelines is often not easy. +But TabularDelta can help. + +Let's say we use pipedag (from pydiverse) to define our pipeline. +Pipedag provides an :code:`@input_stage_versions` decorator, +which allows you to access the current and previous tables as dictionaries (name -> table). + + +.. code-block:: python + + @input_stage_versions(input_type=sa.Table) + def validate_stage(tbls: dict[str, sa.Table], other_tbls: dict[str, sa.Table]): + comparator = SqlMetadataComparator(MsSqlContainer().get_cache().sqlalchemy_engine()) + formatter = OverviewRowFormatter(warnings=False) + formatter.add_header() + + for common in set(tbls) & set(other_tbls): + delta = comparator.compare(tbls[common], other_tbls[common]) + formatter.format(delta) + + for added in set(tbls) - set(other_tbls): + delta = comparator.compare(tbls[added], tbls[added]) + formatter.add_row(f"+ {added}", delta.count_new_rows, len(delta.new_columns)) + + formatter.add_legend() + print(formatter.table()) + + +To get an overview of several changes, we use the OverviewRowFormatter. +The functions :code:`.add_header()`, :code:`.format()`, :code:`.add_row()`, and :code:`.add_legend()` each add rows. +The :code:`.table()` call at the end is used to output the accumulated rows as a table. + +If a new table is added to the pipeline (so it is not yet in other_tbls when it is first executed), +we compare the new table with itself, and use :code:`formatter.add_row()` to mark it as new. + +We use the SqlMetadataComparator to not delay the execution of the pipeline. +This comparator compares tables with as much details as possible while just looking at the metadata in the database. +Since it doesn't touch the actual data, it is very fast, but the rows can't be checked for equality. + +:: + + TABLE ROWS = โ‰  + - ? COLUMNS + - โ‰  ฮ” t + โ‰  data_load 327 โ‚‡ โ‚ƒโ‚‚โ‚€ 23 + โ‰  clean 324 โ‚† โ‚ƒโ‚โ‚ˆ 24 + โ‰  code_features 324 โ‚† โ‚ƒโ‚โ‚ˆ 23 โ‚ + โ‰  weekday_feature 324 โ‚† โ‚ƒโ‚โ‚ˆ 22 + โ‰  feature_merge 324 โ‚† โ‚ƒโ‚โ‚ˆ 24 โ‚ + โ‰  filter 318 โ‚ƒ โ‚ƒโ‚โ‚… 24 โ‚ + + LEGEND + equal ROW COUNT COLUMN COUNT + + added = joined and identical + added + - removed โ‰  joined but different - removed + โ‰  unequal + added โ‰  values differ + ? unknown - removed ฮ” renamed + โš  error occurred ? uncompared t type changed + + +A column is missing unexpectedly at the end of the pipeline. +Usually, it would be cumbersome to find the source of this problem, +but using the report, we can immediately see that the bug was introduced in code_featuers. + +Looking at the total row count, usually 3% of our rows are filtered out at the end. +But this time, over 57% of the new rows are missing, so it might be worth investigating further. + +Extending TabularDelta +====================== + +TabularDelta Protocol +--------------------- + +The TabularDelta Protocol defines which information is available for a table comparison, and how to access this. +As a protocol, it is designed to be as generic as possible. +This would allow for a wide range of implementations, with extensions, lazy comparisons and more. + +The protocol contains information about the comparison itself +(like the names of the tables, warnings, errors and additional information), +as well as the actual differences of the tables, which are separated in `cols` (for columns) and `rows`. + +For more details, please have a look at the API reference: + +.. toctree:: + :maxdepth: 1 + :caption: TabularDelta API: + + TabularDelta Protocol + +Comparators using TabularDelta_Dataclasses +---------------------------------------------- + +Comparators can compare two (tabular) data sources and return an object which adheres to the TabularDelta protocol: + +.. code-block:: python + + T = TypeVar("T", contravariant=True) + + class Comparator(Protocol[T]): + def compare(self, old: T, new: T) -> TabularDelta: ... + + +All current comparators rely on +:doc:`tabulardelta_dataclasses.py` +which implements the TabularDelta protocol using dataclasses. + +These currently implemented Comparators are: + +**SqlCompyreComparator**: This comparator is a wrapper which uses SQLCompyre to create a comparison result. + +**SqlMetadataComparator**: Repeatedly comparing a large number of huge tables using SQLCompyre leads to delays. +The SqlMetadataComparator uses DBS-specific metadata to achieve the best possible comparison in O(1) with regards to the number of rows. +At the moment this is only implemented for MsSql Server, but can easily be extended for other DBSs with just a few lines of code. + +**PandasComparator**: This comparator compares two DataFrames. +Since many tabular formats support the conversion to Pandas DataFrames, and Pandas itself offers a variety +of import options, this can also be used for CSV, Polars, Excel, JSON, Parquet, etc. + +To write a new Comparator, you just need to implement the `compare` method, +which returns an object adhering to the TabularDelta protocol. + +.. code-block:: python + + @dataclass + class PolarsComparator: + join_columns: list[str] | None = None + name: str = "" + + def compare(self, left: pl.DataFrame, right: pl.DataFrame) -> TabularDelta: + comparator = PandasComparator(self.join_columns, self.name) + return comparator.compare(left.to_pandas(), right.to_pandas()) + +Of course, it would be more efficient and less error-prone for special cases, if you could directly compare Polars DataFrames, +so feel free to implement a "real" PolarsComparator and to open a PR for it :) + +For more details, please have a look at the API reference: + +.. toctree:: + :maxdepth: 1 + :caption: Comparators: + + Comparator Protocol + PandasComparator + SqlCompyreComparator + SqlMetadataComparator + TabularDelta Dataclasses + +Formatters and TabularText +-------------------------------- + +Formatters take an object which adheres to the TabularText protocol and do something with it. + +.. code-block:: python + + T = TypeVar("T", covariant=True) + + class Formatter(Protocol[T]): + def format(self, delta: TabularDelta) -> T: ... + +Most formatters just visualize the differences in a human-readable way. +Therefore, many use the TabularText module might be useful, which enables rendering tables with different borders, rowspans and colspans: + +.. code-block:: python + + from tabulardelta.formatters.tabulartext.cell import Cell + from tabulardelta.formatters.tabulartext.table import Table, Border + + row1 = ["Just", "first", "row", Cell(["Two", "Rows"], rowspan=2)] + row2 = [Cell(["Second\nRow"], colspan=3), "BottomRight"] + + print("\nDefault border:") + print(Table.from_lists([row1, row2]).to_string()) + + print("\nDIY border:") + inner_border = Border(",,,, | ,, + , + ,, ---,, + , + ,, + ,,,,") + print(Table.from_lists([row1, row2], inner_border).to_string()) + +This will output the following tables: + +.. code-block:: + + Default border: + โ”โ”โ”โ”โ”โ”ฏโ”โ”โ”โ”โ”โ”ฏโ”โ”โ”โ”ฏโ”โ”โ”โ”โ”ฏโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“ + โ”ƒJustโ”‚firstโ”‚rowโ”‚Two โ”‚ โ”ƒ + โ” โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”คRowsโ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”จ + โ”ƒSecond โ”‚ โ”‚BottomRightโ”ƒ + โ”ƒRow โ”‚ โ”‚ โ”ƒ + โ”—โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ทโ”โ”โ”โ”โ”ทโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”› + + DIY border: + Just | first | row | Two | + ---- + ----- + --- + Rows + ----------- + Second | | BottomRight + Row | | + +The currently available formatters, which both use TabularText, are: + +**DetailedTextFormatter**: The goal of this formatter is to get as many details about a single comparison without loosing the overview. + +**OverviewRowFormatter**: This formatter is stateful, and collects comparisons as rows. +Calling `table()` will combine all comparisons into a single table. +Additionally, `add_header`, `add_row`, and `add_legend` allows to extend the visualisation with additional information. + +To show how easy it is to write a new formatter, let's say we want to use TabularDelta within test cases. +The following implementation of a new formatter works as follow: Given a TabularDelta object, +all changes are collected in a list, and an AssertionError is raised if this list isn't empty. + +.. code-block:: python + + class AssertingFormatter: + @staticmethod + def format(delta: TabularDelta) -> None: + type_chgs = chain.from_iterable( + (delta.cols.comparable_type_changed, delta.cols.incomparable_type_changed) + ) + changes = [ + [f"Removed {c.name}" for c in delta.cols.removed], + [f"Added {c.name}" for c in delta.cols.added], + [f"Renamed {c.old.name} -> {c.new.name}" for c in delta.cols.renamed], + [f"{c.new.name} changed: {c.old.type} -> {c.new.type}" for c in type_chgs], + ["New rows"] * (len(delta.rows.added) > 0), + ["Missing rows"] * (len(delta.rows.removed) > 0), + ["Changed rows"] * (len(delta.rows.unequal) > 0), + ] + if flat_changes := list(chain.from_iterable(changes)): + raise AssertionError("\n - ".join(flat_changes)) + + + def test_example(): + expected = pd.DataFrame({"id": [1, 2, 3]}) + observed = ... + + delta = PandasComparator().compare(expected, observed) + AssertingFormatter.format(delta) + +With only a few lines of code, we can now use all Comparators together with the newly written +AssertingFormatter, to check various table formats for equality. + +.. parsed-literal:: + + :red:`> raise AssertionError("\n - ".join(flat_changes)) + E AssertionError: + E - Added data + E - Renamed id -> key + E - New rows` + + :blue:`asserting_formatter.py:31`: :red:`AssertionError` + +The output will explain, which changes led to the failure. If more details are needed, +you could easily extend the formatter, or just print the result of the DetailedTextFormatter. + + +For more details, please have a look at the API reference: + + +.. toctree:: + :maxdepth: 1 + :caption: Formatters: + + Formatter Protocol + DetailedTextFormatter + OverviewRowFormatter + Table Rendering + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000..922152e --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=_build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/pixi.lock b/pixi.lock new file mode 100644 index 0000000..fdaf773 --- /dev/null +++ b/pixi.lock @@ -0,0 +1,20295 @@ +version: 5 +environments: + build: + channels: + - url: https://conda.anaconda.org/conda-forge/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.25-h8a0f778_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.7.2-h7970872_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.25-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.18-hc649ecc_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.2-h04a40c0_20.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.7-hc9bb02b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.18-h3e50d33_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.4-h674cf7e_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.6.4-hbe604ca_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.19-hc649ecc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.18-hc649ecc_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.27.5-hba11562_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.379-he20dfa5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.13.0-h935415a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.8.0-hd126650_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.12.0-hd2e3451_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.7.0-h10ac4d7_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.11.0-h325d260_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h30efb56_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/build-0.7.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.33.0-ha66036c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.0-py312h1671c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cmarkgfm-0.8.0-py312h98912ed_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-43.0.0-py312h8aaac84_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.0.0-hba01fac_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.3-py312h30efb56_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h6470451_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-5.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.functools-4.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jeepney-0.8.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/keyring-25.3.0-pyha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-17.0.0-h03aeac6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-17.0.0-he02047a_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-17.0.0-he02047a_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-17.0.0-hc9a23c6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.9.1-hdb1bdb2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.21-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hd3e95f3_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.28.0-h26d7fe4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.28.0-ha262f82_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-17.0.0-h9e5060d_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-h08a7969_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-h5a48ba9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.2-h9564881_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-hc0a3c3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.19.0-hb90f79a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h46a8edc_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.16-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-he7c6b58_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mbedtls-3.3.0-hcb278e6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.8-py312h2492b07_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nh3-0.2.18-py312hf008fa9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nng-1.6.0-h59595ed_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.0.1-py312h1103770_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.1-h17fec99_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pep517-0.13.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-17.0.0-py312h9cebb41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-17.0.0-py312h9cafe31_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydot-3.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pynng-0.8.0-py312hca68cad_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.5-h2ad013b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-box-7.2.0-py312h9a8786e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-duckdb-1.0.0-py312hca68cad_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h41a817b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py312h98912ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py312h98912ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.0-h3400bea_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.3-py312h7900ff3_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.32-py312h41a817b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/twine-5.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.9-hb711507_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h3483029_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + osx-64: + - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.7.25-h6309471_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.7.2-h5b118bc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.9.25-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.2.18-h5b118bc_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.4.2-h671840a_20.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.8.7-h22e442e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.14.18-hddd658a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.10.4-h3710d3a_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.6.4-h89cdba3_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.1.19-h5b118bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.1.18-h5b118bc_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.27.5-h53ac995_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.379-h065e723_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.13.0-hf8dbe3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.8.0-h60298e3_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.12.0-h646f05d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.7.0-hf91904f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.11.0-h14965f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312heafc425_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/build-0.7.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.33.0-h51dda26_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.7.4-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h37bd5c4_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.0-py312h9620c06_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cmarkgfm-0.8.0-py312h104f124_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-43.0.0-py312h7e81a9d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/expat-2.6.2-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.14.2-h5bb23bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hb1e8313_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/glog-0.7.1-h2790a97_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.0.0-he14ced1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.0.3-py312hede676d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h2c15c3c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-5.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.functools-4.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/keyring-25.3.0-pyh534df25_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240116.2-cxx17_hf036a51_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-17.0.0-h1496d7c_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-17.0.0-hac325c4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-17.0.0-hac325c4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-17.0.0-hba007a9_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.9.1-hfcf2730_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-18.1.8-heced48a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.21-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.2-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.80.3-h736d271_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.28.0-h721cda5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.28.0-h9e84e37_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.62.2-h384b2fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-h5ff76d1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.58.0-h64cf6d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.27-openmp_h8869122_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-17.0.0-h2adadb3_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.43-h92b6c6a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-4.25.3-h4e4d658_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2023.09.01-h81f5012_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.2-h902c40a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.46.0-h1b8f9f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.0-hd019ec5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.19.0-h064b379_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.6.0-h603087a_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.8.0-hb7f2c08_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.12.7-heaf3512_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-h87427d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-18.1.8-h15ab845_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.4-hf0c8a7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mbedtls-3.3.0-hf0c8a7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.0.8-py312hc3c9ca0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h5846eda_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/nh3-0.2.18-py312ha47ea1c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/nng-1.6.0-h73e2aa4_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.0.1-py312h8813227_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.1-h87427d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.0.1-hf43e91b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.2-py312h1171441_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pep517-0.13.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-17.0.0-py312h0be7463_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-17.0.0-py312h63b501a_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pydot-3.0.1-py312hb401068_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pynng-0.8.0-py312h28f332c_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.5-h37a9e06_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-box-7.2.0-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-duckdb-1.0.0-py312h28f332c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2023.09.01-hb168e87_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.6-py312h41838bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.8-py312h41838bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.1-he1e6707_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.32-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/twine-5.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-h87427d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h331e495_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.7.25-h08a4710_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.7.2-h98f14e4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.9.25-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.2.18-h98f14e4_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.4.2-hf1484eb_20.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.8.7-h624841c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.14.18-hacc3fab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.10.4-h8469d54_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.6.4-ha2a438e_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.1.19-h98f14e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.1.18-h98f14e4_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.27.5-h7061aca_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.379-h0db37eb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.13.0-hd01fc5c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.8.0-h13ea094_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.12.0-hfde595f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.7.0-hcf3b6fd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.11.0-h082e32e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312h9f69965_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/build-0.7.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.33.0-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.7.4-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.0-py312h80c9ed6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cmarkgfm-0.8.0-py312h02f2b3b_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-43.0.0-py312had01cb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.2-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.14.2-h82840c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hc88da5d_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.0.0-hbf8cc41_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.0.3-py312h20a0b95_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h91d5085_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-5.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.functools-4.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/keyring-25.3.0-pyh534df25_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240116.2-cxx17_h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-17.0.0-h8291d6d_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-17.0.0-hf9b8971_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-17.0.0-hf9b8971_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-17.0.0-hbf8b706_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.9.1-hfd8ffcc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h5a72898_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.21-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.2-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.80.3-h59d46d9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.28.0-hfe08963_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.28.0-h1466eeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.62.2-h9c18a4f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8fbad5d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.27-openmp_h517c56d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-17.0.0-h56531a6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.43-h091b4b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-4.25.3-hbfab5d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.09.01-h7b2c953_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.2-h1db61d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.46.0-hfb93653_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.19.0-h026a170_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.6.0-hf8409c0_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.12.7-h01dff8b_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-18.1.8-hde57baf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mbedtls-3.3.0-hb7217d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.0.8-py312h157fec4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-hb89a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nh3-0.2.18-py312h552d48e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nng-1.6.0-hebf3989_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.0.1-py312hb544834_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.1-h47ade37_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pep517-0.13.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-17.0.0-py312ha814d7c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-17.0.0-py312he20ac61_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydot-3.0.1-py312h81bd7bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pynng-0.8.0-py312h5c2e7bc_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.5-h30c5eda_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-box-7.2.0-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-duckdb-1.0.0-py312h5c2e7bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2023.09.01-h4cba328_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.6-py312he37b823_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.8-py312he37b823_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.32-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/twine-5.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h721a963_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + win-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.7.25-he6981b3_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-cal-0.7.2-h0240d57_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-common-0.9.25-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-compression-0.2.18-h0240d57_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-event-stream-0.4.2-h330dd76_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-http-0.8.7-h065a16f_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-io-0.14.18-h3095dc9_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-mqtt-0.10.4-h1efefa3_16.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-s3-0.6.4-h9116173_6.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-sdkutils-0.1.19-h0240d57_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.1.18-h0240d57_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-crt-cpp-0.27.5-h55e8508_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-sdk-cpp-1.11.379-h2205d66_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h53d5487_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/build-0.7.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/c-ares-1.33.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.7.4-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-win_pyh7428d3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cmarkgfm-0.8.0-py312he70551f_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/cryptography-43.0.0-py312h9500af3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/expat-2.6.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.14.2-hbde0cde_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.0.0-hb01754f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/greenlet-3.0.3-py312h53d5487_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.0-h57928b3_980.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-5.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.functools-4.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/keyring-25.3.0-pyh7428d3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libabseil-20240116.2-cxx17_he0c23c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-17.0.0-h009c9d4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-17.0.0-he0c23c2_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-17.0.0-he0c23c2_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-17.0.0-h1f0e801_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcrc32c-1.1.2-h0e60522_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.9.1-h18fefc2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.21-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libevent-2.1.12-h3671451_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.80.3-h7025463_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-2.28.0-h5e7cea3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-storage-2.28.0-he5eb982_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgrpc-1.62.2-h5273850_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.1-default_h8125262_1000.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libparquet-17.0.0-h178134c_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.43-h19919ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libprotobuf-4.25.3-h503648d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libre2-11-2023.09.01-hf8d8778_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.46.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.0-h7dfc565_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libthrift-0.19.0-ha2b3283_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.6.0-hb151862_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libutf8proc-2.8.0-h82a8f57_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.16-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.12.7-h0f24e4e_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.9.4-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gmp-6.1.0-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.1.0-h66d3029_694.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/msgpack-python-1.0.8-py312hd5eb7cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/nh3-0.2.18-py312h68c23d6_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.0.1-py312h49bc9c5_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/orc-2.0.1-h7e885a9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.2-py312h72972c8_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pep517-0.13.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-hfa6e2cd_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-17.0.0-py312h7e22eef_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-17.0.0-py312h6a9c419_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pydot-3.0.1-py312h2e8e312_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pynng-0.8.0-py312h275cf98_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.5-h889d299_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-box-7.2.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-duckdb-1.0.0-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-ctypes-0.2.2-py312h2e8e312_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/re2-2023.09.01-hd3b24a8_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml-0.18.6-py312he70551f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml.clib-0.2.8-py312he70551f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/snappy-1.2.1-h23299a8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/sqlalchemy-2.0.32-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.12.0-hc790b64_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/twine-5.1.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-ha82c5b3_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_20.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyhd8ed1ab_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-kbproto-1.0.7-hcd874cb_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.9-h0076a8d_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.3-hcd874cb_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.4-hcd874cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.0-hcd874cb_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xextproto-7.3.0-hcd874cb_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xproto-7.0.31-hcd874cb_1007.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.25-h8a0f778_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.7.2-h7970872_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.25-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.18-hc649ecc_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.2-h04a40c0_20.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.7-hc9bb02b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.18-h3e50d33_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.4-h674cf7e_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.6.4-hbe604ca_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.19-hc649ecc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.18-hc649ecc_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.27.5-hba11562_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.379-he20dfa5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.13.0-h935415a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.8.0-hd126650_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.12.0-hd2e3451_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.7.0-h10ac4d7_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.11.0-h325d260_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.33.0-ha66036c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.0-py312h1671c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.1-py312h41a817b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-43.0.0-py312h8aaac84_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.0.0-hba01fac_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.3-py312h30efb56_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h6470451_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-17.0.0-h03aeac6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-17.0.0-he02047a_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-17.0.0-he02047a_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-17.0.0-hc9a23c6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.9.1-hdb1bdb2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.21-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hd3e95f3_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.28.0-h26d7fe4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.28.0-ha262f82_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-17.0.0-h9e5060d_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-h08a7969_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-h5a48ba9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.2-h9564881_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-hc0a3c3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.19.0-hb90f79a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h46a8edc_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.16-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-he7c6b58_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mbedtls-3.3.0-hcb278e6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.8-py312h2492b07_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.11.1-py312h41a817b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nng-1.6.0-h59595ed_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.0.1-py312h1103770_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.1-h17fec99_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-unix_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-1.2.1-py312h7285250_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.0.0-py312h9a8786e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-17.0.0-py312h9cebb41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-17.0.0-py312h9cafe31_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydot-3.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pynng-0.8.0-py312hca68cad_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyodbc-5.1.0-py312h30efb56_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-emoji-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-md-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.5-h2ad013b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-box-7.2.0-py312h9a8786e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-duckdb-1.0.0-py312hca68cad_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h41a817b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py312h98912ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py312h98912ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.0-h3400bea_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.32-py312h41a817b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/unixodbc-2.3.12-h661eb56_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.9-hb711507_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/09/b3/a5a54b47cccd1ab661ed5775235c5e06924753c2d4817737c5667bfa19a8/pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/62/e8/d12c6fe3917a90db6fe096a56867b14707e4581a7a36a4c9eeed656ecf5d/sqlcompyre-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + osx-64: + - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.7.25-h6309471_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.7.2-h5b118bc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.9.25-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.2.18-h5b118bc_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.4.2-h671840a_20.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.8.7-h22e442e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.14.18-hddd658a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.10.4-h3710d3a_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.6.4-h89cdba3_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.1.19-h5b118bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.1.18-h5b118bc_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.27.5-h53ac995_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.379-h065e723_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.13.0-hf8dbe3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.8.0-h60298e3_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.12.0-h646f05d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.7.0-hf91904f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.11.0-h14965f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.33.0-h51dda26_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.7.4-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h37bd5c4_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.0-py312h9620c06_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.1-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-43.0.0-py312h7e81a9d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/expat-2.6.2-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.14.2-h5bb23bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hb1e8313_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/glog-0.7.1-h2790a97_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.0.0-he14ced1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.0.3-py312hede676d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h2c15c3c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240116.2-cxx17_hf036a51_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-17.0.0-h1496d7c_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-17.0.0-hac325c4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-17.0.0-hac325c4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-17.0.0-hba007a9_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.9.1-hfcf2730_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-18.1.8-heced48a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.21-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.2-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.80.3-h736d271_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.28.0-h721cda5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.28.0-h9e84e37_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.62.2-h384b2fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-h5ff76d1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.58.0-h64cf6d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.27-openmp_h8869122_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-17.0.0-h2adadb3_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.43-h92b6c6a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-4.25.3-h4e4d658_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2023.09.01-h81f5012_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.2-h902c40a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.46.0-h1b8f9f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.0-hd019ec5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.19.0-h064b379_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.6.0-h603087a_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.8.0-hb7f2c08_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.12.7-heaf3512_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-h87427d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-18.1.8-h15ab845_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.4-hf0c8a7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mbedtls-3.3.0-hf0c8a7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.0.8-py312hc3c9ca0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.11.1-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h5846eda_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/nng-1.6.0-h73e2aa4_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.0.1-py312h8813227_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.1-h87427d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.0.1-hf43e91b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.2-py312h1171441_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-unix_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/polars-1.2.1-py312h0b02467_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.0.0-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-17.0.0-py312h0be7463_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-17.0.0-py312h63b501a_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pydot-3.0.1-py312hb401068_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pynng-0.8.0-py312h28f332c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyodbc-5.1.0-py312hede676d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-emoji-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-md-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.5-h37a9e06_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-box-7.2.0-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-duckdb-1.0.0-py312h28f332c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2023.09.01-hb168e87_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.6-py312h41838bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.8-py312h41838bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.1-he1e6707_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.32-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/unixodbc-2.3.12-he8a5cf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-h87427d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/47/ef0d60ae23c41aced42921728650460dc831a0adf604bfa66b76028cb4d0/pydantic_core-2.20.1-cp312-cp312-macosx_10_12_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/62/e8/d12c6fe3917a90db6fe096a56867b14707e4581a7a36a4c9eeed656ecf5d/sqlcompyre-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.7.25-h08a4710_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.7.2-h98f14e4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.9.25-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.2.18-h98f14e4_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.4.2-hf1484eb_20.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.8.7-h624841c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.14.18-hacc3fab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.10.4-h8469d54_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.6.4-ha2a438e_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.1.19-h98f14e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.1.18-h98f14e4_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.27.5-h7061aca_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.379-h0db37eb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.13.0-hd01fc5c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.8.0-h13ea094_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.12.0-hfde595f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.7.0-hcf3b6fd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.11.0-h082e32e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.33.0-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.7.4-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.0-py312h80c9ed6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.1-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-43.0.0-py312had01cb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.2-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.14.2-h82840c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hc88da5d_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.0.0-hbf8cc41_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.0.3-py312h20a0b95_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h91d5085_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240116.2-cxx17_h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-17.0.0-h8291d6d_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-17.0.0-hf9b8971_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-17.0.0-hf9b8971_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-17.0.0-hbf8b706_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.9.1-hfd8ffcc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h5a72898_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.21-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.2-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.80.3-h59d46d9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.28.0-hfe08963_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.28.0-h1466eeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.62.2-h9c18a4f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8fbad5d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.27-openmp_h517c56d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-17.0.0-h56531a6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.43-h091b4b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-4.25.3-hbfab5d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.09.01-h7b2c953_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.2-h1db61d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.46.0-hfb93653_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.19.0-h026a170_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.6.0-hf8409c0_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.12.7-h01dff8b_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-18.1.8-hde57baf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mbedtls-3.3.0-hb7217d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.0.8-py312h157fec4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.11.1-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-hb89a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nng-1.6.0-hebf3989_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.0.1-py312hb544834_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.1-h47ade37_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-unix_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/polars-1.2.1-py312h043f87a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.0.0-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-17.0.0-py312ha814d7c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-17.0.0-py312he20ac61_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydot-3.0.1-py312h81bd7bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pynng-0.8.0-py312h5c2e7bc_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyodbc-5.1.0-py312h20a0b95_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-emoji-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-md-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.5-h30c5eda_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-box-7.2.0-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-duckdb-1.0.0-py312h5c2e7bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2023.09.01-h4cba328_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.6-py312he37b823_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.8-py312he37b823_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.32-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unixodbc-2.3.12-h0e2417a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6a/23/430f2878c9cd977a61bb39f71751d9310ec55cee36b3d5bf1752c6341fd0/pydantic_core-2.20.1-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/62/e8/d12c6fe3917a90db6fe096a56867b14707e4581a7a36a4c9eeed656ecf5d/sqlcompyre-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + win-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.7.25-he6981b3_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-cal-0.7.2-h0240d57_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-common-0.9.25-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-compression-0.2.18-h0240d57_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-event-stream-0.4.2-h330dd76_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-http-0.8.7-h065a16f_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-io-0.14.18-h3095dc9_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-mqtt-0.10.4-h1efefa3_16.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-s3-0.6.4-h9116173_6.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-sdkutils-0.1.19-h0240d57_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.1.18-h0240d57_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-crt-cpp-0.27.5-h55e8508_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-sdk-cpp-1.11.379-h2205d66_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/c-ares-1.33.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.7.4-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-win_pyh7428d3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cryptography-43.0.0-py312h9500af3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/expat-2.6.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.14.2-hbde0cde_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.0.0-hb01754f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/greenlet-3.0.3-py312h53d5487_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.0-h57928b3_980.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libabseil-20240116.2-cxx17_he0c23c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-17.0.0-h009c9d4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-17.0.0-he0c23c2_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-17.0.0-he0c23c2_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-17.0.0-h1f0e801_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcrc32c-1.1.2-h0e60522_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.9.1-h18fefc2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.21-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libevent-2.1.12-h3671451_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.80.3-h7025463_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-2.28.0-h5e7cea3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-storage-2.28.0-he5eb982_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgrpc-1.62.2-h5273850_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.1-default_h8125262_1000.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libparquet-17.0.0-h178134c_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.43-h19919ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libprotobuf-4.25.3-h503648d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libre2-11-2023.09.01-hf8d8778_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.46.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.0-h7dfc565_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libthrift-0.19.0-ha2b3283_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.6.0-hb151862_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libutf8proc-2.8.0-h82a8f57_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.16-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.12.7-h0f24e4e_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.9.4-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gmp-6.1.0-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.1.0-h66d3029_694.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/msgpack-python-1.0.8-py312hd5eb7cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/mypy-1.11.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.0.1-py312h49bc9c5_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/orc-2.0.1-h7e885a9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.2-py312h72972c8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-win_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/polars-1.2.1-py312hcd8180c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-6.0.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-hfa6e2cd_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-17.0.0-py312h7e22eef_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-17.0.0-py312h6a9c419_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pydot-3.0.1-py312h2e8e312_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pynng-0.8.0-py312h275cf98_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyodbc-5.1.0-py312h53d5487_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-emoji-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-md-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.5-h889d299_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-box-7.2.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-duckdb-1.0.0-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/re2-2023.09.01-hd3b24a8_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml-0.18.6-py312he70551f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml.clib-0.2.8-py312he70551f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/snappy-1.2.1-h23299a8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/sqlalchemy-2.0.32-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.12.0-hc790b64_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-ha82c5b3_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_20.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-kbproto-1.0.7-hcd874cb_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.9-h0076a8d_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.3-hcd874cb_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.4-hcd874cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.0-hcd874cb_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xextproto-7.3.0-hcd874cb_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xproto-7.0.31-hcd874cb_1007.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d5/36/e61ad5a46607a469e2786f398cd671ebafcd9fb17f09a2359985c7228df5/pydantic_core-2.20.1-cp312-none-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/62/e8/d12c6fe3917a90db6fe096a56867b14707e4581a7a36a4c9eeed656ecf5d/sqlcompyre-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + docs: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.16-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.25-h8a0f778_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.7.2-h7970872_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.25-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.18-hc649ecc_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.2-h04a40c0_20.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.7-hc9bb02b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.18-h3e50d33_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.4-h674cf7e_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.6.4-hbe604ca_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.19-hc649ecc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.18-hc649ecc_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.27.5-hba11562_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.379-he20dfa5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.13.0-h935415a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.8.0-hd126650_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.12.0-hd2e3451_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.7.0-h10ac4d7_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.11.0-h325d260_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h30efb56_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.33.0-ha66036c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.0-py312h1671c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-43.0.0-py312h8aaac84_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.20.1-py312h7900ff3_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.0.0-hba01fac_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.3-py312h30efb56_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h6470451_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-17.0.0-h03aeac6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-17.0.0-he02047a_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-17.0.0-he02047a_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-17.0.0-hc9a23c6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.9.1-hdb1bdb2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.21-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hd3e95f3_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.28.0-h26d7fe4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.28.0-ha262f82_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-17.0.0-h9e5060d_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-h08a7969_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-h5a48ba9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.2-h9564881_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-hc0a3c3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.19.0-hb90f79a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h46a8edc_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.16-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-he7c6b58_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.3-hd18ef5c_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py312h98912ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mbedtls-3.3.0-hcb278e6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.8-py312h2492b07_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nng-1.6.0-h59595ed_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.0.1-py312h1103770_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.1-h17fec99_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pbr-6.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-17.0.0-py312h9cebb41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-17.0.0-py312h9cafe31_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydot-3.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pynng-0.8.0-py312hca68cad_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyodbc-5.1.0-py312h30efb56_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.5-h2ad013b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-box-7.2.0-py312h9a8786e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-duckdb-1.0.0-py312hca68cad_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h41a817b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py312h98912ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py312h98912ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.0-h3400bea_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.4.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-2.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-apidoc-0.3.0-py_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.32-py312h41a817b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/unixodbc-2.3.12-h661eb56_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.9-hb711507_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h3483029_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/09/b3/a5a54b47cccd1ab661ed5775235c5e06924753c2d4817737c5667bfa19a8/pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/62/e8/d12c6fe3917a90db6fe096a56867b14707e4581a7a36a4c9eeed656ecf5d/sqlcompyre-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + osx-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.16-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.7.25-h6309471_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.7.2-h5b118bc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.9.25-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.2.18-h5b118bc_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.4.2-h671840a_20.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.8.7-h22e442e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.14.18-hddd658a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.10.4-h3710d3a_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.6.4-h89cdba3_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.1.19-h5b118bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.1.18-h5b118bc_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.27.5-h53ac995_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.379-h065e723_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.13.0-hf8dbe3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.8.0-h60298e3_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.12.0-h646f05d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.7.0-hf91904f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.11.0-h14965f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312heafc425_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.33.0-h51dda26_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.7.4-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h37bd5c4_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.0-py312h9620c06_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-43.0.0-py312h7e81a9d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/docutils-0.20.1-py312hb401068_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/expat-2.6.2-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.14.2-h5bb23bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hb1e8313_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/glog-0.7.1-h2790a97_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.0.0-he14ced1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.0.3-py312hede676d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h2c15c3c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240116.2-cxx17_hf036a51_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-17.0.0-h1496d7c_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-17.0.0-hac325c4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-17.0.0-hac325c4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-17.0.0-hba007a9_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.9.1-hfcf2730_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-18.1.8-heced48a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.21-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.2-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.80.3-h736d271_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.28.0-h721cda5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.28.0-h9e84e37_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.62.2-h384b2fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-h5ff76d1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.58.0-h64cf6d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.27-openmp_h8869122_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-17.0.0-h2adadb3_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.43-h92b6c6a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-4.25.3-h4e4d658_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2023.09.01-h81f5012_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.2-h902c40a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.46.0-h1b8f9f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.0-hd019ec5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.19.0-h064b379_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.6.0-h603087a_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.8.0-hb7f2c08_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.12.7-heaf3512_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-h87427d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-18.1.8-h15ab845_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.4-hf0c8a7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/make-4.3-h22f3db7_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-2.1.5-py312h41838bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mbedtls-3.3.0-hf0c8a7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.0.8-py312hc3c9ca0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h5846eda_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/nng-1.6.0-h73e2aa4_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.0.1-py312h8813227_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.1-h87427d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.0.1-hf43e91b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.2-py312h1171441_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pbr-6.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-17.0.0-py312h0be7463_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-17.0.0-py312h63b501a_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pydot-3.0.1-py312hb401068_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pynng-0.8.0-py312h28f332c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyodbc-5.1.0-py312hede676d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.5-h37a9e06_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-box-7.2.0-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-duckdb-1.0.0-py312h28f332c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2023.09.01-hb168e87_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.6-py312h41838bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.8-py312h41838bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.1-he1e6707_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.4.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-2.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-apidoc-0.3.0-py_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.32-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/unixodbc-2.3.12-he8a5cf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-h87427d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h331e495_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/47/ef0d60ae23c41aced42921728650460dc831a0adf604bfa66b76028cb4d0/pydantic_core-2.20.1-cp312-cp312-macosx_10_12_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/62/e8/d12c6fe3917a90db6fe096a56867b14707e4581a7a36a4c9eeed656ecf5d/sqlcompyre-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.16-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.7.25-h08a4710_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.7.2-h98f14e4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.9.25-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.2.18-h98f14e4_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.4.2-hf1484eb_20.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.8.7-h624841c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.14.18-hacc3fab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.10.4-h8469d54_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.6.4-ha2a438e_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.1.19-h98f14e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.1.18-h98f14e4_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.27.5-h7061aca_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.379-h0db37eb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.13.0-hd01fc5c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.8.0-h13ea094_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.12.0-hfde595f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.7.0-hcf3b6fd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.11.0-h082e32e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312h9f69965_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.33.0-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.7.4-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.0-py312h80c9ed6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-43.0.0-py312had01cb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/docutils-0.20.1-py312h81bd7bf_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.2-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.14.2-h82840c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hc88da5d_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.0.0-hbf8cc41_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.0.3-py312h20a0b95_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h91d5085_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240116.2-cxx17_h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-17.0.0-h8291d6d_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-17.0.0-hf9b8971_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-17.0.0-hf9b8971_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-17.0.0-hbf8b706_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.9.1-hfd8ffcc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h5a72898_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.21-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.2-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.80.3-h59d46d9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.28.0-hfe08963_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.28.0-h1466eeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.62.2-h9c18a4f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8fbad5d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.27-openmp_h517c56d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-17.0.0-h56531a6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.43-h091b4b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-4.25.3-hbfab5d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.09.01-h7b2c953_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.2-h1db61d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.46.0-hfb93653_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.19.0-h026a170_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.6.0-hf8409c0_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.12.7-h01dff8b_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-18.1.8-hde57baf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/make-4.3-he57ea6c_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-2.1.5-py312he37b823_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mbedtls-3.3.0-hb7217d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.0.8-py312h157fec4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-hb89a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nng-1.6.0-hebf3989_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.0.1-py312hb544834_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.1-h47ade37_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pbr-6.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-17.0.0-py312ha814d7c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-17.0.0-py312he20ac61_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydot-3.0.1-py312h81bd7bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pynng-0.8.0-py312h5c2e7bc_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyodbc-5.1.0-py312h20a0b95_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.5-h30c5eda_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-box-7.2.0-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-duckdb-1.0.0-py312h5c2e7bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2023.09.01-h4cba328_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.6-py312he37b823_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.8-py312he37b823_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.4.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-2.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-apidoc-0.3.0-py_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.32-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unixodbc-2.3.12-h0e2417a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h721a963_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6a/23/430f2878c9cd977a61bb39f71751d9310ec55cee36b3d5bf1752c6341fd0/pydantic_core-2.20.1-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/62/e8/d12c6fe3917a90db6fe096a56867b14707e4581a7a36a4c9eeed656ecf5d/sqlcompyre-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + win-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.16-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.7.25-he6981b3_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-cal-0.7.2-h0240d57_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-common-0.9.25-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-compression-0.2.18-h0240d57_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-event-stream-0.4.2-h330dd76_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-http-0.8.7-h065a16f_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-io-0.14.18-h3095dc9_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-mqtt-0.10.4-h1efefa3_16.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-s3-0.6.4-h9116173_6.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-sdkutils-0.1.19-h0240d57_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.1.18-h0240d57_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-crt-cpp-0.27.5-h55e8508_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-sdk-cpp-1.11.379-h2205d66_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h53d5487_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/c-ares-1.33.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.7.4-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-win_pyh7428d3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/cryptography-43.0.0-py312h9500af3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/docutils-0.20.1-py312h2e8e312_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/expat-2.6.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.14.2-hbde0cde_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.0.0-hb01754f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/greenlet-3.0.3-py312h53d5487_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.0-h57928b3_980.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libabseil-20240116.2-cxx17_he0c23c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-17.0.0-h009c9d4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-17.0.0-he0c23c2_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-17.0.0-he0c23c2_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-17.0.0-h1f0e801_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcrc32c-1.1.2-h0e60522_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.9.1-h18fefc2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.21-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libevent-2.1.12-h3671451_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.80.3-h7025463_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-2.28.0-h5e7cea3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-storage-2.28.0-he5eb982_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgrpc-1.62.2-h5273850_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.1-default_h8125262_1000.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libparquet-17.0.0-h178134c_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.43-h19919ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libprotobuf-4.25.3-h503648d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libre2-11-2023.09.01-hf8d8778_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.46.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.0-h7dfc565_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libthrift-0.19.0-ha2b3283_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.6.0-hb151862_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libutf8proc-2.8.0-h82a8f57_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.16-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.12.7-h0f24e4e_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.9.4-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gmp-6.1.0-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/make-4.3-h3d2af85_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-2.1.5-py312he70551f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.1.0-h66d3029_694.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/msgpack-python-1.0.8-py312hd5eb7cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.0.1-py312h49bc9c5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/orc-2.0.1-h7e885a9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.2-py312h72972c8_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pbr-6.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-hfa6e2cd_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-17.0.0-py312h7e22eef_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-17.0.0-py312h6a9c419_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pydot-3.0.1-py312h2e8e312_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pynng-0.8.0-py312h275cf98_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyodbc-5.1.0-py312h53d5487_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.5-h889d299_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-box-7.2.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-duckdb-1.0.0-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/re2-2023.09.01-hd3b24a8_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml-0.18.6-py312he70551f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml.clib-0.2.8-py312he70551f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/snappy-1.2.1-h23299a8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.4.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-2.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-apidoc-0.3.0-py_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/sqlalchemy-2.0.32-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.12.0-hc790b64_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-ha82c5b3_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_20.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyhd8ed1ab_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-kbproto-1.0.7-hcd874cb_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.9-h0076a8d_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.3-hcd874cb_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.4-hcd874cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.0-hcd874cb_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xextproto-7.3.0-hcd874cb_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xproto-7.0.31-hcd874cb_1007.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d5/36/e61ad5a46607a469e2786f398cd671ebafcd9fb17f09a2359985c7228df5/pydantic_core-2.20.1-cp312-none-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/62/e8/d12c6fe3917a90db6fe096a56867b14707e4581a7a36a4c9eeed656ecf5d/sqlcompyre-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + lint: + channels: + - url: https://conda.anaconda.org/conda-forge/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.0-py312h1671c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/insert-license-header-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-hc0a3c3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.48.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-22.6.0-hc19f0b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.0.1-py312h1103770_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-hooks-4.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prettier-3.3.3-hdfa8007_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.5-h2ad013b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h41a817b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidfuzz-3.9.6-py312hca68cad_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py312h98912ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py312h98912ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.5.7-py312hbe4c86d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/taplo-0.9.3-h1de38c7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/typos-1.23.6-h9678756_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h8572e83_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-py_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda + osx-64: + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.7.4-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.0-py312h9620c06_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-73.2-hf5e326d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/insert-license-header-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-18.1.8-heced48a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.2-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.27-openmp_h8869122_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.46.0-h1b8f9f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.48.0-h67532ce_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-h87427d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-18.1.8-h15ab845_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h5846eda_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/nodejs-22.6.0-hbe3ef2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.0.1-py312h8813227_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.1-h87427d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-hooks-4.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/prettier-3.3.3-h2ff3409_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.5-h37a9e06_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rapidfuzz-3.9.6-py312h28f332c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.6-py312h41838bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.8-py312h41838bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.5.7-py312h8b25c6c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/taplo-0.9.3-hd264b5c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/typos-1.23.6-h686f776_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312h49ebfd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-py_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-h87427d6_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.7.4-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.0-py312h80c9ed6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-73.2-hc8870d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/insert-license-header-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h5a72898_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.2-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.27-openmp_h517c56d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.46.0-hfb93653_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.48.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-18.1.8-hde57baf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-hb89a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nodejs-22.6.0-h3fe1c63_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.0.1-py312hb544834_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-hooks-4.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prettier-3.3.3-h0857397_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.5-h30c5eda_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rapidfuzz-3.9.6-py312h5c2e7bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.6-py312he37b823_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.8-py312he37b823_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.5.7-py312h3402d49_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/taplo-0.9.3-h563f0a8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/typos-1.23.6-h6e96688_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h389731b_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-py_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-hfb2fe0b_1.conda + win-64: + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.7.4-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/insert-license-header-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.0-h57928b3_980.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.1-default_h8125262_1000.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.46.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.12.7-h0f24e4e_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gmp-6.1.0-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.1.0-h66d3029_694.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/nodejs-22.6.0-h57928b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.0.1-py312h49bc9c5_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-hooks-4.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/prettier-3.3.3-ha3c0332_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-hfa6e2cd_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.5-h889d299_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rapidfuzz-3.9.6-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml-0.18.6-py312he70551f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml.clib-0.2.8-py312he70551f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.5.7-py312h7a6832a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/taplo-0.9.3-h823019e_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.12.0-hc790b64_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/typos-1.23.6-h813c833_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312h0d7def4_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-py_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-ha82c5b3_20.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 + no-sql: + channels: + - url: https://conda.anaconda.org/conda-forge/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.25-h8a0f778_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.7.2-h7970872_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.25-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.18-hc649ecc_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.2-h04a40c0_20.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.7-hc9bb02b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.18-h3e50d33_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.4-h674cf7e_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.6.4-hbe604ca_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.19-hc649ecc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.18-hc649ecc_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.27.5-hba11562_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.379-he20dfa5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.13.0-h935415a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.8.0-hd126650_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.12.0-hd2e3451_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.7.0-h10ac4d7_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.11.0-h325d260_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.33.0-ha66036c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.0-py312h1671c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.1-py312h41a817b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-43.0.0-py312h8aaac84_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.0.0-hba01fac_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.3-py312h30efb56_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h6470451_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-17.0.0-h03aeac6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-17.0.0-he02047a_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-17.0.0-he02047a_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-17.0.0-hc9a23c6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.9.1-hdb1bdb2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.21-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hd3e95f3_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.28.0-h26d7fe4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.28.0-ha262f82_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-17.0.0-h9e5060d_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-h08a7969_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-h5a48ba9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.2-h9564881_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-hc0a3c3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.19.0-hb90f79a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h46a8edc_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.16-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-he7c6b58_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mbedtls-3.3.0-hcb278e6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.8-py312h2492b07_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.11.1-py312h41a817b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nng-1.6.0-h59595ed_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.0.1-py312h1103770_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.1-h17fec99_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-unix_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-1.2.1-py312h7285250_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.0.0-py312h9a8786e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-17.0.0-py312h9cebb41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-17.0.0-py312h9cafe31_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydot-3.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pynng-0.8.0-py312hca68cad_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-emoji-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-md-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.5-h2ad013b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-box-7.2.0-py312h9a8786e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-duckdb-1.0.0-py312hca68cad_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h41a817b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py312h98912ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py312h98912ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.0-h3400bea_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.32-py312h41a817b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.9-hb711507_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + osx-64: + - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.7.25-h6309471_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.7.2-h5b118bc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.9.25-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.2.18-h5b118bc_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.4.2-h671840a_20.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.8.7-h22e442e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.14.18-hddd658a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.10.4-h3710d3a_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.6.4-h89cdba3_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.1.19-h5b118bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.1.18-h5b118bc_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.27.5-h53ac995_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.379-h065e723_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.13.0-hf8dbe3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.8.0-h60298e3_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.12.0-h646f05d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.7.0-hf91904f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.11.0-h14965f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.33.0-h51dda26_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.7.4-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h37bd5c4_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.0-py312h9620c06_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.1-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-43.0.0-py312h7e81a9d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/expat-2.6.2-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.14.2-h5bb23bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hb1e8313_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/glog-0.7.1-h2790a97_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.0.0-he14ced1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.0.3-py312hede676d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h2c15c3c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240116.2-cxx17_hf036a51_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-17.0.0-h1496d7c_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-17.0.0-hac325c4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-17.0.0-hac325c4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-17.0.0-hba007a9_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.9.1-hfcf2730_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-18.1.8-heced48a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.21-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.2-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.80.3-h736d271_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.28.0-h721cda5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.28.0-h9e84e37_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.62.2-h384b2fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-h5ff76d1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.58.0-h64cf6d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.27-openmp_h8869122_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-17.0.0-h2adadb3_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.43-h92b6c6a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-4.25.3-h4e4d658_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2023.09.01-h81f5012_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.2-h902c40a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.46.0-h1b8f9f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.0-hd019ec5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.19.0-h064b379_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.6.0-h603087a_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.8.0-hb7f2c08_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.12.7-heaf3512_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-h87427d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-18.1.8-h15ab845_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.4-hf0c8a7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mbedtls-3.3.0-hf0c8a7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.0.8-py312hc3c9ca0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.11.1-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h5846eda_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/nng-1.6.0-h73e2aa4_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.0.1-py312h8813227_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.1-h87427d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.0.1-hf43e91b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.2-py312h1171441_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-unix_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/polars-1.2.1-py312h0b02467_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.0.0-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-17.0.0-py312h0be7463_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-17.0.0-py312h63b501a_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pydot-3.0.1-py312hb401068_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pynng-0.8.0-py312h28f332c_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-emoji-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-md-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.5-h37a9e06_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-box-7.2.0-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-duckdb-1.0.0-py312h28f332c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2023.09.01-hb168e87_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.6-py312h41838bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.8-py312h41838bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.1-he1e6707_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.32-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-h87427d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.7.25-h08a4710_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.7.2-h98f14e4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.9.25-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.2.18-h98f14e4_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.4.2-hf1484eb_20.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.8.7-h624841c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.14.18-hacc3fab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.10.4-h8469d54_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.6.4-ha2a438e_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.1.19-h98f14e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.1.18-h98f14e4_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.27.5-h7061aca_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.379-h0db37eb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.13.0-hd01fc5c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.8.0-h13ea094_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.12.0-hfde595f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.7.0-hcf3b6fd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.11.0-h082e32e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.33.0-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.7.4-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.0-py312h80c9ed6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.1-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-43.0.0-py312had01cb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.2-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.14.2-h82840c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hc88da5d_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.0.0-hbf8cc41_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.0.3-py312h20a0b95_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h91d5085_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240116.2-cxx17_h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-17.0.0-h8291d6d_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-17.0.0-hf9b8971_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-17.0.0-hf9b8971_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-17.0.0-hbf8b706_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.9.1-hfd8ffcc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h5a72898_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.21-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.2-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.80.3-h59d46d9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.28.0-hfe08963_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.28.0-h1466eeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.62.2-h9c18a4f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8fbad5d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.27-openmp_h517c56d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-17.0.0-h56531a6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.43-h091b4b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-4.25.3-hbfab5d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.09.01-h7b2c953_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.2-h1db61d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.46.0-hfb93653_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.19.0-h026a170_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.6.0-hf8409c0_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.12.7-h01dff8b_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-18.1.8-hde57baf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mbedtls-3.3.0-hb7217d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.0.8-py312h157fec4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.11.1-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-hb89a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nng-1.6.0-hebf3989_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.0.1-py312hb544834_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.1-h47ade37_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-unix_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/polars-1.2.1-py312h043f87a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.0.0-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-17.0.0-py312ha814d7c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-17.0.0-py312he20ac61_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydot-3.0.1-py312h81bd7bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pynng-0.8.0-py312h5c2e7bc_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-emoji-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-md-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.5-h30c5eda_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-box-7.2.0-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-duckdb-1.0.0-py312h5c2e7bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2023.09.01-h4cba328_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.6-py312he37b823_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.8-py312he37b823_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.32-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + win-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.7.25-he6981b3_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-cal-0.7.2-h0240d57_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-common-0.9.25-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-compression-0.2.18-h0240d57_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-event-stream-0.4.2-h330dd76_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-http-0.8.7-h065a16f_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-io-0.14.18-h3095dc9_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-mqtt-0.10.4-h1efefa3_16.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-s3-0.6.4-h9116173_6.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-sdkutils-0.1.19-h0240d57_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.1.18-h0240d57_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-crt-cpp-0.27.5-h55e8508_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-sdk-cpp-1.11.379-h2205d66_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/c-ares-1.33.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.7.4-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-win_pyh7428d3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cryptography-43.0.0-py312h9500af3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/expat-2.6.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.14.2-hbde0cde_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.0.0-hb01754f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/greenlet-3.0.3-py312h53d5487_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.0-h57928b3_980.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libabseil-20240116.2-cxx17_he0c23c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-17.0.0-h009c9d4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-17.0.0-he0c23c2_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-17.0.0-he0c23c2_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-17.0.0-h1f0e801_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcrc32c-1.1.2-h0e60522_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.9.1-h18fefc2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.21-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libevent-2.1.12-h3671451_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.80.3-h7025463_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-2.28.0-h5e7cea3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-storage-2.28.0-he5eb982_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgrpc-1.62.2-h5273850_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.1-default_h8125262_1000.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libparquet-17.0.0-h178134c_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.43-h19919ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libprotobuf-4.25.3-h503648d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libre2-11-2023.09.01-hf8d8778_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.46.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.0-h7dfc565_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libthrift-0.19.0-ha2b3283_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.6.0-hb151862_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libutf8proc-2.8.0-h82a8f57_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.16-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.12.7-h0f24e4e_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.9.4-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gmp-6.1.0-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.1.0-h66d3029_694.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/msgpack-python-1.0.8-py312hd5eb7cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/mypy-1.11.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.0.1-py312h49bc9c5_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/orc-2.0.1-h7e885a9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.2-py312h72972c8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-win_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/polars-1.2.1-py312hcd8180c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-6.0.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-hfa6e2cd_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-17.0.0-py312h7e22eef_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-17.0.0-py312h6a9c419_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pydot-3.0.1-py312h2e8e312_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pynng-0.8.0-py312h275cf98_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-emoji-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-md-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.5-h889d299_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-box-7.2.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-duckdb-1.0.0-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/re2-2023.09.01-hd3b24a8_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml-0.18.6-py312he70551f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml.clib-0.2.8-py312he70551f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/snappy-1.2.1-h23299a8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/sqlalchemy-2.0.32-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.12.0-hc790b64_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-ha82c5b3_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_20.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-kbproto-1.0.7-hcd874cb_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.9-h0076a8d_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.3-hcd874cb_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.4-hcd874cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.0-hcd874cb_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xextproto-7.3.0-hcd874cb_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xproto-7.0.31-hcd874cb_1007.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + py311: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.25-h8a0f778_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.7.2-h7970872_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.25-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.18-hc649ecc_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.2-h04a40c0_20.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.7-hc9bb02b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.18-h3e50d33_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.4-h674cf7e_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.6.4-hbe604ca_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.19-hc649ecc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.18-hc649ecc_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.27.5-hba11562_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.379-he20dfa5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.13.0-h935415a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.8.0-hd126650_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.12.0-hd2e3451_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.7.0-h10ac4d7_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.11.0-h325d260_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.33.0-ha66036c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.0-py311ha8e6434_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.1-py311h61187de_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-43.0.0-py311hc6616f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.0.0-hba01fac_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.3-py311hb755f60_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h6470451_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-17.0.0-h03aeac6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-17.0.0-he02047a_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-17.0.0-he02047a_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-17.0.0-hc9a23c6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.9.1-hdb1bdb2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.21-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hd3e95f3_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.28.0-h26d7fe4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.28.0-ha262f82_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-17.0.0-h9e5060d_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-h08a7969_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-h5a48ba9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.2-h9564881_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-hc0a3c3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.19.0-hb90f79a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h46a8edc_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.16-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-he7c6b58_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mbedtls-3.3.0-hcb278e6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.8-py311h52f7536_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.11.1-py311h61187de_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nng-1.6.0-h59595ed_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.0.1-py311hed25524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.1-h17fec99_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py311h14de704_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-unix_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-1.2.1-py311hf29da40_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.0.0-py311h331c9d8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-17.0.0-py311hbd00459_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-17.0.0-py311h4510849_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydot-3.0.1-py311h38be061_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pynng-0.8.0-py311hf86e51f_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyodbc-5.1.0-py311hb755f60_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-emoji-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-md-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.9-hb806964_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-box-7.2.0-py311h331c9d8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-duckdb-1.0.0-py311hf86e51f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-4_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h61187de_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py311h459d7ec_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py311h459d7ec_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.0-h3400bea_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.32-py311h61187de_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/unixodbc-2.3.12-h661eb56_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.9-hb711507_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3c/ae/fc99ce1ba791c9e9d1dee04ce80eef1dae5b25b27e3fc8e19f4e3f1348bf/pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/62/e8/d12c6fe3917a90db6fe096a56867b14707e4581a7a36a4c9eeed656ecf5d/sqlcompyre-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + osx-64: + - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.7.25-h6309471_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.7.2-h5b118bc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.9.25-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.2.18-h5b118bc_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.4.2-h671840a_20.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.8.7-h22e442e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.14.18-hddd658a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.10.4-h3710d3a_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.6.4-h89cdba3_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.1.19-h5b118bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.1.18-h5b118bc_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.27.5-h53ac995_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.379-h065e723_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.13.0-hf8dbe3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.8.0-h60298e3_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.12.0-h646f05d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.7.0-hf91904f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.11.0-h14965f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.33.0-h51dda26_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.7.4-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h37bd5c4_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.0-py311h6e3bf6f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.1-py311h72ae277_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-43.0.0-py311h4ba4ffd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/expat-2.6.2-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.14.2-h5bb23bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hb1e8313_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/glog-0.7.1-h2790a97_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.0.0-he14ced1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.0.3-py311hdd0406b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h2c15c3c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240116.2-cxx17_hf036a51_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-17.0.0-h1496d7c_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-17.0.0-hac325c4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-17.0.0-hac325c4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-17.0.0-hba007a9_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.9.1-hfcf2730_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-18.1.8-heced48a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.21-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.2-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.80.3-h736d271_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.28.0-h721cda5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.28.0-h9e84e37_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.62.2-h384b2fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-h5ff76d1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.58.0-h64cf6d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.27-openmp_h8869122_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-17.0.0-h2adadb3_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.43-h92b6c6a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-4.25.3-h4e4d658_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2023.09.01-h81f5012_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.2-h902c40a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.46.0-h1b8f9f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.0-hd019ec5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.19.0-h064b379_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.6.0-h603087a_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.8.0-hb7f2c08_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.12.7-heaf3512_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-h87427d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-18.1.8-h15ab845_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.4-hf0c8a7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mbedtls-3.3.0-hf0c8a7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.0.8-py311h46c8309_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.11.1-py311h72ae277_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h5846eda_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/nng-1.6.0-h73e2aa4_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.0.1-py311hc11d9cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.1-h87427d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.0.1-hf43e91b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.2-py311hfdcbad3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-unix_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/polars-1.2.1-py311h2bcd2da_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.0.0-py311h72ae277_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-17.0.0-py311he764780_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-17.0.0-py311h073f6b9_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pydot-3.0.1-py311h6eed73b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pynng-0.8.0-py311hbafa61a_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyodbc-5.1.0-py311hdd0406b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-emoji-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-md-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.9-h657bba9_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-box-7.2.0-py311h72ae277_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-duckdb-1.0.0-py311hbafa61a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.11-4_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py311h72ae277_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2023.09.01-hb168e87_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.6-py311he705e18_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.8-py311he705e18_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.1-he1e6707_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.32-py311h72ae277_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/unixodbc-2.3.12-he8a5cf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-h87427d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/61/db/f6a724db226d990a329910727cfac43539ff6969edc217286dd05cda3ef6/pydantic_core-2.20.1-cp311-cp311-macosx_10_12_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/62/e8/d12c6fe3917a90db6fe096a56867b14707e4581a7a36a4c9eeed656ecf5d/sqlcompyre-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.7.25-h08a4710_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.7.2-h98f14e4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.9.25-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.2.18-h98f14e4_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.4.2-hf1484eb_20.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.8.7-h624841c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.14.18-hacc3fab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.10.4-h8469d54_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.6.4-ha2a438e_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.1.19-h98f14e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.1.18-h98f14e4_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.27.5-h7061aca_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.379-h0db37eb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.13.0-hd01fc5c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.8.0-h13ea094_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.12.0-hfde595f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.7.0-hcf3b6fd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.11.0-h082e32e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.33.0-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.7.4-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.0-py311h4bce835_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.1-py311hd3f4193_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-43.0.0-py311hcaeb4ce_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.2-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.14.2-h82840c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hc88da5d_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.0.0-hbf8cc41_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.0.3-py311h92babd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h91d5085_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240116.2-cxx17_h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-17.0.0-h8291d6d_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-17.0.0-hf9b8971_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-17.0.0-hf9b8971_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-17.0.0-hbf8b706_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.9.1-hfd8ffcc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h5a72898_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.21-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.2-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.80.3-h59d46d9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.28.0-hfe08963_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.28.0-h1466eeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.62.2-h9c18a4f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8fbad5d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.27-openmp_h517c56d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-17.0.0-h56531a6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.43-h091b4b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-4.25.3-hbfab5d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.09.01-h7b2c953_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.2-h1db61d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.46.0-hfb93653_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.19.0-h026a170_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.6.0-hf8409c0_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.12.7-h01dff8b_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-18.1.8-hde57baf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mbedtls-3.3.0-hb7217d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.0.8-py311h6bde47b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.11.1-py311hd3f4193_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-hb89a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nng-1.6.0-hebf3989_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.0.1-py311h4268184_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.1-h47ade37_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py311h4b4568b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-unix_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/polars-1.2.1-py311h9e175c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.0.0-py311hd3f4193_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-17.0.0-py311h35c05fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-17.0.0-py311he42f270_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydot-3.0.1-py311h267d04e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pynng-0.8.0-py311hb9542d7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyodbc-5.1.0-py311h92babd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-emoji-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-md-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.9-h932a869_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-box-7.2.0-py311hd3f4193_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-duckdb-1.0.0-py311hb9542d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-4_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311hd3f4193_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2023.09.01-h4cba328_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.6-py311h05b510d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.8-py311h05b510d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.32-py311hd3f4193_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unixodbc-2.3.12-h0e2417a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9b/83/6f2bfe75209d557ae1c3550c1252684fc1827b8b12fbed84c3b4439e135d/pydantic_core-2.20.1-cp311-cp311-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/62/e8/d12c6fe3917a90db6fe096a56867b14707e4581a7a36a4c9eeed656ecf5d/sqlcompyre-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + win-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.7.25-he6981b3_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-cal-0.7.2-h0240d57_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-common-0.9.25-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-compression-0.2.18-h0240d57_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-event-stream-0.4.2-h330dd76_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-http-0.8.7-h065a16f_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-io-0.14.18-h3095dc9_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-mqtt-0.10.4-h1efefa3_16.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-s3-0.6.4-h9116173_6.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-sdkutils-0.1.19-h0240d57_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.1.18-h0240d57_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-crt-cpp-0.27.5-h55e8508_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-sdk-cpp-1.11.379-h2205d66_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/c-ares-1.33.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.7.4-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.0-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-win_pyh7428d3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.1-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cryptography-43.0.0-py311hfd75b31_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/expat-2.6.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.14.2-hbde0cde_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.0.0-hb01754f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/greenlet-3.0.3-py311h12c1d0e_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.0-h57928b3_980.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libabseil-20240116.2-cxx17_he0c23c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-17.0.0-h009c9d4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-17.0.0-he0c23c2_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-17.0.0-he0c23c2_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-17.0.0-h1f0e801_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcrc32c-1.1.2-h0e60522_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.9.1-h18fefc2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.21-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libevent-2.1.12-h3671451_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.80.3-h7025463_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-2.28.0-h5e7cea3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-storage-2.28.0-he5eb982_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgrpc-1.62.2-h5273850_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.1-default_h8125262_1000.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libparquet-17.0.0-h178134c_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.43-h19919ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libprotobuf-4.25.3-h503648d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libre2-11-2023.09.01-hf8d8778_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.46.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.0-h7dfc565_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libthrift-0.19.0-ha2b3283_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.6.0-hb151862_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libutf8proc-2.8.0-h82a8f57_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.16-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.12.7-h0f24e4e_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.9.4-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gmp-6.1.0-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.1.0-h66d3029_694.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/msgpack-python-1.0.8-py311h3257749_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/mypy-1.11.1-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.0.1-py311h35ffc71_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/orc-2.0.1-h7e885a9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.2-py311hcf9f919_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-win_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/polars-1.2.1-py311h6bf133b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-6.0.0-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-hfa6e2cd_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-17.0.0-py311h06a5be4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-17.0.0-py311hdea38fa_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pydot-3.0.1-py311h1ea47a8_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pynng-0.8.0-py311hda3d55a_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyodbc-5.1.0-py311h12c1d0e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-emoji-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-md-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.9-h631f459_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-box-7.2.0-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-duckdb-1.0.0-py311hda3d55a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.11-4_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/re2-2023.09.01-hd3b24a8_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml-0.18.6-py311ha68e1ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml.clib-0.2.8-py311ha68e1ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/snappy-1.2.1-h23299a8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/sqlalchemy-2.0.32-py311he736701_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.12.0-hc790b64_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-ha82c5b3_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_20.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-kbproto-1.0.7-hcd874cb_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.9-h0076a8d_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.3-hcd874cb_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.4-hcd874cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.0-hcd874cb_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xextproto-7.3.0-hcd874cb_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xproto-7.0.31-hcd874cb_1007.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/35/7f/58758c42c61b0bdd585158586fecea295523d49933cb33664ea888162daf/pydantic_core-2.20.1-cp311-none-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/62/e8/d12c6fe3917a90db6fe096a56867b14707e4581a7a36a4c9eeed656ecf5d/sqlcompyre-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + py312: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.25-h8a0f778_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.7.2-h7970872_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.25-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.18-hc649ecc_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.2-h04a40c0_20.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.7-hc9bb02b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.18-h3e50d33_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.4-h674cf7e_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.6.4-hbe604ca_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.19-hc649ecc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.18-hc649ecc_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.27.5-hba11562_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.379-he20dfa5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.13.0-h935415a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.8.0-hd126650_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.12.0-hd2e3451_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.7.0-h10ac4d7_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.11.0-h325d260_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.33.0-ha66036c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.0-py312h1671c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.1-py312h41a817b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-43.0.0-py312h8aaac84_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.0.0-hba01fac_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.3-py312h30efb56_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h6470451_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-17.0.0-h03aeac6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-17.0.0-he02047a_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-17.0.0-he02047a_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-17.0.0-hc9a23c6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.9.1-hdb1bdb2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.21-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hd3e95f3_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.28.0-h26d7fe4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.28.0-ha262f82_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-17.0.0-h9e5060d_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-h08a7969_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-h5a48ba9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.2-h9564881_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-hc0a3c3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.19.0-hb90f79a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h46a8edc_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.16-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-he7c6b58_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mbedtls-3.3.0-hcb278e6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.8-py312h2492b07_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.11.1-py312h41a817b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nng-1.6.0-h59595ed_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.0.1-py312h1103770_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.1-h17fec99_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-unix_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-1.2.1-py312h7285250_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.0.0-py312h9a8786e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-17.0.0-py312h9cebb41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-17.0.0-py312h9cafe31_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydot-3.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pynng-0.8.0-py312hca68cad_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyodbc-5.1.0-py312h30efb56_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-emoji-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-md-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.5-h2ad013b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-box-7.2.0-py312h9a8786e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-duckdb-1.0.0-py312hca68cad_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h41a817b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py312h98912ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py312h98912ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.0-h3400bea_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.32-py312h41a817b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/unixodbc-2.3.12-h661eb56_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.9-hb711507_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/09/b3/a5a54b47cccd1ab661ed5775235c5e06924753c2d4817737c5667bfa19a8/pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/62/e8/d12c6fe3917a90db6fe096a56867b14707e4581a7a36a4c9eeed656ecf5d/sqlcompyre-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + osx-64: + - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.7.25-h6309471_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.7.2-h5b118bc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.9.25-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.2.18-h5b118bc_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.4.2-h671840a_20.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.8.7-h22e442e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.14.18-hddd658a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.10.4-h3710d3a_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.6.4-h89cdba3_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.1.19-h5b118bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.1.18-h5b118bc_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.27.5-h53ac995_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.379-h065e723_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.13.0-hf8dbe3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.8.0-h60298e3_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.12.0-h646f05d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.7.0-hf91904f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.11.0-h14965f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.33.0-h51dda26_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.7.4-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h37bd5c4_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.0-py312h9620c06_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.1-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-43.0.0-py312h7e81a9d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/expat-2.6.2-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.14.2-h5bb23bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hb1e8313_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/glog-0.7.1-h2790a97_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.0.0-he14ced1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.0.3-py312hede676d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h2c15c3c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240116.2-cxx17_hf036a51_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-17.0.0-h1496d7c_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-17.0.0-hac325c4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-17.0.0-hac325c4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-17.0.0-hba007a9_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.9.1-hfcf2730_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-18.1.8-heced48a_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.21-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.2-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.80.3-h736d271_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.28.0-h721cda5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.28.0-h9e84e37_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.62.2-h384b2fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-h5ff76d1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-22_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.58.0-h64cf6d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.27-openmp_h8869122_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-17.0.0-h2adadb3_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.43-h92b6c6a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-4.25.3-h4e4d658_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2023.09.01-h81f5012_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.2-h902c40a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.46.0-h1b8f9f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.0-hd019ec5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.19.0-h064b379_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.6.0-h603087a_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.8.0-hb7f2c08_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.12.7-heaf3512_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-h87427d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-18.1.8-h15ab845_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.4-hf0c8a7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mbedtls-3.3.0-hf0c8a7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.0.8-py312hc3c9ca0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.11.1-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h5846eda_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/nng-1.6.0-h73e2aa4_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.0.1-py312h8813227_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.1-h87427d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.0.1-hf43e91b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.2-py312h1171441_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-unix_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/polars-1.2.1-py312h0b02467_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.0.0-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-17.0.0-py312h0be7463_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-17.0.0-py312h63b501a_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pydot-3.0.1-py312hb401068_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pynng-0.8.0-py312h28f332c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyodbc-5.1.0-py312hede676d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-emoji-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-md-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.5-h37a9e06_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-box-7.2.0-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-duckdb-1.0.0-py312h28f332c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2023.09.01-hb168e87_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.6-py312h41838bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.8-py312h41838bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.1-he1e6707_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.32-py312hbd25219_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/unixodbc-2.3.12-he8a5cf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-h87427d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/47/ef0d60ae23c41aced42921728650460dc831a0adf604bfa66b76028cb4d0/pydantic_core-2.20.1-cp312-cp312-macosx_10_12_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/62/e8/d12c6fe3917a90db6fe096a56867b14707e4581a7a36a4c9eeed656ecf5d/sqlcompyre-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.7.25-h08a4710_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.7.2-h98f14e4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.9.25-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.2.18-h98f14e4_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.4.2-hf1484eb_20.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.8.7-h624841c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.14.18-hacc3fab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.10.4-h8469d54_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.6.4-ha2a438e_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.1.19-h98f14e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.1.18-h98f14e4_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.27.5-h7061aca_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.379-h0db37eb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.13.0-hd01fc5c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.8.0-h13ea094_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.12.0-hfde595f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.7.0-hcf3b6fd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.11.0-h082e32e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.33.0-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.7.4-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.0-py312h80c9ed6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.1-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-43.0.0-py312had01cb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.2-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.14.2-h82840c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hc88da5d_1004.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.0.0-hbf8cc41_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.0.3-py312h20a0b95_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h91d5085_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240116.2-cxx17_h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-17.0.0-h8291d6d_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-17.0.0-hf9b8971_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-17.0.0-hf9b8971_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-17.0.0-hbf8b706_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.9.1-hfd8ffcc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h5a72898_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.21-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.2-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.80.3-h59d46d9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.28.0-hfe08963_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.28.0-h1466eeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.62.2-h9c18a4f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8fbad5d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.27-openmp_h517c56d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-17.0.0-h56531a6_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.43-h091b4b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-4.25.3-hbfab5d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.09.01-h7b2c953_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.2-h1db61d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.46.0-hfb93653_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.19.0-h026a170_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.6.0-hf8409c0_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.12.7-h01dff8b_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-18.1.8-hde57baf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mbedtls-3.3.0-hb7217d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.0.8-py312h157fec4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.11.1-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-hb89a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nng-1.6.0-hebf3989_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.0.1-py312hb544834_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.1-h47ade37_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-unix_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/polars-1.2.1-py312h043f87a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.0.0-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-17.0.0-py312ha814d7c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-17.0.0-py312he20ac61_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydot-3.0.1-py312h81bd7bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pynng-0.8.0-py312h5c2e7bc_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyodbc-5.1.0-py312h20a0b95_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-emoji-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-md-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.5-h30c5eda_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-box-7.2.0-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-duckdb-1.0.0-py312h5c2e7bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2023.09.01-h4cba328_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.6-py312he37b823_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.8-py312he37b823_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.32-py312h7e5086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unixodbc-2.3.12-h0e2417a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-hfb2fe0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6a/23/430f2878c9cd977a61bb39f71751d9310ec55cee36b3d5bf1752c6341fd0/pydantic_core-2.20.1-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/62/e8/d12c6fe3917a90db6fe096a56867b14707e4581a7a36a4c9eeed656ecf5d/sqlcompyre-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + win-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.7.25-he6981b3_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-cal-0.7.2-h0240d57_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-common-0.9.25-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-compression-0.2.18-h0240d57_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-event-stream-0.4.2-h330dd76_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-http-0.8.7-h065a16f_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-io-0.14.18-h3095dc9_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-mqtt-0.10.4-h1efefa3_16.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-s3-0.6.4-h9116173_6.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-sdkutils-0.1.19-h0240d57_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.1.18-h0240d57_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-crt-cpp-0.27.5-h55e8508_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-sdk-cpp-1.11.379-h2205d66_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/c-ares-1.33.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.7.4-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-win_pyh7428d3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cryptography-43.0.0-py312h9500af3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/expat-2.6.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.14.2-hbde0cde_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.0.0-hb01754f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/greenlet-3.0.3-py312h53d5487_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.0-h57928b3_980.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libabseil-20240116.2-cxx17_he0c23c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-17.0.0-h009c9d4_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-17.0.0-he0c23c2_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-17.0.0-he0c23c2_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-17.0.0-h1f0e801_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.1.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcrc32c-1.1.2-h0e60522_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.9.1-h18fefc2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.21-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libevent-2.1.12-h3671451_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.2-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.80.3-h7025463_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-2.28.0-h5e7cea3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-storage-2.28.0-he5eb982_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgrpc-1.62.2-h5273850_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.1-default_h8125262_1000.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libparquet-17.0.0-h178134c_6_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.43-h19919ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libprotobuf-4.25.3-h503648d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libre2-11-2023.09.01-hf8d8778_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.46.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.0-h7dfc565_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libthrift-0.19.0-ha2b3283_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.6.0-hb151862_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libutf8proc-2.8.0-h82a8f57_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.16-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.12.7-h0f24e4e_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.9.4-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gmp-6.1.0-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.1.0-h66d3029_694.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/msgpack-python-1.0.8-py312hd5eb7cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/mypy-1.11.1-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.0.1-py312h49bc9c5_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/orc-2.0.1-h7e885a9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.2-py312h72972c8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-win_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/polars-1.2.1-py312hcd8180c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-6.0.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-hfa6e2cd_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-17.0.0-py312h7e22eef_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-17.0.0-py312h6a9c419_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pydot-3.0.1-py312h2e8e312_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pynng-0.8.0-py312h275cf98_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyodbc-5.1.0-py312h53d5487_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-emoji-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-md-0.2.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.5-h889d299_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-box-7.2.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-duckdb-1.0.0-py312h275cf98_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-4_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/re2-2023.09.01-hd3b24a8_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml-0.18.6-py312he70551f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml.clib-0.2.8-py312he70551f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/snappy-1.2.1-h23299a8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/sqlalchemy-2.0.32-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.12.0-hc790b64_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-ha82c5b3_20.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_20.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-kbproto-1.0.7-hcd874cb_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.9-h0076a8d_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.3-hcd874cb_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.4-hcd874cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-hcd874cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.0-hcd874cb_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xextproto-7.3.0-hcd874cb_1003.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xproto-7.0.31-hcd874cb_1007.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d5/36/e61ad5a46607a469e2786f398cd671ebafcd9fb17f09a2359985c7228df5/pydantic_core-2.20.1-cp312-none-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/62/e8/d12c6fe3917a90db6fe096a56867b14707e4581a7a36a4c9eeed656ecf5d/sqlcompyre-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl +packages: +- kind: conda + name: _libgcc_mutex + version: '0.1' + build: conda_forge + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- kind: conda + name: _openmp_mutex + version: '4.5' + build: 2_gnu + build_number: 16 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23621 + timestamp: 1650670423406 +- kind: conda + name: alabaster + version: 0.7.16 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.16-pyhd8ed1ab_0.conda + sha256: fd39ad2fabec1569bbb0dfdae34ab6ce7de6ec09dcec8638f83dad0373594069 + md5: def531a3ac77b7fb8c21d17bb5d0badb + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/alabaster?source=conda-forge-mapping + size: 18365 + timestamp: 1704848898483 +- kind: pypi + name: annotated-types + version: 0.7.0 + url: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + sha256: 1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 + requires_dist: + - typing-extensions>=4.0.0 ; python_version < '3.9' + requires_python: '>=3.8' +- kind: conda + name: atk-1.0 + version: 2.38.0 + build: h04ea711_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda + sha256: df682395d05050cd1222740a42a551281210726a67447e5258968dd55854302e + md5: f730d54ba9cd543666d7220c9f7ed563 + depends: + - libgcc-ng >=12 + - libglib >=2.80.0,<3.0a0 + - libstdcxx-ng >=12 + constrains: + - atk-1.0 2.38.0 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 355900 + timestamp: 1713896169874 +- kind: conda + name: atk-1.0 + version: 2.38.0 + build: h4bec284_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda + sha256: a5972a943764e46478c966b26be61de70dcd7d0cfda4bd0b0c46916ae32e0492 + md5: d9684247c943d492d9aac8687bc5db77 + depends: + - __osx >=10.9 + - libcxx >=16 + - libglib >=2.80.0,<3.0a0 + - libintl >=0.22.5,<1.0a0 + constrains: + - atk-1.0 2.38.0 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 349989 + timestamp: 1713896423623 +- kind: conda + name: atk-1.0 + version: 2.38.0 + build: hd03087b_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda + sha256: b0747f9b1bc03d1932b4d8c586f39a35ac97e7e72fe6e63f2b2a2472d466f3c1 + md5: 57301986d02d30d6805fdce6c99074ee + depends: + - __osx >=11.0 + - libcxx >=16 + - libglib >=2.80.0,<3.0a0 + - libintl >=0.22.5,<1.0a0 + constrains: + - atk-1.0 2.38.0 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 347530 + timestamp: 1713896411580 +- kind: conda + name: attrs + version: 24.2.0 + build: pyh71513ae_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 + md5: 6732fa52eb8e66e5afeb32db8701a791 + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/attrs?source=conda-forge-mapping + size: 56048 + timestamp: 1722977241383 +- kind: conda + name: aws-c-auth + version: 0.7.25 + build: h08a4710_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.7.25-h08a4710_4.conda + sha256: aff4fc098e6e38f4e3b50f00070e7fb4298148e3811c03b398db2415089eed19 + md5: 8057986b77e1776a05139d046905a1e1 + depends: + - __osx >=11.0 + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-http >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - aws-c-sdkutils >=0.1.19,<0.1.20.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 92521 + timestamp: 1723215432657 +- kind: conda + name: aws-c-auth + version: 0.7.25 + build: h6309471_4 + build_number: 4 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.7.25-h6309471_4.conda + sha256: 1bc76a69f0342dde6943f4aeaf410d7ce97fd59e7fd01a3b6493265d46417535 + md5: d5e750ceeb6b8e7a4091b72fc35fafcf + depends: + - __osx >=10.13 + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-http >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - aws-c-sdkutils >=0.1.19,<0.1.20.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 93886 + timestamp: 1723215237016 +- kind: conda + name: aws-c-auth + version: 0.7.25 + build: h8a0f778_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.25-h8a0f778_4.conda + sha256: 06f0fd8fdcee90c45d3f711dae3f7439f5895e3ef0c498484a2a67c781eff748 + md5: aa51e240a99df535e64e3472f54652c9 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-http >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - aws-c-sdkutils >=0.1.19,<0.1.20.0a0 + - libgcc-ng >=12 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 106691 + timestamp: 1723215154132 +- kind: conda + name: aws-c-auth + version: 0.7.25 + build: he6981b3_4 + build_number: 4 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.7.25-he6981b3_4.conda + sha256: 1d6c1e645ca6dbfe240b038cf69612b920af939db638d6c76672d1d709eb2522 + md5: 24b3c39664741663f52423700f8a9d39 + depends: + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-http >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - aws-c-sdkutils >=0.1.19,<0.1.20.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 102694 + timestamp: 1723215631851 +- kind: conda + name: aws-c-cal + version: 0.7.2 + build: h0240d57_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/aws-c-cal-0.7.2-h0240d57_1.conda + sha256: 2af1e06136c0e70e420c33ffcfa3d0c750612b52d63c1a2312e8d700286b937d + md5: c5efc4764f0ef900773ce65ce22b1d30 + depends: + - aws-c-common >=0.9.25,<0.9.26.0a0 + - openssl >=3.3.1,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 46834 + timestamp: 1723150669417 +- kind: conda + name: aws-c-cal + version: 0.7.2 + build: h5b118bc_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.7.2-h5b118bc_1.conda + sha256: c25ac0b41c728d8cab471517b97f65388b82f800123b275555605b37aea2e16a + md5: 0ece7b2462d35fc9de1bc2015e42a243 + depends: + - __osx >=10.13 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 39014 + timestamp: 1723150485190 +- kind: conda + name: aws-c-cal + version: 0.7.2 + build: h7970872_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.7.2-h7970872_1.conda + sha256: 060d9fba6b18781aff862ca84b5b11f4681f6dc364c70856e5ab5d61cf5eb324 + md5: f7f648ab6e51b66d2ada922498547732 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - libgcc-ng >=12 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47118 + timestamp: 1723150410207 +- kind: conda + name: aws-c-cal + version: 0.7.2 + build: h98f14e4_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.7.2-h98f14e4_1.conda + sha256: 62e0b3e566eb9b6b33c4a64a1bf9424395d1941668881edbe71f325563e322a4 + md5: 50c3bc26750929036f201a469968ee55 + depends: + - __osx >=11.0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 39925 + timestamp: 1723150644067 +- kind: conda + name: aws-c-common + version: 0.9.25 + build: h2466b09_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/aws-c-common-0.9.25-h2466b09_0.conda + sha256: ce2a6a0c430bb70f250ac58ca65fce111513e744d27acc0c408d8c5cb9f55e26 + md5: 5d3cd0031dbfcd800f6f5a4122e84dc7 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 233457 + timestamp: 1722652430792 +- kind: conda + name: aws-c-common + version: 0.9.25 + build: h4bc722e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.25-h4bc722e_0.conda + sha256: af6dbf129de978b8960b1d130770878e5052d992232cbdd4ddf99d2ea705f931 + md5: 8ae3ebc6f412a923466ae673a3b3953f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 236289 + timestamp: 1722651969732 +- kind: conda + name: aws-c-common + version: 0.9.25 + build: h99b78c6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.9.25-h99b78c6_0.conda + sha256: 0a103d849e90a8c9bf036dc97985e585ba376535c06c38633ef9405ef154bd9a + md5: 4d8839ae6eff84cc59296b7bc9fae58e + depends: + - __osx >=11.0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 219319 + timestamp: 1722651998199 +- kind: conda + name: aws-c-common + version: 0.9.25 + build: hfdf4475_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.9.25-hfdf4475_0.conda + sha256: aa0034bf17d2b24642a9f861852d725f2ea4f9b14fb90ffc06405e1dc52138ab + md5: d76bf5c5229ee864ccae59bba017e0a0 + depends: + - __osx >=10.13 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 225876 + timestamp: 1722652021377 +- kind: conda + name: aws-c-compression + version: 0.2.18 + build: h0240d57_8 + build_number: 8 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/aws-c-compression-0.2.18-h0240d57_8.conda + sha256: 9c7f3e6544987df22f8f5f38e14eac2d0d954659875e928f91a4d83b4857edca + md5: f8edfe3c145f2d12c7a94055238e3979 + depends: + - aws-c-common >=0.9.25,<0.9.26.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 22565 + timestamp: 1723151107259 +- kind: conda + name: aws-c-compression + version: 0.2.18 + build: h5b118bc_8 + build_number: 8 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.2.18-h5b118bc_8.conda + sha256: c24ac2c84431237423162804bda58d71e2afe0e8d40349b5195d610fa3ff2aca + md5: 9abd3cf6a8559f3cd3870aee63007134 + depends: + - __osx >=10.13 + - aws-c-common >=0.9.25,<0.9.26.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 17991 + timestamp: 1723150633995 +- kind: conda + name: aws-c-compression + version: 0.2.18 + build: h98f14e4_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.2.18-h98f14e4_8.conda + sha256: 688be60bdf4338a15ecd94f1d64e21194064adbdf4d93719c957960a23f8b50b + md5: 216c9074a19acb5fccfc69b538ef275d + depends: + - __osx >=11.0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 17932 + timestamp: 1723150687810 +- kind: conda + name: aws-c-compression + version: 0.2.18 + build: hc649ecc_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.18-hc649ecc_8.conda + sha256: ef8666bd07183f32219e7de3faf26c16d6acdd42769be0bb15b3668d0c89deba + md5: b72e4162acb0cf997185fc1da432a63e + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - libgcc-ng >=12 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19009 + timestamp: 1723150618661 +- kind: conda + name: aws-c-event-stream + version: 0.4.2 + build: h04a40c0_20 + build_number: 20 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.2-h04a40c0_20.conda + sha256: 7b0611ec00f0433db9163f1050cc0289abe380f43a499a7b09aed5976e94afa0 + md5: 3c1a3aa8f0dd19e1a917b39620fda32c + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - aws-checksums >=0.1.18,<0.1.19.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 53682 + timestamp: 1723177510411 +- kind: conda + name: aws-c-event-stream + version: 0.4.2 + build: h330dd76_20 + build_number: 20 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/aws-c-event-stream-0.4.2-h330dd76_20.conda + sha256: 0580d2999a2ed936345aefd85fec917daef7bf75d0b066760b421692ac4f8f0f + md5: 7c396e1c1004e9a968cc77ebf6034a3c + depends: + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - aws-checksums >=0.1.18,<0.1.19.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 54724 + timestamp: 1723177958755 +- kind: conda + name: aws-c-event-stream + version: 0.4.2 + build: h671840a_20 + build_number: 20 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.4.2-h671840a_20.conda + sha256: cf0876ec0c973ec040616ac77b05be1d79d077bf88e058b6f0c498db35b6d601 + md5: 2eb9cb654f68fafe2cc22afbd2d16212 + depends: + - __osx >=10.13 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - aws-checksums >=0.1.18,<0.1.19.0a0 + - libcxx >=16 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 46357 + timestamp: 1723177593432 +- kind: conda + name: aws-c-event-stream + version: 0.4.2 + build: hf1484eb_20 + build_number: 20 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.4.2-hf1484eb_20.conda + sha256: 229aab7e93d4aa2045761673a2836c124b969b005de45051a0e456d218d594e1 + md5: c7274d4c42bb06eaee73853eecbaf39f + depends: + - __osx >=11.0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - aws-checksums >=0.1.18,<0.1.19.0a0 + - libcxx >=16 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 46838 + timestamp: 1723177620710 +- kind: conda + name: aws-c-http + version: 0.8.7 + build: h065a16f_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/aws-c-http-0.8.7-h065a16f_2.conda + sha256: d93c898fd33d1aba540f3fc67ff4f19c483c111fe65e3a27de224df1ab70bc67 + md5: d97b893513c9f0e9c3fa65b2e9fac814 + depends: + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-compression >=0.2.18,<0.2.19.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 183105 + timestamp: 1723178102709 +- kind: conda + name: aws-c-http + version: 0.8.7 + build: h22e442e_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.8.7-h22e442e_2.conda + sha256: 6ab77886c207d4e983a9edd6da613cae82af880a053dbe05a3eeacb53bbf2744 + md5: ce32f723ce4caf907ba85670f8152755 + depends: + - __osx >=10.13 + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-compression >=0.2.18,<0.2.19.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 164244 + timestamp: 1723177829809 +- kind: conda + name: aws-c-http + version: 0.8.7 + build: h624841c_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.8.7-h624841c_2.conda + sha256: 59e70f6872ea01175ea54d5bbef5212c7a68984c06f7c58189db5abf9cde8c24 + md5: b66a9322db9d8de706976766ba255abf + depends: + - __osx >=11.0 + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-compression >=0.2.18,<0.2.19.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 153361 + timestamp: 1723177965062 +- kind: conda + name: aws-c-http + version: 0.8.7 + build: hc9bb02b_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.7-hc9bb02b_2.conda + sha256: 58a5830a4bb878568b231e3215d2eedfd713e1ee9ea58dbc5e54e1793ea017e5 + md5: 1fa3da862ddcc9e9b0538fd58273a65e + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-compression >=0.2.18,<0.2.19.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - libgcc-ng >=12 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 197213 + timestamp: 1723177819689 +- kind: conda + name: aws-c-io + version: 0.14.18 + build: h3095dc9_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/aws-c-io-0.14.18-h3095dc9_2.conda + sha256: 7578e3f11648e3fd0ccd4f65ee09f0d69de55516b891c932a6212a10c694d396 + md5: 0c3d97fd2baffa30fce84338d3e9bd19 + depends: + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 161032 + timestamp: 1723482456101 +- kind: conda + name: aws-c-io + version: 0.14.18 + build: h3e50d33_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.18-h3e50d33_2.conda + sha256: 8b94d550344392429931aa69f16c38cfd2dbb49ce1e5d2705cb10c8b735dd0ee + md5: 9b0aca26d579311a918a0f03047fc447 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - libgcc-ng >=12 + - s2n >=1.5.0,<1.5.1.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 159102 + timestamp: 1723481752341 +- kind: conda + name: aws-c-io + version: 0.14.18 + build: hacc3fab_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.14.18-hacc3fab_2.conda + sha256: 9a7c4d4189d636e408ce9e210f7ae96fe609b8105597a0bbc242350e5dc77603 + md5: 77a821b803d33ad3906afb223eaa7fbf + depends: + - __osx >=11.0 + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 138078 + timestamp: 1723481865779 +- kind: conda + name: aws-c-io + version: 0.14.18 + build: hddd658a_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.14.18-hddd658a_2.conda + sha256: 25b7fb542ad15042d4e42538b4fd3ad98fef5e50ccdd743e03e0474301ad2f71 + md5: dd6e6d2924fc7fe472908dfdc73aa1ce + depends: + - __osx >=10.13 + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 138461 + timestamp: 1723481866356 +- kind: conda + name: aws-c-mqtt + version: 0.10.4 + build: h1efefa3_16 + build_number: 16 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/aws-c-mqtt-0.10.4-h1efefa3_16.conda + sha256: 4ca34b6277f62f0cc56da0e9bbff8529d7f749853c4ace9de6dd3833d1aac2e5 + md5: 1de479e343cd06db94e05062ab9af2e0 + depends: + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-http >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 157467 + timestamp: 1723193297143 +- kind: conda + name: aws-c-mqtt + version: 0.10.4 + build: h3710d3a_16 + build_number: 16 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.10.4-h3710d3a_16.conda + sha256: f5ee04ec57c28aca7523beab62052bb75a6f91e19430f0a8c666cf70f6b07db2 + md5: 60bb82553164fd9cb10bfafb6b61df65 + depends: + - __osx >=10.13 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-http >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 138348 + timestamp: 1723192832275 +- kind: conda + name: aws-c-mqtt + version: 0.10.4 + build: h674cf7e_16 + build_number: 16 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.4-h674cf7e_16.conda + sha256: 759a15d367ef69f24448ace52843c4999e1795710c4393ea86d7768b1934db93 + md5: a96a7cd318b665b8784cbe7e67916f66 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-http >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - libgcc-ng >=12 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 163774 + timestamp: 1723192743841 +- kind: conda + name: aws-c-mqtt + version: 0.10.4 + build: h8469d54_16 + build_number: 16 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.10.4-h8469d54_16.conda + sha256: 67ed006fb6910a3837d35585be221f9db3b64699f63396498315994952930c60 + md5: b48411d5db102d80c0dc828727d72c6e + depends: + - __osx >=11.0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-http >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 117964 + timestamp: 1723192603387 +- kind: conda + name: aws-c-s3 + version: 0.6.4 + build: h89cdba3_6 + build_number: 6 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.6.4-h89cdba3_6.conda + sha256: 2bc2ac953500501abbfd3b8d9baee81ef7f91753733eb782fa488e748c9f6c46 + md5: 3e2f8edf601210730c6f1613de9539cc + depends: + - __osx >=10.13 + - aws-c-auth >=0.7.25,<0.7.26.0a0 + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-http >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - aws-checksums >=0.1.18,<0.1.19.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 96890 + timestamp: 1723207662384 +- kind: conda + name: aws-c-s3 + version: 0.6.4 + build: h9116173_6 + build_number: 6 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/aws-c-s3-0.6.4-h9116173_6.conda + sha256: 49ca36fc4bae3cadeb703f4da0a8b0e6f5d5694b617fc1d34268f8537d5baf37 + md5: 2e508c828a6b222906289373251043d5 + depends: + - aws-c-auth >=0.7.25,<0.7.26.0a0 + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-http >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - aws-checksums >=0.1.18,<0.1.19.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 107716 + timestamp: 1723208085431 +- kind: conda + name: aws-c-s3 + version: 0.6.4 + build: ha2a438e_6 + build_number: 6 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.6.4-ha2a438e_6.conda + sha256: 529f0d64b4e51377935ca60a0150d4fa1c142c1e3665a46996d3147496947808 + md5: b45e9b813ec5921fbbbdef529dc97813 + depends: + - __osx >=11.0 + - aws-c-auth >=0.7.25,<0.7.26.0a0 + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-http >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - aws-checksums >=0.1.18,<0.1.19.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 95503 + timestamp: 1723207735434 +- kind: conda + name: aws-c-s3 + version: 0.6.4 + build: hbe604ca_6 + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.6.4-hbe604ca_6.conda + sha256: c184511cf6d733bbdfc80d68b3087d8743c735d7bb40176cef73d9521c8d921d + md5: a57d5bbd0559aed25766420bbd371aa0 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.7.25,<0.7.26.0a0 + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-http >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - aws-checksums >=0.1.18,<0.1.19.0a0 + - libgcc-ng >=12 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 111628 + timestamp: 1723207613777 +- kind: conda + name: aws-c-sdkutils + version: 0.1.19 + build: h0240d57_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/aws-c-sdkutils-0.1.19-h0240d57_0.conda + sha256: 2cd6632ec4fc50e868cb9b11acaa98405283cf7104136bbc16e22ab729cc2f98 + md5: facd2e7d595af64ab74d0ffd0d70fb4f + depends: + - aws-c-common >=0.9.25,<0.9.26.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 54917 + timestamp: 1723176532090 +- kind: conda + name: aws-c-sdkutils + version: 0.1.19 + build: h5b118bc_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.1.19-h5b118bc_0.conda + sha256: 4be90827a59b297f04238cf2970ca7039d64c2e06b1a1d7799e332143e8c2e7a + md5: 9b41d2dd02f9a56e2fb78e6d7f66fddf + depends: + - __osx >=10.13 + - aws-c-common >=0.9.25,<0.9.26.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 50982 + timestamp: 1723176233601 +- kind: conda + name: aws-c-sdkutils + version: 0.1.19 + build: h98f14e4_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.1.19-h98f14e4_0.conda + sha256: b121ef5e6343beb24cdb269689101ab11bcd8b3dd379beed251140bf11f395a4 + md5: 4e46163b63fd4e51dfb93b14cf5756c3 + depends: + - __osx >=11.0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 49936 + timestamp: 1723176203536 +- kind: conda + name: aws-c-sdkutils + version: 0.1.19 + build: hc649ecc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.19-hc649ecc_0.conda + sha256: dc1eaf29c3a4092ae653b3ce80d5c8dfdc73a20d70c62c25f6a0faff059cd3a1 + md5: f1d4b80dfc062bc55cecc20148eb925a + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - libgcc-ng >=12 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 56083 + timestamp: 1723176096906 +- kind: conda + name: aws-checksums + version: 0.1.18 + build: h0240d57_8 + build_number: 8 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.1.18-h0240d57_8.conda + sha256: 7ee5937729c1ee8fc05022c73423749a0486bbd6fe7f01e958532a5f7ee9d1ed + md5: f419be1f5cfd2645fa7f68bf410c8548 + depends: + - aws-c-common >=0.9.25,<0.9.26.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 52214 + timestamp: 1723163987764 +- kind: conda + name: aws-checksums + version: 0.1.18 + build: h5b118bc_8 + build_number: 8 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.1.18-h5b118bc_8.conda + sha256: 03d957215e7277d17742e46b4a11e523f619f4e2a2c80b3323469636cd0b3ff8 + md5: 1b8bd81a2d96c873877f582215cb0145 + depends: + - __osx >=10.13 + - aws-c-common >=0.9.25,<0.9.26.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 48670 + timestamp: 1723163853774 +- kind: conda + name: aws-checksums + version: 0.1.18 + build: h98f14e4_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.1.18-h98f14e4_8.conda + sha256: 9dc4e7ba552d98d1928da6b6f2aea8187b251d70a9e966cb4abaed32aecc4a42 + md5: daacf29419901e2f8e75166581ab6551 + depends: + - __osx >=11.0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 49065 + timestamp: 1723163892019 +- kind: conda + name: aws-checksums + version: 0.1.18 + build: hc649ecc_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.18-hc649ecc_8.conda + sha256: 63ccb2a0b471dac505e95d6a623b041e00e8a2a734fd33fd101f7d3a0018becf + md5: 178504fd14f8486ce3153fa16371ceef + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - libgcc-ng >=12 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 49998 + timestamp: 1723163750630 +- kind: conda + name: aws-crt-cpp + version: 0.27.5 + build: h53ac995_5 + build_number: 5 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.27.5-h53ac995_5.conda + sha256: c2dc1f9fd2e19c9d896cb2859e161d82d1d5ba9e4992e70566db8bc14e77863d + md5: 39e26358a446c7e2844f1da5e1d6e2c1 + depends: + - __osx >=10.13 + - aws-c-auth >=0.7.25,<0.7.26.0a0 + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-event-stream >=0.4.2,<0.4.3.0a0 + - aws-c-http >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - aws-c-mqtt >=0.10.4,<0.10.5.0a0 + - aws-c-s3 >=0.6.4,<0.6.5.0a0 + - aws-c-sdkutils >=0.1.19,<0.1.20.0a0 + - libcxx >=16 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 290343 + timestamp: 1723235660535 +- kind: conda + name: aws-crt-cpp + version: 0.27.5 + build: h55e8508_5 + build_number: 5 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/aws-crt-cpp-0.27.5-h55e8508_5.conda + sha256: 3e8cd7ad1e13eb204443f44de13d5e9041c656102da5728c8b030f2c4953d8b5 + md5: 1432fe717f2d651606acd0f8b52277a9 + depends: + - aws-c-auth >=0.7.25,<0.7.26.0a0 + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-event-stream >=0.4.2,<0.4.3.0a0 + - aws-c-http >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - aws-c-mqtt >=0.10.4,<0.10.5.0a0 + - aws-c-s3 >=0.6.4,<0.6.5.0a0 + - aws-c-sdkutils >=0.1.19,<0.1.20.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 254293 + timestamp: 1723235803498 +- kind: conda + name: aws-crt-cpp + version: 0.27.5 + build: h7061aca_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.27.5-h7061aca_5.conda + sha256: 944baaa5c2250025fb8160b9121f5b311e77f6321df02202833692851e8f4756 + md5: ec979bc1f6b5609e67a1b212a3fd2cf3 + depends: + - __osx >=11.0 + - aws-c-auth >=0.7.25,<0.7.26.0a0 + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-event-stream >=0.4.2,<0.4.3.0a0 + - aws-c-http >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - aws-c-mqtt >=0.10.4,<0.10.5.0a0 + - aws-c-s3 >=0.6.4,<0.6.5.0a0 + - aws-c-sdkutils >=0.1.19,<0.1.20.0a0 + - libcxx >=16 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 229072 + timestamp: 1723235603851 +- kind: conda + name: aws-crt-cpp + version: 0.27.5 + build: hba11562_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.27.5-hba11562_5.conda + sha256: 6c2d72591495d68b17d6f428b32517a9b59b710eafdc8200e627780812886e6f + md5: 3b97f88120ba6bc6c53b428954a15895 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.7.25,<0.7.26.0a0 + - aws-c-cal >=0.7.2,<0.7.3.0a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-event-stream >=0.4.2,<0.4.3.0a0 + - aws-c-http >=0.8.7,<0.8.8.0a0 + - aws-c-io >=0.14.18,<0.14.19.0a0 + - aws-c-mqtt >=0.10.4,<0.10.5.0a0 + - aws-c-s3 >=0.6.4,<0.6.5.0a0 + - aws-c-sdkutils >=0.1.19,<0.1.20.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 345928 + timestamp: 1723235386758 +- kind: conda + name: aws-sdk-cpp + version: 1.11.379 + build: h065e723_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.379-h065e723_2.conda + sha256: 4c35cae6be1dbce28a555b014513f511d47005b98aecb3252f00087215dbbef8 + md5: b9f139d1a5247fdbcbd2b102433d2960 + depends: + - __osx >=10.13 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-event-stream >=0.4.2,<0.4.3.0a0 + - aws-checksums >=0.1.18,<0.1.19.0a0 + - aws-crt-cpp >=0.27.5,<0.27.6.0a0 + - libcurl >=8.9.1,<9.0a0 + - libcxx >=16 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2700929 + timestamp: 1723471903012 +- kind: conda + name: aws-sdk-cpp + version: 1.11.379 + build: h0db37eb_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.379-h0db37eb_2.conda + sha256: cda6ed6e15cc04b0f513d8009c67fc6c6db4756be7d3f6b732a6fd8bdac3e520 + md5: d9996884741f0db39dc34be34dd87596 + depends: + - __osx >=11.0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-event-stream >=0.4.2,<0.4.3.0a0 + - aws-checksums >=0.1.18,<0.1.19.0a0 + - aws-crt-cpp >=0.27.5,<0.27.6.0a0 + - libcurl >=8.9.1,<9.0a0 + - libcxx >=16 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2669037 + timestamp: 1723472158961 +- kind: conda + name: aws-sdk-cpp + version: 1.11.379 + build: h2205d66_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/aws-sdk-cpp-1.11.379-h2205d66_2.conda + sha256: 4c64f829f589fdb36e77ecc63f9c289d69052be2b7b4d7a6dfe22d842bc6f0cd + md5: 6abcadee194e8becd912c9a0b75eddc0 + depends: + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-event-stream >=0.4.2,<0.4.3.0a0 + - aws-checksums >=0.1.18,<0.1.19.0a0 + - aws-crt-cpp >=0.27.5,<0.27.6.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2766410 + timestamp: 1723472583120 +- kind: conda + name: aws-sdk-cpp + version: 1.11.379 + build: he20dfa5_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.379-he20dfa5_2.conda + sha256: a43661e14ad9d51c0c9330effbc86d9960096484181402dd43bd9617c803f67b + md5: 25a12549e0aeeaa2718035c3e54ff520 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.9.25,<0.9.26.0a0 + - aws-c-event-stream >=0.4.2,<0.4.3.0a0 + - aws-checksums >=0.1.18,<0.1.19.0a0 + - aws-crt-cpp >=0.27.5,<0.27.6.0a0 + - libcurl >=8.9.1,<9.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2917924 + timestamp: 1723471330992 +- kind: conda + name: azure-core-cpp + version: 1.13.0 + build: h935415a_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.13.0-h935415a_0.conda + sha256: b7e0a22295db2e1955f89c69cefc32810309b3af66df986d9fb75d89f98a80f7 + md5: debd1677c2fea41eb2233a260f48a298 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.8.0,<9.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 338134 + timestamp: 1720853194547 +- kind: conda + name: azure-core-cpp + version: 1.13.0 + build: hd01fc5c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.13.0-hd01fc5c_0.conda + sha256: aff4af38416cf7a81c79e5a3b071ce5aa13ec48da28db0312bc1ebe62cf7273d + md5: 2083f6313e623079db6ee67af00e6b27 + depends: + - __osx >=11.0 + - libcurl >=8.8.0,<9.0a0 + - libcxx >=16 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 287922 + timestamp: 1720853302106 +- kind: conda + name: azure-core-cpp + version: 1.13.0 + build: hf8dbe3c_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.13.0-hf8dbe3c_0.conda + sha256: 1976259d75ef68431039522d7105777ac0621ef8a0f8a31140fa8926b1fe1280 + md5: 514d3cbb527a88930e816370e34caa19 + depends: + - __osx >=10.13 + - libcurl >=8.8.0,<9.0a0 + - libcxx >=16 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 296234 + timestamp: 1720853326346 +- kind: conda + name: azure-identity-cpp + version: 1.8.0 + build: h13ea094_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.8.0-h13ea094_2.conda + sha256: 11b01715cae19390890f29ebb56d36d895feafd787ba929aa10b6ce712f3f4b9 + md5: 383b72f2ee009992b21f4db08a708510 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - libcxx >=16 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 142135 + timestamp: 1721777696118 +- kind: conda + name: azure-identity-cpp + version: 1.8.0 + build: h60298e3_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.8.0-h60298e3_2.conda + sha256: 7bc11d77aab926aff437b6afc089fe937ab03b9f09d679520d4d4a91717b5337 + md5: 29dc05d3b825fd7e2efe0263621c2fdb + depends: + - __osx >=10.13 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - libcxx >=16 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 148019 + timestamp: 1721777648770 +- kind: conda + name: azure-identity-cpp + version: 1.8.0 + build: hd126650_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.8.0-hd126650_2.conda + sha256: f85452eca3ae0e156b1d1a321a1a9f4f58d44ff45236c0d8602ab96aaad3c6ba + md5: 36df3cf05459de5d0a41c77c4329634b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 199516 + timestamp: 1721777604325 +- kind: conda + name: azure-storage-blobs-cpp + version: 12.12.0 + build: h646f05d_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.12.0-h646f05d_0.conda + sha256: 7153e4ba0112246fc93b2b6631c17b1c2c4f7878f2c4a25426e38a78a0b4cd4c + md5: d3f572c8ebf9ad5cdc07558b3b2c27ce + depends: + - __osx >=10.13 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - azure-storage-common-cpp >=12.7.0,<12.7.1.0a0 + - libcxx >=16 + license: MIT + license_family: MIT + purls: [] + size: 423224 + timestamp: 1721865021128 +- kind: conda + name: azure-storage-blobs-cpp + version: 12.12.0 + build: hd2e3451_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.12.0-hd2e3451_0.conda + sha256: 69a0f5c2a08a1a40524b343060debb8d92295e2cc5805c3db56dad7a41246a93 + md5: 61f1c193452f0daa582f39634627ea33 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - azure-storage-common-cpp >=12.7.0,<12.7.1.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 523120 + timestamp: 1721865032339 +- kind: conda + name: azure-storage-blobs-cpp + version: 12.12.0 + build: hfde595f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.12.0-hfde595f_0.conda + sha256: f733f4acedd8bf1705c780e0828f0b83242ae7e72963aef60d12a7c5b3a8640d + md5: f2c935764fdacd0fafc05f975fd347e0 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - azure-storage-common-cpp >=12.7.0,<12.7.1.0a0 + - libcxx >=16 + license: MIT + license_family: MIT + purls: [] + size: 419976 + timestamp: 1721865180569 +- kind: conda + name: azure-storage-common-cpp + version: 12.7.0 + build: h10ac4d7_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.7.0-h10ac4d7_1.conda + sha256: 1030fa54497a73eb78c509d451f25701e2e781dc182e7647f55719f1e1f9bee8 + md5: ab6d507ad16dbe2157920451d662e4a1 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 143039 + timestamp: 1721832724803 +- kind: conda + name: azure-storage-common-cpp + version: 12.7.0 + build: hcf3b6fd_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.7.0-hcf3b6fd_1.conda + sha256: 3fdf9c0337c48706cffe2e4c761cdea4132fb6dbd1f144d969c28afd903cf256 + md5: df7e01bcf8f3a9bfb0ab06778f915f29 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - libcxx >=16 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 119821 + timestamp: 1721832870493 +- kind: conda + name: azure-storage-common-cpp + version: 12.7.0 + build: hf91904f_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.7.0-hf91904f_1.conda + sha256: 333599899b25ef22e2a2e1c09bab75203da9f47612e1ff2a40fddae76feb08eb + md5: 99146c62f4b2a74c3026f128f42e35bf + depends: + - __osx >=10.13 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - libcxx >=16 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 124472 + timestamp: 1721832914540 +- kind: conda + name: azure-storage-files-datalake-cpp + version: 12.11.0 + build: h082e32e_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.11.0-h082e32e_1.conda + sha256: 3c288dc1ae6bff9a1e21ab5196d13ab486850f61ec649a743a87bf9726901abf + md5: 16b05d31f626717668f01c01a970115f + depends: + - __osx >=11.0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - azure-storage-blobs-cpp >=12.12.0,<12.12.1.0a0 + - azure-storage-common-cpp >=12.7.0,<12.7.1.0a0 + - libcxx >=16 + license: MIT + license_family: MIT + purls: [] + size: 189065 + timestamp: 1721925275724 +- kind: conda + name: azure-storage-files-datalake-cpp + version: 12.11.0 + build: h14965f0_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.11.0-h14965f0_1.conda + sha256: 73ada329714a4893238737d77be147b1e1412f80fa94191c3f686eae0bee459c + md5: d99c3c0c72b11340028cac4689835c0c + depends: + - __osx >=10.13 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - azure-storage-blobs-cpp >=12.12.0,<12.12.1.0a0 + - azure-storage-common-cpp >=12.7.0,<12.7.1.0a0 + - libcxx >=16 + license: MIT + license_family: MIT + purls: [] + size: 192115 + timestamp: 1721925157499 +- kind: conda + name: azure-storage-files-datalake-cpp + version: 12.11.0 + build: h325d260_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.11.0-h325d260_1.conda + sha256: 1726fa324bb402e52d63227d6cb3f849957cd6841f8cb8aed58bb0c81203befb + md5: 11d926d1f4a75a1b03d1c053ca20424b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - azure-storage-blobs-cpp >=12.12.0,<12.12.1.0a0 + - azure-storage-common-cpp >=12.7.0,<12.7.1.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 274492 + timestamp: 1721925100762 +- kind: conda + name: babel + version: 2.14.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + sha256: 8584e3da58e92b72641c89ff9b98c51f0d5dbe76e527867804cbdf03ac91d8e6 + md5: 9669586875baeced8fc30c0826c3270e + depends: + - python >=3.7 + - pytz + - setuptools + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/babel?source=conda-forge-mapping + size: 7609750 + timestamp: 1702422720584 +- kind: conda + name: backports + version: '1.0' + build: pyhd8ed1ab_4 + build_number: 4 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_4.conda + sha256: 31b51537ce7d2ba8b5b3d0095f1813711884304ac1701bc55938ca75f6c82e19 + md5: 67bdebbc334513034826e9b63f769d4c + depends: + - python >=3 + license: BSD-3-Clause + license_family: BSD + size: 6989 + timestamp: 1722295637981 +- kind: conda + name: backports.tarfile + version: 1.0.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.0.0-pyhd8ed1ab_1.conda + sha256: 7ba30f32daad2e7ca251508525185ba170eedc14123572611c2acf261c7956b3 + md5: c747b1d79f136013c3b7ebcba876afa6 + depends: + - backports + - python >=3.8 + license: MIT + license_family: MIT + size: 31951 + timestamp: 1712700751335 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py312h30efb56_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h30efb56_1.conda + sha256: b68706698b6ac0d31196a8bcb061f0d1f35264bcd967ea45e03e108149a74c6f + md5: 45801a89533d3336a365284d93298e36 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd590300_1 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=conda-forge-mapping + size: 350604 + timestamp: 1695990206327 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py312h30efb56_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h30efb56_1.conda + sha256: b68706698b6ac0d31196a8bcb061f0d1f35264bcd967ea45e03e108149a74c6f + md5: 45801a89533d3336a365284d93298e36 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd590300_1 + license: MIT + license_family: MIT + size: 350604 + timestamp: 1695990206327 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py312h53d5487_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h53d5487_1.conda + sha256: 769e276ecdebf86f097786cbde1ebd11e018cd6cd838800995954fe6360e0797 + md5: d01a6667b99f0e8ad4097af66c938e62 + depends: + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - libbrotlicommon 1.1.0 hcfcfb64_1 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=conda-forge-mapping + size: 322514 + timestamp: 1695991054894 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py312h53d5487_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h53d5487_1.conda + sha256: 769e276ecdebf86f097786cbde1ebd11e018cd6cd838800995954fe6360e0797 + md5: d01a6667b99f0e8ad4097af66c938e62 + depends: + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - libbrotlicommon 1.1.0 hcfcfb64_1 + license: MIT + license_family: MIT + size: 322514 + timestamp: 1695991054894 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py312h9f69965_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312h9f69965_1.conda + sha256: 3418b1738243abba99e931c017b952771eeaa1f353c07f7d45b55e83bb74fcb3 + md5: 1bc01b9ffdf42beb1a9fe4e9222e0567 + depends: + - libcxx >=15.0.7 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb547adb_1 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=conda-forge-mapping + size: 343435 + timestamp: 1695990731924 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py312h9f69965_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312h9f69965_1.conda + sha256: 3418b1738243abba99e931c017b952771eeaa1f353c07f7d45b55e83bb74fcb3 + md5: 1bc01b9ffdf42beb1a9fe4e9222e0567 + depends: + - libcxx >=15.0.7 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb547adb_1 + license: MIT + license_family: MIT + size: 343435 + timestamp: 1695990731924 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py312heafc425_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312heafc425_1.conda + sha256: fc55988f9bc05a938ea4b8c20d6545bed6e9c6c10aa5147695f981136ca894c1 + md5: a288b88f06b8bfe0dedaf5c4b6ac6b7a + depends: + - libcxx >=15.0.7 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h0dc2134_1 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=conda-forge-mapping + size: 366883 + timestamp: 1695990710194 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py312heafc425_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312heafc425_1.conda + sha256: fc55988f9bc05a938ea4b8c20d6545bed6e9c6c10aa5147695f981136ca894c1 + md5: a288b88f06b8bfe0dedaf5c4b6ac6b7a + depends: + - libcxx >=15.0.7 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h0dc2134_1 + license: MIT + license_family: MIT + size: 366883 + timestamp: 1695990710194 +- kind: conda + name: build + version: 0.7.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/build-0.7.0-pyhd8ed1ab_0.tar.bz2 + sha256: 44e2d3270209d1f10b8adec2a159699ed66914e851ec34775902e856ea04afeb + md5: add7f31586d03678695b32b78a1337a1 + depends: + - importlib-metadata + - packaging + - pep517 >=0.9.1 + - python >=3.6 + - tomli + license: MIT + license_family: MIT + size: 17759 + timestamp: 1631843776429 +- kind: conda + name: bzip2 + version: 1.0.8 + build: h2466b09_7 + build_number: 7 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + sha256: 35a5dad92e88fdd7fc405e864ec239486f4f31eec229e31686e61a140a8e573b + md5: 276e7ffe9ffe39688abc665ef0f45596 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 54927 + timestamp: 1720974860185 +- kind: conda + name: bzip2 + version: 1.0.8 + build: h4bc722e_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- kind: conda + name: bzip2 + version: 1.0.8 + build: h99b78c6_7 + build_number: 7 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 122909 + timestamp: 1720974522888 +- kind: conda + name: bzip2 + version: 1.0.8 + build: hfdf4475_7 + build_number: 7 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + sha256: cad153608b81fb24fc8c509357daa9ae4e49dfc535b2cb49b91e23dbd68fc3c5 + md5: 7ed4301d437b59045be7e051a0308211 + depends: + - __osx >=10.13 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 134188 + timestamp: 1720974491916 +- kind: conda + name: c-ares + version: 1.33.0 + build: h2466b09_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/c-ares-1.33.0-h2466b09_0.conda + sha256: b3f07bc0134a921fee0d3b1306751051da3c1d19eb82b1ae6e14c1f15bcda9c3 + md5: 0864e040b671709d2838790522a8b976 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 166933 + timestamp: 1723535152991 +- kind: conda + name: c-ares + version: 1.33.0 + build: h51dda26_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.33.0-h51dda26_0.conda + sha256: d1f2429bf3d5d1c7e1a0ce5bf6216b563024169293731a130f7d8a64230b9302 + md5: 3355b2350a1de63943bcd053a4fccd6d + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: [] + size: 163061 + timestamp: 1723534676956 +- kind: conda + name: c-ares + version: 1.33.0 + build: h99b78c6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.33.0-h99b78c6_0.conda + sha256: cc80521ffcc27ddf1362a85acee440bea4aa669f367463cd7d28cb46b497ec55 + md5: 47874589be833bd706221ce6897374df + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + size: 160570 + timestamp: 1723534815224 +- kind: conda + name: c-ares + version: 1.33.0 + build: ha66036c_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.33.0-ha66036c_0.conda + sha256: 3dec5fdb5d1e1758510af0ca163d82ea10109fec8af7d0cd7af38f01068c365b + md5: b6927f788e85267beef6cbb292aaebdd + depends: + - __glibc >=2.28,<3.0.a0 + - libgcc-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 181873 + timestamp: 1723534591118 +- kind: conda + name: ca-certificates + version: 2024.7.4 + build: h56e8100_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.7.4-h56e8100_0.conda + sha256: 7f37bb33c7954de1b4d19ad622859feb4f6c58f751c38b895524cad4e44af72e + md5: 9caa97c9504072cd060cf0a3142cc0ed + license: ISC + purls: [] + size: 154943 + timestamp: 1720077592592 +- kind: conda + name: ca-certificates + version: 2024.7.4 + build: h8857fd0_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.7.4-h8857fd0_0.conda + sha256: d16f46c489cb3192305c7d25b795333c5fc17bb0986de20598ed519f8c9cc9e4 + md5: 7df874a4b05b2d2b82826190170eaa0f + license: ISC + purls: [] + size: 154473 + timestamp: 1720077510541 +- kind: conda + name: ca-certificates + version: 2024.7.4 + build: hbcca054_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_0.conda + sha256: c1548a3235376f464f9931850b64b02492f379b2f2bb98bc786055329b080446 + md5: 23ab7665c5f63cfb9f1f6195256daac6 + license: ISC + purls: [] + size: 154853 + timestamp: 1720077432978 +- kind: conda + name: ca-certificates + version: 2024.7.4 + build: hf0a4a13_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.7.4-hf0a4a13_0.conda + sha256: 33a61116dae7f369b6ce92a7f2a1ff361ae737c675a493b11feb5570b89e0e3b + md5: 21f9a33e5fe996189e470c19c5354dbe + license: ISC + purls: [] + size: 154517 + timestamp: 1720077468981 +- kind: conda + name: cairo + version: 1.18.0 + build: h32b962e_3 + build_number: 3 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda + sha256: 127101c9c2d1a56f8791c19141ceff13fd1d1a1da28cfaca549dc99d210cec6a + md5: 8f43723a4925c51e55c2d81725a97db4 + depends: + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libglib >=2.80.3,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.43.4,<1.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zlib + license: LGPL-2.1-only or MPL-1.1 + purls: [] + size: 1516680 + timestamp: 1721139332360 +- kind: conda + name: cairo + version: 1.18.0 + build: h37bd5c4_3 + build_number: 3 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h37bd5c4_3.conda + sha256: 8d70fbca4887b9b580de0f3715026e05f9e74fad8a652364aa0bccd795b1fa87 + md5: 448aad56614db52338dc4fd4c758cfb6 + depends: + - __osx >=10.13 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libcxx >=16 + - libglib >=2.80.3,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.43.4,<1.0a0 + - zlib + license: LGPL-2.1-only or MPL-1.1 + purls: [] + size: 892544 + timestamp: 1721139116538 +- kind: conda + name: cairo + version: 1.18.0 + build: hb4a6bf7_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda + sha256: f7603b7f6ee7c6e07c23d77302420194f4ec1b8e8facfff2b6aab17c7988a102 + md5: 08bd0752f3de8a2d8a35fd012f09531f + depends: + - __osx >=11.0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libcxx >=16 + - libglib >=2.80.3,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.43.4,<1.0a0 + - zlib + license: LGPL-2.1-only or MPL-1.1 + purls: [] + size: 899126 + timestamp: 1721139203735 +- kind: conda + name: cairo + version: 1.18.0 + build: hebfffa5_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda + sha256: aee5b9e6ef71cdfb2aee9beae3ea91910ca761c01c0ef32052e3f94a252fa173 + md5: fceaedf1cdbcb02df9699a0d9b005292 + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libgcc-ng >=12 + - libglib >=2.80.3,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libxcb >=1.16,<1.17.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.43.2,<1.0a0 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + - zlib + license: LGPL-2.1-only or MPL-1.1 + purls: [] + size: 983604 + timestamp: 1721138900054 +- kind: conda + name: certifi + version: 2024.7.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda + sha256: dd3577bb5275062c388c46b075dcb795f47f8dac561da7dd35fe504b936934e5 + md5: 24e7fd6ca65997938fff9e5ab6f653e4 + depends: + - python >=3.7 + license: ISC + purls: + - pkg:pypi/certifi?source=conda-forge-mapping + size: 159308 + timestamp: 1720458053074 +- kind: conda + name: certifi + version: 2024.7.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda + sha256: dd3577bb5275062c388c46b075dcb795f47f8dac561da7dd35fe504b936934e5 + md5: 24e7fd6ca65997938fff9e5ab6f653e4 + depends: + - python >=3.7 + license: ISC + size: 159308 + timestamp: 1720458053074 +- kind: conda + name: cffi + version: 1.17.0 + build: py311h4bce835_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.0-py311h4bce835_0.conda + sha256: b02630ec589a834de65d7919e318b4cd8fe31c13e82e301b4e1350c030d9a8ef + md5: 25a47d1ef2ff1e3785dacfd2b53b83d8 + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=conda-forge-mapping + size: 287917 + timestamp: 1723018819159 +- kind: conda + name: cffi + version: 1.17.0 + build: py311h6e3bf6f_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.0-py311h6e3bf6f_0.conda + sha256: 6e7a371df71b5cd982918572343b8535252f56460de332c17f721f96116adcd7 + md5: 1f3b1c7644b3ff93b1da21eb26bbfcb1 + depends: + - __osx >=10.13 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=conda-forge-mapping + size: 289269 + timestamp: 1723018567477 +- kind: conda + name: cffi + version: 1.17.0 + build: py311ha8e6434_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.0-py311ha8e6434_0.conda + sha256: 88edb3161c8fda6df36db5643a3721123c371273c6375a2307b4ccafe060c5a0 + md5: 32259cd17741b52be10cd23a26cca23a + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=12 + - pycparser + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=conda-forge-mapping + size: 301038 + timestamp: 1723018486310 +- kind: conda + name: cffi + version: 1.17.0 + build: py311he736701_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.0-py311he736701_0.conda + sha256: 0372292914c622568c0233443fef2b5c8778fbbf4441de639d2a75268c217167 + md5: 09033606609626066feb5bca07d156cf + depends: + - pycparser + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=conda-forge-mapping + size: 296665 + timestamp: 1723018946784 +- kind: conda + name: cffi + version: 1.17.0 + build: py312h1671c18_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.0-py312h1671c18_0.conda + sha256: 20fe2f88dd7c0ef16e464fa46757821cf569bc71f40a832e7767d3a87250f251 + md5: 33dee889f41b0ba6dbe5ddbe70ebf263 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=12 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=conda-forge-mapping + size: 294192 + timestamp: 1723018486671 +- kind: conda + name: cffi + version: 1.17.0 + build: py312h4389bb4_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.0-py312h4389bb4_0.conda + sha256: f6a2968ca5e7c1dabc2a686b287fb3bcd2a6a60afa748dc0fde85f8d3954e4da + md5: 7373b6b2f20c32e8bc0a5ac283355f3a + depends: + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=conda-forge-mapping + size: 289216 + timestamp: 1723018797374 +- kind: conda + name: cffi + version: 1.17.0 + build: py312h80c9ed6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.0-py312h80c9ed6_0.conda + sha256: ea7f02777a4273b4adf8bf25af3869908290c5b7522d367902c059d559a23994 + md5: 3bf9fe04b60b80487c26cfbcaee7afe8 + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=conda-forge-mapping + size: 280956 + timestamp: 1723018612386 +- kind: conda + name: cffi + version: 1.17.0 + build: py312h9620c06_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.0-py312h9620c06_0.conda + sha256: a9ae28779a4ef1b38dd8cedf7f0b4068e75c6388c46214b8ea6431acca1486d2 + md5: a928b653a0cd74e27b6ae52fc2b6be0a + depends: + - __osx >=10.13 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=conda-forge-mapping + size: 281831 + timestamp: 1723018702244 +- kind: conda + name: cfgv + version: 3.3.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 + sha256: fbc03537a27ef756162c49b1d0608bf7ab12fa5e38ceb8563d6f4859e835ac5c + md5: ebb5f5f7dc4f1a3780ef7ea7738db08c + depends: + - python >=3.6.1 + license: MIT + license_family: MIT + size: 10788 + timestamp: 1629909423398 +- kind: conda + name: charset-normalizer + version: 3.3.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + sha256: 20cae47d31fdd58d99c4d2e65fbdcefa0b0de0c84e455ba9d6356a4bdbc4b5b9 + md5: 7f4a9e3fcff3f6356ae99244a014da6a + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 46597 + timestamp: 1698833765762 +- kind: conda + name: click + version: 8.1.7 + build: unix_pyh707e725_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec + md5: f3ad426304898027fc619827ff428eca + depends: + - __unix + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=conda-forge-mapping + size: 84437 + timestamp: 1692311973840 +- kind: conda + name: click + version: 8.1.7 + build: win_pyh7428d3b_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-win_pyh7428d3b_0.conda + sha256: 90236b113b9a20041736e80b80ee965167f9aac0468315c55e2bad902d673fb0 + md5: 3549ecbceb6cd77b91a105511b7d0786 + depends: + - __win + - colorama + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=conda-forge-mapping + size: 85051 + timestamp: 1692312207348 +- kind: conda + name: cmarkgfm + version: 0.8.0 + build: py312h02f2b3b_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/cmarkgfm-0.8.0-py312h02f2b3b_3.conda + sha256: 2e95c3797cd2796f32de8408626d63cb1283f2b7b0826021d2e26cc58d9231a0 + md5: ffedee35be7a5015d09e2660a66b89c9 + depends: + - cffi >=1.0.0 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 113474 + timestamp: 1695670347968 +- kind: conda + name: cmarkgfm + version: 0.8.0 + build: py312h104f124_3 + build_number: 3 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/cmarkgfm-0.8.0-py312h104f124_3.conda + sha256: d478a91584a96c5fcb372cde110cb37605b0821b2b8ec6e519d419b4851e9e4e + md5: 75b0ed827a414319d0c6fa63b92341b6 + depends: + - cffi >=1.0.0 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 112756 + timestamp: 1695670021195 +- kind: conda + name: cmarkgfm + version: 0.8.0 + build: py312h98912ed_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cmarkgfm-0.8.0-py312h98912ed_3.conda + sha256: 1a9e60b18664c22f872435a1d2b1d727e37ea4159736b116afff364b9577dc02 + md5: 0c9c09134b2fb151c2bd8181b2c56080 + depends: + - cffi >=1.0.0 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 135963 + timestamp: 1695669875921 +- kind: conda + name: cmarkgfm + version: 0.8.0 + build: py312he70551f_3 + build_number: 3 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/cmarkgfm-0.8.0-py312he70551f_3.conda + sha256: 9f5bdfbd843e58bfc727ae5a8b07079c2700d5579f0eef1e8c85aa4fa0ac5fa3 + md5: c02f42cc7c74c6dcac910f3aec3d3e6b + depends: + - cffi >=1.0.0 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 119774 + timestamp: 1695670282391 +- kind: conda + name: colorama + version: 0.4.6 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 + md5: 3faab06a954c2a04039983f2c4a50d99 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=conda-forge-mapping + size: 25170 + timestamp: 1666700778190 +- kind: conda + name: coverage + version: 7.6.1 + build: py311h61187de_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.1-py311h61187de_0.conda + sha256: affe293c31dea3359c46cdf7361c84832f14f3b078ed8038d5eaa2346b411038 + md5: 1a4c475c89ad142967256d0c7237f298 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=conda-forge-mapping + size: 374183 + timestamp: 1722822115169 +- kind: conda + name: coverage + version: 7.6.1 + build: py311h72ae277_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.1-py311h72ae277_0.conda + sha256: 6e99f69fa30fc8c515bff4a55e767aa34ed4ff8e618d3d2ff62d35d86305d828 + md5: 0c0b9c6d08cb3c85705fe39c775c2587 + depends: + - __osx >=10.13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=conda-forge-mapping + size: 371051 + timestamp: 1722822129468 +- kind: conda + name: coverage + version: 7.6.1 + build: py311hd3f4193_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.1-py311hd3f4193_0.conda + sha256: 8c63013b1adf6372c4e368ad80672a28c2596f7257ff4081b352a584a716c3cf + md5: 6c3aa5a390d9ecd27de17fd3b4b0984f + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=conda-forge-mapping + size: 371753 + timestamp: 1722822221318 +- kind: conda + name: coverage + version: 7.6.1 + build: py311he736701_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.1-py311he736701_0.conda + sha256: b94b6e0b2059ef4d9ec84004becab9d8178813145c2f5279ae8006a4a5023496 + md5: 57fb459a0d05677a790a0c9e088f97ef + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - tomli + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=conda-forge-mapping + size: 398746 + timestamp: 1722822586725 +- kind: conda + name: coverage + version: 7.6.1 + build: py312h41a817b_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.1-py312h41a817b_0.conda + sha256: b23db9d9e92ff1e39957eb803c1e6b90540683169714090bb7154f4dedd6d62b + md5: 4006636c39312dc42f8504475be3800f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=conda-forge-mapping + size: 364065 + timestamp: 1722822061660 +- kind: conda + name: coverage + version: 7.6.1 + build: py312h4389bb4_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/coverage-7.6.1-py312h4389bb4_0.conda + sha256: 8d6aa2188908c3532e4b6582a84db46cb752a39a38e35f1a22adb3eadb48f395 + md5: 85da498a4dca8bd7b9434767b6fc6027 + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tomli + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=conda-forge-mapping + size: 390609 + timestamp: 1722822534339 +- kind: conda + name: coverage + version: 7.6.1 + build: py312h7e5086c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.6.1-py312h7e5086c_0.conda + sha256: 764db3d501cf35efd3fa20825ec9b8d817157fb0abdf4870e00795ff1978671a + md5: bf6341a26ff18e0f20e279aa09a398fe + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=conda-forge-mapping + size: 364005 + timestamp: 1722822216267 +- kind: conda + name: coverage + version: 7.6.1 + build: py312hbd25219_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.6.1-py312hbd25219_0.conda + sha256: 30ebe47fad4de2ab3af3b0a5f2fa29230953d4c0e46198cf4104158f225a518d + md5: 17ee8821c9b8cd8f7ae752f4a57fbf56 + depends: + - __osx >=10.13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tomli + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=conda-forge-mapping + size: 363125 + timestamp: 1722822122292 +- kind: conda + name: cryptography + version: 43.0.0 + build: py311h4ba4ffd_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/cryptography-43.0.0-py311h4ba4ffd_0.conda + sha256: 952118945de705d01b8b11402e82a73fa75c715149fa39575ab8d0bcbb198ba3 + md5: 7df8f0c33fc84173530d0607bbe4da8f + depends: + - __osx >=10.13 + - cffi >=1.12 + - openssl >=3.3.1,<4.0a0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - __osx >=10.13 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + purls: + - pkg:pypi/cryptography?source=conda-forge-mapping + size: 1389196 + timestamp: 1721521570853 +- kind: conda + name: cryptography + version: 43.0.0 + build: py311hc6616f6_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cryptography-43.0.0-py311hc6616f6_0.conda + sha256: 7d5d5c21ba14290ef5ec9238158f5470561be37e03d33d83692ea92325b61fdb + md5: f392b3f7a26db16f37cf82996dcfc84d + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.12 + - libgcc-ng >=12 + - openssl >=3.3.1,<4.0a0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - __glibc >=2.17 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + purls: + - pkg:pypi/cryptography?source=conda-forge-mapping + size: 1509329 + timestamp: 1721521451844 +- kind: conda + name: cryptography + version: 43.0.0 + build: py311hcaeb4ce_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-43.0.0-py311hcaeb4ce_0.conda + sha256: 7641049e9aa8785875c6046268c1d6be3095eb586dc9478bbe61e48f6a99a599 + md5: dfa857985da1e336b923776ec67df173 + depends: + - __osx >=11.0 + - cffi >=1.12 + - openssl >=3.3.1,<4.0a0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - __osx >=11.0 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + purls: + - pkg:pypi/cryptography?source=conda-forge-mapping + size: 1368655 + timestamp: 1721521698014 +- kind: conda + name: cryptography + version: 43.0.0 + build: py311hfd75b31_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/cryptography-43.0.0-py311hfd75b31_0.conda + sha256: fc9c3cc3b0fa5d032713b1840399592147edf6663d78b3d35bfec905a073ec0d + md5: 84f5abe0cde6bac5360f7e2f445d7d90 + depends: + - cffi >=1.12 + - openssl >=3.3.1,<4.0a0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + purls: + - pkg:pypi/cryptography?source=conda-forge-mapping + size: 1279402 + timestamp: 1721522077879 +- kind: conda + name: cryptography + version: 43.0.0 + build: py312h7e81a9d_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/cryptography-43.0.0-py312h7e81a9d_0.conda + sha256: 8c352ca6a84b2993e7810b720aee1d6a29078144936dbe7fabac9e7653ebcad2 + md5: b6dd85ce77e1fd57a7b3000075521edf + depends: + - __osx >=10.13 + - cffi >=1.12 + - openssl >=3.3.1,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=10.13 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + purls: + - pkg:pypi/cryptography?source=conda-forge-mapping + size: 1386685 + timestamp: 1721521622679 +- kind: conda + name: cryptography + version: 43.0.0 + build: py312h8aaac84_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cryptography-43.0.0-py312h8aaac84_0.conda + sha256: cdcc32f72bb88b954b7dce8c73b468ff919330d38b7e3f3d0ade7ed584714c9c + md5: 08214176ce216a0d6a345593ffa1c16c + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.12 + - libgcc-ng >=12 + - openssl >=3.3.1,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + purls: + - pkg:pypi/cryptography?source=conda-forge-mapping + size: 1506173 + timestamp: 1721521528415 +- kind: conda + name: cryptography + version: 43.0.0 + build: py312h9500af3_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/cryptography-43.0.0-py312h9500af3_0.conda + sha256: 9bb03855c7c460d4fa6a2be7637c1e0e1cc9d5a506b3c84d10be3aef68ea9960 + md5: 4dc5dda04efc0e67976950584fb1ff8a + depends: + - cffi >=1.12 + - openssl >=3.3.1,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + purls: + - pkg:pypi/cryptography?source=conda-forge-mapping + size: 1278353 + timestamp: 1721522078203 +- kind: conda + name: cryptography + version: 43.0.0 + build: py312had01cb0_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-43.0.0-py312had01cb0_0.conda + sha256: 9b166fa4ca265eb4a77a1bd396b79b600343595218422b1bc757f20385a945cb + md5: 9ff2cf0a517e5a9c8c448d95107aeba1 + depends: + - __osx >=11.0 + - cffi >=1.12 + - openssl >=3.3.1,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + license_family: BSD + purls: + - pkg:pypi/cryptography?source=conda-forge-mapping + size: 1363776 + timestamp: 1721521727919 +- kind: conda + name: dbus + version: 1.13.6 + build: h5008d03_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5 + md5: ecfff944ba3960ecb334b9a2663d708d + depends: + - expat >=2.4.2,<3.0a0 + - libgcc-ng >=9.4.0 + - libglib >=2.70.2,<3.0a0 + license: GPL-2.0-or-later + license_family: GPL + size: 618596 + timestamp: 1640112124844 +- kind: conda + name: distlib + version: 0.3.8 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda + sha256: 3ff11acdd5cc2f80227682966916e878e45ced94f59c402efb94911a5774e84e + md5: db16c66b759a64dc5183d69cc3745a52 + depends: + - python 2.7|>=3.6 + license: Apache-2.0 + license_family: APACHE + size: 274915 + timestamp: 1702383349284 +- kind: conda + name: docformatter + version: 1.7.5 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.5-pyhd8ed1ab_0.conda + sha256: e6ec436da3615764106e16eb6bedfe6dc65d12de27e0bdb151dfdb39ec04d89e + md5: 3a941b6083e945aa87e739a9b85c82e9 + depends: + - charset-normalizer >=3.0.0 + - python >=3.7 + - untokenize >=0.1.1 + license: MIT + license_family: MIT + size: 28330 + timestamp: 1689652699366 +- kind: conda + name: docutils + version: 0.20.1 + build: py312h2e8e312_3 + build_number: 3 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/docutils-0.20.1-py312h2e8e312_3.conda + sha256: c00c5f6d840da8cde00794f793bc624139321db2249f633486e3e21f1f831741 + md5: 3adb364864b61a8cb8a530d8c960762c + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: CC-PDDC AND BSD-3-Clause AND BSD-2-Clause AND ZPL-2.1 + purls: + - pkg:pypi/docutils?source=conda-forge-mapping + size: 951313 + timestamp: 1701883281097 +- kind: conda + name: docutils + version: 0.20.1 + build: py312h7900ff3_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.20.1-py312h7900ff3_3.conda + sha256: b9fb75d806afc53d9d7b98edb0c45ac38a3cc983916b8dac4ad7ddac5c18a024 + md5: 1b90835ae26b9b8250b302649359a989 + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: CC-PDDC AND BSD-3-Clause AND BSD-2-Clause AND ZPL-2.1 + purls: + - pkg:pypi/docutils?source=conda-forge-mapping + size: 898253 + timestamp: 1701882735141 +- kind: conda + name: docutils + version: 0.20.1 + build: py312h81bd7bf_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/docutils-0.20.1-py312h81bd7bf_3.conda + sha256: e1ad41c6401ab2ada143d6e1dbbe6ae8afbe3e651211bb414b9ae1f0f8c13249 + md5: 50ea9a1ab48349f343ca2ae82833bda4 + depends: + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: CC-PDDC AND BSD-3-Clause AND BSD-2-Clause AND ZPL-2.1 + purls: + - pkg:pypi/docutils?source=conda-forge-mapping + size: 901757 + timestamp: 1701883118423 +- kind: conda + name: docutils + version: 0.20.1 + build: py312hb401068_3 + build_number: 3 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/docutils-0.20.1-py312hb401068_3.conda + sha256: 35b4dc2820e724be842f3987b9e9de57d9ab410d1f669d2a94ff997192281e70 + md5: 02a0e6021c5d5a3338775d0dfe3c4d6b + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: CC-PDDC AND BSD-3-Clause AND BSD-2-Clause AND ZPL-2.1 + purls: + - pkg:pypi/docutils?source=conda-forge-mapping + size: 900339 + timestamp: 1701883109471 +- kind: conda + name: docutils + version: 0.21.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda + sha256: 362bfe3afaac18298c48c0c6a935641544077ce5105a42a2d8ebe750ad07c574 + md5: e8cd5d629f65bdf0f3bb312cde14659e + depends: + - python >=3.9 + license: CC-PDDC AND BSD-3-Clause AND BSD-2-Clause AND ZPL-2.1 + size: 403226 + timestamp: 1713930478970 +- kind: conda + name: duckdb + version: 1.0.0 + build: hd8ed1ab_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/duckdb-1.0.0-hd8ed1ab_0.conda + sha256: 368dab03b51ac9a084c79918449652deaef59029a5f4d942d9bf7101ad1f9f55 + md5: 4ff8d9fb8309f6305d5f9c651fa25bf3 + depends: + - python-duckdb >=1.0.0,<1.0.1.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/duckdb?source=conda-forge-mapping + size: 7850 + timestamp: 1717686359276 +- kind: conda + name: duckdb-engine + version: 0.12.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/duckdb-engine-0.12.1-pyhd8ed1ab_0.conda + sha256: dd41818acfbdc7f922ce1c34cf2494c4978ed156e6ad6c3cd1fa38b26830e8c3 + md5: 19675163fe045007713dc3faedf6337f + depends: + - packaging >=21.3 + - python >=3.7 + - python-duckdb >=0.4.0 + - sqlalchemy >=1.3.19 + license: MIT + license_family: MIT + purls: + - pkg:pypi/duckdb-engine?source=conda-forge-mapping + size: 48917 + timestamp: 1718026811027 +- kind: conda + name: exceptiongroup + version: 1.2.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 + md5: d02ae936e42063ca46af6cdad2dbd1e0 + depends: + - python >=3.7 + license: MIT and PSF-2.0 + purls: + - pkg:pypi/exceptiongroup?source=conda-forge-mapping + size: 20418 + timestamp: 1720869435725 +- kind: conda + name: expat + version: 2.6.2 + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda + sha256: 89916c536ae5b85bb8bf0cfa27d751e274ea0911f04e4a928744735c14ef5155 + md5: 53fb86322bdb89496d7579fe3f02fd61 + depends: + - libexpat 2.6.2 h59595ed_0 + - libgcc-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 137627 + timestamp: 1710362144873 +- kind: conda + name: expat + version: 2.6.2 + build: h63175ca_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/expat-2.6.2-h63175ca_0.conda + sha256: f5a13d4bc591a4dc210954f492dd59a0ecf9b9d2ab28bf2ece755ca8f69ec1b4 + md5: 52f9dec6758ceb8ce0ea8af9fa13eb1a + depends: + - libexpat 2.6.2 h63175ca_0 + license: MIT + license_family: MIT + purls: [] + size: 229627 + timestamp: 1710362661692 +- kind: conda + name: expat + version: 2.6.2 + build: h73e2aa4_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/expat-2.6.2-h73e2aa4_0.conda + sha256: 0fd1befb18d9d937358a90d5b8f97ac2402761e9d4295779cbad9d7adfb47976 + md5: dc0882915da2ec74696ad87aa2350f27 + depends: + - libexpat 2.6.2 h73e2aa4_0 + license: MIT + license_family: MIT + purls: [] + size: 126612 + timestamp: 1710362607162 +- kind: conda + name: expat + version: 2.6.2 + build: hebf3989_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.2-hebf3989_0.conda + sha256: 9ac22553a4d595d7e4c9ca9aa09a0b38da65314529a7a7008edc73d3f9e7904a + md5: de0cff0ec74f273c4b6aa281479906c3 + depends: + - libexpat 2.6.2 hebf3989_0 + license: MIT + license_family: MIT + purls: [] + size: 124594 + timestamp: 1710362455984 +- kind: conda + name: filelock + version: 3.15.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.4-pyhd8ed1ab_0.conda + sha256: f78d9c0be189a77cb0c67d02f33005f71b89037a85531996583fb79ff3fe1a0a + md5: 0e7e4388e9d5283e22b35a9443bdbcc9 + depends: + - python >=3.7 + license: Unlicense + size: 17592 + timestamp: 1719088395353 +- kind: conda + name: font-ttf-dejavu-sans-mono + version: '2.37' + build: hab24e00_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b + md5: 0c96522c6bdaed4b1566d11387caaf45 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 397370 + timestamp: 1566932522327 +- kind: conda + name: font-ttf-inconsolata + version: '3.000' + build: h77eed37_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c + md5: 34893075a5c9e55cdafac56607368fc6 + license: OFL-1.1 + license_family: Other + purls: [] + size: 96530 + timestamp: 1620479909603 +- kind: conda + name: font-ttf-source-code-pro + version: '2.038' + build: h77eed37_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 + md5: 4d59c254e01d9cde7957100457e2d5fb + license: OFL-1.1 + license_family: Other + purls: [] + size: 700814 + timestamp: 1620479612257 +- kind: conda + name: font-ttf-ubuntu + version: '0.83' + build: h77eed37_2 + build_number: 2 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda + sha256: c940f6e969143e13a3a9660abb3c7e7e23b8319efb29dbdd5dee0b9939236e13 + md5: cbbe59391138ea5ad3658c76912e147f + license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 + license_family: Other + purls: [] + size: 1622566 + timestamp: 1714483134319 +- kind: conda + name: fontconfig + version: 2.14.2 + build: h14ed4e7_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda + sha256: 155d534c9037347ea7439a2c6da7c24ffec8e5dd278889b4c57274a1d91e0a83 + md5: 0f69b688f52ff6da70bccb7ff7001d1d + depends: + - expat >=2.5.0,<3.0a0 + - freetype >=2.12.1,<3.0a0 + - libgcc-ng >=12 + - libuuid >=2.32.1,<3.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: MIT + license_family: MIT + purls: [] + size: 272010 + timestamp: 1674828850194 +- kind: conda + name: fontconfig + version: 2.14.2 + build: h5bb23bf_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.14.2-h5bb23bf_0.conda + sha256: f63e6d1d6aef8ba6de4fc54d3d7898a153479888d40ffdf2e4cfad6f92679d34 + md5: 86cc5867dfbee4178118392bae4a3c89 + depends: + - expat >=2.5.0,<3.0a0 + - freetype >=2.12.1,<3.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: MIT + license_family: MIT + purls: [] + size: 237068 + timestamp: 1674829100063 +- kind: conda + name: fontconfig + version: 2.14.2 + build: h82840c6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.14.2-h82840c6_0.conda + sha256: 7094917fc6758186e17c61d8ee8fd2bbbe9f303b4addac61d918fa415c497e2b + md5: f77d47ddb6d3cc5b39b9bdf65635afbb + depends: + - expat >=2.5.0,<3.0a0 + - freetype >=2.12.1,<3.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: MIT + license_family: MIT + purls: [] + size: 237668 + timestamp: 1674829263740 +- kind: conda + name: fontconfig + version: 2.14.2 + build: hbde0cde_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.14.2-hbde0cde_0.conda + sha256: 643f2b95be68abeb130c53d543dcd0c1244bebabd58c774a21b31e4b51ac3c96 + md5: 08767992f1a4f1336a257af1241034bd + depends: + - expat >=2.5.0,<3.0a0 + - freetype >=2.12.1,<3.0a0 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vs2015_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 190111 + timestamp: 1674829354122 +- kind: conda + name: fonts-conda-ecosystem + version: '1' + build: '0' + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 + md5: fee5683a3f04bd15cbd8318b096a27ab + depends: + - fonts-conda-forge + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 3667 + timestamp: 1566974674465 +- kind: conda + name: fonts-conda-forge + version: '1' + build: '0' + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38 + md5: f766549260d6815b0c52253f1fb1bb29 + depends: + - font-ttf-dejavu-sans-mono + - font-ttf-inconsolata + - font-ttf-source-code-pro + - font-ttf-ubuntu + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 4102 + timestamp: 1566932280397 +- kind: conda + name: freetype + version: 2.12.1 + build: h267a509_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + purls: [] + size: 634972 + timestamp: 1694615932610 +- kind: conda + name: freetype + version: 2.12.1 + build: h60636b9_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda + sha256: b292cf5a25f094eeb4b66e37d99a97894aafd04a5683980852a8cbddccdc8e4e + md5: 25152fce119320c980e5470e64834b50 + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + purls: [] + size: 599300 + timestamp: 1694616137838 +- kind: conda + name: freetype + version: 2.12.1 + build: hadb7bae_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + purls: [] + size: 596430 + timestamp: 1694616332835 +- kind: conda + name: freetype + version: 2.12.1 + build: hdaf720e_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda + sha256: 2c53ee8879e05e149a9e525481d36adfd660a6abda26fd731376fa64ff03e728 + md5: 3761b23693f768dc75a8fd0a73ca053f + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: GPL-2.0-only OR FTL + purls: [] + size: 510306 + timestamp: 1694616398888 +- kind: conda + name: fribidi + version: 1.0.10 + build: h27ca646_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + sha256: 4b37ea851a2cf85edf0a63d2a63266847ec3dcbba4a31156d430cdd6aa811303 + md5: c64443234ff91d70cb9c7dc926c58834 + license: LGPL-2.1 + purls: [] + size: 60255 + timestamp: 1604417405528 +- kind: conda + name: fribidi + version: 1.0.10 + build: h36c2ea0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + sha256: 5d7b6c0ee7743ba41399e9e05a58ccc1cfc903942e49ff6f677f6e423ea7a627 + md5: ac7bc6a654f8f41b352b38f4051135f8 + depends: + - libgcc-ng >=7.5.0 + license: LGPL-2.1 + purls: [] + size: 114383 + timestamp: 1604416621168 +- kind: conda + name: fribidi + version: 1.0.10 + build: h8d14728_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 + sha256: e0323e6d7b6047042970812ee810c6b1e1a11a3af4025db26d0965ae5d206104 + md5: 807e81d915f2bb2e49951648615241f6 + depends: + - vc >=14.1,<15.0a0 + - vs2015_runtime >=14.16.27012 + license: LGPL-2.1 + purls: [] + size: 64567 + timestamp: 1604417122064 +- kind: conda + name: fribidi + version: 1.0.10 + build: hbcb3906_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + sha256: 4f6db86ecc4984cd4ac88ca52030726c3cfd11a64dfb15c8602025ee3001a2b5 + md5: f1c6b41e0f56998ecd9a3e210faa1dc0 + license: LGPL-2.1 + purls: [] + size: 65388 + timestamp: 1604417213 +- kind: conda + name: gdk-pixbuf + version: 2.42.12 + build: h7ddc832_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + sha256: 72bcf0a4d3f9aa6d99d7d1d224d19f76ccdb3a4fa85e60f77d17e17985c81bd2 + md5: 151309a7e1eb57a3c2ab8088a1d74f3e + depends: + - __osx >=11.0 + - libglib >=2.80.2,<3.0a0 + - libintl >=0.22.5,<1.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + purls: [] + size: 509570 + timestamp: 1715783199780 +- kind: conda + name: gdk-pixbuf + version: 2.42.12 + build: ha587570_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + sha256: 92cb602ef86feb35252ee909e19536fa043bd85b8507450ad8264cfa518a5881 + md5: ee186d2e8db4605030753dc05025d4a0 + depends: + - __osx >=10.13 + - libglib >=2.80.2,<3.0a0 + - libintl >=0.22.5,<1.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + purls: [] + size: 516815 + timestamp: 1715783154558 +- kind: conda + name: gdk-pixbuf + version: 2.42.12 + build: hb9ae30d_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + sha256: d5283b95a8d49dcd88d29b360d8b38694aaa905d968d156d72ab71d32b38facb + md5: 201db6c2d9a3c5e46573ac4cb2e92f4f + depends: + - libgcc-ng >=12 + - libglib >=2.80.2,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + purls: [] + size: 528149 + timestamp: 1715782983957 +- kind: conda + name: getopt-win32 + version: '0.1' + build: hcfcfb64_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda + sha256: f3b6e689724a62f36591f6f0e4657db5507feca78e7ef08690a6b2a384216a5c + md5: 714d0882dc5e692ca4683d8e520f73c6 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-3.0-only + license_family: GPL + purls: [] + size: 21903 + timestamp: 1694400856979 +- kind: conda + name: gflags + version: 2.2.2 + build: hb1e8313_1004 + build_number: 1004 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hb1e8313_1004.tar.bz2 + sha256: 39540f879057ae529cad131644af111a8c3c48b384ec6212de6a5381e0863948 + md5: 3f59cc77a929537e42120faf104e0d16 + depends: + - libcxx >=10.0.1 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 94612 + timestamp: 1599590973213 +- kind: conda + name: gflags + version: 2.2.2 + build: hc88da5d_1004 + build_number: 1004 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hc88da5d_1004.tar.bz2 + sha256: 25d4a20af2e5ace95fdec88970f6d190e77e20074d2f6d3cef766198b76a4289 + md5: aab9ddfad863e9ef81229a1f8852211b + depends: + - libcxx >=11.0.0.rc1 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 86690 + timestamp: 1599590990520 +- kind: conda + name: gflags + version: 2.2.2 + build: he1b5a44_1004 + build_number: 1004 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2 + sha256: a853c0cacf53cfc59e1bca8d6e5cdfe9f38fce836f08c2a69e35429c2a492e77 + md5: cddaf2c63ea4a5901cf09524c490ecdc + depends: + - libgcc-ng >=7.5.0 + - libstdcxx-ng >=7.5.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 116549 + timestamp: 1594303828933 +- kind: conda + name: glog + version: 0.7.1 + build: h2790a97_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/glog-0.7.1-h2790a97_0.conda + sha256: dd56547db8625eb5c91bb0a9fbe8bd6f5c7fbf5b6059d46365e94472c46b24f9 + md5: 06cf91665775b0da395229cd4331b27d + depends: + - __osx >=10.13 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 117017 + timestamp: 1718284325443 +- kind: conda + name: glog + version: 0.7.1 + build: hbabe93e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 143452 + timestamp: 1718284177264 +- kind: conda + name: glog + version: 0.7.1 + build: heb240a5_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 112215 + timestamp: 1718284365403 +- kind: conda + name: graphite2 + version: 1.3.13 + build: h59595ed_1003 + build_number: 1003 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add + md5: f87c7b7c2cb45f323ffbce941c78ab7c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 96855 + timestamp: 1711634169756 +- kind: conda + name: graphite2 + version: 1.3.13 + build: h63175ca_1003 + build_number: 1003 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + sha256: 25040a4f371b9b51663f546bac620122c237fa1d5d32968e21b0751af9b7f56f + md5: 3194499ee7d1a67404a87d0eefdd92c6 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 95406 + timestamp: 1711634622644 +- kind: conda + name: graphite2 + version: 1.3.13 + build: h73e2aa4_1003 + build_number: 1003 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + sha256: b71db966e47cd83b16bfcc2099b8fa87c07286f24a0742078fede4c84314f91a + md5: fc7124f86e1d359fc5d878accd9e814c + depends: + - libcxx >=16 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 84384 + timestamp: 1711634311095 +- kind: conda + name: graphite2 + version: 1.3.13 + build: hebf3989_1003 + build_number: 1003 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + sha256: 2eadafbfc52f5e7df3da3c3b7e5bbe34d970bea1d645ffe60b0b1c3a216657f5 + md5: 339991336eeddb70076d8ca826dac625 + depends: + - libcxx >=16 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 79774 + timestamp: 1711634444608 +- kind: conda + name: graphviz + version: 12.0.0 + build: hb01754f_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.0.0-hb01754f_0.conda + sha256: 19c229d7ca0e866c70ffe79e1258aaab598e7caa7fa258ffe6cbff15b71c1ced + md5: 8074641ca215d6f30b6152d9d79f0b9e + depends: + - cairo >=1.18.0,<2.0a0 + - getopt-win32 >=0.1,<0.2.0a0 + - gts >=0.7.6,<0.8.0a0 + - libexpat >=2.6.2,<3.0a0 + - libgd >=2.3.3,<2.4.0a0 + - libglib >=2.80.3,<3.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.50.14,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: EPL-1.0 + license_family: Other + purls: [] + size: 1157652 + timestamp: 1722674488876 +- kind: conda + name: graphviz + version: 12.0.0 + build: hba01fac_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.0.0-hba01fac_0.conda + sha256: 2eb794ae1de42b688f89811113ae3dcb63698272ee8f87029abce5f77c742c2a + md5: 953e31ea00d46beb7e64a79fc291ec44 + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.0,<2.0a0 + - fonts-conda-ecosystem + - gdk-pixbuf >=2.42.12,<3.0a0 + - gtk2 + - gts >=0.7.6,<0.8.0a0 + - libexpat >=2.6.2,<3.0a0 + - libgcc-ng >=12 + - libgd >=2.3.3,<2.4.0a0 + - libglib >=2.80.3,<3.0a0 + - librsvg >=2.58.2,<3.0a0 + - libstdcxx-ng >=12 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.50.14,<2.0a0 + license: EPL-1.0 + license_family: Other + purls: [] + size: 2303111 + timestamp: 1722673717117 +- kind: conda + name: graphviz + version: 12.0.0 + build: hbf8cc41_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.0.0-hbf8cc41_0.conda + sha256: 33867d6ebc54f290dfb511fdca0297b30ca06985ac4443e1fc9d7fe03bfbad05 + md5: 29c0dcbd4ec7135b7a55805aa3a5a331 + depends: + - __osx >=11.0 + - cairo >=1.18.0,<2.0a0 + - fonts-conda-ecosystem + - gdk-pixbuf >=2.42.12,<3.0a0 + - gtk2 + - gts >=0.7.6,<0.8.0a0 + - libcxx >=16 + - libexpat >=2.6.2,<3.0a0 + - libgd >=2.3.3,<2.4.0a0 + - libglib >=2.80.3,<3.0a0 + - librsvg >=2.58.2,<3.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.50.14,<2.0a0 + license: EPL-1.0 + license_family: Other + purls: [] + size: 5082874 + timestamp: 1722673934247 +- kind: conda + name: graphviz + version: 12.0.0 + build: he14ced1_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.0.0-he14ced1_0.conda + sha256: 91fbeecf3aaa4032c6f01c4242cfe2ee1bee21e70d085bafb3958ce7d6ab7c3c + md5: ef49aa1e3614bfc6fb5369675129c09b + depends: + - __osx >=10.13 + - cairo >=1.18.0,<2.0a0 + - fonts-conda-ecosystem + - gdk-pixbuf >=2.42.12,<3.0a0 + - gtk2 + - gts >=0.7.6,<0.8.0a0 + - libcxx >=16 + - libexpat >=2.6.2,<3.0a0 + - libgd >=2.3.3,<2.4.0a0 + - libglib >=2.80.3,<3.0a0 + - librsvg >=2.58.2,<3.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.50.14,<2.0a0 + license: EPL-1.0 + license_family: Other + purls: [] + size: 4984341 + timestamp: 1722673941539 +- kind: conda + name: greenlet + version: 3.0.3 + build: py311h12c1d0e_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/greenlet-3.0.3-py311h12c1d0e_0.conda + sha256: 201a0ceab46a8c727569a5828c54cccf577a31d814e55f8db1bfae1296faea11 + md5: b951f974beab977f3e6b99cba8864ebd + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/greenlet?source=conda-forge-mapping + size: 222161 + timestamp: 1703202281940 +- kind: conda + name: greenlet + version: 3.0.3 + build: py311h92babd0_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.0.3-py311h92babd0_0.conda + sha256: 7084dcde0cc228fa870d41cd5f71d38b0638263280282559792a67106bb4d4db + md5: 36b7bc788b0fda79d2df7ccc416b080d + depends: + - libcxx >=15 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/greenlet?source=conda-forge-mapping + size: 225678 + timestamp: 1703202139637 +- kind: conda + name: greenlet + version: 3.0.3 + build: py311hb755f60_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.3-py311hb755f60_0.conda + sha256: e6228b46b15ee3f54592c8a1fc1bf3846d519719ac65c238c20e21eb431971ec + md5: 6f4b03b4d1e0da0962ea02113382677c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/greenlet?source=conda-forge-mapping + size: 236045 + timestamp: 1703201735151 +- kind: conda + name: greenlet + version: 3.0.3 + build: py311hdd0406b_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.0.3-py311hdd0406b_0.conda + sha256: 472971e11c0a4bffdad925523ae524361567a6428e7d5e38a76fadc59eaa8efc + md5: 4f538c462a4fed3aa89ea7993506c478 + depends: + - libcxx >=15 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/greenlet?source=conda-forge-mapping + size: 226702 + timestamp: 1703202043184 +- kind: conda + name: greenlet + version: 3.0.3 + build: py312h20a0b95_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/greenlet-3.0.3-py312h20a0b95_0.conda + sha256: d0e871c78eaaace5461ba4ce7e08546f7368840fa98cab91d705f246cc3b2b98 + md5: 92ca171dcc49aadb06ac7d1d68238633 + depends: + - libcxx >=15 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/greenlet?source=conda-forge-mapping + size: 222406 + timestamp: 1703202114603 +- kind: conda + name: greenlet + version: 3.0.3 + build: py312h30efb56_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.3-py312h30efb56_0.conda + sha256: d1f468de132417856035d723eb91f565eba37b48c161f3ada96e6a1df24267b9 + md5: a8a85268e01ddee952f4105f3a8122a4 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/greenlet?source=conda-forge-mapping + size: 233067 + timestamp: 1703201779255 +- kind: conda + name: greenlet + version: 3.0.3 + build: py312h53d5487_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/greenlet-3.0.3-py312h53d5487_0.conda + sha256: 0f2104bf442e2f1ce8c8806a798dc4831575d59443eab3c2e79226200ddbb3d7 + md5: 864b126da41654d4ea3faa8f762bc92b + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/greenlet?source=conda-forge-mapping + size: 218253 + timestamp: 1703202267284 +- kind: conda + name: greenlet + version: 3.0.3 + build: py312hede676d_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/greenlet-3.0.3-py312hede676d_0.conda + sha256: 37dae8f15ecb190adcd5e5f527bed03751a866311b7eded89a59050425c84370 + md5: a2625dbdaf5969de36973cea17cc6ea8 + depends: + - libcxx >=15 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/greenlet?source=conda-forge-mapping + size: 222396 + timestamp: 1703202211483 +- kind: conda + name: gtk2 + version: 2.24.33 + build: h2c15c3c_5 + build_number: 5 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h2c15c3c_5.conda + sha256: 9d7a50dae4aef357473b16c5121c1803a0c9ee1b8f93c4d90dc0196ae5007208 + md5: 308376a1154bc0ab3bbeeccf6ff986be + depends: + - __osx >=10.13 + - atk-1.0 >=2.38.0 + - cairo >=1.18.0,<2.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 + - libglib >=2.80.3,<3.0a0 + - libintl >=0.22.5,<1.0a0 + - pango >=1.54.0,<2.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 6162947 + timestamp: 1721286459536 +- kind: conda + name: gtk2 + version: 2.24.33 + build: h6470451_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h6470451_5.conda + sha256: 16644d036321b32635369c183502974c8b989fa516c313bd379f9aa4adcdf642 + md5: 1483ba046164be27df7f6eddbcec3a12 + depends: + - __glibc >=2.17,<3.0.a0 + - atk-1.0 >=2.38.0 + - cairo >=1.18.0,<2.0a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 + - harfbuzz >=9.0.0,<10.0a0 + - libgcc-ng >=12 + - libglib >=2.80.3,<3.0a0 + - pango >=1.54.0,<2.0a0 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 6501561 + timestamp: 1721285940408 +- kind: conda + name: gtk2 + version: 2.24.33 + build: h91d5085_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h91d5085_5.conda + sha256: 26ca08e16bb530465370d94309bfb500438f6cff4d6cf85725db3b7afcd9eccd + md5: 23558d38b8e80959b74cfe83acad7c66 + depends: + - __osx >=11.0 + - atk-1.0 >=2.38.0 + - cairo >=1.18.0,<2.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 + - libglib >=2.80.3,<3.0a0 + - libintl >=0.22.5,<1.0a0 + - pango >=1.54.0,<2.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 6152068 + timestamp: 1721286930050 +- kind: conda + name: gts + version: 0.7.6 + build: h53e17e3_4 + build_number: 4 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda + sha256: d5b82a36f7e9d7636b854e56d1b4fe01c4d895128a7b73e2ec6945b691ff3314 + md5: 848cc963fcfbd063c7a023024aa3bec0 + depends: + - libcxx >=15.0.7 + - libglib >=2.76.3,<3.0a0 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 280972 + timestamp: 1686545425074 +- kind: conda + name: gts + version: 0.7.6 + build: h6b5321d_4 + build_number: 4 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda + sha256: b79755d2f9fc2113b6949bfc170c067902bc776e2c20da26e746e780f4f5a2d4 + md5: a41f14768d5e377426ad60c613f2923b + depends: + - libglib >=2.76.3,<3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 188688 + timestamp: 1686545648050 +- kind: conda + name: gts + version: 0.7.6 + build: h977cf35_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + sha256: b5cd16262fefb836f69dc26d879b6508d29f8a5c5948a966c47fe99e2e19c99b + md5: 4d8df0b0db060d33c9a702ada998a8fe + depends: + - libgcc-ng >=12 + - libglib >=2.76.3,<3.0a0 + - libstdcxx-ng >=12 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 318312 + timestamp: 1686545244763 +- kind: conda + name: gts + version: 0.7.6 + build: he42f4ea_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda + sha256: e0f8c7bc1b9ea62ded78ffa848e37771eeaaaf55b3146580513c7266862043ba + md5: 21b4dd3098f63a74cf2aa9159cbef57d + depends: + - libcxx >=15.0.7 + - libglib >=2.76.3,<3.0a0 + license: LGPL-2.0-or-later + license_family: LGPL + purls: [] + size: 304331 + timestamp: 1686545503242 +- kind: conda + name: h2 + version: 4.1.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a + md5: b748fbf7060927a6e82df7cb5ee8f097 + depends: + - hpack >=4.0,<5 + - hyperframe >=6.0,<7 + - python >=3.6.1 + license: MIT + license_family: MIT + purls: + - pkg:pypi/h2?source=conda-forge-mapping + size: 46754 + timestamp: 1634280590080 +- kind: conda + name: h2 + version: 4.1.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a + md5: b748fbf7060927a6e82df7cb5ee8f097 + depends: + - hpack >=4.0,<5 + - hyperframe >=6.0,<7 + - python >=3.6.1 + license: MIT + license_family: MIT + size: 46754 + timestamp: 1634280590080 +- kind: conda + name: harfbuzz + version: 9.0.0 + build: h098a298_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda + sha256: dbc7783ea89faaf3a810d0e55979be02031551be8edad00de915807b3b148ff1 + md5: 8dd3c790d5ce9f3bc94c46e5b218e5f8 + depends: + - __osx >=10.13 + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libcxx >=16 + - libglib >=2.80.3,<3.0a0 + license: MIT + license_family: MIT + purls: [] + size: 1372588 + timestamp: 1721186294497 +- kind: conda + name: harfbuzz + version: 9.0.0 + build: h2bedf89_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda + sha256: 20f42ec76e075902c22c1f8ddc71fb88eff0b93e74f5705c1e72220030965810 + md5: 254f119aaed2c0be271c1114ae18d09b + depends: + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libglib >=2.80.3,<3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 1095620 + timestamp: 1721187287831 +- kind: conda + name: harfbuzz + version: 9.0.0 + build: h997cde5_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda + sha256: 5f78f5dcbbfef59b3549ecb6cc2fa9de7b22abda7c8afaf0fa787ceea37a914f + md5: 50f6825d3c4a6fca6fefdefa98081554 + depends: + - __osx >=11.0 + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libcxx >=16 + - libglib >=2.80.3,<3.0a0 + license: MIT + license_family: MIT + purls: [] + size: 1317509 + timestamp: 1721186764931 +- kind: conda + name: harfbuzz + version: 9.0.0 + build: hda332d3_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda + sha256: 973afa37840b4e55e2540018902255cfb0d953aaed6353bb83a4d120f5256767 + md5: 76b32dcf243444aea9c6b804bcfa40b8 + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libgcc-ng >=12 + - libglib >=2.80.3,<3.0a0 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 1603653 + timestamp: 1721186240105 +- kind: conda + name: hpack + version: 4.0.0 + build: pyh9f0ad1d_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 + md5: 914d6646c4dbb1fd3ff539830a12fd71 + depends: + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/hpack?source=conda-forge-mapping + size: 25341 + timestamp: 1598856368685 +- kind: conda + name: hpack + version: 4.0.0 + build: pyh9f0ad1d_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 + md5: 914d6646c4dbb1fd3ff539830a12fd71 + depends: + - python + license: MIT + license_family: MIT + size: 25341 + timestamp: 1598856368685 +- kind: conda + name: hyperframe + version: 6.0.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 + md5: 9f765cbfab6870c8435b9eefecd7a1f4 + depends: + - python >=3.6 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hyperframe?source=conda-forge-mapping + size: 14646 + timestamp: 1619110249723 +- kind: conda + name: hyperframe + version: 6.0.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 + md5: 9f765cbfab6870c8435b9eefecd7a1f4 + depends: + - python >=3.6 + license: MIT + license_family: MIT + size: 14646 + timestamp: 1619110249723 +- kind: conda + name: icu + version: '73.2' + build: hc8870d7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-73.2-hc8870d7_0.conda + sha256: ff9cd0c6cd1349954c801fb443c94192b637e1b414514539f3c49c56a39f51b1 + md5: 8521bd47c0e11c5902535bb1a17c565f + license: MIT + license_family: MIT + size: 11997841 + timestamp: 1692902104771 +- kind: conda + name: icu + version: '73.2' + build: hf5e326d_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/icu-73.2-hf5e326d_0.conda + sha256: f66362dc36178ac9b7c7a9b012948a9d2d050b3debec24bbd94aadbc44854185 + md5: 5cc301d759ec03f28328428e28f65591 + license: MIT + license_family: MIT + size: 11787527 + timestamp: 1692901622519 +- kind: conda + name: icu + version: '75.1' + build: h120a0e1_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + sha256: 2e64307532f482a0929412976c8450c719d558ba20c0962832132fd0d07ba7a7 + md5: d68d48a3060eb5abdc1cdc8e2a3a5966 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: [] + size: 11761697 + timestamp: 1720853679409 +- kind: conda + name: icu + version: '75.1' + build: he02047a_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 12129203 + timestamp: 1720853576813 +- kind: conda + name: icu + version: '75.1' + build: he0c23c2_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda + sha256: 1d04369a1860a1e9e371b9fc82dd0092b616adcf057d6c88371856669280e920 + md5: 8579b6bb8d18be7c0b27fb08adeeeb40 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 14544252 + timestamp: 1720853966338 +- kind: conda + name: icu + version: '75.1' + build: hfee45f7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + size: 11857802 + timestamp: 1720853997952 +- kind: conda + name: identify + version: 2.6.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda + sha256: 4a2889027df94d51be283536ac235feba77eaa42a0d051f65cd07ba824b324a6 + md5: f80cc5989f445f23b1622d6c455896d9 + depends: + - python >=3.6 + - ukkonen + license: MIT + license_family: MIT + size: 78197 + timestamp: 1720413864262 +- kind: conda + name: idna + version: '3.7' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + sha256: 9687ee909ed46169395d4f99a0ee94b80a52f87bed69cd454bb6d37ffeb0ec7b + md5: c0cc1420498b17414d8617d0b9f506ca + depends: + - python >=3.6 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/idna?source=conda-forge-mapping + size: 52718 + timestamp: 1713279497047 +- kind: conda + name: idna + version: '3.7' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda + sha256: 9687ee909ed46169395d4f99a0ee94b80a52f87bed69cd454bb6d37ffeb0ec7b + md5: c0cc1420498b17414d8617d0b9f506ca + depends: + - python >=3.6 + license: BSD-3-Clause + license_family: BSD + size: 52718 + timestamp: 1713279497047 +- kind: conda + name: imagesize + version: 1.4.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 + sha256: c2bfd7043e0c4c12d8b5593de666c1e81d67b83c474a0a79282cc5c4ef845460 + md5: 7de5386c8fea29e76b303f37dde4c352 + depends: + - python >=3.4 + license: MIT + license_family: MIT + purls: + - pkg:pypi/imagesize?source=conda-forge-mapping + size: 10164 + timestamp: 1656939625410 +- kind: conda + name: importlib-metadata + version: 8.2.0 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda + sha256: 15dd2beba1c6f780fec6c5351bbce815d27a29561f422fe830133c995ef90b8a + md5: c261d14fc7f49cdd403868998a18c318 + depends: + - python >=3.8 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 28110 + timestamp: 1721856614564 +- kind: conda + name: importlib_metadata + version: 8.2.0 + build: hd8ed1ab_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.2.0-hd8ed1ab_0.conda + sha256: 4a0eacc41786d97176fb53c19d25c4f9b8ab4c9a0ee1fd6f09bc13ca197c21d9 + md5: 0fd030dce707a6654472cf7619b0b01b + depends: + - importlib-metadata >=8.2.0,<8.2.1.0a0 + license: Apache-2.0 + license_family: APACHE + size: 9330 + timestamp: 1721856618848 +- kind: conda + name: importlib_resources + version: 6.4.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda + sha256: c6ae80c0beaeabb342c5b041f19669992ae6e937dbec56ced766cb035900f9de + md5: c5d3907ad8bd7bf557521a1833cf7e6d + depends: + - python >=3.8 + - zipp >=3.1.0 + constrains: + - importlib-resources >=6.4.0,<6.4.1.0a0 + license: Apache-2.0 + license_family: APACHE + size: 33056 + timestamp: 1711041009039 +- kind: conda + name: iniconfig + version: 2.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda + sha256: 38740c939b668b36a50ef455b077e8015b8c9cf89860d421b3fff86048f49666 + md5: f800d2da156d08e289b14e87e43c1ae5 + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/iniconfig?source=conda-forge-mapping + size: 11101 + timestamp: 1673103208955 +- kind: conda + name: insert-license-header + version: 1.3.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/insert-license-header-1.3.0-pyhd8ed1ab_0.conda + sha256: 2f39a8683665079080ff1473e65317d31099c34bdc0090b282eb42ba64ea979c + md5: be70384699d872b82cbb6050b684bb70 + depends: + - python >=3.8 + - rapidfuzz + license: MIT + license_family: MIT + size: 16786 + timestamp: 1706200055466 +- kind: conda + name: intel-openmp + version: 2024.2.0 + build: h57928b3_980 + build_number: 980 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.0-h57928b3_980.conda + sha256: e3ddfb67e0a922868e68f83d0b56755ff1c280ffa959a0c5ee6a922aaf7022b0 + md5: 9c28c39e64871a0adef7d1195bd58655 + license: LicenseRef-IntelSimplifiedSoftwareOct2022 + license_family: Proprietary + purls: [] + size: 1860328 + timestamp: 1721088141110 +- kind: conda + name: jaraco.classes + version: 3.4.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhd8ed1ab_1.conda + sha256: 538b1c6df537a36c63fd0ed83cb1c1c25b07d8d3b5e401991fdaff261a4b5b4d + md5: 7b756504d362cbad9b73a50a5455cafd + depends: + - more-itertools + - python >=3.8 + license: MIT + license_family: MIT + size: 12223 + timestamp: 1713939433204 +- kind: conda + name: jaraco.context + version: 5.3.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-5.3.0-pyhd8ed1ab_1.conda + sha256: 9e2aeacb1aed3ab4fc5883a357e8a874e12f687af300f8708ec12de2995e17d2 + md5: 72d7ad2dcd0f37eccb2ee35a1c8f6aaa + depends: + - backports.tarfile + - python >=3.8 + license: MIT + license_family: MIT + size: 12456 + timestamp: 1714372284922 +- kind: conda + name: jaraco.functools + version: 4.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jaraco.functools-4.0.0-pyhd8ed1ab_0.conda + sha256: d2e866fd22a48eaa2f795b6a3b0bf16f066293322ce04dd65cca36267160ead6 + md5: 547670a612fd335eaa5ffbf0fa75cb64 + depends: + - more-itertools + - python >=3.8 + license: MIT + license_family: MIT + size: 15192 + timestamp: 1701695329516 +- kind: conda + name: jeepney + version: 0.8.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jeepney-0.8.0-pyhd8ed1ab_0.tar.bz2 + sha256: 16639759b811866d63315fe1391f6fb45f5478b823972f4d3d9f0392b7dd80b8 + md5: 9800ad1699b42612478755a2d26c722d + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 36895 + timestamp: 1649085298891 +- kind: conda + name: jinja2 + version: 3.1.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d + md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + depends: + - markupsafe >=2.0 + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jinja2?source=conda-forge-mapping + size: 111565 + timestamp: 1715127275924 +- kind: conda + name: keyring + version: 25.3.0 + build: pyh534df25_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/keyring-25.3.0-pyh534df25_0.conda + sha256: 6201e8219069148c4e9d3111370359579c62315c51e051834f4ca176972169b7 + md5: 3644a2cfda8f481d83edd95feacc4cf7 + depends: + - __osx + - importlib_metadata >=4.11.4 + - importlib_resources + - jaraco.classes + - jaraco.context + - jaraco.functools + - python >=3.8 + license: MIT + license_family: MIT + size: 36963 + timestamp: 1722727411772 +- kind: conda + name: keyring + version: 25.3.0 + build: pyh7428d3b_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/keyring-25.3.0-pyh7428d3b_0.conda + sha256: 12e96ccb66b584bdf42fbd716f46cb559bfe076c5f95d11c11bd2e2d35dd204e + md5: d18ff10fc3796f43c0185a656fa67d90 + depends: + - __win + - importlib_metadata >=4.11.4 + - importlib_resources + - jaraco.classes + - jaraco.context + - jaraco.functools + - python >=3.8 + - pywin32-ctypes >=0.2.0 + license: MIT + license_family: MIT + size: 37111 + timestamp: 1722727796811 +- kind: conda + name: keyring + version: 25.3.0 + build: pyha804496_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/keyring-25.3.0-pyha804496_0.conda + sha256: 109ba72a2d3aedcc079b54ad959cf98d805f53ed72f890790abbda722007b8c7 + md5: 84378a85ee7375df2b9b4f0cdad72fa9 + depends: + - __linux + - importlib_metadata >=4.11.4 + - importlib_resources + - jaraco.classes + - jaraco.context + - jaraco.functools + - jeepney >=0.4.2 + - python >=3.8 + - secretstorage >=3.2 + license: MIT + license_family: MIT + size: 36643 + timestamp: 1722727332948 +- kind: conda + name: keyutils + version: 1.6.1 + build: h166bdaf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + license: LGPL-2.1-or-later + purls: [] + size: 117831 + timestamp: 1646151697040 +- kind: conda + name: krb5 + version: 1.21.3 + build: h237132a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 1155530 + timestamp: 1719463474401 +- kind: conda + name: krb5 + version: 1.21.3 + build: h37d8d59_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + sha256: 83b52685a4ce542772f0892a0f05764ac69d57187975579a0835ff255ae3ef9c + md5: d4765c524b1d91567886bde656fb514b + depends: + - __osx >=10.13 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 1185323 + timestamp: 1719463492984 +- kind: conda + name: krb5 + version: 1.21.3 + build: h659f571_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 1370023 + timestamp: 1719463201255 +- kind: conda + name: krb5 + version: 1.21.3 + build: hdf4eb48_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + sha256: 18e8b3430d7d232dad132f574268f56b3eb1a19431d6d5de8c53c29e6c18fa81 + md5: 31aec030344e962fbd7dbbbbd68e60a9 + depends: + - openssl >=3.3.1,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 712034 + timestamp: 1719463874284 +- kind: conda + name: ld_impl_linux-64 + version: '2.40' + build: hf3520f5_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda + sha256: 764b6950aceaaad0c67ef925417594dd14cd2e22fff864aeef455ac259263d15 + md5: b80f2f396ca2c28b8c14c437a4ed1e74 + constrains: + - binutils_impl_linux-64 2.40 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 707602 + timestamp: 1718625640445 +- kind: conda + name: lerc + version: 4.0.0 + build: h27087fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 281798 + timestamp: 1657977462600 +- kind: conda + name: lerc + version: 4.0.0 + build: h63175ca_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + sha256: f4f39d7f6a2f9b407f8fb567a6c25755270421731d70f0ff331f5de4fa367488 + md5: 1900cb3cab5055833cfddb0ba233b074 + depends: + - vc >=14.2,<15 + - vs2015_runtime >=14.29.30037 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 194365 + timestamp: 1657977692274 +- kind: conda + name: lerc + version: 4.0.0 + build: h9a09cb3_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 215721 + timestamp: 1657977558796 +- kind: conda + name: lerc + version: 4.0.0 + build: hb486fe8_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + sha256: e41790fc0f4089726369b3c7f813117bbc14b533e0ed8b94cf75aba252e82497 + md5: f9d6a4c82889d5ecedec1d90eb673c55 + depends: + - libcxx >=13.0.1 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 290319 + timestamp: 1657977526749 +- kind: conda + name: libabseil + version: '20240116.2' + build: cxx17_h00cdb27_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240116.2-cxx17_h00cdb27_1.conda + sha256: a9517c8683924f4b3b9380cdaa50fdd2009cd8d5f3918c92f64394238189d3cb + md5: f16963d88aed907af8b90878b8d8a05c + depends: + - __osx >=11.0 + - libcxx >=16 + constrains: + - abseil-cpp =20240116.2 + - libabseil-static =20240116.2=cxx17* + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1136123 + timestamp: 1720857649214 +- kind: conda + name: libabseil + version: '20240116.2' + build: cxx17_he02047a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_he02047a_1.conda + sha256: 945396726cadae174a661ce006e3f74d71dbd719219faf7cc74696b267f7b0b5 + md5: c48fc56ec03229f294176923c3265c05 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + constrains: + - abseil-cpp =20240116.2 + - libabseil-static =20240116.2=cxx17* + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1264712 + timestamp: 1720857377573 +- kind: conda + name: libabseil + version: '20240116.2' + build: cxx17_he0c23c2_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libabseil-20240116.2-cxx17_he0c23c2_1.conda + sha256: aafa7993698420ef786c145f660e6822139c02cf9230fbad43efff6d4828defc + md5: 19725e54b7f996e0a5748ec5e9e37ae9 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - libabseil-static =20240116.2=cxx17* + - abseil-cpp =20240116.2 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1802886 + timestamp: 1720857653184 +- kind: conda + name: libabseil + version: '20240116.2' + build: cxx17_hf036a51_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240116.2-cxx17_hf036a51_1.conda + sha256: 396d18f39d5207ecae06fddcbc6e5f20865718939bc4e0ea9729e13952833aac + md5: d6c78ca84abed3fea5f308ac83b8f54e + depends: + - __osx >=10.13 + - libcxx >=16 + constrains: + - abseil-cpp =20240116.2 + - libabseil-static =20240116.2=cxx17* + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1124364 + timestamp: 1720857589333 +- kind: conda + name: libarrow + version: 17.0.0 + build: h009c9d4_6_cpu + build_number: 6 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libarrow-17.0.0-h009c9d4_6_cpu.conda + sha256: e62b0cfea70709ed3c3ac1edcc0061b900b8aea6f8c3c5f3604b4f2601fcbd87 + md5: 6ce383bedf3b6a791de55d7e96b2076e + depends: + - aws-crt-cpp >=0.27.5,<0.27.6.0a0 + - aws-sdk-cpp >=1.11.379,<1.11.380.0a0 + - bzip2 >=1.0.8,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl >=8.9.1,<9.0a0 + - libgoogle-cloud >=2.28.0,<2.29.0a0 + - libgoogle-cloud-storage >=2.28.0,<2.29.0a0 + - libre2-11 >=2023.9.1,<2024.0a0 + - libutf8proc >=2.8.0,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - orc >=2.0.1,<2.0.2.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5090383 + timestamp: 1723430662230 +- kind: conda + name: libarrow + version: 17.0.0 + build: h03aeac6_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-17.0.0-h03aeac6_6_cpu.conda + sha256: 0ac58206b1b3bbe8acc897797287c856a10e750275649637b971454b15ecb386 + md5: c0d3c973e49d549ba10003c3c985f027 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.27.5,<0.27.6.0a0 + - aws-sdk-cpp >=1.11.379,<1.11.380.0a0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - azure-identity-cpp >=1.8.0,<1.8.1.0a0 + - azure-storage-blobs-cpp >=12.12.0,<12.12.1.0a0 + - azure-storage-files-datalake-cpp >=12.11.0,<12.11.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc-ng >=12 + - libgoogle-cloud >=2.28.0,<2.29.0a0 + - libgoogle-cloud-storage >=2.28.0,<2.29.0a0 + - libre2-11 >=2023.9.1,<2024.0a0 + - libstdcxx-ng >=12 + - libutf8proc >=2.8.0,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - orc >=2.0.1,<2.0.2.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8400631 + timestamp: 1723429997611 +- kind: conda + name: libarrow + version: 17.0.0 + build: h1496d7c_6_cpu + build_number: 6 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-17.0.0-h1496d7c_6_cpu.conda + sha256: 551c73b98994c56977e2a94f439d524b710352b1bdbe152655fd21ed7f9e562e + md5: 764aeafb42c819130b95153b256402c0 + depends: + - __osx >=10.13 + - aws-crt-cpp >=0.27.5,<0.27.6.0a0 + - aws-sdk-cpp >=1.11.379,<1.11.380.0a0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - azure-identity-cpp >=1.8.0,<1.8.1.0a0 + - azure-storage-blobs-cpp >=12.12.0,<12.12.1.0a0 + - azure-storage-files-datalake-cpp >=12.11.0,<12.11.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=17 + - libgoogle-cloud >=2.28.0,<2.29.0a0 + - libgoogle-cloud-storage >=2.28.0,<2.29.0a0 + - libre2-11 >=2023.9.1,<2024.0a0 + - libutf8proc >=2.8.0,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - orc >=2.0.1,<2.0.2.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5908937 + timestamp: 1723429987567 +- kind: conda + name: libarrow + version: 17.0.0 + build: h8291d6d_6_cpu + build_number: 6 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-17.0.0-h8291d6d_6_cpu.conda + sha256: 3911592a72dcc3534d8ce99a63d15a266142ca9cf046131fe38460be35417792 + md5: 1f634c859e8112993d59d37ae0dbd16b + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.27.5,<0.27.6.0a0 + - aws-sdk-cpp >=1.11.379,<1.11.380.0a0 + - azure-core-cpp >=1.13.0,<1.13.1.0a0 + - azure-identity-cpp >=1.8.0,<1.8.1.0a0 + - azure-storage-blobs-cpp >=12.12.0,<12.12.1.0a0 + - azure-storage-files-datalake-cpp >=12.11.0,<12.11.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=17 + - libgoogle-cloud >=2.28.0,<2.29.0a0 + - libgoogle-cloud-storage >=2.28.0,<2.29.0a0 + - libre2-11 >=2023.9.1,<2024.0a0 + - libutf8proc >=2.8.0,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - orc >=2.0.1,<2.0.2.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5298967 + timestamp: 1723429696991 +- kind: conda + name: libarrow-acero + version: 17.0.0 + build: hac325c4_6_cpu + build_number: 6 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-17.0.0-hac325c4_6_cpu.conda + sha256: 9f288b7242c3ef7d32d5fa4375cff03ef685df9fc8a79992c6caede52308462f + md5: 4a48f91dcc0ef01a1d83a5c57d378ca7 + depends: + - __osx >=10.13 + - libarrow 17.0.0 h1496d7c_6_cpu + - libcxx >=17 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 514942 + timestamp: 1723430082254 +- kind: conda + name: libarrow-acero + version: 17.0.0 + build: he02047a_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-17.0.0-he02047a_6_cpu.conda + sha256: fdaafc46c8df76efadb1a74e31ee2465da21eef07f9e36e229ff068cdbd64311 + md5: f38e5ee8bb811b2a465598a4bfc41e22 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 17.0.0 h03aeac6_6_cpu + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 598611 + timestamp: 1723430032320 +- kind: conda + name: libarrow-acero + version: 17.0.0 + build: he0c23c2_6_cpu + build_number: 6 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-17.0.0-he0c23c2_6_cpu.conda + sha256: dc013819b7b4c530cb880729c193f2eb8b0daf85cc8779aa0c0c859d61259716 + md5: f71a0a238f7ae99da27a1767c1f09fe5 + depends: + - libarrow 17.0.0 h009c9d4_6_cpu + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 444954 + timestamp: 1723430738912 +- kind: conda + name: libarrow-acero + version: 17.0.0 + build: hf9b8971_6_cpu + build_number: 6 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-17.0.0-hf9b8971_6_cpu.conda + sha256: 6681ced7687793f916ece74d29ef603b27a5a6fac28ce70410c6102d35a6d56c + md5: cde308fe668d56a1f75766692ea2c98c + depends: + - __osx >=11.0 + - libarrow 17.0.0 h8291d6d_6_cpu + - libcxx >=17 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 477328 + timestamp: 1723429779357 +- kind: conda + name: libarrow-dataset + version: 17.0.0 + build: hac325c4_6_cpu + build_number: 6 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-17.0.0-hac325c4_6_cpu.conda + sha256: ad5687337f267d59b231a3677df866943f7140ea404cacb69435827f077ec523 + md5: 90958b9af7ecd33d9a7ebed053fa960c + depends: + - __osx >=10.13 + - libarrow 17.0.0 h1496d7c_6_cpu + - libarrow-acero 17.0.0 hac325c4_6_cpu + - libcxx >=17 + - libparquet 17.0.0 h2adadb3_6_cpu + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 506287 + timestamp: 1723430870334 +- kind: conda + name: libarrow-dataset + version: 17.0.0 + build: he02047a_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-17.0.0-he02047a_6_cpu.conda + sha256: 3b17f7e3ec3ea9df53274b5f3d8a5f6d1aa783e706ac81ccbd6c095a712505d4 + md5: 94b84127d9f697b4ac0eba53e58583b6 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 17.0.0 h03aeac6_6_cpu + - libarrow-acero 17.0.0 he02047a_6_cpu + - libgcc-ng >=12 + - libparquet 17.0.0 h9e5060d_6_cpu + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 580028 + timestamp: 1723430095085 +- kind: conda + name: libarrow-dataset + version: 17.0.0 + build: he0c23c2_6_cpu + build_number: 6 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-17.0.0-he0c23c2_6_cpu.conda + sha256: e1e6c398d787232592757180c2c97b98a0e995e5235b462eee61faa29d361207 + md5: 8311a2a25792a51f5201e892bbb591a0 + depends: + - libarrow 17.0.0 h009c9d4_6_cpu + - libarrow-acero 17.0.0 he0c23c2_6_cpu + - libparquet 17.0.0 h178134c_6_cpu + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 427111 + timestamp: 1723430968425 +- kind: conda + name: libarrow-dataset + version: 17.0.0 + build: hf9b8971_6_cpu + build_number: 6 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-17.0.0-hf9b8971_6_cpu.conda + sha256: 22f306cb02945b35186e9a08b31509b5a60f63b72c38c0ecc4c2e2588f38832a + md5: 461e442fb4d07e997273020e4320a241 + depends: + - __osx >=11.0 + - libarrow 17.0.0 h8291d6d_6_cpu + - libarrow-acero 17.0.0 hf9b8971_6_cpu + - libcxx >=17 + - libparquet 17.0.0 h56531a6_6_cpu + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 482935 + timestamp: 1723430672392 +- kind: conda + name: libarrow-substrait + version: 17.0.0 + build: h1f0e801_6_cpu + build_number: 6 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-17.0.0-h1f0e801_6_cpu.conda + sha256: 52271693df421d20bef2344c4702dc35ce2f5fad273f95ea6f68501c2e519c88 + md5: f108758db606767340a8ce3286d59581 + depends: + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libarrow 17.0.0 h009c9d4_6_cpu + - libarrow-acero 17.0.0 he0c23c2_6_cpu + - libarrow-dataset 17.0.0 he0c23c2_6_cpu + - libprotobuf >=4.25.3,<4.25.4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 382074 + timestamp: 1723431071255 +- kind: conda + name: libarrow-substrait + version: 17.0.0 + build: hba007a9_6_cpu + build_number: 6 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-17.0.0-hba007a9_6_cpu.conda + sha256: 169f3826f0d08fa1e71e329c62ff8eed8bc2973a8643f9a696b036931cb77efc + md5: 0e5c75e85eb805bd2e4e1000f2e27af4 + depends: + - __osx >=10.13 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libarrow 17.0.0 h1496d7c_6_cpu + - libarrow-acero 17.0.0 hac325c4_6_cpu + - libarrow-dataset 17.0.0 hac325c4_6_cpu + - libcxx >=17 + - libprotobuf >=4.25.3,<4.25.4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 477934 + timestamp: 1723430997484 +- kind: conda + name: libarrow-substrait + version: 17.0.0 + build: hbf8b706_6_cpu + build_number: 6 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-17.0.0-hbf8b706_6_cpu.conda + sha256: cec78c57992fed4a4401ffdc8d3c01c7f6f823a6e282587c651ef773db0662bb + md5: 8329ea67db9e37517efa716563ac66e3 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libarrow 17.0.0 h8291d6d_6_cpu + - libarrow-acero 17.0.0 hf9b8971_6_cpu + - libarrow-dataset 17.0.0 hf9b8971_6_cpu + - libcxx >=17 + - libprotobuf >=4.25.3,<4.25.4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 466500 + timestamp: 1723430818431 +- kind: conda + name: libarrow-substrait + version: 17.0.0 + build: hc9a23c6_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-17.0.0-hc9a23c6_6_cpu.conda + sha256: 5455c7cad87df0ee6c50dcf7a1dd7fa62ed8677fe042c98f8464007824c685c0 + md5: f6fd0b0822f00c963b31ac3fec2b6905 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libarrow 17.0.0 h03aeac6_6_cpu + - libarrow-acero 17.0.0 he02047a_6_cpu + - libarrow-dataset 17.0.0 he02047a_6_cpu + - libgcc-ng >=12 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 546500 + timestamp: 1723430124399 +- kind: conda + name: libblas + version: 3.9.0 + build: 22_osx64_openblas + build_number: 22 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-22_osx64_openblas.conda + sha256: d72060239f904b3a81d2329efcf84dc62c2dfd66dbc4efc8dcae1afdf8f02b59 + md5: b80966a8c8dd0b531f8e65f709d732e8 + depends: + - libopenblas >=0.3.27,<0.3.28.0a0 + - libopenblas >=0.3.27,<1.0a0 + constrains: + - liblapacke 3.9.0 22_osx64_openblas + - blas * openblas + - libcblas 3.9.0 22_osx64_openblas + - liblapack 3.9.0 22_osx64_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14749 + timestamp: 1712542279018 +- kind: conda + name: libblas + version: 3.9.0 + build: 23_linux64_openblas + build_number: 23 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda + sha256: edb1cee5da3ac4936940052dcab6969673ba3874564f90f5110f8c11eed789c2 + md5: 96c8450a40aa2b9733073a9460de972c + depends: + - libopenblas >=0.3.27,<0.3.28.0a0 + - libopenblas >=0.3.27,<1.0a0 + constrains: + - liblapacke 3.9.0 23_linux64_openblas + - libcblas 3.9.0 23_linux64_openblas + - liblapack 3.9.0 23_linux64_openblas + - blas * openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14880 + timestamp: 1721688759937 +- kind: conda + name: libblas + version: 3.9.0 + build: 23_osxarm64_openblas + build_number: 23 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-23_osxarm64_openblas.conda + sha256: 1c30da861e306a25fac8cd30ce0c1b31c9238d04e7768c381cf4d431b4361e6c + md5: acae9191e8772f5aff48ab5232d4d2a3 + depends: + - libopenblas >=0.3.27,<0.3.28.0a0 + - libopenblas >=0.3.27,<1.0a0 + constrains: + - liblapack 3.9.0 23_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 23_osxarm64_openblas + - libcblas 3.9.0 23_osxarm64_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 15103 + timestamp: 1721688997980 +- kind: conda + name: libblas + version: 3.9.0 + build: 23_win64_mkl + build_number: 23 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-23_win64_mkl.conda + sha256: fd52eb0ec4d0ca5727317dd608c41dacc8ccfc7e21d943b7aafbbf10ae28c97c + md5: 693407a31c27e70c750b5ae153251d9a + depends: + - mkl 2024.1.0 h66d3029_694 + constrains: + - blas * mkl + - liblapack 3.9.0 23_win64_mkl + - libcblas 3.9.0 23_win64_mkl + - liblapacke 3.9.0 23_win64_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5192100 + timestamp: 1721689573083 +- kind: conda + name: libbrotlicommon + version: 1.1.0 + build: h0dc2134_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h0dc2134_1.conda + sha256: f57c57c442ef371982619f82af8735f93a4f50293022cfd1ffaf2ff89c2e0b2a + md5: 9e6c31441c9aa24e41ace40d6151aab6 + license: MIT + license_family: MIT + purls: [] + size: 67476 + timestamp: 1695990207321 +- kind: conda + name: libbrotlicommon + version: 1.1.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hb547adb_1.conda + sha256: 556f0fddf4bd4d35febab404d98cb6862ce3b7ca843e393da0451bfc4654cf07 + md5: cd68f024df0304be41d29a9088162b02 + license: MIT + license_family: MIT + purls: [] + size: 68579 + timestamp: 1695990426128 +- kind: conda + name: libbrotlicommon + version: 1.1.0 + build: hcfcfb64_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.1.0-hcfcfb64_1.conda + sha256: f75fed29b0cc503d1b149a4945eaa32df56e19da5e2933de29e8f03947203709 + md5: f77f319fb82980166569e1280d5b2864 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 70598 + timestamp: 1695990405143 +- kind: conda + name: libbrotlicommon + version: 1.1.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda + sha256: 40f29d1fab92c847b083739af86ad2f36d8154008cf99b64194e4705a1725d78 + md5: aec6c91c7371c26392a06708a73c70e5 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 69403 + timestamp: 1695990007212 +- kind: conda + name: libbrotlidec + version: 1.1.0 + build: h0dc2134_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h0dc2134_1.conda + sha256: b11939c4c93c29448660ab5f63273216969d1f2f315dd9be60f3c43c4e61a50c + md5: 9ee0bab91b2ca579e10353738be36063 + depends: + - libbrotlicommon 1.1.0 h0dc2134_1 + license: MIT + license_family: MIT + purls: [] + size: 30327 + timestamp: 1695990232422 +- kind: conda + name: libbrotlidec + version: 1.1.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hb547adb_1.conda + sha256: c1c85937828ad3bc434ac60b7bcbde376f4d2ea4ee42d15d369bf2a591775b4a + md5: ee1a519335cc10d0ec7e097602058c0a + depends: + - libbrotlicommon 1.1.0 hb547adb_1 + license: MIT + license_family: MIT + purls: [] + size: 28928 + timestamp: 1695990463780 +- kind: conda + name: libbrotlidec + version: 1.1.0 + build: hcfcfb64_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.1.0-hcfcfb64_1.conda + sha256: 1b352ee05931ea24c11cd4a994d673890fd1cc690c21e023e736bdaac2632e93 + md5: 19ce3e1dacc7912b3d6ff40690ba9ae0 + depends: + - libbrotlicommon 1.1.0 hcfcfb64_1 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 32788 + timestamp: 1695990443165 +- kind: conda + name: libbrotlidec + version: 1.1.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda + sha256: 86fc861246fbe5ad85c1b6b3882aaffc89590a48b42d794d3d5c8e6d99e5f926 + md5: f07002e225d7a60a694d42a7bf5ff53f + depends: + - libbrotlicommon 1.1.0 hd590300_1 + - libgcc-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 32775 + timestamp: 1695990022788 +- kind: conda + name: libbrotlienc + version: 1.1.0 + build: h0dc2134_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h0dc2134_1.conda + sha256: bc964c23e1a60ca1afe7bac38a9c1f2af3db4a8072c9f2eac4e4de537a844ac7 + md5: 8a421fe09c6187f0eb5e2338a8a8be6d + depends: + - libbrotlicommon 1.1.0 h0dc2134_1 + license: MIT + license_family: MIT + purls: [] + size: 299092 + timestamp: 1695990259225 +- kind: conda + name: libbrotlienc + version: 1.1.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hb547adb_1.conda + sha256: 690dfc98e891ee1871c54166d30f6e22edfc2d7d6b29e7988dde5f1ce271c81a + md5: d7e077f326a98b2cc60087eaff7c730b + depends: + - libbrotlicommon 1.1.0 hb547adb_1 + license: MIT + license_family: MIT + purls: [] + size: 280943 + timestamp: 1695990509392 +- kind: conda + name: libbrotlienc + version: 1.1.0 + build: hcfcfb64_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.1.0-hcfcfb64_1.conda + sha256: eae6b76154e594c6d211160c6d1aeed848672618152a562e0eabdfa641d34aca + md5: 71e890a0b361fd58743a13f77e1506b7 + depends: + - libbrotlicommon 1.1.0 hcfcfb64_1 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 246515 + timestamp: 1695990479484 +- kind: conda + name: libbrotlienc + version: 1.1.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda + sha256: f751b8b1c4754a2a8dfdc3b4040fa7818f35bbf6b10e905a47d3a194b746b071 + md5: 5fc11c6020d421960607d821310fcd4d + depends: + - libbrotlicommon 1.1.0 hd590300_1 + - libgcc-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 282523 + timestamp: 1695990038302 +- kind: conda + name: libcblas + version: 3.9.0 + build: 22_osx64_openblas + build_number: 22 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-22_osx64_openblas.conda + sha256: 6a2ba9198e2320c3e22fe3d121310cf8a8ac663e94100c5693b34523fcb3cc04 + md5: b9fef82772330f61b2b0201c72d2c29b + depends: + - libblas 3.9.0 22_osx64_openblas + constrains: + - liblapacke 3.9.0 22_osx64_openblas + - blas * openblas + - liblapack 3.9.0 22_osx64_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14636 + timestamp: 1712542311437 +- kind: conda + name: libcblas + version: 3.9.0 + build: 23_linux64_openblas + build_number: 23 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda + sha256: 3e7a3236e7e03e308e1667d91d0aa70edd0cba96b4b5563ef4adde088e0881a5 + md5: eede29b40efa878cbe5bdcb767e97310 + depends: + - libblas 3.9.0 23_linux64_openblas + constrains: + - liblapacke 3.9.0 23_linux64_openblas + - liblapack 3.9.0 23_linux64_openblas + - blas * openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14798 + timestamp: 1721688767584 +- kind: conda + name: libcblas + version: 3.9.0 + build: 23_osxarm64_openblas + build_number: 23 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-23_osxarm64_openblas.conda + sha256: c39d944909d0608bd0333398be5e0051045c9451bfd6cc6320732d33375569c8 + md5: bad6ee9b7d5584efc2bc5266137b5f0d + depends: + - libblas 3.9.0 23_osxarm64_openblas + constrains: + - liblapack 3.9.0 23_osxarm64_openblas + - liblapacke 3.9.0 23_osxarm64_openblas + - blas * openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14991 + timestamp: 1721689017803 +- kind: conda + name: libcblas + version: 3.9.0 + build: 23_win64_mkl + build_number: 23 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-23_win64_mkl.conda + sha256: 80b471a22affadc322006399209e1d12eb4ab4e3125ed6d01b4031e09de16753 + md5: 7ffb5b336cefd2e6d1e00ac1f7c9f2c9 + depends: + - libblas 3.9.0 23_win64_mkl + constrains: + - blas * mkl + - liblapack 3.9.0 23_win64_mkl + - liblapacke 3.9.0 23_win64_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5191981 + timestamp: 1721689628480 +- kind: conda + name: libcrc32c + version: 1.1.2 + build: h0e60522_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libcrc32c-1.1.2-h0e60522_0.tar.bz2 + sha256: 75e60fbe436ba8a11c170c89af5213e8bec0418f88b7771ab7e3d9710b70c54e + md5: cd4cc2d0c610c8cb5419ccc979f2d6ce + depends: + - vc >=14.1,<15.0a0 + - vs2015_runtime >=14.16.27012 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 25694 + timestamp: 1633684287072 +- kind: conda + name: libcrc32c + version: 1.1.2 + build: h9c3ff4c_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20440 + timestamp: 1633683576494 +- kind: conda + name: libcrc32c + version: 1.1.2 + build: hbdafb3b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18765 + timestamp: 1633683992603 +- kind: conda + name: libcrc32c + version: 1.1.2 + build: he49afe7_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2 + sha256: 3043869ac1ee84554f177695e92f2f3c2c507b260edad38a0bf3981fce1632ff + md5: 23d6d5a69918a438355d7cbc4c3d54c9 + depends: + - libcxx >=11.1.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20128 + timestamp: 1633683906221 +- kind: conda + name: libcurl + version: 8.9.1 + build: h18fefc2_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.9.1-h18fefc2_0.conda + sha256: 024be133aed5f100c0b222761e747cc27a2bdf94af51947ad5f70e88cf824988 + md5: 099a1016d23baa4f41148a985351a7a8 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libssh2 >=1.11.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: curl + license_family: MIT + purls: [] + size: 339298 + timestamp: 1722440239161 +- kind: conda + name: libcurl + version: 8.9.1 + build: hdb1bdb2_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.9.1-hdb1bdb2_0.conda + sha256: 0ba60f83709068e9ec1ab543af998cb5a201c8379c871205447684a34b5abfd8 + md5: 7da1d242ca3591e174a3c7d82230d3c0 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc-ng >=12 + - libnghttp2 >=1.58.0,<2.0a0 + - libssh2 >=1.11.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: curl + license_family: MIT + purls: [] + size: 416057 + timestamp: 1722439924963 +- kind: conda + name: libcurl + version: 8.9.1 + build: hfcf2730_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.9.1-hfcf2730_0.conda + sha256: a7ce066fbb2d34f7948d8e5da30d72ff01f0a5bcde05ea46fa2d647eeedad3a7 + md5: 6ea09f173c46d135ee6d6845fe50a9c0 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.58.0,<2.0a0 + - libssh2 >=1.11.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: curl + license_family: MIT + purls: [] + size: 397060 + timestamp: 1722440158491 +- kind: conda + name: libcurl + version: 8.9.1 + build: hfd8ffcc_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.9.1-hfd8ffcc_0.conda + sha256: 4d6006c866844a39fb835436a48407f54f2310111a6f1d3e89efb16cf5c4d81b + md5: be0f46c6362775504d8894bd788a45b2 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.58.0,<2.0a0 + - libssh2 >=1.11.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: curl + license_family: MIT + purls: [] + size: 374937 + timestamp: 1722440523552 +- kind: conda + name: libcxx + version: 18.1.8 + build: h5a72898_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-18.1.8-h5a72898_2.conda + sha256: ed8d2977f87ca6221d17eb1b9272db5766d86d51c7fcb6135e5cf81aee516c8f + md5: 2d8d36fada9497ebc35894189fb52b7a + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 1217224 + timestamp: 1722895989109 +- kind: conda + name: libcxx + version: 18.1.8 + build: heced48a_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libcxx-18.1.8-heced48a_2.conda + sha256: e4df0dfd5fcc1e4ece36fb6b09f44436584df961c5cdbf328581522ff8d033b6 + md5: 8c8198f9e93fcc0fd359ff37b4a8cd2d + depends: + - __osx >=10.13 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 1221836 + timestamp: 1722895766052 +- kind: conda + name: libdeflate + version: '1.21' + build: h2466b09_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.21-h2466b09_0.conda + sha256: ebb21b910164d97dc23be83ba29a8004b9bba7536dc850c6d8b00bbb84259e78 + md5: 4ebe2206ebf4bf38f6084ad836110361 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 155801 + timestamp: 1722820571739 +- kind: conda + name: libdeflate + version: '1.21' + build: h4bc722e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.21-h4bc722e_0.conda + sha256: 728c24ce835700bfdfdf106bf04233fdb040a61ca4ecfd3f41b46fa90cd4f971 + md5: 36ce76665bf67f5aac36be7a0d21b7f3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 71163 + timestamp: 1722820138782 +- kind: conda + name: libdeflate + version: '1.21' + build: h99b78c6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.21-h99b78c6_0.conda + sha256: 243ca6d733954df9522eb9da24f5fe58da7ac19a2ca9438fd4abef5bb2cd1f83 + md5: 67d666c1516be5a023c3aaa85867099b + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + size: 54533 + timestamp: 1722820240854 +- kind: conda + name: libdeflate + version: '1.21' + build: hfdf4475_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.21-hfdf4475_0.conda + sha256: 1defb3e5243a74a9ef64de2a47812f524664e46ca9dbecb8d7c746cb1779038e + md5: 88409b23a5585c15d52de0073f3c9c61 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: [] + size: 70570 + timestamp: 1722820232914 +- kind: conda + name: libedit + version: 3.1.20191231 + build: h0678c8f_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 + sha256: dbd3c3f2eca1d21c52e4c03b21930bbce414c4592f8ce805801575b9e9256095 + md5: 6016a8a1d0e63cac3de2c352cd40208b + depends: + - ncurses >=6.2,<7.0.0a0 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 105382 + timestamp: 1597616576726 +- kind: conda + name: libedit + version: 3.1.20191231 + build: hc8eb9b7_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + sha256: 3912636197933ecfe4692634119e8644904b41a58f30cad9d1fc02f6ba4d9fca + md5: 30e4362988a2623e9eb34337b83e01f9 + depends: + - ncurses >=6.2,<7.0.0a0 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 96607 + timestamp: 1597616630749 +- kind: conda + name: libedit + version: 3.1.20191231 + build: he28a2e2_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf + md5: 4d331e44109e3f0e19b4cb8f9b82f3e1 + depends: + - libgcc-ng >=7.5.0 + - ncurses >=6.2,<7.0.0a0 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 123878 + timestamp: 1597616541093 +- kind: conda + name: libev + version: '4.33' + build: h10d778d_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + sha256: 0d238488564a7992942aa165ff994eca540f687753b4f0998b29b4e4d030ff43 + md5: 899db79329439820b7e8f8de41bca902 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 106663 + timestamp: 1702146352558 +- kind: conda + name: libev + version: '4.33' + build: h93a5062_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107458 + timestamp: 1702146414478 +- kind: conda + name: libev + version: '4.33' + build: hd590300_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 112766 + timestamp: 1702146165126 +- kind: conda + name: libevent + version: 2.1.12 + build: h2757513_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 368167 + timestamp: 1685726248899 +- kind: conda + name: libevent + version: 2.1.12 + build: h3671451_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libevent-2.1.12-h3671451_1.conda + sha256: af03882afb7a7135288becf340c2f0cf8aa8221138a9a7b108aaeb308a486da1 + md5: 25efbd786caceef438be46da78a7b5ef + depends: + - openssl >=3.1.1,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 410555 + timestamp: 1685726568668 +- kind: conda + name: libevent + version: 2.1.12 + build: ha90c15b_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda + sha256: e0bd9af2a29f8dd74309c0ae4f17a7c2b8c4b89f875ff1d6540c941eefbd07fb + md5: e38e467e577bd193a7d5de7c2c540b04 + depends: + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 372661 + timestamp: 1685726378869 +- kind: conda + name: libevent + version: 2.1.12 + build: hf998b51_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 427426 + timestamp: 1685725977222 +- kind: conda + name: libexpat + version: 2.6.2 + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda + sha256: 331bb7c7c05025343ebd79f86ae612b9e1e74d2687b8f3179faec234f986ce19 + md5: e7ba12deb7020dd080c6c70e7b6f6a3d + depends: + - libgcc-ng >=12 + constrains: + - expat 2.6.2.* + license: MIT + license_family: MIT + purls: [] + size: 73730 + timestamp: 1710362120304 +- kind: conda + name: libexpat + version: 2.6.2 + build: h63175ca_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.2-h63175ca_0.conda + sha256: 79f612f75108f3e16bbdc127d4885bb74729cf66a8702fca0373dad89d40c4b7 + md5: bc592d03f62779511d392c175dcece64 + constrains: + - expat 2.6.2.* + license: MIT + license_family: MIT + purls: [] + size: 139224 + timestamp: 1710362609641 +- kind: conda + name: libexpat + version: 2.6.2 + build: h73e2aa4_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.2-h73e2aa4_0.conda + sha256: a188a77b275d61159a32ab547f7d17892226e7dac4518d2c6ac3ac8fc8dfde92 + md5: 3d1d51c8f716d97c864d12f7af329526 + constrains: + - expat 2.6.2.* + license: MIT + license_family: MIT + purls: [] + size: 69246 + timestamp: 1710362566073 +- kind: conda + name: libexpat + version: 2.6.2 + build: hebf3989_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.2-hebf3989_0.conda + sha256: ba7173ac30064ea901a4c9fb5a51846dcc25512ceb565759be7d18cbf3e5415e + md5: e3cde7cfa87f82f7cb13d482d5e0ad09 + constrains: + - expat 2.6.2.* + license: MIT + license_family: MIT + purls: [] + size: 63655 + timestamp: 1710362424980 +- kind: conda + name: libffi + version: 3.4.2 + build: h0d85af4_5 + build_number: 5 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + sha256: 7a2d27a936ceee6942ea4d397f9c7d136f12549d86f7617e8b6bad51e01a941f + md5: ccb34fb14960ad8b125962d3d79b31a9 + license: MIT + license_family: MIT + purls: [] + size: 51348 + timestamp: 1636488394370 +- kind: conda + name: libffi + version: 3.4.2 + build: h3422bc3_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + license: MIT + license_family: MIT + purls: [] + size: 39020 + timestamp: 1636488587153 +- kind: conda + name: libffi + version: 3.4.2 + build: h7f98852_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + purls: [] + size: 58292 + timestamp: 1636488182923 +- kind: conda + name: libffi + version: 3.4.2 + build: h8ffe710_5 + build_number: 5 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + sha256: 1951ab740f80660e9bc07d2ed3aefb874d78c107264fd810f24a1a6211d4b1a5 + md5: 2c96d1b6915b408893f9472569dee135 + depends: + - vc >=14.1,<15.0a0 + - vs2015_runtime >=14.16.27012 + license: MIT + license_family: MIT + purls: [] + size: 42063 + timestamp: 1636489106777 +- kind: conda + name: libgcc-ng + version: 14.1.0 + build: h77fa898_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda + sha256: b8e869ac96591cda2704bf7e77a301025e405227791a0bddf14a3dac65125538 + md5: ca0fad6a41ddaef54a153b78eccb5037 + depends: + - _libgcc_mutex 0.1 conda_forge + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.1.0 h77fa898_0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 842109 + timestamp: 1719538896937 +- kind: conda + name: libgd + version: 2.3.3 + build: h085315d_10 + build_number: 10 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda + sha256: 301b6da73cef796766945299a3dea776728703298aac90827aa6bf15134bc03c + md5: ac0cda3730da6013715a0d9e8e677d83 + depends: + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libexpat >=2.6.2,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - xorg-libxpm >=3.5.17,<4.0a0 + license: GD + license_family: BSD + purls: [] + size: 344264 + timestamp: 1722928697150 +- kind: conda + name: libgd + version: 2.3.3 + build: h2e77e4f_10 + build_number: 10 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda + sha256: b5ae19078f96912058d0f96120bf56dae11a417178cfcf220219486778ef868d + md5: a87f68ea91c66e1a9fb515f6aeba6ba2 + depends: + - __osx >=10.13 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libexpat >=2.6.2,<3.0a0 + - libiconv >=1.17,<2.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + license: GD + license_family: BSD + purls: [] + size: 200456 + timestamp: 1722928713359 +- kind: conda + name: libgd + version: 2.3.3 + build: hac1b3a8_10 + build_number: 10 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda + sha256: d15beaa2e862a09526e704f22f7d0b7fa73b114b868106dd686e167b9d65558e + md5: c9e450ce5ced76f107c494fbd37325f5 + depends: + - __osx >=11.0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libexpat >=2.6.2,<3.0a0 + - libiconv >=1.17,<2.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + license: GD + license_family: BSD + purls: [] + size: 200309 + timestamp: 1722928354606 +- kind: conda + name: libgd + version: 2.3.3 + build: hd3e95f3_10 + build_number: 10 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hd3e95f3_10.conda + sha256: b0fa27d4d09fb24750c04e89dbd0aee898dc028bde99e62621065a9bde43efe8 + md5: 30ee3a29c84cf7b842a8c5828c4b7c13 + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libexpat >=2.6.2,<3.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + license: GD + license_family: BSD + purls: [] + size: 225113 + timestamp: 1722928278395 +- kind: conda + name: libgfortran + version: 5.0.0 + build: 13_2_0_h97931a8_3 + build_number: 3 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda + sha256: 4874422e567b68334705c135c17e5acdca1404de8255673ce30ad3510e00be0d + md5: 0b6e23a012ee7a9a5f6b244f5a92c1d5 + depends: + - libgfortran5 13.2.0 h2873a65_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 110106 + timestamp: 1707328956438 +- kind: conda + name: libgfortran + version: 5.0.0 + build: 13_2_0_hd922786_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 110233 + timestamp: 1707330749033 +- kind: conda + name: libgfortran-ng + version: 14.1.0 + build: h69a702a_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_0.conda + sha256: ef624dacacf97b2b0af39110b36e2fd3e39e358a1a6b7b21b85c9ac22d8ffed9 + md5: f4ca84fbd6d06b0a052fb2d5b96dde41 + depends: + - libgfortran5 14.1.0 hc5f4f2c_0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 49893 + timestamp: 1719538933879 +- kind: conda + name: libgfortran5 + version: 13.2.0 + build: h2873a65_3 + build_number: 3 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + sha256: da3db4b947e30aec7596a3ef92200d17e774cccbbf7efc47802529a4ca5ca31b + md5: e4fb4d23ec2870ff3c40d10afe305aec + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1571379 + timestamp: 1707328880361 +- kind: conda + name: libgfortran5 + version: 13.2.0 + build: hf226fd6_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 997381 + timestamp: 1707330687590 +- kind: conda + name: libgfortran5 + version: 14.1.0 + build: hc5f4f2c_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_0.conda + sha256: a67d66b1e60a8a9a9e4440cee627c959acb4810cb182e089a4b0729bfdfbdf90 + md5: 6456c2620c990cd8dde2428a27ba0bc5 + depends: + - libgcc-ng >=14.1.0 + constrains: + - libgfortran-ng 14.1.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1457561 + timestamp: 1719538909168 +- kind: conda + name: libglib + version: 2.80.3 + build: h315aac3_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda + sha256: 7470e664b780b91708bed356cc634874dfc3d6f17cbf884a1d6f5d6d59c09f91 + md5: b0143a3e98136a680b728fdf9b42a258 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=12 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.80.3 *_2 + license: LGPL-2.1-or-later + purls: [] + size: 3922900 + timestamp: 1723208802469 +- kind: conda + name: libglib + version: 2.80.3 + build: h59d46d9_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.80.3-h59d46d9_2.conda + sha256: 15cc86d7d91fb78a76e3e2b965e5d6e8b7c79cc4f4ec3322d48fb712d792eff6 + md5: 17ac2bac18ec707efc8575fae2f09990 + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - libiconv >=1.17,<2.0a0 + - libintl >=0.22.5,<1.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.80.3 *_2 + license: LGPL-2.1-or-later + purls: [] + size: 3632316 + timestamp: 1723209072976 +- kind: conda + name: libglib + version: 2.80.3 + build: h7025463_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libglib-2.80.3-h7025463_2.conda + sha256: 1461eb3b10814630acd1f3a11fc47dbb81c46a4f1f32ed389e3ae050a09c4903 + md5: b60894793e7e4a555027bfb4e4ed1d54 + depends: + - libffi >=3.4,<4.0a0 + - libiconv >=1.17,<2.0a0 + - libintl >=0.22.5,<1.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - glib 2.80.3 *_2 + license: LGPL-2.1-or-later + purls: [] + size: 3726738 + timestamp: 1723209368854 +- kind: conda + name: libglib + version: 2.80.3 + build: h736d271_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.80.3-h736d271_2.conda + sha256: 5543fbb3b1487ffd3a4acbb0b5322ab74ef48c68748fa2907fb47fb825a90bf8 + md5: 975e416ffec75b06cbf8532f5fc1a55e + depends: + - __osx >=10.13 + - libffi >=3.4,<4.0a0 + - libiconv >=1.17,<2.0a0 + - libintl >=0.22.5,<1.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.80.3 *_2 + license: LGPL-2.1-or-later + purls: [] + size: 3674504 + timestamp: 1723209150363 +- kind: conda + name: libgomp + version: 14.1.0 + build: h77fa898_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_0.conda + sha256: 7699df61a1f6c644b3576a40f54791561f2845983120477a16116b951c9cdb05 + md5: ae061a5ed5f05818acdf9adab72c146d + depends: + - _libgcc_mutex 0.1 conda_forge + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 456925 + timestamp: 1719538796073 +- kind: conda + name: libgoogle-cloud + version: 2.28.0 + build: h26d7fe4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.28.0-h26d7fe4_0.conda + sha256: d87b83d91a9fed749b80dea915452320598035949804db3be616b8c3d694c743 + md5: 2c51703b4d775f8943c08a361788131b + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libcurl >=8.9.1,<9.0a0 + - libgcc-ng >=12 + - libgrpc >=1.62.2,<1.63.0a0 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + constrains: + - libgoogle-cloud 2.28.0 *_0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1226849 + timestamp: 1723370075980 +- kind: conda + name: libgoogle-cloud + version: 2.28.0 + build: h5e7cea3_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-2.28.0-h5e7cea3_0.conda + sha256: 30c5eb3509d0a4b5418e58da7cda7cfee7d06b8759efaec1f544f7fcb54bcac0 + md5: 78a31d951ca2e524c6c223d865edd7ae + depends: + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libcurl >=8.9.1,<9.0a0 + - libgrpc >=1.62.2,<1.63.0a0 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - libgoogle-cloud 2.28.0 *_0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 14358 + timestamp: 1723371187491 +- kind: conda + name: libgoogle-cloud + version: 2.28.0 + build: h721cda5_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.28.0-h721cda5_0.conda + sha256: bf45c8d96cb69476814a674f59640178a6b7868d644351bd84e85e37a045795b + md5: c06aee3922ccde627583a5480a0c8445 + depends: + - __osx >=10.13 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libcurl >=8.9.1,<9.0a0 + - libcxx >=16 + - libgrpc >=1.62.2,<1.63.0a0 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - openssl >=3.3.1,<4.0a0 + constrains: + - libgoogle-cloud 2.28.0 *_0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 863685 + timestamp: 1723369321726 +- kind: conda + name: libgoogle-cloud + version: 2.28.0 + build: hfe08963_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.28.0-hfe08963_0.conda + sha256: 8ac585e360937aaf9f323e7414c710bf00eec6cf742c15b521fd502e6e3abf2b + md5: 68fb9b247b79e8ac3be37c2923a0cf8a + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240116.2,<20240117.0a0 + - libcurl >=8.9.1,<9.0a0 + - libcxx >=16 + - libgrpc >=1.62.2,<1.63.0a0 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - openssl >=3.3.1,<4.0a0 + constrains: + - libgoogle-cloud 2.28.0 *_0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 848880 + timestamp: 1723369224404 +- kind: conda + name: libgoogle-cloud-storage + version: 2.28.0 + build: h1466eeb_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.28.0-h1466eeb_0.conda + sha256: c62d08339e98fd56d65390df1184d8c2929de2713d431a910c3bb59750daccac + md5: 16874ac519f64d2199fab04fd9bd821d + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=16 + - libgoogle-cloud 2.28.0 hfe08963_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + purls: [] + size: 522700 + timestamp: 1723370053755 +- kind: conda + name: libgoogle-cloud-storage + version: 2.28.0 + build: h9e84e37_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.28.0-h9e84e37_0.conda + sha256: c55dfdd25ecc40383ba9829ae23cca95a0c48280794edc1280fdca2bc0342ef4 + md5: 6f55d1a6c280ffaddb741dc770cb817c + depends: + - __osx >=10.13 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=16 + - libgoogle-cloud 2.28.0 h721cda5_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + purls: [] + size: 542383 + timestamp: 1723370234408 +- kind: conda + name: libgoogle-cloud-storage + version: 2.28.0 + build: ha262f82_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.28.0-ha262f82_0.conda + sha256: 3237bc1ee88dab8d8fea0a1886e12a0262ff5e471944a234c314aa1da411588e + md5: 9e7960f0b9ab3895ef73d92477c47dae + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc-ng >=12 + - libgoogle-cloud 2.28.0 h26d7fe4_0 + - libstdcxx-ng >=12 + - libzlib >=1.3.1,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + purls: [] + size: 769298 + timestamp: 1723370220027 +- kind: conda + name: libgoogle-cloud-storage + version: 2.28.0 + build: he5eb982_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-storage-2.28.0-he5eb982_0.conda + sha256: 6318a81a6ef2a72b70c2ddfdadaa5ac79fce431ffa1125e7ca0f9286fa9d9342 + md5: c60153238c7fcdda236b51248220c4bb + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgoogle-cloud 2.28.0 h5e7cea3_0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 14259 + timestamp: 1723371607596 +- kind: conda + name: libgrpc + version: 1.62.2 + build: h15f2491_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda + sha256: 28241ed89335871db33cb6010e9ccb2d9e9b6bb444ddf6884f02f0857363c06a + md5: 8dabe607748cb3d7002ad73cd06f1325 + depends: + - c-ares >=1.28.1,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240116.1,<20240117.0a0 + - libgcc-ng >=12 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - libre2-11 >=2023.9.1,<2024.0a0 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.2.1,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.62.2 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7316832 + timestamp: 1713390645548 +- kind: conda + name: libgrpc + version: 1.62.2 + build: h384b2fc_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.62.2-h384b2fc_0.conda + sha256: 7c228040e7dac4e5e7e6935a4decf6bc2155cc05fcfb0811d25ccb242d0036ba + md5: 9421f67cf8b4bc976fe5d0c3ab42de18 + depends: + - __osx >=10.13 + - c-ares >=1.28.1,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240116.1,<20240117.0a0 + - libcxx >=16 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - libre2-11 >=2023.9.1,<2024.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.2.1,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.62.2 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5189573 + timestamp: 1713392887258 +- kind: conda + name: libgrpc + version: 1.62.2 + build: h5273850_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libgrpc-1.62.2-h5273850_0.conda + sha256: 08794bf5ea0e19ac23ed47d0f8699b5c05c46f14334b41f075e53bac9bbf97d8 + md5: 2939e4b5baecfeac1e8dee5c4f579f1a + depends: + - c-ares >=1.28.1,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240116.1,<20240117.0a0 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - libre2-11 >=2023.9.1,<2024.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.2.1,<4.0a0 + - re2 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - grpc-cpp =1.62.2 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 16097674 + timestamp: 1713392821679 +- kind: conda + name: libgrpc + version: 1.62.2 + build: h9c18a4f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.62.2-h9c18a4f_0.conda + sha256: d2c5b5a828f6f1242c11e8c91968f48f64446f7dd5cbfa1197545e465eb7d47a + md5: e624fc11026dbb84c549435eccd08623 + depends: + - c-ares >=1.28.1,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240116.1,<20240117.0a0 + - libcxx >=16 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - libre2-11 >=2023.9.1,<2024.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.2.1,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.62.2 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5016525 + timestamp: 1713392846329 +- kind: conda + name: libhwloc + version: 2.11.1 + build: default_h8125262_1000 + build_number: 1000 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.1-default_h8125262_1000.conda + sha256: 92728e292640186759d6dddae3334a1bc0b139740b736ffaeccb825fb8c07a2e + md5: 933bad6e4658157f1aec9b171374fde2 + depends: + - libxml2 >=2.12.7,<3.0a0 + - pthreads-win32 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2379689 + timestamp: 1720461835526 +- kind: conda + name: libiconv + version: '1.17' + build: h0d3ecfb_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 + md5: 69bda57310071cf6d2b86caf11573d2d + license: LGPL-2.1-only + purls: [] + size: 676469 + timestamp: 1702682458114 +- kind: conda + name: libiconv + version: '1.17' + build: hcfcfb64_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda + sha256: 5f844dd19b046d43174ad80c6ea75b5d504020e3b63cfbc4ace97b8730d35c7b + md5: e1eb10b1cca179f2baa3601e4efc8712 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.1-only + purls: [] + size: 636146 + timestamp: 1702682547199 +- kind: conda + name: libiconv + version: '1.17' + build: hd590300_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 + md5: d66573916ffcf376178462f1b61c941e + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + purls: [] + size: 705775 + timestamp: 1702682170569 +- kind: conda + name: libiconv + version: '1.17' + build: hd75f5a5_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + sha256: 23d4923baeca359423a7347c2ed7aaf48c68603df0cf8b87cc94a10b0d4e9a23 + md5: 6c3628d047e151efba7cf08c5e54d1ca + license: LGPL-2.1-only + purls: [] + size: 666538 + timestamp: 1702682713201 +- kind: conda + name: libintl + version: 0.22.5 + build: h5728263_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_2.conda + sha256: 1b95335af0a3e278b31e16667fa4e51d1c3f5e22d394d982539dfd5d34c5ae19 + md5: aa622c938af057adc119f8b8eecada01 + depends: + - libiconv >=1.17,<2.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 95745 + timestamp: 1712516102666 +- kind: conda + name: libintl + version: 0.22.5 + build: h5ff76d1_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-h5ff76d1_2.conda + sha256: 280aaef0ed84637ee869012ad9ad9ed208e068dd9b8cf010dafeea717dad7203 + md5: 3fb6774cb8cdbb93a6013b67bcf9716d + depends: + - libiconv >=1.17,<2.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 74307 + timestamp: 1712512790983 +- kind: conda + name: libintl + version: 0.22.5 + build: h8fbad5d_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8fbad5d_2.conda + sha256: 21bc79bdf34ffd20cb84d2a8bd82d7d0e2a1b94b9e72773f0fb207e5b4f1ff63 + md5: 3d216d0add050129007de3342be7b8c5 + depends: + - libiconv >=1.17,<2.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 81206 + timestamp: 1712512755390 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: h0dc2134_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + sha256: d9572fd1024adc374aae7c247d0f29fdf4b122f1e3586fe62acc18067f40d02f + md5: 72507f8e3961bc968af17435060b6dd6 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 579748 + timestamp: 1694475265912 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 547541 + timestamp: 1694475104253 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hcfcfb64_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda + sha256: 4e7808e3098b4b4ed7e287f63bb24f9045cc4d95bfd39f0db870fc2837d74dff + md5: 3f1b948619c45b1ca714d60c7389092c + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 822966 + timestamp: 1694475223854 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 618575 + timestamp: 1694474974816 +- kind: conda + name: liblapack + version: 3.9.0 + build: 22_osx64_openblas + build_number: 22 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-22_osx64_openblas.conda + sha256: e36744f3e780564d6748b5dd05e15ad6a1af9184cf32ab9d1304c13a6bc3e16b + md5: f21b282ff7ba14df6134a0fe6ab42b1b + depends: + - libblas 3.9.0 22_osx64_openblas + constrains: + - liblapacke 3.9.0 22_osx64_openblas + - blas * openblas + - libcblas 3.9.0 22_osx64_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14657 + timestamp: 1712542322711 +- kind: conda + name: liblapack + version: 3.9.0 + build: 23_linux64_openblas + build_number: 23 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda + sha256: 25c7aef86c8a1d9db0e8ee61aa7462ba3b46b482027a65d66eb83e3e6f949043 + md5: 2af0879961951987e464722fd00ec1e0 + depends: + - libblas 3.9.0 23_linux64_openblas + constrains: + - liblapacke 3.9.0 23_linux64_openblas + - libcblas 3.9.0 23_linux64_openblas + - blas * openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14823 + timestamp: 1721688775172 +- kind: conda + name: liblapack + version: 3.9.0 + build: 23_osxarm64_openblas + build_number: 23 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-23_osxarm64_openblas.conda + sha256: 13799a137ffc80786725e7e2820d37d4c0d59dbb76013a14c21771415b0a4263 + md5: 754ef44f72ab80fd14eaa789ac393a27 + depends: + - libblas 3.9.0 23_osxarm64_openblas + constrains: + - blas * openblas + - liblapacke 3.9.0 23_osxarm64_openblas + - libcblas 3.9.0 23_osxarm64_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14999 + timestamp: 1721689026268 +- kind: conda + name: liblapack + version: 3.9.0 + build: 23_win64_mkl + build_number: 23 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_mkl.conda + sha256: 4f4738602d26935f4d4b0154fb23d48c276c87413c3a5e05274809abfcbe1273 + md5: 3580796ab7b7d68143f45d4d94d866b7 + depends: + - libblas 3.9.0 23_win64_mkl + constrains: + - blas * mkl + - libcblas 3.9.0 23_win64_mkl + - liblapacke 3.9.0 23_win64_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5191980 + timestamp: 1721689666180 +- kind: conda + name: libnghttp2 + version: 1.58.0 + build: h47da74e_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda + sha256: 1910c5306c6aa5bcbd623c3c930c440e9c77a5a019008e1487810e3c1d3716cb + md5: 700ac6ea6d53d5510591c4344d5c989a + depends: + - c-ares >=1.23.0,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.2.0,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 631936 + timestamp: 1702130036271 +- kind: conda + name: libnghttp2 + version: 1.58.0 + build: h64cf6d3_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.58.0-h64cf6d3_1.conda + sha256: 412fd768e787e586602f8e9ea52bf089f3460fc630f6987f0cbd89b70e9a4380 + md5: faecc55c2a8155d9ff1c0ff9a0fef64f + depends: + - __osx >=10.9 + - c-ares >=1.23.0,<2.0a0 + - libcxx >=16.0.6 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.2.0,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 599736 + timestamp: 1702130398536 +- kind: conda + name: libnghttp2 + version: 1.58.0 + build: ha4dd798_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.58.0-ha4dd798_1.conda + sha256: fc97aaaf0c6d0f508be313d86c2705b490998d382560df24be918b8e977802cd + md5: 1813e066bfcef82de579a0be8a766df4 + depends: + - __osx >=10.9 + - c-ares >=1.23.0,<2.0a0 + - libcxx >=16.0.6 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.2.0,<4.0a0 + license: MIT + license_family: MIT + purls: [] + size: 565451 + timestamp: 1702130473930 +- kind: conda + name: libnsl + version: 2.0.1 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- kind: conda + name: libopenblas + version: 0.3.27 + build: openmp_h517c56d_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.27-openmp_h517c56d_1.conda + sha256: 46cfcc592b5255262f567cd098be3c61da6bca6c24d640e878dc8342b0f6d069 + md5: 71b8a34d70aa567a990162f327e81505 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=16.0.6 + constrains: + - openblas >=0.3.27,<0.3.28.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2925328 + timestamp: 1720425811743 +- kind: conda + name: libopenblas + version: 0.3.27 + build: openmp_h8869122_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.27-openmp_h8869122_1.conda + sha256: 83b0b9d3d09889b3648a81d2c18a2d78c405b03b115107941f0496a8b358ce6d + md5: c0798ad76ddd730dade6ff4dff66e0b5 + depends: + - __osx >=10.13 + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=16.0.6 + constrains: + - openblas >=0.3.27,<0.3.28.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6047513 + timestamp: 1720426759731 +- kind: conda + name: libopenblas + version: 0.3.27 + build: pthreads_hac2b453_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda + sha256: 714cb82d7c4620ea2635a92d3df263ab841676c9b183d0c01992767bb2451c39 + md5: ae05ece66d3924ac3d48b4aa3fa96cec + depends: + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=12.3.0 + constrains: + - openblas >=0.3.27,<0.3.28.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5563053 + timestamp: 1720426334043 +- kind: conda + name: libparquet + version: 17.0.0 + build: h178134c_6_cpu + build_number: 6 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libparquet-17.0.0-h178134c_6_cpu.conda + sha256: 89837895e0eb12d116ad534de249fa206d6cd1dcf766cd667960bb6bd8867b2d + md5: 616d244a1f783bc9230068d36841396a + depends: + - libarrow 17.0.0 h009c9d4_6_cpu + - libthrift >=0.19.0,<0.19.1.0a0 + - openssl >=3.3.1,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 805627 + timestamp: 1723430918018 +- kind: conda + name: libparquet + version: 17.0.0 + build: h2adadb3_6_cpu + build_number: 6 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libparquet-17.0.0-h2adadb3_6_cpu.conda + sha256: 39cdae62ff20f0fb97f765eb9bbd79e9d38a0a8756d0795831de377beb3d2f3b + md5: 415ebba1419705101613b32072e4ec64 + depends: + - __osx >=10.13 + - libarrow 17.0.0 h1496d7c_6_cpu + - libcxx >=17 + - libthrift >=0.19.0,<0.19.1.0a0 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 925246 + timestamp: 1723430806137 +- kind: conda + name: libparquet + version: 17.0.0 + build: h56531a6_6_cpu + build_number: 6 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-17.0.0-h56531a6_6_cpu.conda + sha256: c8baebb2733e3e07f0c24fff556e5aab62507fb0890a4928c5cc1b76a5ef41b3 + md5: ac6c79ecd756d1369c54b0b867ef994e + depends: + - __osx >=11.0 + - libarrow 17.0.0 h8291d6d_6_cpu + - libcxx >=17 + - libthrift >=0.19.0,<0.19.1.0a0 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 860869 + timestamp: 1723430615986 +- kind: conda + name: libparquet + version: 17.0.0 + build: h9e5060d_6_cpu + build_number: 6 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-17.0.0-h9e5060d_6_cpu.conda + sha256: 0e25c41f3dc82a9b55c21384d0218608065e6aad7c071f0fa6c312d8e2ab0acc + md5: 974d42b6c948038824ce56ae006c9237 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 17.0.0 h03aeac6_6_cpu + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libthrift >=0.19.0,<0.19.1.0a0 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1172037 + timestamp: 1723430079534 +- kind: conda + name: libpng + version: 1.6.43 + build: h091b4b1_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.43-h091b4b1_0.conda + sha256: 66c4713b07408398f2221229a1c1d5df57d65dc0902258113f2d9ecac4772495 + md5: 77e684ca58d82cae9deebafb95b1a2b8 + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: zlib-acknowledgement + purls: [] + size: 264177 + timestamp: 1708780447187 +- kind: conda + name: libpng + version: 1.6.43 + build: h19919ed_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.43-h19919ed_0.conda + sha256: 6ad31bf262a114de5bbe0c6ba73b29ed25239d0f46f9d59700310d2ea0b3c142 + md5: 77e398acc32617a0384553aea29e866b + depends: + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: zlib-acknowledgement + purls: [] + size: 347514 + timestamp: 1708780763195 +- kind: conda + name: libpng + version: 1.6.43 + build: h2797004_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda + sha256: 502f6ff148ac2777cc55ae4ade01a8fc3543b4ffab25c4e0eaa15f94e90dd997 + md5: 009981dd9cfcaa4dbfa25ffaed86bcae + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: zlib-acknowledgement + purls: [] + size: 288221 + timestamp: 1708780443939 +- kind: conda + name: libpng + version: 1.6.43 + build: h92b6c6a_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.43-h92b6c6a_0.conda + sha256: 13e646d24b5179e6b0a5ece4451a587d759f55d9a360b7015f8f96eff4524b8f + md5: 65dcddb15965c9de2c0365cb14910532 + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: zlib-acknowledgement + purls: [] + size: 268524 + timestamp: 1708780496420 +- kind: conda + name: libprotobuf + version: 4.25.3 + build: h08a7969_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-h08a7969_0.conda + sha256: 70e0eef046033af2e8d21251a785563ad738ed5281c74e21c31c457780845dcd + md5: 6945825cebd2aeb16af4c69d97c32c13 + depends: + - libabseil * cxx17* + - libabseil >=20240116.1,<20240117.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2811207 + timestamp: 1709514552541 +- kind: conda + name: libprotobuf + version: 4.25.3 + build: h4e4d658_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-4.25.3-h4e4d658_0.conda + sha256: 3f126769fb5820387d436370ad48600e05d038a28689fdf9988b64e1059947a8 + md5: 57b7ee4f1fd8573781cfdabaec4a7782 + depends: + - __osx >=10.13 + - libabseil * cxx17* + - libabseil >=20240116.1,<20240117.0a0 + - libcxx >=16 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2216001 + timestamp: 1709514908146 +- kind: conda + name: libprotobuf + version: 4.25.3 + build: h503648d_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libprotobuf-4.25.3-h503648d_0.conda + sha256: 5d4c5592be3994657ebf47e52f26b734cc50b0ea9db007d920e2e31762aac216 + md5: 4da7de0ba35777742edf67bf7a1075df + depends: + - libabseil * cxx17* + - libabseil >=20240116.1,<20240117.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5650604 + timestamp: 1709514804631 +- kind: conda + name: libprotobuf + version: 4.25.3 + build: hbfab5d5_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-4.25.3-hbfab5d5_0.conda + sha256: d754519abc3ddbdedab2a38d0639170f5347c1573eef80c707f3a8dc5dff706a + md5: 5f70b2b945a9741cba7e6dfe735a02a7 + depends: + - libabseil * cxx17* + - libabseil >=20240116.1,<20240117.0a0 + - libcxx >=16 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2154402 + timestamp: 1709514097574 +- kind: conda + name: libre2-11 + version: 2023.09.01 + build: h5a48ba9_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-h5a48ba9_2.conda + sha256: 3f3c65fe0e9e328b4c1ebc2b622727cef3e5b81b18228cfa6cf0955bc1ed8eff + md5: 41c69fba59d495e8cf5ffda48a607e35 + depends: + - libabseil * cxx17* + - libabseil >=20240116.1,<20240117.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + constrains: + - re2 2023.09.01.* + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 232603 + timestamp: 1708946763521 +- kind: conda + name: libre2-11 + version: 2023.09.01 + build: h7b2c953_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2023.09.01-h7b2c953_2.conda + sha256: c8a0a6e7a627dc9c66ffb8858f8f6d499f67fd269b6636b25dc5169760610f05 + md5: 0b7b2ced046d6b5fe6e9d46b1ee0324c + depends: + - libabseil * cxx17* + - libabseil >=20240116.1,<20240117.0a0 + - libcxx >=16 + constrains: + - re2 2023.09.01.* + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 171443 + timestamp: 1708947163461 +- kind: conda + name: libre2-11 + version: 2023.09.01 + build: h81f5012_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2023.09.01-h81f5012_2.conda + sha256: 384b72a09bd4bb29c1aa085110b2f940dba431587ffb4e2c1a28f605887a1867 + md5: c5c36ec64e3c86504728c38b79011d08 + depends: + - __osx >=10.13 + - libabseil * cxx17* + - libabseil >=20240116.1,<20240117.0a0 + - libcxx >=16 + constrains: + - re2 2023.09.01.* + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 184017 + timestamp: 1708947106275 +- kind: conda + name: libre2-11 + version: 2023.09.01 + build: hf8d8778_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libre2-11-2023.09.01-hf8d8778_2.conda + sha256: 04331dad30a076ebb24c683197a5feabf4fd9be0fa0e06f416767096f287f900 + md5: cf54cb5077a60797d53a132d37af25fc + depends: + - libabseil * cxx17* + - libabseil >=20240116.1,<20240117.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - re2 2023.09.01.* + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 256561 + timestamp: 1708947458481 +- kind: conda + name: librsvg + version: 2.58.2 + build: h1db61d3_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.2-h1db61d3_1.conda + sha256: ec39d4e8c4da23243875edeb565f7ef948f590de481fb3d2a15b66115621bf81 + md5: c8113d5911f1d6a6259e47e729db6751 + depends: + - __osx >=11.0 + - cairo >=1.18.0,<2.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 + - libglib >=2.80.3,<3.0a0 + - libxml2 >=2.12.7,<3.0a0 + - pango >=1.54.0,<2.0a0 + constrains: + - __osx >=11.0 + license: LGPL-2.1-or-later + purls: [] + size: 4579489 + timestamp: 1721286471884 +- kind: conda + name: librsvg + version: 2.58.2 + build: h902c40a_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.2-h902c40a_1.conda + sha256: f9e4a95dea4dbbc0d99ea8f535d2ff5821f6ead4c1c63486a2b3c039a368a2cd + md5: 72bae2142becdbd63d6f17f622d7760c + depends: + - __osx >=10.13 + - cairo >=1.18.0,<2.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 + - libglib >=2.80.3,<3.0a0 + - libxml2 >=2.12.7,<3.0a0 + - pango >=1.54.0,<2.0a0 + constrains: + - __osx >=10.13 + license: LGPL-2.1-or-later + purls: [] + size: 4837225 + timestamp: 1721285971118 +- kind: conda + name: librsvg + version: 2.58.2 + build: h9564881_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.2-h9564881_1.conda + sha256: 74221fe0218f537dfd1db9c451e81d0fed7df6b3128a46e6b0dc493db02f332d + md5: c6a47e6f551890e82e92e4c1b84be353 + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 + - harfbuzz >=9.0.0,<10.0a0 + - libgcc-ng >=12 + - libglib >=2.80.3,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libxml2 >=2.12.7,<3.0a0 + - pango >=1.54.0,<2.0a0 + constrains: + - __glibc >=2.17 + license: LGPL-2.1-or-later + purls: [] + size: 5910543 + timestamp: 1721285771293 +- kind: conda + name: libsqlite + version: 3.46.0 + build: h1b8f9f3_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.46.0-h1b8f9f3_0.conda + sha256: 63af1a9e3284c7e4952364bafe7267e41e2d9d8bcc0e85a4ea4b0ec02d3693f6 + md5: 5dadfbc1a567fe6e475df4ce3148be09 + depends: + - __osx >=10.13 + - libzlib >=1.2.13,<2.0a0 + license: Unlicense + purls: [] + size: 908643 + timestamp: 1718050720117 +- kind: conda + name: libsqlite + version: 3.46.0 + build: h2466b09_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.46.0-h2466b09_0.conda + sha256: 662bd7e0d63c5b8c31cca19b91649e798319b93568a2ba8d1375efb91eeb251b + md5: 951b0a3a463932e17414cd9f047fa03d + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Unlicense + purls: [] + size: 876677 + timestamp: 1718051113874 +- kind: conda + name: libsqlite + version: 3.46.0 + build: hde9e2c9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda + sha256: daee3f68786231dad457d0dfde3f7f1f9a7f2018adabdbb864226775101341a8 + md5: 18aa975d2094c34aef978060ae7da7d8 + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0a0 + license: Unlicense + purls: [] + size: 865346 + timestamp: 1718050628718 +- kind: conda + name: libsqlite + version: 3.46.0 + build: hfb93653_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.46.0-hfb93653_0.conda + sha256: 73048f9cb8647d3d3bfe6021c0b7d663e12cffbe9b4f31bd081e713b0a9ad8f9 + md5: 12300188028c9bc02da965128b91b517 + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0a0 + license: Unlicense + purls: [] + size: 830198 + timestamp: 1718050644825 +- kind: conda + name: libssh2 + version: 1.11.0 + build: h0841786_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + sha256: 50e47fd9c4f7bf841a11647ae7486f65220cfc988ec422a4475fe8d5a823824d + md5: 1f5a58e686b13bcfde88b93f547d23fe + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 271133 + timestamp: 1685837707056 +- kind: conda + name: libssh2 + version: 1.11.0 + build: h7a5bd25_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda + sha256: bb57d0c53289721fff1eeb3103a1c6a988178e88d8a8f4345b0b91a35f0e0015 + md5: 029f7dc931a3b626b94823bc77830b01 + depends: + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 255610 + timestamp: 1685837894256 +- kind: conda + name: libssh2 + version: 1.11.0 + build: h7dfc565_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.0-h7dfc565_0.conda + sha256: 813fd04eed2a2d5d9c36e53c554f9c1f08e9324e2922bd60c9c52dbbed2dbcec + md5: dc262d03aae04fe26825062879141a41 + depends: + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.1.1,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 266806 + timestamp: 1685838242099 +- kind: conda + name: libssh2 + version: 1.11.0 + build: hd019ec5_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.0-hd019ec5_0.conda + sha256: f3886763b88f4b24265db6036535ef77b7b77ce91b1cbe588c0fbdd861eec515 + md5: ca3a72efba692c59a90d4b9fc0dfe774 + depends: + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 259556 + timestamp: 1685837820566 +- kind: conda + name: libstdcxx-ng + version: 14.1.0 + build: hc0a3c3a_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-hc0a3c3a_0.conda + sha256: 88c42b388202ffe16adaa337e36cf5022c63cf09b0405cf06fc6aeacccbe6146 + md5: 1cb187a157136398ddbaae90713e2498 + depends: + - libgcc-ng 14.1.0 h77fa898_0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3881307 + timestamp: 1719538923443 +- kind: conda + name: libthrift + version: 0.19.0 + build: h026a170_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.19.0-h026a170_1.conda + sha256: b2c1b30d36f0412c0c0313db76a0236d736f3a9b887b8ed16182f531e4b7cb80 + md5: 4b8b21eb00d9019e9fa351141da2a6ac + depends: + - libcxx >=15.0.7 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.1.3,<4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 331154 + timestamp: 1695958512679 +- kind: conda + name: libthrift + version: 0.19.0 + build: h064b379_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.19.0-h064b379_1.conda + sha256: 4346c25ef6e2ff3d0fc93074238508531188ecd0dbea6414f6cb93a7775072c4 + md5: b152655bfad7c2374ff03be0596052b6 + depends: + - libcxx >=15.0.7 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.1.3,<4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 325415 + timestamp: 1695958330036 +- kind: conda + name: libthrift + version: 0.19.0 + build: ha2b3283_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libthrift-0.19.0-ha2b3283_1.conda + sha256: 89bbc59898c827429a52315c9c0dd888ea73ab1157a8c86098aeae7d13454ac4 + md5: d3432b9d4950e91d2fdf3bed91248ee0 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.1.3,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 612342 + timestamp: 1695958519927 +- kind: conda + name: libthrift + version: 0.19.0 + build: hb90f79a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.19.0-hb90f79a_1.conda + sha256: 719add2cf20d144ef9962c57cd0f77178259bdb3aae1cded2e2b2b7c646092f5 + md5: 8cdb7d41faa0260875ba92414c487e2d + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.1.3,<4.0a0 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 409409 + timestamp: 1695958011498 +- kind: conda + name: libtiff + version: 4.6.0 + build: h46a8edc_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h46a8edc_4.conda + sha256: 8d42dd7c6602187d4351fc3b69ff526f1c262bfcbfd6ce05d06008f4e0b99b58 + md5: a7e3a62981350e232e0e7345b5aea580 + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.21,<1.22.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx-ng >=12 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + purls: [] + size: 282236 + timestamp: 1722871642189 +- kind: conda + name: libtiff + version: 4.6.0 + build: h603087a_4 + build_number: 4 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.6.0-h603087a_4.conda + sha256: 3b853901835167406f1c576207ec0294da4aade69c170a6e29206d454f42c259 + md5: 362626a2aacb976ec89c91b99bfab30b + depends: + - __osx >=10.13 + - lerc >=4.0.0,<5.0a0 + - libcxx >=16 + - libdeflate >=1.21,<1.22.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + purls: [] + size: 257905 + timestamp: 1722871821174 +- kind: conda + name: libtiff + version: 4.6.0 + build: hb151862_4 + build_number: 4 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.6.0-hb151862_4.conda + sha256: 1d5a8972f344da2e81b5a27ac0eda977803351151b8923f16cbc056515f5b8c6 + md5: 7d35d9aa8f051d548116039f5813c8ec + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.21,<1.22.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + purls: [] + size: 784657 + timestamp: 1722871883822 +- kind: conda + name: libtiff + version: 4.6.0 + build: hf8409c0_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.6.0-hf8409c0_4.conda + sha256: a974a0ed75df11a9fa1ddfe2fa21aa7ecc70e5a92a37b86b648691810f02aac6 + md5: 16a56d4b4ee88fdad1210bf026619cc3 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=16 + - libdeflate >=1.21,<1.22.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + purls: [] + size: 238731 + timestamp: 1722871853823 +- kind: conda + name: libutf8proc + version: 2.8.0 + build: h166bdaf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + sha256: 49082ee8d01339b225f7f8c60f32a2a2c05fe3b16f31b554b4fb2c1dea237d1c + md5: ede4266dc02e875fe1ea77b25dd43747 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 101070 + timestamp: 1667316029302 +- kind: conda + name: libutf8proc + version: 2.8.0 + build: h1a8c8d9_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + sha256: a3faddac08efd930fa3a1cc254b5053b4ed9428c49a888d437bf084d403c931a + md5: f8c9c41a122ab3abdf8943b13f4957ee + license: MIT + license_family: MIT + purls: [] + size: 103492 + timestamp: 1667316405233 +- kind: conda + name: libutf8proc + version: 2.8.0 + build: h82a8f57_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libutf8proc-2.8.0-h82a8f57_0.tar.bz2 + sha256: 6efa83e3f2fb9acaf096a18d21d0f679d110934798348c5defc780d4b759a76c + md5: 076894846fe9f068f91c57d158c90cba + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vs2015_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 104389 + timestamp: 1667316359211 +- kind: conda + name: libutf8proc + version: 2.8.0 + build: hb7f2c08_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.8.0-hb7f2c08_0.tar.bz2 + sha256: 55a7f96b2802e94def207fdfe92bc52c24d705d139bb6cdb3d936cbe85e1c505 + md5: db98dc3e58cbc11583180609c429c17d + license: MIT + license_family: MIT + purls: [] + size: 98942 + timestamp: 1667316472080 +- kind: conda + name: libuuid + version: 2.38.1 + build: h0b41bf4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- kind: conda + name: libuv + version: 1.48.0 + build: h67532ce_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.48.0-h67532ce_0.conda + sha256: fb87f7bfd464a3a841d23f418c86a206818da0c4346984392071d9342c9ea367 + md5: c8e7344c74f0d86584f7ecdc9f25c198 + license: MIT + license_family: MIT + size: 407040 + timestamp: 1709913680478 +- kind: conda + name: libuv + version: 1.48.0 + build: h93a5062_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.48.0-h93a5062_0.conda + sha256: 60bed2a7a85096387ab0381cbc32ea2da7f8dd99bd90e440983019c0cdd96ad1 + md5: abfd49e80f13453b62a56be226120ea8 + license: MIT + license_family: MIT + size: 405988 + timestamp: 1709913494015 +- kind: conda + name: libuv + version: 1.48.0 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.48.0-hd590300_0.conda + sha256: b7c0e8a0c93c2621be7645b37123d4e8d27e8a974da26a3fba47a9c37711aa7f + md5: 7e8b914b1062dd4386e3de4d82a3ead6 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 899979 + timestamp: 1709913354710 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h10d778d_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda + sha256: 7bafd8f4c637778cd0aa390bf3a894feef0e1fcf6ea6000c7ffc25c4c5a65538 + md5: b2c0047ea73819d992484faacbbe1c24 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 355099 + timestamp: 1713200298965 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h93a5062_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 + md5: c0af0edfebe780b19940e94871f1a765 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 287750 + timestamp: 1713200194013 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: hcfcfb64_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda + sha256: d0ca51cb1de9192be9a3238e71fbcca5a535619c499c4f4c9b2ed41c14d36770 + md5: abd61d0ab127ec5cd68f62c2969e6f34 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 274359 + timestamp: 1713200524021 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f + md5: b26e8aa824079e1be0294e7152ca4559 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 438953 + timestamp: 1713199854503 +- kind: conda + name: libxcb + version: '1.16' + build: hcd874cb_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.16-hcd874cb_0.conda + sha256: 3b1f3b04baa370cfb1c350cfa829e6236519df5f03e3f57ea2cb2eb044eb8616 + md5: 7c1217d3b075f195ab17370f2d550f5d + depends: + - m2w64-gcc-libs + - m2w64-gcc-libs-core + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + purls: [] + size: 989932 + timestamp: 1693089470750 +- kind: conda + name: libxcb + version: '1.16' + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.16-hd590300_0.conda + sha256: 7180375f37fd264bb50672a63da94536d4abd81ccec059e932728ae056324b3a + md5: 151cba22b85a989c2d6ef9633ffee1e4 + depends: + - libgcc-ng >=12 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + purls: [] + size: 394932 + timestamp: 1693088990429 +- kind: conda + name: libxcrypt + version: 4.4.36 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- kind: conda + name: libxml2 + version: 2.12.7 + build: h01dff8b_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.12.7-h01dff8b_4.conda + sha256: a9a76cdc6e93c0182bc2ac58b1ea0152be1a16a5d23f4dc7b8df282a7aef8d20 + md5: 1265488dc5035457b729583119ad4a1b + depends: + - __osx >=11.0 + - icu >=75.1,<76.0a0 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + license: MIT + license_family: MIT + purls: [] + size: 588990 + timestamp: 1721031045514 +- kind: conda + name: libxml2 + version: 2.12.7 + build: h0f24e4e_4 + build_number: 4 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.12.7-h0f24e4e_4.conda + sha256: ae78197961b09b0eef4ee194a44e4adc4555c0f2f20c348086b0cd8aaf2f7731 + md5: ed4d301f0d2149b34deb9c4fecafd836 + depends: + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 1682090 + timestamp: 1721031296951 +- kind: conda + name: libxml2 + version: 2.12.7 + build: he7c6b58_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-he7c6b58_4.conda + sha256: 10e9e0ac52b9a516a17edbc07f8d559e23778e54f1a7721b2e0e8219284fed3b + md5: 08a9265c637230c37cb1be4a6cad4536 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc-ng >=12 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + license: MIT + license_family: MIT + purls: [] + size: 707169 + timestamp: 1721031016143 +- kind: conda + name: libxml2 + version: 2.12.7 + build: heaf3512_4 + build_number: 4 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.12.7-heaf3512_4.conda + sha256: ed18a2d8d428c0b88d47751ebcc7cc4e6202f99c3948fffd776cba83c4f0dad3 + md5: ea1be6ecfe814da889e882c8b6ead79d + depends: + - __osx >=10.13 + - icu >=75.1,<76.0a0 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + license: MIT + license_family: MIT + purls: [] + size: 619901 + timestamp: 1721031175411 +- kind: conda + name: libzlib + version: 1.3.1 + build: h2466b09_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_1.conda + sha256: b13846a54a15243e15f96fec06b526d8155adc6a1ac2b6ed47a88f6a71a94b68 + md5: d4483ca8afc57ddf1f6dded53b36c17f + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - zlib 1.3.1 *_1 + license: Zlib + license_family: Other + purls: [] + size: 56186 + timestamp: 1716874730539 +- kind: conda + name: libzlib + version: 1.3.1 + build: h4ab18f5_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + sha256: adf6096f98b537a11ae3729eaa642b0811478f0ea0402ca67b5108fe2cb0010d + md5: 57d7dc60e9325e3de37ff8dffd18e814 + depends: + - libgcc-ng >=12 + constrains: + - zlib 1.3.1 *_1 + license: Zlib + license_family: Other + purls: [] + size: 61574 + timestamp: 1716874187109 +- kind: conda + name: libzlib + version: 1.3.1 + build: h87427d6_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-h87427d6_1.conda + sha256: 80a62db652b1da0ccc100812a1d86e94f75028968991bfb17f9536f3aa72d91d + md5: b7575b5aa92108dcc9aaab0f05f2dbce + depends: + - __osx >=10.13 + constrains: + - zlib 1.3.1 *_1 + license: Zlib + license_family: Other + purls: [] + size: 57372 + timestamp: 1716874211519 +- kind: conda + name: libzlib + version: 1.3.1 + build: hfb2fe0b_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-hfb2fe0b_1.conda + sha256: c34365dd37b0eab27b9693af32a1f7f284955517c2cc91f1b88a7ef4738ff03e + md5: 636077128927cf79fd933276dc3aed47 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_1 + license: Zlib + license_family: Other + purls: [] + size: 46921 + timestamp: 1716874262512 +- kind: conda + name: llvm-openmp + version: 18.1.8 + build: h15ab845_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-18.1.8-h15ab845_0.conda + sha256: 0fd74128806bd839c7a9aa343faf265b94aece84f75f67f14b6246936138e61e + md5: 2c3c6c8aaf8728f87326964a82fdc7d8 + depends: + - __osx >=10.13 + constrains: + - openmp 18.1.8|18.1.8.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 300682 + timestamp: 1718887195436 +- kind: conda + name: llvm-openmp + version: 18.1.8 + build: hde57baf_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-18.1.8-hde57baf_0.conda + sha256: 42bc913b3c91934a1ce7ff635e87ee48e2e252632f0cbf607c5a3e4409d9f9dd + md5: 82393fdbe38448d878a8848b6fcbcefb + depends: + - __osx >=11.0 + constrains: + - openmp 18.1.8|18.1.8.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 276438 + timestamp: 1718911793488 +- kind: conda + name: lz4-c + version: 1.9.4 + build: hb7217d7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda + sha256: fc343b8c82efe40819b986e29ba748366514e5ab94a1e1138df195af5f45fa24 + md5: 45505bec548634f7d05e02fb25262cb9 + depends: + - libcxx >=14.0.6 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 141188 + timestamp: 1674727268278 +- kind: conda + name: lz4-c + version: 1.9.4 + build: hcb278e6_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + sha256: 1b4c105a887f9b2041219d57036f72c4739ab9e9fe5a1486f094e58c76b31f5f + md5: 318b08df404f9c9be5712aaa5a6f0bb0 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 143402 + timestamp: 1674727076728 +- kind: conda + name: lz4-c + version: 1.9.4 + build: hcfcfb64_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.9.4-hcfcfb64_0.conda + sha256: a0954b4b1590735ea5f3d0f4579c3883f8ac837387afd5b398b241fda85124ab + md5: e34720eb20a33fc3bfb8451dd837ab7a + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vs2015_runtime >=14.29.30139 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 134235 + timestamp: 1674728465431 +- kind: conda + name: lz4-c + version: 1.9.4 + build: hf0c8a7f_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.4-hf0c8a7f_0.conda + sha256: 39aa0c01696e4e202bf5e337413de09dfeec061d89acd5f28e9968b4e93c3f48 + md5: aa04f7143228308662696ac24023f991 + depends: + - libcxx >=14.0.6 + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 156415 + timestamp: 1674727335352 +- kind: conda + name: m2w64-gcc-libgfortran + version: 5.3.0 + build: '6' + build_number: 6 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 + sha256: 9de95a7996d5366ae0808eef2acbc63f9b11b874aa42375f55379e6715845dc6 + md5: 066552ac6b907ec6d72c0ddab29050dc + depends: + - m2w64-gcc-libs-core + - msys2-conda-epoch ==20160418 + license: GPL, LGPL, FDL, custom + purls: [] + size: 350687 + timestamp: 1608163451316 +- kind: conda + name: m2w64-gcc-libs + version: 5.3.0 + build: '7' + build_number: 7 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 + sha256: 3bd1ab02b7c89a5b153a17be03b36d833f1517ff2a6a77ead7c4a808b88196aa + md5: fe759119b8b3bfa720b8762c6fdc35de + depends: + - m2w64-gcc-libgfortran + - m2w64-gcc-libs-core + - m2w64-gmp + - m2w64-libwinpthread-git + - msys2-conda-epoch ==20160418 + license: GPL3+, partial:GCCRLE, partial:LGPL2+ + purls: [] + size: 532390 + timestamp: 1608163512830 +- kind: conda + name: m2w64-gcc-libs-core + version: 5.3.0 + build: '7' + build_number: 7 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 + sha256: 58afdfe859ed2e9a9b1cc06bc408720cb2c3a6a132e59d4805b090d7574f4ee0 + md5: 4289d80fb4d272f1f3b56cfe87ac90bd + depends: + - m2w64-gmp + - m2w64-libwinpthread-git + - msys2-conda-epoch ==20160418 + license: GPL3+, partial:GCCRLE, partial:LGPL2+ + purls: [] + size: 219240 + timestamp: 1608163481341 +- kind: conda + name: m2w64-gmp + version: 6.1.0 + build: '2' + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/m2w64-gmp-6.1.0-2.tar.bz2 + sha256: 7e3cd95f554660de45f8323fca359e904e8d203efaf07a4d311e46d611481ed1 + md5: 53a1c73e1e3d185516d7e3af177596d9 + depends: + - msys2-conda-epoch ==20160418 + license: LGPL3 + purls: [] + size: 743501 + timestamp: 1608163782057 +- kind: conda + name: m2w64-libwinpthread-git + version: 5.0.0.4634.697f757 + build: '2' + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2 + sha256: f63a09b2cae7defae0480f1740015d6235f1861afa6fe2e2d3e10bd0d1314ee0 + md5: 774130a326dee16f1ceb05cc687ee4f0 + depends: + - msys2-conda-epoch ==20160418 + license: MIT, BSD + purls: [] + size: 31928 + timestamp: 1608166099896 +- kind: conda + name: make + version: '4.3' + build: h22f3db7_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/make-4.3-h22f3db7_1.tar.bz2 + sha256: adef15126b518548b69ecaef24e22f88fa0a6358bd3c11e791af214f7344983b + md5: ac4a1dd58e6d821c518ae0011e8592b7 + license: GPL-3.0-or-later + license_family: GPL + purls: [] + size: 255465 + timestamp: 1602706542653 +- kind: conda + name: make + version: '4.3' + build: h3d2af85_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/make-4.3-h3d2af85_1.tar.bz2 + sha256: f31b00c710df71f2f75c641272ecb1f9bd1e15a5a77510055120641215487fbb + md5: c3be283d3d278c379b50137a2a17f869 + depends: + - m2w64-gcc-libs + license: GPL-3.0-or-later + license_family: GPL + purls: [] + size: 6245358 + timestamp: 1602706995515 +- kind: conda + name: make + version: '4.3' + build: hd18ef5c_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/make-4.3-hd18ef5c_1.tar.bz2 + sha256: 4a5fe7c80bb0de0015328e2d3fc8db1736f528cb1fd53cd0d5527e24269a4f7c + md5: 4049ebfd3190b580dffe76daed26155a + depends: + - libgcc-ng >=7.5.0 + license: GPL-3.0-or-later + license_family: GPL + purls: [] + size: 518896 + timestamp: 1602706451788 +- kind: conda + name: make + version: '4.3' + build: he57ea6c_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/make-4.3-he57ea6c_1.tar.bz2 + sha256: a011e3e1c4caec821eb4213d0a0154d39e5f81a44d2e8bafe6f84e7840c3909e + md5: 1939d04ef89e38fde652ee8c669e092f + license: GPL-3.0-or-later + license_family: GPL + purls: [] + size: 253227 + timestamp: 1602706492919 +- kind: conda + name: markdown-it-py + version: 3.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda + sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 + md5: 93a8e71256479c62074356ef6ebf501b + depends: + - mdurl >=0.1,<1 + - python >=3.8 + license: MIT + license_family: MIT + size: 64356 + timestamp: 1686175179621 +- kind: conda + name: markupsafe + version: 2.1.5 + build: py312h41838bb_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-2.1.5-py312h41838bb_0.conda + sha256: 8dc8f31f78d00713300da000b6ebaa1943a17c112f267de310d5c3d82950079c + md5: c4a9c25c09cef3901789ca818d9beb10 + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=conda-forge-mapping + size: 25742 + timestamp: 1706900456837 +- kind: conda + name: markupsafe + version: 2.1.5 + build: py312h98912ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py312h98912ed_0.conda + sha256: 273d8efd6c089c534ccbede566394c0ac1e265bfe5d89fe76e80332f3d75a636 + md5: 6ff0b9582da2d4a74a1f9ae1f9ce2af6 + depends: + - libgcc-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=conda-forge-mapping + size: 26685 + timestamp: 1706900070330 +- kind: conda + name: markupsafe + version: 2.1.5 + build: py312he37b823_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-2.1.5-py312he37b823_0.conda + sha256: 61480b725490f68856dd14e646f51ffc34f77f2c985bd33e3b77c04b2856d97d + md5: ba3a8f8cf8bbdb81394275b1e1d271da + depends: + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=conda-forge-mapping + size: 26382 + timestamp: 1706900495057 +- kind: conda + name: markupsafe + version: 2.1.5 + build: py312he70551f_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/markupsafe-2.1.5-py312he70551f_0.conda + sha256: f8690a3c87e2e96cebd434a829bb95cac43afe6c439530b336dc3452fe4ce4af + md5: 4950a739b19edaac1ed29ca9474e49ac + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=conda-forge-mapping + size: 29060 + timestamp: 1706900374745 +- kind: conda + name: mbedtls + version: 3.3.0 + build: hb7217d7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/mbedtls-3.3.0-hb7217d7_0.conda + sha256: 043a536d3ba926cc9e22af85e6c9da28af36da1207286a657aa43683c6a262b8 + md5: 4427dbdc97338ccb9455d58085e82d56 + depends: + - libcxx >=14.0.6 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1067163 + timestamp: 1671141978978 +- kind: conda + name: mbedtls + version: 3.3.0 + build: hcb278e6_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/mbedtls-3.3.0-hcb278e6_0.conda + sha256: a1f693cddc9c79a807c13f67ed2045b4d617fde8a095c6700ba642ce76b1d402 + md5: cc1213f464c357b647cc5dde5cfca881 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 995589 + timestamp: 1671141754075 +- kind: conda + name: mbedtls + version: 3.3.0 + build: hf0c8a7f_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/mbedtls-3.3.0-hf0c8a7f_0.conda + sha256: 38d15971aa2ce131304b3cb05a0ef93cc744162763e0397b1240f3a5fdcc6101 + md5: 56e210ed20b358facb006af210257f51 + depends: + - libcxx >=14.0.6 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1255813 + timestamp: 1671142062479 +- kind: conda + name: mdurl + version: 0.1.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda + sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 + md5: 776a8dd9e824f77abac30e6ef43a8f7a + depends: + - python >=3.6 + license: MIT + license_family: MIT + size: 14680 + timestamp: 1704317789138 +- kind: conda + name: mkl + version: 2024.1.0 + build: h66d3029_694 + build_number: 694 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.1.0-h66d3029_694.conda + sha256: 4f86e9ad74a7792c836cd4cb7fc415bcdb50718ffbaa90c5571297f71764b980 + md5: a17423859d3fb912c8f2e9797603ddb6 + depends: + - intel-openmp 2024.* + - tbb 2021.* + license: LicenseRef-IntelSimplifiedSoftwareOct2022 + license_family: Proprietary + purls: [] + size: 109381621 + timestamp: 1716561374449 +- kind: conda + name: more-itertools + version: 10.4.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.4.0-pyhd8ed1ab_0.conda + sha256: b74c45a0e73cf8de677fc7800918d57d69d9e08d6641dc53289804700433ccd5 + md5: 9295db8e2ba536b60951e905e336be54 + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 57380 + timestamp: 1723055591256 +- kind: conda + name: msgpack-python + version: 1.0.8 + build: py311h3257749_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/msgpack-python-1.0.8-py311h3257749_0.conda + sha256: 5917104a6e00f51a28fd217709818d1b765eef3de898601e23b2fb364d824186 + md5: 25ab436993969840e7c521197c044300 + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/msgpack?source=conda-forge-mapping + size: 89483 + timestamp: 1715671288024 +- kind: conda + name: msgpack-python + version: 1.0.8 + build: py311h46c8309_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.0.8-py311h46c8309_0.conda + sha256: 3d575b0c8e6dcbbdc7c27f3f93b68c72adf2cfac3c88b792b12b35fd4b9ba4ac + md5: e451ed01f83544c6029f8fe29d0e9fe3 + depends: + - __osx >=10.13 + - libcxx >=16 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/msgpack?source=conda-forge-mapping + size: 92344 + timestamp: 1715670916175 +- kind: conda + name: msgpack-python + version: 1.0.8 + build: py311h52f7536_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.8-py311h52f7536_0.conda + sha256: 8b0b4def742cebde399fd3244248e6db5b6843e7db64a94a10d6b649a3f20144 + md5: f33f59b8130753174992f409a41e112e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/msgpack?source=conda-forge-mapping + size: 103577 + timestamp: 1715670788972 +- kind: conda + name: msgpack-python + version: 1.0.8 + build: py311h6bde47b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.0.8-py311h6bde47b_0.conda + sha256: d7f42bb89e656b70c4be5e85dd409aab2bf11aa4638589cfd030306c9d682e6d + md5: 649b2c1744a0ef73cc7a78cc6a453a9a + depends: + - __osx >=11.0 + - libcxx >=16 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/msgpack?source=conda-forge-mapping + size: 92556 + timestamp: 1715670922825 +- kind: conda + name: msgpack-python + version: 1.0.8 + build: py312h157fec4_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.0.8-py312h157fec4_0.conda + sha256: 88abda8e86379e085540cbe54897792b62e61b7f0b77882a7361dba01a4687f4 + md5: b815836e3b798dff1d7a28095761658b + depends: + - __osx >=11.0 + - libcxx >=16 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/msgpack?source=conda-forge-mapping + size: 91912 + timestamp: 1715670824147 +- kind: conda + name: msgpack-python + version: 1.0.8 + build: py312h2492b07_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.8-py312h2492b07_0.conda + sha256: 3761f57834ae20e49b4665b341057cf8ac2641d6f87e76d3d5cc615bc0dae8cc + md5: 0df463266eaaa1b8a35f8fd26368c1a1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/msgpack?source=conda-forge-mapping + size: 103653 + timestamp: 1715670786268 +- kind: conda + name: msgpack-python + version: 1.0.8 + build: py312hc3c9ca0_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.0.8-py312hc3c9ca0_0.conda + sha256: d48287594d4c4a9323deb2f505c52f53f757981d4d16b22231f8831bd22349bf + md5: 87927f3f0037c19ac74ac3f820c26bd1 + depends: + - __osx >=10.13 + - libcxx >=16 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/msgpack?source=conda-forge-mapping + size: 91736 + timestamp: 1715670793021 +- kind: conda + name: msgpack-python + version: 1.0.8 + build: py312hd5eb7cc_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/msgpack-python-1.0.8-py312hd5eb7cc_0.conda + sha256: 080fad891281a38ff05d417ed4aa59b093d7c5fbb232cd3498dc100baacd8e44 + md5: 83bdd6554fb4bf25195c0dacabeeebf3 + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/msgpack?source=conda-forge-mapping + size: 88758 + timestamp: 1715671314905 +- kind: conda + name: msys2-conda-epoch + version: '20160418' + build: '1' + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 + sha256: 99358d58d778abee4dca82ad29fb58058571f19b0f86138363c260049d4ac7f1 + md5: b0309b72560df66f71a9d5e34a5efdfa + purls: [] + size: 3227 + timestamp: 1608166968312 +- kind: conda + name: mypy + version: 1.11.1 + build: py311h61187de_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.11.1-py311h61187de_0.conda + sha256: 82d30a0ba206fc0e3fc2a2a37e9af5883f40014112e5c038259c0117b3645171 + md5: 4526daf9c2743c1ccfa2d24780414b8a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - typing_extensions >=4.1.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=conda-forge-mapping + size: 18280154 + timestamp: 1722473194433 +- kind: conda + name: mypy + version: 1.11.1 + build: py311h72ae277_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.11.1-py311h72ae277_0.conda + sha256: b546df733acb8394007eb92ec30ab274791ac1bd25dee316f5d1bfb2c274c369 + md5: 33696612689bbdb7cc45d759042c01ea + depends: + - __osx >=10.13 + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - typing_extensions >=4.1.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=conda-forge-mapping + size: 12373809 + timestamp: 1722473396882 +- kind: conda + name: mypy + version: 1.11.1 + build: py311hd3f4193_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.11.1-py311hd3f4193_0.conda + sha256: c251442ca994f283bb34e71810293bbfcaa38813cb28ec562e766b2aacbe55c0 + md5: 5572c94a2c84d9a24ff2577c777f441e + depends: + - __osx >=11.0 + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - typing_extensions >=4.1.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=conda-forge-mapping + size: 9954222 + timestamp: 1722473484834 +- kind: conda + name: mypy + version: 1.11.1 + build: py311he736701_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/mypy-1.11.1-py311he736701_0.conda + sha256: 4b59953a1484bb6d09f9b4f965d56d71821f574f9b98ccc6df88550725fd0e2d + md5: fc4e5ee3efe4ae5954035f5a2470db76 + depends: + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - typing_extensions >=4.1.0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=conda-forge-mapping + size: 10149210 + timestamp: 1722473173324 +- kind: conda + name: mypy + version: 1.11.1 + build: py312h41a817b_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.11.1-py312h41a817b_0.conda + sha256: e708912d61d10ec7da9f7ccfe9738defd65b7bc1d9729b2751e057a8779835e4 + md5: c02a9d2e6400a518b0ebe53197462428 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing_extensions >=4.1.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=conda-forge-mapping + size: 17039274 + timestamp: 1722473734957 +- kind: conda + name: mypy + version: 1.11.1 + build: py312h4389bb4_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/mypy-1.11.1-py312h4389bb4_0.conda + sha256: c08d2cba9995ae455dba2f09c70f0a0715558acd2d6e91eeb129856fae8e47dc + md5: bba2403f2dbc616963403df9de652727 + depends: + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing_extensions >=4.1.0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=conda-forge-mapping + size: 8525974 + timestamp: 1722473636039 +- kind: conda + name: mypy + version: 1.11.1 + build: py312h7e5086c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.11.1-py312h7e5086c_0.conda + sha256: c41134d357401bd3e633e1da4354649e4649d3a8fd0b7c36b09b3cec73e4c7b3 + md5: 9295230dbeec169f52c6287ed73d8a88 + depends: + - __osx >=11.0 + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing_extensions >=4.1.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=conda-forge-mapping + size: 9834560 + timestamp: 1722473445717 +- kind: conda + name: mypy + version: 1.11.1 + build: py312hbd25219_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.11.1-py312hbd25219_0.conda + sha256: 0d049236505f4efc5337a5b1e1c177c945ac69c407933e7344a3e7787f09d50f + md5: 5df78c800c06e4a01d1baabc92eea4aa + depends: + - __osx >=10.13 + - mypy_extensions >=1.0.0 + - psutil >=4.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing_extensions >=4.1.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy?source=conda-forge-mapping + size: 10541916 + timestamp: 1722473220458 +- kind: conda + name: mypy_extensions + version: 1.0.0 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 + md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + depends: + - python >=3.5 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=conda-forge-mapping + size: 10492 + timestamp: 1675543414256 +- kind: conda + name: ncurses + version: '6.5' + build: h5846eda_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h5846eda_0.conda + sha256: 6ecc73db0e49143092c0934355ac41583a5d5a48c6914c5f6ca48e562d3a4b79 + md5: 02a888433d165c99bf09784a7b14d900 + license: X11 AND BSD-3-Clause + purls: [] + size: 823601 + timestamp: 1715195267791 +- kind: conda + name: ncurses + version: '6.5' + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda + sha256: 4fc3b384f4072b68853a0013ea83bdfd3d66b0126e2238e1d6e1560747aa7586 + md5: fcea371545eda051b6deafb24889fc69 + depends: + - libgcc-ng >=12 + license: X11 AND BSD-3-Clause + purls: [] + size: 887465 + timestamp: 1715194722503 +- kind: conda + name: ncurses + version: '6.5' + build: hb89a1cb_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-hb89a1cb_0.conda + sha256: 87d7cf716d9d930dab682cb57b3b8d3a61940b47d6703f3529a155c938a6990a + md5: b13ad5724ac9ae98b6b4fd87e4500ba4 + license: X11 AND BSD-3-Clause + purls: [] + size: 795131 + timestamp: 1715194898402 +- kind: conda + name: networkx + version: '3.3' + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/networkx-3.3-pyhd8ed1ab_1.conda + sha256: cbd8a6de87ad842e7665df38dcec719873fe74698bc761de5431047b8fada41a + md5: d335fd5704b46f4efb89a6774e81aef0 + depends: + - python >=3.10 + constrains: + - pandas >=1.4 + - numpy >=1.22 + - matplotlib >=3.5 + - scipy >=1.9,!=1.11.0,!=1.11.1 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/networkx?source=conda-forge-mapping + size: 1185670 + timestamp: 1712540499262 +- kind: conda + name: nh3 + version: 0.2.18 + build: py312h552d48e_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/nh3-0.2.18-py312h552d48e_0.conda + sha256: e804d293f7523640c2f707a2b8dae4758df7540809f7e5e48e5ad5d34e1f3993 + md5: ca005b40c343f41587f8a11f001e77b9 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 576439 + timestamp: 1720443155143 +- kind: conda + name: nh3 + version: 0.2.18 + build: py312h68c23d6_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/nh3-0.2.18-py312h68c23d6_0.conda + sha256: 503a0fc4027a0880fd3040c2e8f2fba6f1f51eb5dd657d0f58578b675d500574 + md5: d56853ce3a4de76f93417444e1b37c6b + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.40.33810 + license: MIT + license_family: MIT + size: 496081 + timestamp: 1720443647022 +- kind: conda + name: nh3 + version: 0.2.18 + build: py312ha47ea1c_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/nh3-0.2.18-py312ha47ea1c_0.conda + sha256: 4d0e879e61e7c6dba43dfce3ba8c46cc332a0e2c1b040742240f590f8cee2056 + md5: dc1cee3916c3006ad54abbae89fd13bf + depends: + - __osx >=10.13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 545936 + timestamp: 1720443052189 +- kind: conda + name: nh3 + version: 0.2.18 + build: py312hf008fa9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/nh3-0.2.18-py312hf008fa9_0.conda + sha256: 5d936390c85bad134490dd433aa4ca57a357114832a07db762560a3b1a6e3b1a + md5: a56eb6dfb3d50dd86ea0052c5395c765 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 658131 + timestamp: 1720442905781 +- kind: conda + name: nng + version: 1.6.0 + build: h59595ed_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/nng-1.6.0-h59595ed_3.conda + sha256: fb1f55f92c5ae9d26cf1ae11fc8927169ecf61c9d2d654372bf07fc3beefdcdf + md5: 42107d0909ddba5c4a4afdc08a0349ad + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - mbedtls + license: MIT + license_family: MIT + purls: [] + size: 235843 + timestamp: 1703801823308 +- kind: conda + name: nng + version: 1.6.0 + build: h73e2aa4_3 + build_number: 3 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/nng-1.6.0-h73e2aa4_3.conda + sha256: 58c6a28fb53ca75b27f3b46e254575c37bce62d4e1762485fb75fb6608c44424 + md5: 5c32088e64e2c617c9d0ebad2eac8158 + depends: + - libcxx >=15 + - mbedtls + license: MIT + license_family: MIT + purls: [] + size: 193627 + timestamp: 1703801882982 +- kind: conda + name: nng + version: 1.6.0 + build: hebf3989_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/nng-1.6.0-hebf3989_3.conda + sha256: e718ff3252f2786d80042a010983e3e7bd3d3909e5caa1fff0793b02e70760f9 + md5: 31f03638af9b57d2ce35b495f9f7cebb + depends: + - libcxx >=15 + - mbedtls + license: MIT + license_family: MIT + purls: [] + size: 188116 + timestamp: 1703801963766 +- kind: conda + name: nodeenv + version: 1.9.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda + sha256: 85ee07342ab055dc081f3de8292c5e7195e43e046db9c5750f242f928f6bb8f2 + md5: dfe0528d0f1c16c1f7c528ea5536ab30 + depends: + - python 2.7|>=3.7 + - setuptools + license: BSD-3-Clause + license_family: BSD + size: 34489 + timestamp: 1717585382642 +- kind: conda + name: nodejs + version: 22.6.0 + build: h3fe1c63_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/nodejs-22.6.0-h3fe1c63_0.conda + sha256: 5040a3eb5fbabffc4ede60bc9e5995f2ea9a8734cad1322d1a48f1caaccc2218 + md5: b10d3b0aff561dc9cbc1862b86c63dc9 + depends: + - __osx >=11.0 + - icu >=73.2,<74.0a0 + - libcxx >=16 + - libuv >=1.48.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.1,<4.0a0 + - zlib + license: MIT + license_family: MIT + size: 14979112 + timestamp: 1723459472040 +- kind: conda + name: nodejs + version: 22.6.0 + build: h57928b3_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/nodejs-22.6.0-h57928b3_0.conda + sha256: 25f9a918c46b8693f6d8d2bb762b4e7ac6a51ad52cb80d871ab1e03cad6e0be3 + md5: f12520282e58de634bd76364750204c3 + license: MIT + license_family: MIT + size: 26272873 + timestamp: 1723444186322 +- kind: conda + name: nodejs + version: 22.6.0 + build: hbe3ef2c_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/nodejs-22.6.0-hbe3ef2c_0.conda + sha256: 3997ebe995bfe767555eba614ccdce2850a2226e6a8d44a7580e0cb5186df028 + md5: e555a843738e36aa20554148014eb203 + depends: + - __osx >=10.15 + - icu >=73.2,<74.0a0 + - libcxx >=16 + - libuv >=1.48.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.1,<4.0a0 + - zlib + license: MIT + license_family: MIT + size: 15580276 + timestamp: 1723452417208 +- kind: conda + name: nodejs + version: 22.6.0 + build: hc19f0b3_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/nodejs-22.6.0-hc19f0b3_1.conda + sha256: a9f637e3ddb845350a1410caf2299caa2dddd201fd44a5ca0e075c17dbf99f91 + md5: 427b3cd460567009e317d10bc5390764 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libuv >=1.48.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.1,<4.0a0 + - zlib + license: MIT + license_family: MIT + size: 21337290 + timestamp: 1723482049816 +- kind: conda + name: numpy + version: 2.0.1 + build: py311h35ffc71_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/numpy-2.0.1-py311h35ffc71_0.conda + sha256: 7faee51c39f959e4ff368aaf01abf669fff3018743adfd3f66ce01059bd53834 + md5: e0b858cb640bfa2cd2bae81112a948d5 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=conda-forge-mapping + size: 7585972 + timestamp: 1721966967701 +- kind: conda + name: numpy + version: 2.0.1 + build: py311h4268184_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.0.1-py311h4268184_0.conda + sha256: d52e5d2f522350a85a6e3ec461f04cf2bf49038c8b4f406358648917af1949e5 + md5: 10f25a3ce4aaa9b34ec388406ff88f6c + depends: + - __osx >=11.0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=conda-forge-mapping + size: 7015003 + timestamp: 1721966368477 +- kind: conda + name: numpy + version: 2.0.1 + build: py311hc11d9cb_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.0.1-py311hc11d9cb_0.conda + sha256: adacd81832092717e89ddc2ec2cbe4345e7f09c52da95a5a9cf6b20ae2cf8b61 + md5: 5ed65aac55ae28fd99b4401a20ec858d + depends: + - __osx >=10.13 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=conda-forge-mapping + size: 8077673 + timestamp: 1721966210264 +- kind: conda + name: numpy + version: 2.0.1 + build: py311hed25524_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.0.1-py311hed25524_0.conda + sha256: 57508c96084565eb95abfdf5710de924afb157a8d1f2f7e5d3defcbce0200e1f + md5: 7448c8d94dfb4dfa3db1437d8adaf2cd + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=conda-forge-mapping + size: 8901206 + timestamp: 1721966240264 +- kind: conda + name: numpy + version: 2.0.1 + build: py312h1103770_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.0.1-py312h1103770_0.conda + sha256: 0746a37d09036b4164ac14dd1328dd4e449a038383aac1e25e2d5f3a691518da + md5: 9f444595d8d9682891f2f078fc19da43 + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=conda-forge-mapping + size: 8345605 + timestamp: 1721966364929 +- kind: conda + name: numpy + version: 2.0.1 + build: py312h49bc9c5_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/numpy-2.0.1-py312h49bc9c5_0.conda + sha256: 13b38db57cefbbea0cb6a44a5c75df8010480dc6200eda3491c8d203072d1675 + md5: e7fed4e2639f3a0d58bd8b2164059e8d + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=conda-forge-mapping + size: 6945867 + timestamp: 1721966986321 +- kind: conda + name: numpy + version: 2.0.1 + build: py312h8813227_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.0.1-py312h8813227_0.conda + sha256: 3f73ed4464e3dc639c875b6cbe86e8095f88afe047bdfdc3d4b4ae120dd830e8 + md5: 7f239fbf9d9355f86529a35af0b24d29 + depends: + - __osx >=10.13 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=conda-forge-mapping + size: 7464264 + timestamp: 1721966235928 +- kind: conda + name: numpy + version: 2.0.1 + build: py312hb544834_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.0.1-py312hb544834_0.conda + sha256: 943ede4dc872c8f8b7d92a71b843b445f46ebf084047f5816554646d763aa50d + md5: c386f6ee0329c18d652e30b9722c6660 + depends: + - __osx >=11.0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=conda-forge-mapping + size: 6294877 + timestamp: 1721966342039 +- kind: conda + name: numpydoc + version: 1.8.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.8.0-pyhd8ed1ab_0.conda + sha256: 489a6d11f4eccbec21dac98bd7c3e8e59a4747fe95a437a32c249439fc447caa + md5: 0a5522bdd3983c52102e75d1307ad8c4 + depends: + - python >=3.9 + - sphinx >=6 + - tabulate >=0.8.10 + - tomli >=1.1.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpydoc?source=conda-forge-mapping + size: 57951 + timestamp: 1723472341838 +- kind: conda + name: openssl + version: 3.3.1 + build: h2466b09_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/openssl-3.3.1-h2466b09_2.conda + sha256: d86c4fa31294ad9068717788197e97e5637e056c82745ffb6d0e88fd1fef1a9d + md5: 375dbc2a4d5a2e4c738703207e8e368b + depends: + - ca-certificates + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - pyopenssl >=22.1 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 8385012 + timestamp: 1721197465883 +- kind: conda + name: openssl + version: 3.3.1 + build: h4bc722e_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda + sha256: b294b3cc706ad1048cdb514f0db3da9f37ae3fcc0c53a7104083dd0918adb200 + md5: e1b454497f9f7c1147fdde4b53f1b512 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc-ng >=12 + constrains: + - pyopenssl >=22.1 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2895213 + timestamp: 1721194688955 +- kind: conda + name: openssl + version: 3.3.1 + build: h87427d6_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.3.1-h87427d6_2.conda + sha256: 3cb0c05fbfd8cdb9b767396fc0e0af2d78eb4d68592855481254104330d4a4eb + md5: 3f3dbeedbee31e257866407d9dea1ff5 + depends: + - __osx >=10.13 + - ca-certificates + constrains: + - pyopenssl >=22.1 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2552939 + timestamp: 1721194674491 +- kind: conda + name: openssl + version: 3.3.1 + build: hfb2fe0b_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.3.1-hfb2fe0b_2.conda + sha256: dd7d988636f74473ebdfe15e05c5aabdb53a1d2a846c839d62289b0c37f81548 + md5: 9b551a504c1cc8f8b7b22c01814da8ba + depends: + - __osx >=11.0 + - ca-certificates + constrains: + - pyopenssl >=22.1 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2899682 + timestamp: 1721194599446 +- kind: conda + name: orc + version: 2.0.1 + build: h17fec99_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.1-h17fec99_1.conda + sha256: d340c67b23fb0e1ef7e13574dd4a428f360bfce93b2a588b3b63625926b038d6 + md5: 3bf65f0d8e7322a1cfe8b670fa35ec81 + depends: + - libgcc-ng >=12 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - snappy >=1.2.0,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1029691 + timestamp: 1716789702707 +- kind: conda + name: orc + version: 2.0.1 + build: h47ade37_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.1-h47ade37_1.conda + sha256: 567a9677258cdd03484e3045255bf10a9d8f1031c5030ef83f1fdc1a1ad6f401 + md5: cd1013678ccef9b552335004f20a2d26 + depends: + - __osx >=11.0 + - libcxx >=16 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - snappy >=1.2.0,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 417136 + timestamp: 1716789821766 +- kind: conda + name: orc + version: 2.0.1 + build: h7e885a9_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/orc-2.0.1-h7e885a9_1.conda + sha256: 8aca1dcb6e9b3e71ffbec26c2b84f45fa682d9075b78cd30acc48044b64149ec + md5: 97012c0aeee0bf55c05b5ec42cac0864 + depends: + - libprotobuf >=4.25.3,<4.25.4.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - snappy >=1.2.0,<1.3.0a0 + - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 925642 + timestamp: 1716789911582 +- kind: conda + name: orc + version: 2.0.1 + build: hf43e91b_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/orc-2.0.1-hf43e91b_1.conda + sha256: 718010a056ef084a12bfd6b4d7908c8817a0093ecc395c270857134e002d5857 + md5: 15d11d156ad646e69176df6af6ef0826 + depends: + - __osx >=10.13 + - libcxx >=16 + - libprotobuf >=4.25.3,<4.25.4.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - snappy >=1.2.0,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 438785 + timestamp: 1716789731333 +- kind: conda + name: packaging + version: '24.1' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda + sha256: 36aca948219e2c9fdd6d80728bcc657519e02f06c2703d8db3446aec67f51d81 + md5: cbe1bb1f21567018ce595d9c2be0f0db + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/packaging?source=conda-forge-mapping + size: 50290 + timestamp: 1718189540074 +- kind: conda + name: pandas + version: 2.2.2 + build: py311h14de704_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py311h14de704_1.conda + sha256: d600c0cc42fca1ad36d969758b2495062ad83124ecfcf5673c98b11093af7055 + md5: 84e2dd379d4edec4dd6382861486104d + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - numpy >=1.19,<3 + - python >=3.11,<3.12.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.11.* *_cp311 + - pytz >=2020.1 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=conda-forge-mapping + size: 15682728 + timestamp: 1715898175468 +- kind: conda + name: pandas + version: 2.2.2 + build: py311h4b4568b_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py311h4b4568b_1.conda + sha256: b08f214593af94dd9bb50d7bf432d1defde66312bd1a2476f27a5fdd9f45ef66 + md5: b1790dadc62d0af23378d5a79b263893 + depends: + - __osx >=11.0 + - libcxx >=16 + - numpy >=1.19,<3 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.11.* *_cp311 + - pytz >=2020.1 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=conda-forge-mapping + size: 14742444 + timestamp: 1715898315491 +- kind: conda + name: pandas + version: 2.2.2 + build: py311hcf9f919_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.2-py311hcf9f919_1.conda + sha256: 351b4f7211fc755ea1af8b218d2515418df3af08170197011934faf06bb5d98e + md5: ec3ed8d602148625469dc13c481f23b5 + depends: + - numpy >=1.19,<3 + - python >=3.11,<3.12.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.11.* *_cp311 + - pytz >=2020.1 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=conda-forge-mapping + size: 14600290 + timestamp: 1715898888392 +- kind: conda + name: pandas + version: 2.2.2 + build: py311hfdcbad3_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.2-py311hfdcbad3_1.conda + sha256: 070c97918f2ea3384120a87ca3681803242b48875d9269ed73542bacfa14fd03 + md5: 8dbecc860148500512e768571c59fbe0 + depends: + - __osx >=10.13 + - libcxx >=16 + - numpy >=1.19,<3 + - python >=3.11,<3.12.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.11.* *_cp311 + - pytz >=2020.1 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=conda-forge-mapping + size: 14887900 + timestamp: 1715898095186 +- kind: conda + name: pandas + version: 2.2.2 + build: py312h1171441_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.2-py312h1171441_1.conda + sha256: 99ef3986a0c6a5fe31a94b298f3ef60eb7ec7aa683a9aee6682f97d003aeb423 + md5: 240737937f1f046b0e03ecc11ac4ec98 + depends: + - __osx >=10.13 + - libcxx >=16 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=conda-forge-mapping + size: 14673730 + timestamp: 1715898164799 +- kind: conda + name: pandas + version: 2.2.2 + build: py312h1d6d2e6_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda + sha256: 80fd53b68aa89b929d03874b99621ec8cc6a12629bd8bfbdca87a95f8852af96 + md5: ae00b61f3000d2284d1f2584d4dfafa8 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=conda-forge-mapping + size: 15458981 + timestamp: 1715898284697 +- kind: conda + name: pandas + version: 2.2.2 + build: py312h72972c8_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pandas-2.2.2-py312h72972c8_1.conda + sha256: f27b950c52cac5784b184a258c599cea81fcbfbd688897da799de4b6bf91af6e + md5: 92a5cf9f4778c6c9e02582d99885b34d + depends: + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=conda-forge-mapping + size: 14181121 + timestamp: 1715899159343 +- kind: conda + name: pandas + version: 2.2.2 + build: py312h8ae5369_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda + sha256: 664bf370d1e254f29fab3b9834ae5f692a59f7e35c64c61d9a9b9989831fd721 + md5: b38af0cd7ae3616c90a2511272385941 + depends: + - __osx >=11.0 + - libcxx >=16 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=conda-forge-mapping + size: 14476760 + timestamp: 1715898136109 +- kind: conda + name: pandas-stubs + version: 2.2.2.240807 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pandas-stubs-2.2.2.240807-pyhd8ed1ab_0.conda + sha256: 858fc48f3f9b398d8ca1a4006d637ec3767cb24b5c8c6f669dcaeb64442fa4c4 + md5: f045ee4454edcf41eb489594ed8cef62 + depends: + - numpy >=1.26.0 + - python >=3.9 + - types-pytz >=2022.1.1 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas-stubs?source=conda-forge-mapping + size: 97850 + timestamp: 1723055218678 +- kind: conda + name: pango + version: 1.54.0 + build: h115fe74_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_1.conda + sha256: 7449699b7cb10f89bcfb05b1a65681bd3f73974ccddb3084cbbddb659a027718 + md5: 02bbb71305225106985ec1f28ff9f50b + depends: + - __osx >=10.13 + - cairo >=1.18.0,<2.0a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - fribidi >=1.0.10,<2.0a0 + - harfbuzz >=9.0.0,<10.0a0 + - libglib >=2.80.2,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 422438 + timestamp: 1719839620827 +- kind: conda + name: pango + version: 1.54.0 + build: h4c5309f_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda + sha256: d362237be82d5a0d532fe66ec8d68018c3b2a9705bad6d73c2b63dae2970da02 + md5: 7df02e445367703cd87a574046e3a6f0 + depends: + - cairo >=1.18.0,<2.0a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - fribidi >=1.0.10,<2.0a0 + - harfbuzz >=9.0.0,<10.0a0 + - libgcc-ng >=12 + - libglib >=2.80.2,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 447117 + timestamp: 1719839527713 +- kind: conda + name: pango + version: 1.54.0 + build: h9ee27a3_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_1.conda + sha256: 49b70f3d230381e3b1e6c036569455972130230462e0c53870b5c7135f5de467 + md5: 362011ec7d84f31f77ba13398c33cf6b + depends: + - __osx >=11.0 + - cairo >=1.18.0,<2.0a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - fribidi >=1.0.10,<2.0a0 + - harfbuzz >=9.0.0,<10.0a0 + - libglib >=2.80.2,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + license: LGPL-2.1-or-later + purls: [] + size: 418380 + timestamp: 1719839838714 +- kind: conda + name: pango + version: 1.54.0 + build: hbb871f6_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_1.conda + sha256: ca1189be471fb73ef742b2e61d345dde885c62ad4c256940984c02073fd1c0e1 + md5: bf639fd83deb4404ac988ae927f61e9e + depends: + - cairo >=1.18.0,<2.0a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - fribidi >=1.0.10,<2.0a0 + - harfbuzz >=9.0.0,<10.0a0 + - libglib >=2.80.2,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: LGPL-2.1-or-later + purls: [] + size: 450735 + timestamp: 1719840158791 +- kind: conda + name: pbr + version: 6.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pbr-6.0.0-pyhd8ed1ab_0.conda + sha256: 4c83853fc6349de163c2871613e064e5fdab91723db9b50bcda681adc05e4b87 + md5: 8dbab5ba746ed14aa32cb232dc437f8f + depends: + - pip + - python >=3.6 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/pbr?source=conda-forge-mapping + size: 73106 + timestamp: 1699384879677 +- kind: conda + name: pcre2 + version: '10.44' + build: h297a79d_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + sha256: 83153c7d8fd99cab33c92ce820aa7bfed0f1c94fc57010cf227b6e3c50cb7796 + md5: 147c83e5e44780c7492998acbacddf52 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 618973 + timestamp: 1723488853807 +- kind: conda + name: pcre2 + version: '10.44' + build: h3d7b363_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + sha256: f4a12cbf8a7c5bfa2592b9dc92b492c438781898e5b02f397979b0be6e1b5851 + md5: a3a3baddcfb8c80db84bec3cb7746fb8 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 820831 + timestamp: 1723489427046 +- kind: conda + name: pcre2 + version: '10.44' + build: h7634a1b_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + sha256: 336057fce69d45e1059f138beb38d60eb87ba858c3ad729ed49d9ecafd23669f + md5: 58cde0663f487778bcd7a0c8daf50293 + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 854306 + timestamp: 1723488807216 +- kind: conda + name: pcre2 + version: '10.44' + build: hba22ea6_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d + md5: df359c09c41cd186fffb93a2d87aa6f5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 952308 + timestamp: 1723488734144 +- kind: conda + name: pep517 + version: 0.13.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pep517-0.13.0-pyhd8ed1ab_0.tar.bz2 + sha256: 6a6f2fa6bc9106b2edcccc142242dc3ab1f2f77a6debbd5b480f08482f052636 + md5: d94aa03d99d8adc9898f783eba0d84d2 + depends: + - python >=3.8 + - tomli + license: MIT + license_family: MIT + size: 19044 + timestamp: 1667916747996 +- kind: conda + name: pip + version: '24.2' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pip-24.2-pyhd8ed1ab_0.conda + sha256: 15b480571a7a4d896aa187648cce99f98bac3926253f028f228d2e9e1cf7c1e1 + md5: 6721aef6bfe5937abe70181545dd2c51 + depends: + - python >=3.8 + - setuptools + - wheel + license: MIT + license_family: MIT + purls: + - pkg:pypi/pip?source=conda-forge-mapping + size: 1238498 + timestamp: 1722451042495 +- kind: conda + name: pixi-pycharm + version: 0.0.6 + build: unix_1234567_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-unix_1234567_0.conda + sha256: 156dd789a87ea8b6d7c329efbc202d7f21564d5afabbad9c6ac14017fb47c641 + md5: c140222c6019ef59c509f4740663fa75 + depends: + - __unix + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 8833 + timestamp: 1719726313982 +- kind: conda + name: pixi-pycharm + version: 0.0.6 + build: win_1234567_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.6-win_1234567_0.conda + sha256: 569f2a3c8b3680a1905dcd9c0ca05523c6ab4f2b4b720a7068d8267ad3ef70d8 + md5: cb165db90fb6f09710c5a5fd81775bfa + depends: + - __win + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 8629 + timestamp: 1719726272617 +- kind: conda + name: pixman + version: 0.43.2 + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda + sha256: 366d28e2a0a191d6c535e234741e0cd1d94d713f76073d8af4a5ccb2a266121e + md5: 71004cbf7924e19c02746ccde9fd7123 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 386826 + timestamp: 1706549500138 +- kind: conda + name: pixman + version: 0.43.4 + build: h63175ca_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda + sha256: 51de4d7fb41597b06d60f1b82e269dafcb55e994e08fdcca8e4d6f7d42bedd07 + md5: b98135614135d5f458b75ab9ebb9558c + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: [] + size: 461854 + timestamp: 1709239971654 +- kind: conda + name: pixman + version: 0.43.4 + build: h73e2aa4_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda + sha256: 3ab44e12e566c67a6e9fd831f557ab195456aa996b8dd9af19787ca80caa5cd1 + md5: cb134c1e03fd32f4e6bea3f6de2614fd + depends: + - libcxx >=16 + license: MIT + license_family: MIT + purls: [] + size: 323904 + timestamp: 1709239931160 +- kind: conda + name: pixman + version: 0.43.4 + build: hebf3989_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda + sha256: df0ba2710ccdea5c909b63635529797f6eb3635b6fb77ae9cb2f183d08818409 + md5: 0308c68e711cd295aaa026a4f8c4b1e5 + depends: + - libcxx >=16 + license: MIT + license_family: MIT + purls: [] + size: 198755 + timestamp: 1709239846651 +- kind: conda + name: pkginfo + version: 1.10.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.10.0-pyhd8ed1ab_0.conda + sha256: 3e833f907039646e34d23203cd5c9cc487a451d955d8c8d6581e18a8ccef4cee + md5: 8c6a4a704308f5d91f3a974a72db1096 + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 28142 + timestamp: 1709561205511 +- kind: conda + name: platformdirs + version: 4.2.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.2.2-pyhd8ed1ab_0.conda + sha256: adc59384cf0b2fc6dc7362840151e8cb076349197a38f7230278252698a88442 + md5: 6f6cf28bf8e021933869bae3f84b8fc9 + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 20572 + timestamp: 1715777739019 +- kind: conda + name: pluggy + version: 1.5.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda + sha256: 33eaa3359948a260ebccf9cdc2fd862cea5a6029783289e13602d8e634cd9a26 + md5: d3483c8fc2dc2cc3f5cf43e26d60cabf + depends: + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pluggy?source=conda-forge-mapping + size: 23815 + timestamp: 1713667175451 +- kind: conda + name: polars + version: 1.2.1 + build: py311h2bcd2da_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/polars-1.2.1-py311h2bcd2da_0.conda + sha256: c1ae25bbb949a36ecce4ee25a6971f0b2ac5665cecad4ab3fbfd5289d389e3f4 + md5: 204e0d068562012f8ebab84f8b8ad89b + depends: + - __osx >=10.13 + - numpy >=1.16.0 + - packaging + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: + - pkg:pypi/polars?source=conda-forge-mapping + size: 20332973 + timestamp: 1721593705091 +- kind: conda + name: polars + version: 1.2.1 + build: py311h6bf133b_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/polars-1.2.1-py311h6bf133b_0.conda + sha256: 0eb68fa90da9ff8cf5e46afce487216a5545739e3edb2c14de0601880213752c + md5: b1f502b160c86d0f22e578119d3aeb3b + depends: + - numpy >=1.16.0 + - packaging + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.3 + - vc14_runtime >=14.40.33810 + license: MIT + license_family: MIT + purls: + - pkg:pypi/polars?source=conda-forge-mapping + size: 21366187 + timestamp: 1721605026070 +- kind: conda + name: polars + version: 1.2.1 + build: py311h9e175c1_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/polars-1.2.1-py311h9e175c1_0.conda + sha256: e923c05d6970752891a6833ca2c0758674c9aa73a1c07fbe2431eddaa6113da1 + md5: 6cb2b9c8bb400e65e3129a6c27f95331 + depends: + - __osx >=11.0 + - numpy >=1.16.0 + - packaging + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/polars?source=conda-forge-mapping + size: 18156430 + timestamp: 1721598241505 +- kind: conda + name: polars + version: 1.2.1 + build: py311hf29da40_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/polars-1.2.1-py311hf29da40_0.conda + sha256: c5babca02abd3ca21a5f9450d49ea2df761dfea355b68500b0de8a864adfdf2f + md5: 7205baa745748f77e0969323f8f37bb6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - numpy >=1.16.0 + - packaging + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + purls: + - pkg:pypi/polars?source=conda-forge-mapping + size: 21046278 + timestamp: 1721590942653 +- kind: conda + name: polars + version: 1.2.1 + build: py312h043f87a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/polars-1.2.1-py312h043f87a_0.conda + sha256: 939d780868ab8a246698920ac7e206f26b225150ae68d962158fff417a28493a + md5: 0daa5b7f6d4f0a04e883a18779a61757 + depends: + - __osx >=11.0 + - numpy >=1.16.0 + - packaging + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/polars?source=conda-forge-mapping + size: 18240665 + timestamp: 1721600616616 +- kind: conda + name: polars + version: 1.2.1 + build: py312h0b02467_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/polars-1.2.1-py312h0b02467_0.conda + sha256: ac85c855cca45ee1def5b8e5b21c3d63fc166f7f456ce0f311d5013a7e24fb63 + md5: 4025b1baa88c6375686f8f2ff23b3657 + depends: + - __osx >=10.13 + - numpy >=1.16.0 + - packaging + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: + - pkg:pypi/polars?source=conda-forge-mapping + size: 20305325 + timestamp: 1721593559671 +- kind: conda + name: polars + version: 1.2.1 + build: py312h7285250_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/polars-1.2.1-py312h7285250_0.conda + sha256: 4a1c5fba5426337aeb2564e5b729ec500bfdbac0980dbf13ca51b3634e1ce3c4 + md5: f9f44acb5e671f282cf09e3fb79f446c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - numpy >=1.16.0 + - packaging + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + purls: + - pkg:pypi/polars?source=conda-forge-mapping + size: 21021722 + timestamp: 1721592138287 +- kind: conda + name: polars + version: 1.2.1 + build: py312hcd8180c_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/polars-1.2.1-py312hcd8180c_0.conda + sha256: d16e5fb655e8a57f7da890503190583dab3c3f7301c7393c8dc0f74ad8fdb4fa + md5: 609559bcffdd3e7a656059f256501595 + depends: + - numpy >=1.16.0 + - packaging + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.3 + - vc14_runtime >=14.40.33810 + license: MIT + license_family: MIT + purls: + - pkg:pypi/polars?source=conda-forge-mapping + size: 21188678 + timestamp: 1721603886785 +- kind: conda + name: pre-commit + version: 3.8.0 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_0.conda + sha256: 2363c8706ca3b2a3385b09e33f639f6b66e4fa8d00a21c3dea4d934472a96e85 + md5: 1822e87a5d357f79c6aab871d86fb062 + depends: + - cfgv >=2.0.0 + - identify >=1.0.0 + - nodeenv >=0.11.1 + - python >=3.9 + - pyyaml >=5.1 + - virtualenv >=20.10.0 + license: MIT + license_family: MIT + size: 180036 + timestamp: 1722604788932 +- kind: conda + name: pre-commit-hooks + version: 4.6.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-hooks-4.6.0-pyhd8ed1ab_0.conda + sha256: 2d4a57474c7e2b90cc301df6197207d0812753279b2a7fae88106e0adc5d0b21 + md5: 9b353c467bcabf27ab5bae2e319c16bf + depends: + - python >=3.6 + - ruamel.yaml >=0.15 + - tomli >=1.1.0 + license: MIT + license_family: MIT + size: 34686 + timestamp: 1712432480698 +- kind: conda + name: prettier + version: 3.3.3 + build: h0857397_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/prettier-3.3.3-h0857397_0.conda + sha256: f6eff0ca595663c117bc63dcf15879cd5d5e4d8843b724ec8cd514db84aa595f + md5: fdf60a06528d26d5cd0be2c8f823a181 + depends: + - __osx >=11.0 + - nodejs >=22.4.1,<23.0a0 + license: MIT + license_family: MIT + size: 914741 + timestamp: 1720891658342 +- kind: conda + name: prettier + version: 3.3.3 + build: h2ff3409_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/prettier-3.3.3-h2ff3409_0.conda + sha256: f192afa9f32f17da7a930c3f0ece34785a450c2f76b6a304b72c3b956bb9cd12 + md5: cfbc1d33b659d48c813602e0382cc207 + depends: + - __osx >=10.13 + - nodejs >=22.4.1,<23.0a0 + license: MIT + license_family: MIT + size: 913865 + timestamp: 1720891457992 +- kind: conda + name: prettier + version: 3.3.3 + build: ha3c0332_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/prettier-3.3.3-ha3c0332_0.conda + sha256: 536656076a168175ba856c5a7249fd0b4c17af8983522dc2919a3699f48da53c + md5: 720f5be974f78b775dd217ee41c5a41a + depends: + - nodejs >=22.4.1,<23.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.40.33810 + license: MIT + license_family: MIT + size: 913305 + timestamp: 1720891744931 +- kind: conda + name: prettier + version: 3.3.3 + build: hdfa8007_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/prettier-3.3.3-hdfa8007_0.conda + sha256: 15317524f8841877ad2a77adec30ffdcf3852bd6c9142546db7c5821fb820d90 + md5: c4c71adfbe5d84b10bf65bf30cb1402b + depends: + - __glibc >=2.17,<3.0.a0 + - nodejs >=22.4.1,<23.0a0 + license: MIT + license_family: MIT + size: 913158 + timestamp: 1720891443157 +- kind: conda + name: psutil + version: 6.0.0 + build: py311h331c9d8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.0.0-py311h331c9d8_0.conda + sha256: 33fea160c284e588f4ff534567e84c8d3679556787708b9bab89a99e5008ac76 + md5: f1cbef9236edde98a811ba5a98975f2e + depends: + - libgcc-ng >=12 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=conda-forge-mapping + size: 508965 + timestamp: 1719274724588 +- kind: conda + name: psutil + version: 6.0.0 + build: py311h72ae277_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.0.0-py311h72ae277_0.conda + sha256: fa9ddabbf1a7f0e360dcdd9dfb6fd93742e211211c821693843e946655163dbf + md5: a31301b30c5844e74944b88ff3e6a98c + depends: + - __osx >=10.13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=conda-forge-mapping + size: 517243 + timestamp: 1719274745686 +- kind: conda + name: psutil + version: 6.0.0 + build: py311hd3f4193_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.0.0-py311hd3f4193_0.conda + sha256: 984318469265162206090199a756db2f327dada39b050c9878534663b3eb6268 + md5: 3cfef0112ab97269edb8fd98afc78288 + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=conda-forge-mapping + size: 517029 + timestamp: 1719274800839 +- kind: conda + name: psutil + version: 6.0.0 + build: py311he736701_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/psutil-6.0.0-py311he736701_0.conda + sha256: 9a9900e87f48a04ea597a987105dd978f4d62312f334f2a0f58f3a749b42e226 + md5: 325e47d267a6db408c1d61bde22c2d9c + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=conda-forge-mapping + size: 527926 + timestamp: 1719275196844 +- kind: conda + name: psutil + version: 6.0.0 + build: py312h4389bb4_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/psutil-6.0.0-py312h4389bb4_0.conda + sha256: c9ed9457fa4c4900b7f2fc5e28493bdd3885acb823ed48c01dae59f043a65ad8 + md5: 86fd428b42be7495c93d0ff837adfc9e + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=conda-forge-mapping + size: 509298 + timestamp: 1719275243368 +- kind: conda + name: psutil + version: 6.0.0 + build: py312h7e5086c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.0.0-py312h7e5086c_0.conda + sha256: d677457b2ce2e6ef6c2845c653e5bc39be9a59a900d95a5a7771b490f754cb5f + md5: e45a140733a4805d80e282c1ede40d0b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=conda-forge-mapping + size: 501703 + timestamp: 1719274787455 +- kind: conda + name: psutil + version: 6.0.0 + build: py312h9a8786e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.0.0-py312h9a8786e_0.conda + sha256: d629363515df957507411fd24db2a0635ac893e5d60b2ee2f656b53be9c70b1d + md5: 1aeffa86c55972ca4e88ac843eccedf2 + depends: + - libgcc-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=conda-forge-mapping + size: 493452 + timestamp: 1719274737481 +- kind: conda + name: psutil + version: 6.0.0 + build: py312hbd25219_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/psutil-6.0.0-py312hbd25219_0.conda + sha256: 06e949079497cf8e1c9e253b77be709ec0c11816656814e1ad857ac5cbbea65b + md5: db086d71e9be086313110a670b6d549f + depends: + - __osx >=10.13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=conda-forge-mapping + size: 499307 + timestamp: 1719274858092 +- kind: conda + name: pthread-stubs + version: '0.4' + build: h36c2ea0_1001 + build_number: 1001 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 + sha256: 67c84822f87b641d89df09758da498b2d4558d47b920fd1d3fe6d3a871e000ff + md5: 22dad4df6e8630e8dff2428f6f6a7036 + depends: + - libgcc-ng >=7.5.0 + license: MIT + license_family: MIT + purls: [] + size: 5625 + timestamp: 1606147468727 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hcd874cb_1001 + build_number: 1001 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2 + sha256: bb5a6ddf1a609a63addd6d7b488b0f58d05092ea84e9203283409bff539e202a + md5: a1f820480193ea83582b13249a7e7bd9 + depends: + - m2w64-gcc-libs + license: MIT + license_family: MIT + purls: [] + size: 6417 + timestamp: 1606147814351 +- kind: conda + name: pthreads-win32 + version: 2.9.1 + build: hfa6e2cd_3 + build_number: 3 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-hfa6e2cd_3.tar.bz2 + sha256: 576a228630a72f25d255a5e345e5f10878e153221a96560f2498040cd6f54005 + md5: e2da8758d7d51ff6aa78a14dfb9dbed4 + depends: + - vc 14.* + license: LGPL 2 + purls: [] + size: 144301 + timestamp: 1537755684331 +- kind: conda + name: pyarrow + version: 17.0.0 + build: py311h06a5be4_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pyarrow-17.0.0-py311h06a5be4_1.conda + sha256: 74e7071859aa5f1550a95d47646c206b7aa79f1e798c6337bd13c6d0741441e1 + md5: 1ddca0d99f04f8f44ecfe842268597ed + depends: + - libarrow-acero 17.0.0.* + - libarrow-dataset 17.0.0.* + - libarrow-substrait 17.0.0.* + - libparquet 17.0.0.* + - numpy >=1.19,<3 + - pyarrow-core 17.0.0 *_1_* + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=conda-forge-mapping + size: 26291 + timestamp: 1722488628941 +- kind: conda + name: pyarrow + version: 17.0.0 + build: py311h35c05fe_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-17.0.0-py311h35c05fe_1.conda + sha256: b738e61f71e22f9e9c8130f27c311877080470feda02db5887384f9a86066056 + md5: b07ff5fa54f852675220aab4b4b477dc + depends: + - libarrow-acero 17.0.0.* + - libarrow-dataset 17.0.0.* + - libarrow-substrait 17.0.0.* + - libparquet 17.0.0.* + - numpy >=1.19,<3 + - pyarrow-core 17.0.0 *_1_* + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=conda-forge-mapping + size: 25881 + timestamp: 1722487614290 +- kind: conda + name: pyarrow + version: 17.0.0 + build: py311hbd00459_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-17.0.0-py311hbd00459_1.conda + sha256: bdedf53b7a8c190e6654df88601462a75df899e04fbbb6f1164f9ef0f52389f3 + md5: d93c55363ee2cf017bba7d5f49dead14 + depends: + - libarrow-acero 17.0.0.* + - libarrow-dataset 17.0.0.* + - libarrow-substrait 17.0.0.* + - libparquet 17.0.0.* + - numpy >=1.19,<3 + - pyarrow-core 17.0.0 *_1_* + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=conda-forge-mapping + size: 25719 + timestamp: 1722487909182 +- kind: conda + name: pyarrow + version: 17.0.0 + build: py311he764780_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-17.0.0-py311he764780_1.conda + sha256: 04227d9772eb1a116fff6992586f95f2fc38f60cba45222b1b04751cebe9923c + md5: 355083896d9cd52daf9e6cad2fe69368 + depends: + - libarrow-acero 17.0.0.* + - libarrow-dataset 17.0.0.* + - libarrow-substrait 17.0.0.* + - libparquet 17.0.0.* + - numpy >=1.19,<3 + - pyarrow-core 17.0.0 *_1_* + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=conda-forge-mapping + size: 25901 + timestamp: 1722487480901 +- kind: conda + name: pyarrow + version: 17.0.0 + build: py312h0be7463_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-17.0.0-py312h0be7463_1.conda + sha256: 9a568fc2bdc7541c988143bcd62a50462c71afaf560c68a3c85571900638687b + md5: d4bc0e101e9500723fd16fcb6d9f2c29 + depends: + - libarrow-acero 17.0.0.* + - libarrow-dataset 17.0.0.* + - libarrow-substrait 17.0.0.* + - libparquet 17.0.0.* + - numpy >=1.19,<3 + - pyarrow-core 17.0.0 *_1_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=conda-forge-mapping + size: 25826 + timestamp: 1722487375945 +- kind: conda + name: pyarrow + version: 17.0.0 + build: py312h7e22eef_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pyarrow-17.0.0-py312h7e22eef_1.conda + sha256: b8fed6e60d7cfa22d5ce7f4cc19c5d1a7a44ee79ea38604d3a27417c195b0eb7 + md5: f8ca5223f89576efa4e384ccb497c299 + depends: + - libarrow-acero 17.0.0.* + - libarrow-dataset 17.0.0.* + - libarrow-substrait 17.0.0.* + - libparquet 17.0.0.* + - numpy >=1.19,<3 + - pyarrow-core 17.0.0 *_1_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=conda-forge-mapping + size: 26280 + timestamp: 1722489225383 +- kind: conda + name: pyarrow + version: 17.0.0 + build: py312h9cebb41_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-17.0.0-py312h9cebb41_1.conda + sha256: f08a9ae2c5b57085ef70175928f7bd0954d9ea56ef6cd2cd51a29b6a7c879204 + md5: 7e8ddbd44fb99ba376b09c4e9e61e509 + depends: + - libarrow-acero 17.0.0.* + - libarrow-dataset 17.0.0.* + - libarrow-substrait 17.0.0.* + - libparquet 17.0.0.* + - numpy >=1.19,<3 + - pyarrow-core 17.0.0 *_1_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=conda-forge-mapping + size: 25693 + timestamp: 1722487649034 +- kind: conda + name: pyarrow + version: 17.0.0 + build: py312ha814d7c_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-17.0.0-py312ha814d7c_1.conda + sha256: 1ea696a3c4eb6ad9a12e1ae5f368789bc2cd34519a316f6557abd771f6fa4d9a + md5: 324baefe2624473b422212c2d1db964b + depends: + - libarrow-acero 17.0.0.* + - libarrow-dataset 17.0.0.* + - libarrow-substrait 17.0.0.* + - libparquet 17.0.0.* + - numpy >=1.19,<3 + - pyarrow-core 17.0.0 *_1_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=conda-forge-mapping + size: 25928 + timestamp: 1722487521448 +- kind: conda + name: pyarrow-core + version: 17.0.0 + build: py311h073f6b9_1_cpu + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-17.0.0-py311h073f6b9_1_cpu.conda + sha256: d32ad71b9408a0c9cefc10783ae2e854345cb3527ff4b36d6ac69a59f252b240 + md5: b7a65f6c5653931e20663fb54d12776f + depends: + - __osx >=10.13 + - libarrow 17.0.0.* *cpu + - libcxx >=17 + - libzlib >=1.3.1,<2.0a0 + - numpy >=1.19,<3 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=conda-forge-mapping + size: 4139975 + timestamp: 1722487425649 +- kind: conda + name: pyarrow-core + version: 17.0.0 + build: py311h4510849_1_cpu + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-17.0.0-py311h4510849_1_cpu.conda + sha256: b28da5514794de5cbe50a096ac42b9cee7d5da099adb11c59dba6eeef0911412 + md5: 228ea6517619bb88837e38d6cda37959 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 17.0.0.* *cpu + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.3.1,<2.0a0 + - numpy >=1.19,<3 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=conda-forge-mapping + size: 4651660 + timestamp: 1722487374774 +- kind: conda + name: pyarrow-core + version: 17.0.0 + build: py311hdea38fa_1_cpu + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-17.0.0-py311hdea38fa_1_cpu.conda + sha256: a01e681507ad069e8c343601599d2e92a1dfeede15bf1e26174f0c257a8fcdc0 + md5: ca86d521479fa0a377ac389eb4484aa4 + depends: + - libarrow 17.0.0.* *cpu + - libzlib >=1.3.1,<2.0a0 + - numpy >=1.19,<3 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=conda-forge-mapping + size: 3591992 + timestamp: 1722487975106 +- kind: conda + name: pyarrow-core + version: 17.0.0 + build: py311he42f270_1_cpu + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-17.0.0-py311he42f270_1_cpu.conda + sha256: 12320d8fa279bd331564a0516e1874fcb3d03db9add47a77148fd8a6f906ec36 + md5: 2a238bb5f7bb01e19105b9b883269e6e + depends: + - __osx >=11.0 + - libarrow 17.0.0.* *cpu + - libcxx >=17 + - libzlib >=1.3.1,<2.0a0 + - numpy >=1.19,<3 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=conda-forge-mapping + size: 4032162 + timestamp: 1722487567114 +- kind: conda + name: pyarrow-core + version: 17.0.0 + build: py312h63b501a_1_cpu + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-17.0.0-py312h63b501a_1_cpu.conda + sha256: 9e65c0188d6afbbc84a663a537017759d0841282e6dcbef13d3fc991012d68d0 + md5: c65aae5e4ef6511c8f2e161bbee00a95 + depends: + - __osx >=10.13 + - libarrow 17.0.0.* *cpu + - libcxx >=17 + - libzlib >=1.3.1,<2.0a0 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=conda-forge-mapping + size: 4095434 + timestamp: 1722487335874 +- kind: conda + name: pyarrow-core + version: 17.0.0 + build: py312h6a9c419_1_cpu + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-17.0.0-py312h6a9c419_1_cpu.conda + sha256: ba4cc5970f5e7ab8687ea229eca32a07181cd3aebaad66b82f6113d772219d77 + md5: d35c439c23edaa77b00d8b5a7f7f8d42 + depends: + - libarrow 17.0.0.* *cpu + - libzlib >=1.3.1,<2.0a0 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=conda-forge-mapping + size: 3503799 + timestamp: 1722488098978 +- kind: conda + name: pyarrow-core + version: 17.0.0 + build: py312h9cafe31_1_cpu + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-17.0.0-py312h9cafe31_1_cpu.conda + sha256: 0b594422fb27578470c42d238d7152f2335ba1a5106049201ac08b3a7e3505c0 + md5: 235827b9c93850cafdd2d5ab359893f9 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 17.0.0.* *cpu + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.3.1,<2.0a0 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=conda-forge-mapping + size: 4645745 + timestamp: 1722487499158 +- kind: conda + name: pyarrow-core + version: 17.0.0 + build: py312he20ac61_1_cpu + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-17.0.0-py312he20ac61_1_cpu.conda + sha256: 2aa30a7d877a61cce833cc9393a96295a2bdd8da09ae19c6c93dc6be143599d5 + md5: 5741dbf1e41816bc7e52ac5372da021e + depends: + - __osx >=11.0 + - libarrow 17.0.0.* *cpu + - libcxx >=17 + - libzlib >=1.3.1,<2.0a0 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=conda-forge-mapping + size: 3977905 + timestamp: 1722487471071 +- kind: conda + name: pycparser + version: '2.22' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 + md5: 844d9eb3b43095b031874477f7d70088 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pycparser?source=conda-forge-mapping + size: 105098 + timestamp: 1711811634025 +- kind: pypi + name: pydantic + version: 2.8.2 + url: https://files.pythonhosted.org/packages/1f/fa/b7f815b8c9ad021c07f88875b601222ef5e70619391ade4a49234d12d278/pydantic-2.8.2-py3-none-any.whl + sha256: 73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8 + requires_dist: + - annotated-types>=0.4.0 + - pydantic-core==2.20.1 + - typing-extensions>=4.12.2 ; python_version >= '3.13' + - typing-extensions>=4.6.1 ; python_version < '3.13' + - email-validator>=2.0.0 ; extra == 'email' + requires_python: '>=3.8' +- kind: pypi + name: pydantic-core + version: 2.20.1 + url: https://files.pythonhosted.org/packages/6f/47/ef0d60ae23c41aced42921728650460dc831a0adf604bfa66b76028cb4d0/pydantic_core-2.20.1-cp312-cp312-macosx_10_12_x86_64.whl + sha256: 595ba5be69b35777474fa07f80fc260ea71255656191adb22a8c53aba4479231 + requires_dist: + - typing-extensions>=4.6.0,!=4.7.0 + requires_python: '>=3.8' +- kind: pypi + name: pydantic-core + version: 2.20.1 + url: https://files.pythonhosted.org/packages/d5/36/e61ad5a46607a469e2786f398cd671ebafcd9fb17f09a2359985c7228df5/pydantic_core-2.20.1-cp312-none-win_amd64.whl + sha256: 035ede2e16da7281041f0e626459bcae33ed998cca6a0a007a5ebb73414ac72d + requires_dist: + - typing-extensions>=4.6.0,!=4.7.0 + requires_python: '>=3.8' +- kind: pypi + name: pydantic-core + version: 2.20.1 + url: https://files.pythonhosted.org/packages/09/b3/a5a54b47cccd1ab661ed5775235c5e06924753c2d4817737c5667bfa19a8/pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e + requires_dist: + - typing-extensions>=4.6.0,!=4.7.0 + requires_python: '>=3.8' +- kind: pypi + name: pydantic-core + version: 2.20.1 + url: https://files.pythonhosted.org/packages/6a/23/430f2878c9cd977a61bb39f71751d9310ec55cee36b3d5bf1752c6341fd0/pydantic_core-2.20.1-cp312-cp312-macosx_11_0_arm64.whl + sha256: a4f55095ad087474999ee28d3398bae183a66be4823f753cd7d67dd0153427c9 + requires_dist: + - typing-extensions>=4.6.0,!=4.7.0 + requires_python: '>=3.8' +- kind: pypi + name: pydantic-core + version: 2.20.1 + url: https://files.pythonhosted.org/packages/35/7f/58758c42c61b0bdd585158586fecea295523d49933cb33664ea888162daf/pydantic_core-2.20.1-cp311-none-win_amd64.whl + sha256: 40a783fb7ee353c50bd3853e626f15677ea527ae556429453685ae32280c19c2 + requires_dist: + - typing-extensions>=4.6.0,!=4.7.0 + requires_python: '>=3.8' +- kind: pypi + name: pydantic-core + version: 2.20.1 + url: https://files.pythonhosted.org/packages/3c/ae/fc99ce1ba791c9e9d1dee04ce80eef1dae5b25b27e3fc8e19f4e3f1348bf/pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: d3f3ed29cd9f978c604708511a1f9c2fdcb6c38b9aae36a51905b8811ee5cbf1 + requires_dist: + - typing-extensions>=4.6.0,!=4.7.0 + requires_python: '>=3.8' +- kind: pypi + name: pydantic-core + version: 2.20.1 + url: https://files.pythonhosted.org/packages/9b/83/6f2bfe75209d557ae1c3550c1252684fc1827b8b12fbed84c3b4439e135d/pydantic_core-2.20.1-cp311-cp311-macosx_11_0_arm64.whl + sha256: 175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88 + requires_dist: + - typing-extensions>=4.6.0,!=4.7.0 + requires_python: '>=3.8' +- kind: pypi + name: pydantic-core + version: 2.20.1 + url: https://files.pythonhosted.org/packages/61/db/f6a724db226d990a329910727cfac43539ff6969edc217286dd05cda3ef6/pydantic_core-2.20.1-cp311-cp311-macosx_10_12_x86_64.whl + sha256: d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312 + requires_dist: + - typing-extensions>=4.6.0,!=4.7.0 + requires_python: '>=3.8' +- kind: conda + name: pydiverse-pipedag + version: 0.9.5 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pydiverse-pipedag-0.9.5-pyhd8ed1ab_0.conda + sha256: 313043b5371252b5f483c8cc364ad85faa13da469c3631780217d2f53672ab31 + md5: 155af35ba699bc813eac53e430e7438a + depends: + - attrs >=22.1.0 + - click >=8.1.3 + - cryptography >=41.0.1 + - msgpack-python >=1.0.4 + - networkx >=2.8 + - packaging >=21.3 + - pandas >=1.4.3 + - pyarrow >=11.0.0 + - pydot >=1.4.2 + - pynng >=0.7.1 + - pyparsing >=3.0 + - python >=3.9,<4.0 + - python-box >=6.1.0 + - pyyaml >=6.0 + - sqlalchemy >=1.4.39 + - structlog >=22.1.0 + - typing-extensions >=4.1.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pydiverse-pipedag?source=conda-forge-mapping + size: 129629 + timestamp: 1721658476653 +- kind: conda + name: pydot + version: 3.0.1 + build: py311h1ea47a8_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pydot-3.0.1-py311h1ea47a8_0.conda + sha256: fc9cb09cca470d048e0e1775cac5c5afbd1abebce4111a3fbecddf801fa7c381 + md5: a9d052686e7012d0859b6ab76a47f688 + depends: + - graphviz >=2.38.0 + - pyparsing >=3.0.9 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydot?source=conda-forge-mapping + size: 59731 + timestamp: 1721228440790 +- kind: conda + name: pydot + version: 3.0.1 + build: py311h267d04e_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydot-3.0.1-py311h267d04e_0.conda + sha256: ebed1aed93d81ad3e6261e4492537bf3275310905260dc50a8d755f807935c3c + md5: 341d477d619235f81332d0fa2289963e + depends: + - graphviz >=2.38.0 + - pyparsing >=3.0.9 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydot?source=conda-forge-mapping + size: 58601 + timestamp: 1721228489179 +- kind: conda + name: pydot + version: 3.0.1 + build: py311h38be061_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pydot-3.0.1-py311h38be061_0.conda + sha256: 87de737dea9da56a3fd74a5aa1347e6c7d60ca2b34daff205ea72a00c5e9d8ba + md5: 036ce626484c4458cc99b6d55bb036eb + depends: + - graphviz >=2.38.0 + - pyparsing >=3.0.9 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydot?source=conda-forge-mapping + size: 58458 + timestamp: 1721228186304 +- kind: conda + name: pydot + version: 3.0.1 + build: py311h6eed73b_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pydot-3.0.1-py311h6eed73b_0.conda + sha256: e41fd84ddf45a4c7777e3b9b8358458df41c95117a359dcbe264ee7c63845ac5 + md5: 2ee9e75c42576cdc31881f22ba0522fe + depends: + - graphviz >=2.38.0 + - pyparsing >=3.0.9 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydot?source=conda-forge-mapping + size: 59507 + timestamp: 1721228226369 +- kind: conda + name: pydot + version: 3.0.1 + build: py312h2e8e312_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pydot-3.0.1-py312h2e8e312_0.conda + sha256: 9d8e55ce8a556d6a3867f22d5100e00591495144137e75d14b1ee521e46e8130 + md5: c0921c89497f7d0dcd17abb729418298 + depends: + - graphviz >=2.38.0 + - pyparsing >=3.0.9 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydot?source=conda-forge-mapping + size: 57028 + timestamp: 1721228374288 +- kind: conda + name: pydot + version: 3.0.1 + build: py312h7900ff3_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pydot-3.0.1-py312h7900ff3_0.conda + sha256: cae81f9af3d75ef689fbc6e25f94ed4c2dcbba3c498ec7f803df96f7754bbb23 + md5: d09da44e1f00d5f99adadd5aa6244c2f + depends: + - graphviz >=2.38.0 + - pyparsing >=3.0.9 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydot?source=conda-forge-mapping + size: 56653 + timestamp: 1721228161934 +- kind: conda + name: pydot + version: 3.0.1 + build: py312h81bd7bf_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydot-3.0.1-py312h81bd7bf_0.conda + sha256: dfcd6f95303d586103be4e9014ff975ab71637d702cb7d5e25b6bd538f41ac26 + md5: 63bdacd11dfcd49f3139b15b158bd939 + depends: + - graphviz >=2.38.0 + - pyparsing >=3.0.9 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydot?source=conda-forge-mapping + size: 57104 + timestamp: 1721228373130 +- kind: conda + name: pydot + version: 3.0.1 + build: py312hb401068_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pydot-3.0.1-py312hb401068_0.conda + sha256: b37a343a59c485cbde27a70bed0b018105c992f8faa40419b881610c8aacf9a6 + md5: f3a054c4a1fbbd110811917921f48ef6 + depends: + - graphviz >=2.38.0 + - pyparsing >=3.0.9 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pydot?source=conda-forge-mapping + size: 56143 + timestamp: 1721228348170 +- kind: conda + name: pygments + version: 2.18.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b + md5: b7f5c092b8f9800150d998a71b76d5a1 + depends: + - python >=3.8 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/pygments?source=conda-forge-mapping + size: 879295 + timestamp: 1714846885370 +- kind: conda + name: pygments + version: 2.18.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b + md5: b7f5c092b8f9800150d998a71b76d5a1 + depends: + - python >=3.8 + license: BSD-2-Clause + license_family: BSD + size: 879295 + timestamp: 1714846885370 +- kind: conda + name: pynng + version: 0.8.0 + build: py311hb9542d7_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pynng-0.8.0-py311hb9542d7_3.conda + sha256: eb285d42cbd47ba144c432e8195de00fdbd92d9ce2762af6bd3be336916dd430 + md5: c52ac9de387c7fb1ad9ec1c44b9782e5 + depends: + - __osx >=11.0 + - cffi + - libcxx >=16 + - mbedtls 3.3.0.* + - nng 1.6.0.* + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - sniffio + license: MIT + license_family: MIT + purls: + - pkg:pypi/pynng?source=conda-forge-mapping + size: 103755 + timestamp: 1722866282111 +- kind: conda + name: pynng + version: 0.8.0 + build: py311hbafa61a_3 + build_number: 3 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pynng-0.8.0-py311hbafa61a_3.conda + sha256: f5a76204f62355dec2d410a5dbc3dfa57acdad3428e6141401afbcf745ed70c3 + md5: b521dd52abc1db777447acdaaeb2399b + depends: + - __osx >=10.13 + - cffi + - libcxx >=16 + - mbedtls 3.3.0.* + - nng 1.6.0.* + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - sniffio + license: MIT + license_family: MIT + purls: + - pkg:pypi/pynng?source=conda-forge-mapping + size: 104327 + timestamp: 1722866320818 +- kind: conda + name: pynng + version: 0.8.0 + build: py311hda3d55a_3 + build_number: 3 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pynng-0.8.0-py311hda3d55a_3.conda + sha256: aacf4ae855e9d9db0818d89d5847b8defdb0e93c0f023391b539ecb388341750 + md5: 95632ec4078888089cc68ceba6274327 + depends: + - cffi + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - sniffio + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pynng?source=conda-forge-mapping + size: 432249 + timestamp: 1722866711769 +- kind: conda + name: pynng + version: 0.8.0 + build: py311hf86e51f_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pynng-0.8.0-py311hf86e51f_3.conda + sha256: 5d59f75379724823059f35c77d9b47c687a4b0d4edd14fe882a196d06f61f280 + md5: f4bee7ec8dc720d15f8f572af62dea72 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - mbedtls 3.3.0.* + - nng 1.6.0.* + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - sniffio + license: MIT + license_family: MIT + purls: + - pkg:pypi/pynng?source=conda-forge-mapping + size: 108546 + timestamp: 1722866180917 +- kind: conda + name: pynng + version: 0.8.0 + build: py312h275cf98_3 + build_number: 3 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pynng-0.8.0-py312h275cf98_3.conda + sha256: 32221cd9d8c3b8db4de992a0d30d6cb1f3d87d4a2ab2361e7ce47cce557044d4 + md5: 52bfa690b04007e4a88d64c17db4b3f4 + depends: + - cffi + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - sniffio + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pynng?source=conda-forge-mapping + size: 430871 + timestamp: 1722866997754 +- kind: conda + name: pynng + version: 0.8.0 + build: py312h28f332c_3 + build_number: 3 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pynng-0.8.0-py312h28f332c_3.conda + sha256: 4337ce101f7212fcc9a8d6c0f6b0b235116c49b0e745db1b38cbbd61322f6024 + md5: b8839a74b9fbebd0f5156e7cc8e05c65 + depends: + - __osx >=10.13 + - cffi + - libcxx >=16 + - mbedtls 3.3.0.* + - nng 1.6.0.* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - sniffio + license: MIT + license_family: MIT + purls: + - pkg:pypi/pynng?source=conda-forge-mapping + size: 104359 + timestamp: 1722866216438 +- kind: conda + name: pynng + version: 0.8.0 + build: py312h5c2e7bc_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pynng-0.8.0-py312h5c2e7bc_3.conda + sha256: 0c78d48428e232096bad897d34e8849823eb72db24a9d3c13bf233b731020e56 + md5: a557ae030200f646e17dc420b7cf7ac0 + depends: + - __osx >=11.0 + - cffi + - libcxx >=16 + - mbedtls 3.3.0.* + - nng 1.6.0.* + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - sniffio + license: MIT + license_family: MIT + purls: + - pkg:pypi/pynng?source=conda-forge-mapping + size: 103632 + timestamp: 1722866256531 +- kind: conda + name: pynng + version: 0.8.0 + build: py312hca68cad_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pynng-0.8.0-py312hca68cad_3.conda + sha256: d6281deb3e5e57889d4a45adb28b7321fa55d58458f7ed0af5998771525232ab + md5: 7ac385c57f995ccaf1d185d2d88d4cdc + depends: + - __glibc >=2.17,<3.0.a0 + - cffi + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - mbedtls 3.3.0.* + - nng 1.6.0.* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - sniffio + license: MIT + license_family: MIT + purls: + - pkg:pypi/pynng?source=conda-forge-mapping + size: 108020 + timestamp: 1722866136246 +- kind: conda + name: pyodbc + version: 5.1.0 + build: py311h12c1d0e_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pyodbc-5.1.0-py311h12c1d0e_0.conda + sha256: 81a72688e36d1f15afafe88210732b0cea5266202196d4cc9ffbd896ea905e6d + md5: c3c698cf7c0703870d30064d3d295de7 + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyodbc?source=conda-forge-mapping + size: 68838 + timestamp: 1707165602583 +- kind: conda + name: pyodbc + version: 5.1.0 + build: py311h92babd0_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyodbc-5.1.0-py311h92babd0_0.conda + sha256: ef1f8d7856b3ed698b0cc84f39a6448a311c1e7f75e564a50ab8b1afe4a67b1e + md5: 58de170e4c93b57ac150c0300555c045 + depends: + - libcxx >=16 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - unixodbc >=2.3.12,<2.4.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyodbc?source=conda-forge-mapping + size: 69020 + timestamp: 1707165510349 +- kind: conda + name: pyodbc + version: 5.1.0 + build: py311hb755f60_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyodbc-5.1.0-py311hb755f60_0.conda + sha256: 619894b4f17e209650e8236472f8d4dc5fa5a2222cd9e495499810ad5d428bff + md5: 39af1db04d533d968e555e396d54681e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - unixodbc >=2.3.12,<2.4.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyodbc?source=conda-forge-mapping + size: 78324 + timestamp: 1707165286293 +- kind: conda + name: pyodbc + version: 5.1.0 + build: py311hdd0406b_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pyodbc-5.1.0-py311hdd0406b_0.conda + sha256: 2b7e6911eb77688e6a1255d0b5ddad93c79ab3108bbac5e0fd2b2e29e3050d39 + md5: 5bdaa8991e86ef55c555ed89690dad14 + depends: + - libcxx >=16 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - unixodbc >=2.3.12,<2.4.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyodbc?source=conda-forge-mapping + size: 69313 + timestamp: 1707165427395 +- kind: conda + name: pyodbc + version: 5.1.0 + build: py312h20a0b95_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyodbc-5.1.0-py312h20a0b95_0.conda + sha256: 6e3dbc34b402776288566432a68e3b6d0a472992ef9ab57aa832209bf368018c + md5: c8642eee701f3ea5cf5fd8216215c8e5 + depends: + - libcxx >=16 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - unixodbc >=2.3.12,<2.4.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyodbc?source=conda-forge-mapping + size: 68488 + timestamp: 1707165509996 +- kind: conda + name: pyodbc + version: 5.1.0 + build: py312h30efb56_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyodbc-5.1.0-py312h30efb56_0.conda + sha256: b56b1f210f090adc9118b65f9ba856510d031dd1581e19ce7c680d9c0581772b + md5: 059081fc4927572ba5117b736097bf57 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - unixodbc >=2.3.12,<2.4.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyodbc?source=conda-forge-mapping + size: 78711 + timestamp: 1707165278144 +- kind: conda + name: pyodbc + version: 5.1.0 + build: py312h53d5487_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pyodbc-5.1.0-py312h53d5487_0.conda + sha256: 773bfcd6df38d797b47eac9521664887251928388c19d52d938d72bc35f795d5 + md5: c1b386c21d09f902cbb3281709b237bd + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyodbc?source=conda-forge-mapping + size: 69240 + timestamp: 1707165844930 +- kind: conda + name: pyodbc + version: 5.1.0 + build: py312hede676d_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pyodbc-5.1.0-py312hede676d_0.conda + sha256: 51a3e0f9bd7e4e664cad63cefa4eb718ed2e88232806094432d3c46e3b313205 + md5: 053c17e70a9fe71d8094fa0537d967b5 + depends: + - libcxx >=16 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - unixodbc >=2.3.12,<2.4.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyodbc?source=conda-forge-mapping + size: 69853 + timestamp: 1707165439275 +- kind: conda + name: pyparsing + version: 3.1.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda + sha256: 06c77cb03e5dde2d939b216c99dd2db52ea93a4c7c599f3882f136005c359c7b + md5: b9a4dacf97241704529131a0dfc0494f + depends: + - python >=3.6 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyparsing?source=conda-forge-mapping + size: 89455 + timestamp: 1709721146886 +- kind: conda + name: pysocks + version: 1.7.1 + build: pyh0701188_6 + build_number: 6 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 + sha256: b3a612bc887f3dd0fb7c4199ad8e342bd148cf69a9b74fd9468a18cf2bef07b7 + md5: 56cd9fe388baac0e90c7149cfac95b60 + depends: + - __win + - python >=3.8 + - win_inet_pton + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=conda-forge-mapping + size: 19348 + timestamp: 1661605138291 +- kind: conda + name: pysocks + version: 1.7.1 + build: pyh0701188_6 + build_number: 6 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 + sha256: b3a612bc887f3dd0fb7c4199ad8e342bd148cf69a9b74fd9468a18cf2bef07b7 + md5: 56cd9fe388baac0e90c7149cfac95b60 + depends: + - __win + - python >=3.8 + - win_inet_pton + license: BSD-3-Clause + license_family: BSD + size: 19348 + timestamp: 1661605138291 +- kind: conda + name: pysocks + version: 1.7.1 + build: pyha2e5f31_6 + build_number: 6 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b + md5: 2a7de29fb590ca14b5243c4c812c8025 + depends: + - __unix + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=conda-forge-mapping + size: 18981 + timestamp: 1661604969727 +- kind: conda + name: pysocks + version: 1.7.1 + build: pyha2e5f31_6 + build_number: 6 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b + md5: 2a7de29fb590ca14b5243c4c812c8025 + depends: + - __unix + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 18981 + timestamp: 1661604969727 +- kind: conda + name: pytest + version: 8.3.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda + sha256: 72c84a3cd9fe82835a88e975fd2a0dbf2071d1c423ea4f79e7930578c1014873 + md5: e010a224b90f1f623a917c35addbb924 + depends: + - colorama + - exceptiongroup >=1.0.0rc8 + - iniconfig + - packaging + - pluggy <2,>=1.5 + - python >=3.8 + - tomli >=1 + constrains: + - pytest-faulthandler >=2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest?source=conda-forge-mapping + size: 257671 + timestamp: 1721923749407 +- kind: conda + name: pytest-cov + version: 5.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda + sha256: 218306243faf3c36347131c2b36bb189daa948ac2e92c7ab52bb26cc8c157b3c + md5: c54c0107057d67ddf077751339ec2c63 + depends: + - coverage >=5.2.1 + - pytest >=4.6 + - python >=3.8 + - toml + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest-cov?source=conda-forge-mapping + size: 25507 + timestamp: 1711411153367 +- kind: conda + name: pytest-emoji + version: 0.2.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytest-emoji-0.2.0-pyhd8ed1ab_0.tar.bz2 + sha256: f2f39fc1a0a8b7386de14f30754b888ca939a3ce91f875e69ba6dbc04792d88c + md5: bb3982cdd7fc4b08efb7c3de53348038 + depends: + - pytest >=4.2.1 + - python >=3.4 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest-emoji?source=conda-forge-mapping + size: 9720 + timestamp: 1655975747054 +- kind: conda + name: pytest-md + version: 0.2.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytest-md-0.2.0-pyhd8ed1ab_0.tar.bz2 + sha256: 41556a3322d3c077f220de2df8dde9f50bdab927e3a97acd3344e64ccfcf0373 + md5: 8192af7902d79448fe606f88492de653 + depends: + - pytest >=4.2.1 + - python >=3.6 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytest-md?source=conda-forge-mapping + size: 10315 + timestamp: 1655975858477 +- kind: conda + name: python + version: 3.11.9 + build: h631f459_0_cpython + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/python-3.11.9-h631f459_0_cpython.conda + sha256: 23698d4eb24970f74911d120204318d48384fabbb25e1e57773ad74fcd38fb12 + md5: d7ed1e7c4e2dcdfd4599bd42c0613e6c + depends: + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libsqlite >=3.45.3,<4.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.2.1,<4.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.11.* *_cp311 + license: Python-2.0 + purls: [] + size: 18232422 + timestamp: 1713551717924 +- kind: conda + name: python + version: 3.11.9 + build: h657bba9_0_cpython + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.9-h657bba9_0_cpython.conda + sha256: 3b50a5abb3b812875beaa9ab792dbd1bf44f335c64e9f9fedcf92d953995651c + md5: 612763bc5ede9552e4233ec518b9c9fb + depends: + - __osx >=10.9 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libsqlite >=3.45.3,<4.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - ncurses >=6.4.20240210,<7.0a0 + - openssl >=3.2.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.11.* *_cp311 + license: Python-2.0 + purls: [] + size: 15503226 + timestamp: 1713553747073 +- kind: conda + name: python + version: 3.11.9 + build: h932a869_0_cpython + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.9-h932a869_0_cpython.conda + sha256: a436ceabde1f056a0ac3e347dadc780ee2a135a421ddb6e9a469370769829e3c + md5: 293e0713ae804b5527a673e7605c04fc + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libsqlite >=3.45.3,<4.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - ncurses >=6.4.20240210,<7.0a0 + - openssl >=3.2.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.11.* *_cp311 + license: Python-2.0 + purls: [] + size: 14644189 + timestamp: 1713552154779 +- kind: conda + name: python + version: 3.11.9 + build: hb806964_0_cpython + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.9-hb806964_0_cpython.conda + sha256: 177f33a1fb8d3476b38f73c37b42f01c0b014fa0e039a701fd9f83d83aae6d40 + md5: ac68acfa8b558ed406c75e98d3428d7b + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=12 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.45.3,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.2.13,<2.0.0a0 + - ncurses >=6.4.20240210,<7.0a0 + - openssl >=3.2.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.11.* *_cp311 + license: Python-2.0 + purls: [] + size: 30884494 + timestamp: 1713553104915 +- kind: conda + name: python + version: 3.12.5 + build: h2ad013b_0_cpython + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.5-h2ad013b_0_cpython.conda + sha256: e2aad83838988725d4ffba4e9717b9328054fd18a668cff3377e0c50f109e8bd + md5: 9c56c4df45f6571b13111d8df2448692 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=12 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.46.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.3.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + size: 31663253 + timestamp: 1723143721353 +- kind: conda + name: python + version: 3.12.5 + build: h30c5eda_0_cpython + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.5-h30c5eda_0_cpython.conda + sha256: 1319e918fb54c9491832a9731cad00235a76f61c6f9b23fc0f70cdfb74c950ea + md5: 5e315581e2948dfe3bcac306540e9803 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libsqlite >=3.46.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.3.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + size: 12926356 + timestamp: 1723142203193 +- kind: conda + name: python + version: 3.12.5 + build: h37a9e06_0_cpython + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.5-h37a9e06_0_cpython.conda + sha256: c0f39e625b2fd65f70a9cc086fe4b25cc72228453dbbcd92cd5d140d080e38c5 + md5: 517cb4e16466f8d96ba2a72897d14c48 + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libsqlite >=3.46.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.3.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + size: 12173272 + timestamp: 1723142761765 +- kind: conda + name: python + version: 3.12.5 + build: h889d299_0_cpython + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/python-3.12.5-h889d299_0_cpython.conda + sha256: 4cef304eb8877fd3094c14b57097ccc1b817b4afbf2223dd45d2b61e44064740 + md5: db056d8b140ab2edd56a2f9bdb203dcd + depends: + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libsqlite >=3.46.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.1,<4.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + size: 15897752 + timestamp: 1723141830317 +- kind: conda + name: python-box + version: 7.2.0 + build: py311h331c9d8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-box-7.2.0-py311h331c9d8_0.conda + sha256: 6ae96f05ccd38174fdf7a8a36529eeaad616b05ee0a58457c521fca17443d044 + md5: ba1ece356fb99b2be2845a8191527de5 + depends: + - libgcc-ng >=12 + - pip + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ruamel.yaml + - toml + license: MIT + license_family: MIT + purls: + - pkg:pypi/python-box?source=conda-forge-mapping + size: 769181 + timestamp: 1718251752935 +- kind: conda + name: python-box + version: 7.2.0 + build: py311h72ae277_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/python-box-7.2.0-py311h72ae277_0.conda + sha256: 8248be0221dd392313eb89d924515fd1771b27604e7844c38ae722f3bdc7464c + md5: 933476e631247e9e21c0ae1e2d063ace + depends: + - __osx >=10.13 + - pip + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ruamel.yaml + - toml + license: MIT + license_family: MIT + purls: + - pkg:pypi/python-box?source=conda-forge-mapping + size: 674911 + timestamp: 1718251632448 +- kind: conda + name: python-box + version: 7.2.0 + build: py311hd3f4193_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-box-7.2.0-py311hd3f4193_0.conda + sha256: 800cc56451cd4a94586aa6a3ab04207f3ea2827d75f60a2fde1bf3607d8750f1 + md5: e89e69056295fccafb3d5875382158d9 + depends: + - __osx >=11.0 + - pip + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - ruamel.yaml + - toml + license: MIT + license_family: MIT + purls: + - pkg:pypi/python-box?source=conda-forge-mapping + size: 672643 + timestamp: 1718251606716 +- kind: conda + name: python-box + version: 7.2.0 + build: py311he736701_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/python-box-7.2.0-py311he736701_0.conda + sha256: a29f733596c7132ae8897b2fbe1d41921c59333b16ecdebbc82c87ae8ac1edd0 + md5: f756935afba3ed03cb9a0e0b72e886ec + depends: + - pip + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ruamel.yaml + - toml + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/python-box?source=conda-forge-mapping + size: 624954 + timestamp: 1718252137047 +- kind: conda + name: python-box + version: 7.2.0 + build: py312h4389bb4_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/python-box-7.2.0-py312h4389bb4_0.conda + sha256: f70936c2b8b1bf7d87c000786f2e4311b057a1b65a963f05af70ee6a3f709e83 + md5: 5fca732ca51bbc3ce31c6f7743c113bd + depends: + - pip + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ruamel.yaml + - toml + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/python-box?source=conda-forge-mapping + size: 603924 + timestamp: 1718251854748 +- kind: conda + name: python-box + version: 7.2.0 + build: py312h7e5086c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-box-7.2.0-py312h7e5086c_0.conda + sha256: 3ce31785e5707bd5a23a834ec75c142f39a3e63a0e0a04355c8db11c63511dbf + md5: 70ebd5a2755f78bc800c495c7cb2dfaf + depends: + - __osx >=11.0 + - pip + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - ruamel.yaml + - toml + license: MIT + license_family: MIT + purls: + - pkg:pypi/python-box?source=conda-forge-mapping + size: 656751 + timestamp: 1718251649843 +- kind: conda + name: python-box + version: 7.2.0 + build: py312h9a8786e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-box-7.2.0-py312h9a8786e_0.conda + sha256: b4a27291eabaa2144dc0e2fd4b7bf819f79bf8b0b2a407bb400e0a4596535fef + md5: 338b000907c015fa1e0baac686fe6f53 + depends: + - libgcc-ng >=12 + - pip + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ruamel.yaml + - toml + license: MIT + license_family: MIT + purls: + - pkg:pypi/python-box?source=conda-forge-mapping + size: 768395 + timestamp: 1718251635569 +- kind: conda + name: python-box + version: 7.2.0 + build: py312hbd25219_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/python-box-7.2.0-py312hbd25219_0.conda + sha256: 4efb177bf89949a0ca8d9d00cbcbf7a15d7e42249e6325dcdc3bceb1bf959b54 + md5: bb2eb47039f9b35bea6346583aca7579 + depends: + - __osx >=10.13 + - pip + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ruamel.yaml + - toml + license: MIT + license_family: MIT + purls: + - pkg:pypi/python-box?source=conda-forge-mapping + size: 665537 + timestamp: 1718251616764 +- kind: conda + name: python-dateutil + version: 2.9.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda + sha256: f3ceef02ac164a8d3a080d0d32f8e2ebe10dd29e3a685d240e38b3599e146320 + md5: 2cf4264fffb9e6eff6031c5b6884d61c + depends: + - python >=3.7 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=conda-forge-mapping + size: 222742 + timestamp: 1709299922152 +- kind: conda + name: python-duckdb + version: 1.0.0 + build: py311hb9542d7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-duckdb-1.0.0-py311hb9542d7_0.conda + sha256: e4d85432a438f92038676884effdac911c7872ccb7443a14d34ff00b9bdeca4f + md5: 9933c9a37a08cd017b60308c31508dd4 + depends: + - __osx >=11.0 + - libcxx >=16 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/duckdb?source=conda-forge-mapping + size: 18626682 + timestamp: 1717686218064 +- kind: conda + name: python-duckdb + version: 1.0.0 + build: py311hbafa61a_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/python-duckdb-1.0.0-py311hbafa61a_0.conda + sha256: de7fcc864bebb3b49cc63f5d5e1b64d4d0ab1c08452172cfc7d19beaa638a2de + md5: dc9e120b8948816994f28bdf2303e9b1 + depends: + - __osx >=10.13 + - libcxx >=16 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/duckdb?source=conda-forge-mapping + size: 20136473 + timestamp: 1717686468089 +- kind: conda + name: python-duckdb + version: 1.0.0 + build: py311hda3d55a_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/python-duckdb-1.0.0-py311hda3d55a_0.conda + sha256: c747911294af8fe7de438079ab092454eb599d1741461786ba43c0261a3c5e65 + md5: 7514feff0af5c50e5d8a8ecd28a7c062 + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/duckdb?source=conda-forge-mapping + size: 15655914 + timestamp: 1717687917596 +- kind: conda + name: python-duckdb + version: 1.0.0 + build: py311hf86e51f_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-duckdb-1.0.0-py311hf86e51f_0.conda + sha256: 2068d4a41bea8955650e8df4a39d4e2fb6808b2c57be7cb87b25ee4fae779be9 + md5: 108ac6b3861091085c24a78f2cfdaf28 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/duckdb?source=conda-forge-mapping + size: 22852110 + timestamp: 1717686282529 +- kind: conda + name: python-duckdb + version: 1.0.0 + build: py312h275cf98_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/python-duckdb-1.0.0-py312h275cf98_0.conda + sha256: 4cb1ded6ff0ad4ddd3d68928afce25f5df23ba79dd69382a297317aa209db909 + md5: 7e3ed498c8133600854e2f1956fcccea + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/duckdb?source=conda-forge-mapping + size: 15572573 + timestamp: 1717687648207 +- kind: conda + name: python-duckdb + version: 1.0.0 + build: py312h28f332c_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/python-duckdb-1.0.0-py312h28f332c_0.conda + sha256: d16fe5ba6dc99458252d9ad7a16fc5fdbc699c49408721e1fa493265ab71ece5 + md5: 54d66ec33ad5afb5f9f3af956da41a04 + depends: + - __osx >=10.13 + - libcxx >=16 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/duckdb?source=conda-forge-mapping + size: 20108101 + timestamp: 1717686099292 +- kind: conda + name: python-duckdb + version: 1.0.0 + build: py312h5c2e7bc_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-duckdb-1.0.0-py312h5c2e7bc_0.conda + sha256: a7c0440513de0ecfd0e503cda07b45ba79cb4fc3b4f688d5ed28e030965b69e0 + md5: 718f3bdf4dfaf27dd9de4ef33d59ed6b + depends: + - __osx >=11.0 + - libcxx >=16 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/duckdb?source=conda-forge-mapping + size: 18599154 + timestamp: 1717686322241 +- kind: conda + name: python-duckdb + version: 1.0.0 + build: py312hca68cad_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-duckdb-1.0.0-py312hca68cad_0.conda + sha256: ee174c6bdf6f5b107d70326b687311ce8763f81a57c556573b15af47108d4ecc + md5: c5a10575bfc53423fb57f5f707d5e99f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/duckdb?source=conda-forge-mapping + size: 22756666 + timestamp: 1717686555956 +- kind: conda + name: python-tzdata + version: '2024.1' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda + sha256: 9da9a849d53705dee450b83507df1ca8ffea5f83bd21a215202221f1c492f8ad + md5: 98206ea9954216ee7540f0c773f2104d + depends: + - python >=3.6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tzdata?source=conda-forge-mapping + size: 144024 + timestamp: 1707747742930 +- kind: conda + name: python_abi + version: '3.11' + build: 4_cp311 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-4_cp311.conda + sha256: 0be3ac1bf852d64f553220c7e6457e9c047dfb7412da9d22fbaa67e60858b3cf + md5: d786502c97404c94d7d58d258a445a65 + constrains: + - python 3.11.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6385 + timestamp: 1695147338551 +- kind: conda + name: python_abi + version: '3.11' + build: 4_cp311 + build_number: 4 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.11-4_cp311.conda + sha256: f56dfe2a57b3b27bad3f9527f943548e8b2526e949d9d6fc0a383020d9359afe + md5: fef7a52f0eca6bae9e8e2e255bc86394 + constrains: + - python 3.11.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6478 + timestamp: 1695147518012 +- kind: conda + name: python_abi + version: '3.11' + build: 4_cp311 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-4_cp311.conda + sha256: 4837089c477b9b84fa38a17f453e6634e68237267211b27a8a2f5ccd847f4e55 + md5: 8d3751bc73d3bbb66f216fa2331d5649 + constrains: + - python 3.11.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6492 + timestamp: 1695147509940 +- kind: conda + name: python_abi + version: '3.11' + build: 4_cp311 + build_number: 4 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.11-4_cp311.conda + sha256: 67c2aade3e2160642eec0742384e766b20c766055e3d99335681e3e05d88ed7b + md5: 70513332c71b56eace4ee6441e66c012 + constrains: + - python 3.11.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6755 + timestamp: 1695147711935 +- kind: conda + name: python_abi + version: '3.12' + build: 4_cp312 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-4_cp312.conda + sha256: 182a329de10a4165f6e8a3804caf751f918f6ea6176dd4e5abcdae1ed3095bf6 + md5: dccc2d142812964fcc6abdc97b672dff + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6385 + timestamp: 1695147396604 +- kind: conda + name: python_abi + version: '3.12' + build: 4_cp312 + build_number: 4 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-4_cp312.conda + sha256: 82c154d95c1637604671a02a89e72f1382e89a4269265a03506496bd928f6f14 + md5: 87201ac4314b911b74197e588cca3639 + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6496 + timestamp: 1695147498447 +- kind: conda + name: python_abi + version: '3.12' + build: 4_cp312 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-4_cp312.conda + sha256: db25428e4f24f8693ffa39f3ff6dfbb8fd53bc298764b775b57edab1c697560f + md5: bbb3a02c78b2d8219d7213f76d644a2a + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6508 + timestamp: 1695147497048 +- kind: conda + name: python_abi + version: '3.12' + build: 4_cp312 + build_number: 4 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-4_cp312.conda + sha256: 488f8519d04b48f59bd6fde21ebe2d7a527718ff28aac86a8b53aa63658bdef6 + md5: 17f4ccf6be9ded08bd0a376f489ac1a6 + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6785 + timestamp: 1695147430513 +- kind: conda + name: pytz + version: '2024.1' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytz?source=conda-forge-mapping + size: 188538 + timestamp: 1706886944988 +- kind: conda + name: pywin32-ctypes + version: 0.2.2 + build: py312h2e8e312_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pywin32-ctypes-0.2.2-py312h2e8e312_1.conda + sha256: 238fffa911c4b78fd2153cfd1d0d376326379c98821da4b0cd12a3c6fbf3e9a6 + md5: 93a37178188cd6521e5410763a18aaf4 + depends: + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 55871 + timestamp: 1695395307212 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py311h61187de_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h61187de_0.conda + sha256: 8fec6b52be935b802e3f73414643646445d64ea715d1b34d17e0983363ed6e24 + md5: 76439451605390254b85d8da6f8d962a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=conda-forge-mapping + size: 211696 + timestamp: 1723018326380 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py311h72ae277_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py311h72ae277_0.conda + sha256: 40587249f84f910adbe25532895f77c6b003de909ac0cd63a2325166df505582 + md5: f3ab2c0d77eeb3b5a2b6e33a66310796 + depends: + - __osx >=10.13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=conda-forge-mapping + size: 194694 + timestamp: 1723018387466 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py311hd3f4193_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311hd3f4193_0.conda + sha256: 56daeb4e5f3629d9fbfb493c9b50e9e581b195e4b4b26ffe14e3a9341433f6bb + md5: 83449c56bd0253d73057b22f7d35654d + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=conda-forge-mapping + size: 194287 + timestamp: 1723018496473 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py311he736701_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py311he736701_0.conda + sha256: 1131416fe01a41872e86e00bb1c868463ca4f50be24fe97fb20d7b269e399117 + md5: 3013d35dee4b238c57d4ea118d36bdac + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=conda-forge-mapping + size: 188270 + timestamp: 1723018878475 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py312h41a817b_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h41a817b_0.conda + sha256: 06a139ccc9a1472489ca5df6f7c6f44e2eb9b1c2de1142f5beec3f430ca7ae3c + md5: 1779c9cbd9006415ab7bb9e12747e9d1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=conda-forge-mapping + size: 205734 + timestamp: 1723018377857 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py312h4389bb4_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_0.conda + sha256: 2413377ce0fd4eee66eaf5450d0200cd9124acfb9fc7932dcdc2f618bc8e840e + md5: a64ca370389c8bfacf848f40654ffc04 + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=conda-forge-mapping + size: 181385 + timestamp: 1723018911152 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py312h7e5086c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h7e5086c_0.conda + sha256: 1248d77c97f936e04ab5a8e4d9ac4175b470de7edf4b19310a59557223da2fe4 + md5: 0edf42e0544fab34322e3c30d04213df + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=conda-forge-mapping + size: 187731 + timestamp: 1723018560445 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py312hbd25219_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hbd25219_0.conda + sha256: dfc405e4c08edd587893ff0300140814838508d92e4ef1f8a1f8f35527108380 + md5: 3d847d381481b9bd802c2735e08f0c43 + depends: + - __osx >=10.13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=conda-forge-mapping + size: 190172 + timestamp: 1723018420621 +- kind: conda + name: rapidfuzz + version: 3.9.6 + build: py312h275cf98_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/rapidfuzz-3.9.6-py312h275cf98_0.conda + sha256: f8505aadb79e2c29a1d55ed5846851f310865f07374902ccf0bd8bf5b1d6fe3f + md5: aced43ae206e19a9b42fc68d9b89ac5e + depends: + - numpy + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 1071785 + timestamp: 1723020631880 +- kind: conda + name: rapidfuzz + version: 3.9.6 + build: py312h28f332c_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/rapidfuzz-3.9.6-py312h28f332c_0.conda + sha256: 9a423507bf2f1280412013f61f166ce9d78491a13af9cbbe0dfbe141c97f5baa + md5: a751b8ecb2f49513b4e3ccdd3e717402 + depends: + - __osx >=10.13 + - libcxx >=16 + - numpy + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 1101156 + timestamp: 1723020468160 +- kind: conda + name: rapidfuzz + version: 3.9.6 + build: py312h5c2e7bc_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/rapidfuzz-3.9.6-py312h5c2e7bc_0.conda + sha256: 28720eea577dc83fe57ced5b67773530cf3118c4d4ab58e768c98a7602f947f8 + md5: f222a8241fe84970982342eb3ab8634b + depends: + - __osx >=11.0 + - libcxx >=16 + - numpy + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 831617 + timestamp: 1723020403512 +- kind: conda + name: rapidfuzz + version: 3.9.6 + build: py312hca68cad_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/rapidfuzz-3.9.6-py312hca68cad_0.conda + sha256: 47926891a3d78dd9f665e0b4ac00e858aaa290d7407b6a3209edfa4ab7b49a4c + md5: 36d32348d4dcee35969f07d80a6cdd52 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - numpy + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 2203170 + timestamp: 1723020352245 +- kind: conda + name: re2 + version: 2023.09.01 + build: h4cba328_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2023.09.01-h4cba328_2.conda + sha256: 0e0d44414381c39a7e6f3da442cb41c637df0dcb383a07425f19c19ccffa0118 + md5: 0342882197116478a42fa4ea35af79c1 + depends: + - libre2-11 2023.09.01 h7b2c953_2 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26770 + timestamp: 1708947220914 +- kind: conda + name: re2 + version: 2023.09.01 + build: h7f4b329_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda + sha256: f0f520f57e6b58313e8c41abc7dfa48742a05f1681f05654558127b667c769a8 + md5: 8f70e36268dea8eb666ef14c29bd3cda + depends: + - libre2-11 2023.09.01 h5a48ba9_2 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26617 + timestamp: 1708946796423 +- kind: conda + name: re2 + version: 2023.09.01 + build: hb168e87_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/re2-2023.09.01-hb168e87_2.conda + sha256: 5739ed2cfa62ed7f828eb4b9e6e69ff1df56cb9a9aacdc296451a3cb647034eb + md5: 266f8ca8528fc7e0fa31066c309ad864 + depends: + - libre2-11 2023.09.01 h81f5012_2 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26814 + timestamp: 1708947195067 +- kind: conda + name: re2 + version: 2023.09.01 + build: hd3b24a8_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/re2-2023.09.01-hd3b24a8_2.conda + sha256: 929744a982215ea19f6f9a9d00c782969cd690bfddeeb650a39df1536af577fe + md5: ffeb985810bc7d103662e1465c758847 + depends: + - libre2-11 2023.09.01 hf8d8778_2 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 207315 + timestamp: 1708947529390 +- kind: conda + name: readline + version: '8.2' + build: h8228510_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + md5: 47d31b792659ce70f470b5c82fdfb7a4 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 281456 + timestamp: 1679532220005 +- kind: conda + name: readline + version: '8.2' + build: h92ec313_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 + md5: 8cbb776a2f641b943d413b3e19df71f4 + depends: + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 250351 + timestamp: 1679532511311 +- kind: conda + name: readline + version: '8.2' + build: h9e318b2_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda + sha256: 41e7d30a097d9b060037f0c6a2b1d4c4ae7e942c06c943d23f9d481548478568 + md5: f17f77f2acf4d344734bda76829ce14e + depends: + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 255870 + timestamp: 1679532707590 +- kind: conda + name: readme_renderer + version: '44.0' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-44.0-pyhd8ed1ab_0.conda + sha256: 0e6fdf0b30448ca92a0767e982182154d531391856296feda983053c41cdac6f + md5: 63260acf67cb6169bdf519405b96ee63 + depends: + - cmarkgfm >=0.8.0 + - docutils >=0.21.2 + - nh3 >=0.2.14 + - pygments >=2.5.1 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 17186 + timestamp: 1720528649611 +- kind: conda + name: requests + version: 2.32.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc + md5: 5ede4753180c7a550a443c430dc8ab52 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.8 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=conda-forge-mapping + size: 58810 + timestamp: 1717057174842 +- kind: conda + name: requests + version: 2.32.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc + md5: 5ede4753180c7a550a443c430dc8ab52 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.8 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + size: 58810 + timestamp: 1717057174842 +- kind: conda + name: requests-toolbelt + version: 1.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_0.conda + sha256: 20eaefc5dba74ff6c31e537533dde59b5b20f69e74df49dff19d43be59785fa3 + md5: 99c98318c8646b08cc764f90ce98906e + depends: + - python >=3.6 + - requests >=2.0.1,<3.0.0 + license: Apache-2.0 + license_family: APACHE + size: 43939 + timestamp: 1682953467574 +- kind: conda + name: rfc3986 + version: 2.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_0.tar.bz2 + sha256: dd6bfb7c4248ba7612f2e6e4a066d6804ba96dfcaeddf43475a2c846ccfcc396 + md5: d337886e38f965bf97aaec382ff6db00 + depends: + - python >=3.4 + license: Apache-2.0 + license_family: APACHE + size: 34075 + timestamp: 1641825125307 +- kind: conda + name: rich + version: 13.7.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda + sha256: 2b26d58aa59e46f933c3126367348651b0dab6e0bf88014e857415bb184a4667 + md5: ba445bf767ae6f0d959ff2b40c20912b + depends: + - markdown-it-py >=2.2.0 + - pygments >=2.13.0,<3.0.0 + - python >=3.7.0 + - typing_extensions >=4.0.0,<5.0.0 + license: MIT + license_family: MIT + size: 184347 + timestamp: 1709150578093 +- kind: conda + name: ruamel.yaml + version: 0.18.6 + build: py311h05b510d_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.6-py311h05b510d_0.conda + sha256: 7ed21c406b18c0ae1c3f6815afe5d7dcfddc374a0ac212fd9f203767d0a18ad4 + md5: d2a62ffc98713af809060950a6c1d107 + depends: + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - ruamel.yaml.clib >=0.1.2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruamel-yaml?source=conda-forge-mapping + size: 272944 + timestamp: 1707298618971 +- kind: conda + name: ruamel.yaml + version: 0.18.6 + build: py311h459d7ec_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py311h459d7ec_0.conda + sha256: b7056cf0f680a70c24d0a9addea6e8b640bfeafda4c37887e276331757404da0 + md5: 4dccc0bc3bb4d6e5c30bccbd053c4f90 + depends: + - libgcc-ng >=12 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ruamel.yaml.clib >=0.1.2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruamel-yaml?source=conda-forge-mapping + size: 272940 + timestamp: 1707298251976 +- kind: conda + name: ruamel.yaml + version: 0.18.6 + build: py311ha68e1ae_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml-0.18.6-py311ha68e1ae_0.conda + sha256: a6914bab1f8350c1c4d1b3cd09cf753d788b2e8bd496d78389390660e5be18cd + md5: d471ed4194d2e3aa016278223a8fa52c + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ruamel.yaml.clib >=0.1.2 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruamel-yaml?source=conda-forge-mapping + size: 274051 + timestamp: 1707298487840 +- kind: conda + name: ruamel.yaml + version: 0.18.6 + build: py311he705e18_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.6-py311he705e18_0.conda + sha256: 64b13898feefe6b98b776a8a0fff05163dad116c643b946a611ae895edcf435b + md5: 7a3e388f29ca1862754f89b6d79de335 + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ruamel.yaml.clib >=0.1.2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruamel-yaml?source=conda-forge-mapping + size: 274220 + timestamp: 1707298563958 +- kind: conda + name: ruamel.yaml + version: 0.18.6 + build: py312h41838bb_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.6-py312h41838bb_0.conda + sha256: 27ab446d39a46f7db365265a48ce74929c672e14c86b1ce8955f59e2d92dff39 + md5: 9db93e711729ec70dacdfa58bf970cfd + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ruamel.yaml.clib >=0.1.2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruamel-yaml?source=conda-forge-mapping + size: 268460 + timestamp: 1707298596313 +- kind: conda + name: ruamel.yaml + version: 0.18.6 + build: py312h98912ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py312h98912ed_0.conda + sha256: 26856daba883254736b7f3767c08f445b5d010eebbf4fc7aa384ee80e24aa663 + md5: a99a06a875138829ef65f44bbe2c30ca + depends: + - libgcc-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ruamel.yaml.clib >=0.1.2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruamel-yaml?source=conda-forge-mapping + size: 268015 + timestamp: 1707298336196 +- kind: conda + name: ruamel.yaml + version: 0.18.6 + build: py312he37b823_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.6-py312he37b823_0.conda + sha256: 4a27b50445842e97a31e3f412816d4a0d576b4f1ee327b9a892a183ba5c60f6f + md5: cb9f9b4797001b2c52383f4007fa1f4b + depends: + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - ruamel.yaml.clib >=0.1.2 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruamel-yaml?source=conda-forge-mapping + size: 268637 + timestamp: 1707298502612 +- kind: conda + name: ruamel.yaml + version: 0.18.6 + build: py312he70551f_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml-0.18.6-py312he70551f_0.conda + sha256: 31a9e347107a46149ae334586430bebb3a769bb5792eba9ccb89c664dbce7970 + md5: 5833ba75a49ac40876242ccb5f77ab23 + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ruamel.yaml.clib >=0.1.2 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruamel-yaml?source=conda-forge-mapping + size: 267762 + timestamp: 1707298539404 +- kind: conda + name: ruamel.yaml.clib + version: 0.2.8 + build: py311h05b510d_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.8-py311h05b510d_0.conda + sha256: 8b64d7ac6d544cdb1c5e3677c3a6ea10f1d87f818888b25df5f3b97f271ef14f + md5: 0fbb200e26cec1931d0337ee70422965 + depends: + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruamel-yaml-clib?source=conda-forge-mapping + size: 111700 + timestamp: 1707315151942 +- kind: conda + name: ruamel.yaml.clib + version: 0.2.8 + build: py311h459d7ec_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py311h459d7ec_0.conda + sha256: b6a4b72ec2a59de0307fca0c699da6238391ee20deb2d121780d10559b5a61a3 + md5: 7865c897d89a39abc0056d89e37bd9e9 + depends: + - libgcc-ng >=12 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruamel-yaml-clib?source=conda-forge-mapping + size: 135856 + timestamp: 1707314709100 +- kind: conda + name: ruamel.yaml.clib + version: 0.2.8 + build: py311ha68e1ae_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml.clib-0.2.8-py311ha68e1ae_0.conda + sha256: 40896e9a78f24d108ee5cd4156042e2a71bd40fcf74167af0cca3e2551e02eda + md5: 4938101fc72fa2a9919c51f194a733cb + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruamel-yaml-clib?source=conda-forge-mapping + size: 99133 + timestamp: 1707315268440 +- kind: conda + name: ruamel.yaml.clib + version: 0.2.8 + build: py311he705e18_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.8-py311he705e18_0.conda + sha256: e6d5b2c9a75191305c8d367d13218c0bd0cc7a640ae776b541124c0fe8341bc9 + md5: 3fdbde273667047893775e077cef290d + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruamel-yaml-clib?source=conda-forge-mapping + size: 117859 + timestamp: 1707314957390 +- kind: conda + name: ruamel.yaml.clib + version: 0.2.8 + build: py312h41838bb_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.8-py312h41838bb_0.conda + sha256: c0a321d14505b3621d6301e1ed9bc0129b4c8b2812e7520040d2609aaeb07845 + md5: a134bf1778eb7add92ea760e801dc245 + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruamel-yaml-clib?source=conda-forge-mapping + size: 118650 + timestamp: 1707314908121 +- kind: conda + name: ruamel.yaml.clib + version: 0.2.8 + build: py312h98912ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py312h98912ed_0.conda + sha256: 5965302881d8b1049291e3ba3912286cdc72cb82303230cbbf0a048c6f6dd7c1 + md5: 05f31c2a79ba61df8d6d903ce4a4ce7b + depends: + - libgcc-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruamel-yaml-clib?source=conda-forge-mapping + size: 135640 + timestamp: 1707314642857 +- kind: conda + name: ruamel.yaml.clib + version: 0.2.8 + build: py312he37b823_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.8-py312he37b823_0.conda + sha256: c3138824f484cca2804d22758c75965b578cd35b35243ff02e64da06bda03477 + md5: 2fa02324046cfcb7a67fae30fd06a945 + depends: + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruamel-yaml-clib?source=conda-forge-mapping + size: 111221 + timestamp: 1707315016121 +- kind: conda + name: ruamel.yaml.clib + version: 0.2.8 + build: py312he70551f_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml.clib-0.2.8-py312he70551f_0.conda + sha256: 7d5705ee3190a5b1c24eee2def964cc1d70b9e856488d971f0fd6df0224ca666 + md5: f8de34a829b65a8e3ac6ddc61ed0d2e0 + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/ruamel-yaml-clib?source=conda-forge-mapping + size: 96333 + timestamp: 1707315306489 +- kind: conda + name: ruff + version: 0.5.7 + build: py312h3402d49_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.5.7-py312h3402d49_0.conda + sha256: 5a8808e0b4a4c60075ec7681fab7b0ce968e782ce6d30dae37362cea2c91ac90 + md5: 674a57f24b46add25bca7cf9bd1a6d95 + depends: + - __osx >=11.0 + - libcxx >=16 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 5889417 + timestamp: 1723151024636 +- kind: conda + name: ruff + version: 0.5.7 + build: py312h7a6832a_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/ruff-0.5.7-py312h7a6832a_0.conda + sha256: 8ef95b535c160a81dad2c56f3755187e4fb7b01a444b9183ec11a1bbd46910e3 + md5: 113ba113d1f49decf8d2fcd10f72090e + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 6314546 + timestamp: 1723151403766 +- kind: conda + name: ruff + version: 0.5.7 + build: py312h8b25c6c_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.5.7-py312h8b25c6c_0.conda + sha256: f64bb57fb68a1574aa5027cde2769ba020c0b4c7ade2b83591ed04b523e59171 + md5: 7f01e511cf73bceae4d4da96951b693d + depends: + - __osx >=10.13 + - libcxx >=16 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 6169333 + timestamp: 1723151007579 +- kind: conda + name: ruff + version: 0.5.7 + build: py312hbe4c86d_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.5.7-py312hbe4c86d_0.conda + sha256: b8cc83042471c5740f29a5f3ce1ef7116b892095591907929671fe4e33345026 + md5: 8871e1b8e5ec1c57d3769adc0b9e5d68 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 7184746 + timestamp: 1723150552013 +- kind: conda + name: s2n + version: 1.5.0 + build: h3400bea_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.0-h3400bea_0.conda + sha256: 594878a49b1c4d657795f80ffbe87f15a16cd2162f28383a5b794d301d6cbc65 + md5: 5f17883266c5312a1fc73583f28ebae5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 353483 + timestamp: 1723253710366 +- kind: conda + name: secretstorage + version: 3.3.3 + build: py312h7900ff3_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.3-py312h7900ff3_2.conda + sha256: 0479e3f8c8e90049a6d92d4c7e67916c6d6cdafd11a1a31c54c785cce44aeb20 + md5: 39067833cbb620066d492f8bd6f11dbf + depends: + - cryptography + - dbus + - jeepney >=0.6 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 31766 + timestamp: 1695551875966 +- kind: conda + name: setuptools + version: 72.1.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda + sha256: d239e7f1b1a5617eeadda4e91183592f5a15219e97e16bc721d7b0597ee89a80 + md5: e06d4c26df4f958a8d38696f2c344d15 + depends: + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/setuptools?source=conda-forge-mapping + size: 1462612 + timestamp: 1722586785703 +- kind: conda + name: setuptools-scm + version: 8.1.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-8.1.0-pyhd8ed1ab_0.conda + sha256: 3f7b45c90eaa1c9e7ef974d3995a98a37f7672b40e002455baf0fce256e7f202 + md5: ba9f7f0ec4f2a18de3e7bce67c4a431e + depends: + - packaging >=20.0 + - python >=3.8 + - setuptools >=45 + - tomli >=1.0.0 + - typing-extensions + license: MIT + license_family: MIT + purls: + - pkg:pypi/setuptools-scm?source=conda-forge-mapping + size: 37824 + timestamp: 1715083339319 +- kind: conda + name: six + version: 1.16.0 + build: pyh6c4a22f_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 + md5: e5f25f8dbc060e9a8d912e432202afc2 + depends: + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/six?source=conda-forge-mapping + size: 14259 + timestamp: 1620240338595 +- kind: conda + name: snappy + version: 1.2.1 + build: h23299a8_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/snappy-1.2.1-h23299a8_0.conda + sha256: 5b9450f619aabcfbf3d284a272964250b2e1971ab0f7a7ef9143dda0ecc537b8 + md5: 7635a408509e20dcfc7653ca305ad799 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 59350 + timestamp: 1720004197144 +- kind: conda + name: snappy + version: 1.2.1 + build: ha2e4443_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + sha256: dc7c8e0e8c3e8702aae81c52d940bfaabe756953ee51b1f1757e891bab62cf7f + md5: 6b7dcc7349efd123d493d2dbe85a045f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 42465 + timestamp: 1720003704360 +- kind: conda + name: snappy + version: 1.2.1 + build: hd02b534_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + sha256: cb7a9440241c6092e0f1c795fdca149c4767023e783eaf9cfebc501f906b4897 + md5: 69d0f9694f3294418ee935da3d5f7272 + depends: + - __osx >=11.0 + - libcxx >=16 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35708 + timestamp: 1720003794374 +- kind: conda + name: snappy + version: 1.2.1 + build: he1e6707_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.1-he1e6707_0.conda + sha256: a979319cd4916f0e7450aa92bb3cf4c2518afa80be50de99f31d075e693a6dd9 + md5: ddceef5df973c8ff7d6b32353c0cb358 + depends: + - __osx >=10.13 + - libcxx >=16 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 37036 + timestamp: 1720003862906 +- kind: conda + name: sniffio + version: 1.3.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b + md5: 490730480d76cf9c8f8f2849719c6e2b + depends: + - python >=3.7 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sniffio?source=conda-forge-mapping + size: 15064 + timestamp: 1708953086199 +- kind: conda + name: snowballstemmer + version: 2.2.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 + sha256: a0fd916633252d99efb6223b1050202841fa8d2d53dacca564b0ed77249d3228 + md5: 4d22a9315e78c6827f806065957d566e + depends: + - python >=2 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/snowballstemmer?source=conda-forge-mapping + size: 58824 + timestamp: 1637143137377 +- kind: conda + name: sphinx + version: 7.4.7 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.4.7-pyhd8ed1ab_0.conda + sha256: 0de25d561b20dd06982df45a2c3cef490e45b0d4bae8d2c290030721bdadecd6 + md5: c568e260463da2528ecfd7c5a0b41bbd + depends: + - alabaster >=0.7.14,<0.8.dev0 + - babel >=2.13 + - colorama >=0.4.6 + - docutils >=0.20,<0.22 + - imagesize >=1.3 + - importlib-metadata >=6.0 + - jinja2 >=3.1 + - packaging >=23.0 + - pygments >=2.17 + - python >=3.9 + - requests >=2.30.0 + - snowballstemmer >=2.2 + - sphinxcontrib-applehelp + - sphinxcontrib-devhelp + - sphinxcontrib-htmlhelp >=2.0.0 + - sphinxcontrib-jsmath + - sphinxcontrib-qthelp + - sphinxcontrib-serializinghtml >=1.1.9 + - tomli >=2.0 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/sphinx?source=conda-forge-mapping + size: 1358660 + timestamp: 1721487658869 +- kind: conda + name: sphinx_rtd_theme + version: 2.0.0 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-2.0.0-pyha770c72_0.conda + sha256: 8545c806d03092fd0236db6663c88036eab2dc99e34c91cd36c0704db03b148a + md5: baf6d9a33df1a789ca55e3b404c7ea28 + depends: + - docutils <0.21 + - python >=3.6 + - sphinx >=5,<8 + - sphinxcontrib-jquery >=4,<5 + license: MIT + license_family: MIT + purls: + - pkg:pypi/sphinx-rtd-theme?source=conda-forge-mapping + size: 2614217 + timestamp: 1701183633165 +- kind: conda + name: sphinxcontrib-apidoc + version: 0.3.0 + build: py_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-apidoc-0.3.0-py_1.tar.bz2 + sha256: 6dd136a86576c400b0bdbfffbdba4a35015846a0a7eb1129a1401a17d4f60b19 + md5: 855b087883443abb10f5faf6eef40860 + depends: + - pbr + - python + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/sphinxcontrib-apidoc?source=conda-forge-mapping + size: 10555 + timestamp: 1553967001880 +- kind: conda + name: sphinxcontrib-applehelp + version: 2.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda + sha256: 8ac476358cf26098e3a360b2a9037bd809243f72934c103953e25f4fda4b9f31 + md5: 9075bd8c033f0257122300db914e49c9 + depends: + - python >=3.9 + - sphinx >=5 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/sphinxcontrib-applehelp?source=conda-forge-mapping + size: 29617 + timestamp: 1722244567894 +- kind: conda + name: sphinxcontrib-devhelp + version: 2.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_0.conda + sha256: 6790efe55f168816dfc9c14235054d5156e5150d28546c5baf2ff4973eff8f6b + md5: b3bcc38c471ebb738854f52a36059b48 + depends: + - python >=3.9 + - sphinx >=5 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/sphinxcontrib-devhelp?source=conda-forge-mapping + size: 24138 + timestamp: 1722245127289 +- kind: conda + name: sphinxcontrib-htmlhelp + version: 2.1.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_0.conda + sha256: 55e14b77ed786ab6ff752b8d75f8448536f385ed250f432bd408d2eff5ea4a9e + md5: e25640d692c02e8acfff0372f547e940 + depends: + - python >=3.9 + - sphinx >=5 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/sphinxcontrib-htmlhelp?source=conda-forge-mapping + size: 32798 + timestamp: 1722248429933 +- kind: conda + name: sphinxcontrib-jquery + version: '4.1' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_0.conda + sha256: 2e5f16a2d58f9a31443ffbb8ce3852cfccf533a6349045828cd2e994ef0679ca + md5: 914897066d5873acfb13e75705276ad1 + depends: + - python >=2.7 + - sphinx >=1.8 + license: 0BSD AND MIT + purls: + - pkg:pypi/sphinxcontrib-jquery?source=conda-forge-mapping + size: 112985 + timestamp: 1678809100921 +- kind: conda + name: sphinxcontrib-jsmath + version: 1.0.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda + sha256: d4337d83b8edba688547766fc80f1ac86d6ec86ceeeda93f376acc04079c5ce2 + md5: da1d979339e2714c30a8e806a33ec087 + depends: + - python >=3.5 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/sphinxcontrib-jsmath?source=conda-forge-mapping + size: 10431 + timestamp: 1691604844204 +- kind: conda + name: sphinxcontrib-qthelp + version: 2.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed1ab_0.conda + sha256: 7ae639b729844de2ec74dbaf1acccc14843868a82fa46cd2ceb735bc8266af5b + md5: d6e5ea5fe00164ac6c2dcc5d76a42192 + depends: + - python >=3.9 + - sphinx >=5 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/sphinxcontrib-qthelp?source=conda-forge-mapping + size: 26794 + timestamp: 1722245959953 +- kind: conda + name: sphinxcontrib-serializinghtml + version: 1.1.10 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda + sha256: bf80e4c0ff97d5e8e5f6db0831ba60007e820a3a438e8f1afd868aa516d67d6f + md5: e507335cb4ca9cff4c3d0fa9cdab255e + depends: + - python >=3.9 + - sphinx >=5 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/sphinxcontrib-serializinghtml?source=conda-forge-mapping + size: 28776 + timestamp: 1705118378942 +- kind: conda + name: sqlalchemy + version: 2.0.32 + build: py311h61187de_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.32-py311h61187de_0.conda + sha256: 04f24ed80f25778438a0890790f3c59978639501db2708b483fb8767b17494a1 + md5: 2248e75f001930ba8389fe91c51be50b + depends: + - __glibc >=2.17,<3.0.a0 + - greenlet !=0.4.17 + - libgcc-ng >=12 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - typing-extensions >=4.6.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/sqlalchemy?source=conda-forge-mapping + size: 3559874 + timestamp: 1722927189416 +- kind: conda + name: sqlalchemy + version: 2.0.32 + build: py311h72ae277_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.32-py311h72ae277_0.conda + sha256: 9409ce7f826b1007b5df900c25d1d2595b4fb1a312ae1d187064e493cb1fc80e + md5: fc3ec101576175977fab735cf09f9b5b + depends: + - __osx >=10.13 + - greenlet !=0.4.17 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - typing-extensions >=4.6.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/sqlalchemy?source=conda-forge-mapping + size: 3536033 + timestamp: 1722927258675 +- kind: conda + name: sqlalchemy + version: 2.0.32 + build: py311hd3f4193_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.32-py311hd3f4193_0.conda + sha256: 11ef8d1f52338be2e75aafffb9ad8af9ea6e285aea9a25975a4fe691d8ddd421 + md5: 982fbf456fada45d3dd972055e248ee8 + depends: + - __osx >=11.0 + - greenlet !=0.4.17 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - typing-extensions >=4.6.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/sqlalchemy?source=conda-forge-mapping + size: 3537648 + timestamp: 1722927326014 +- kind: conda + name: sqlalchemy + version: 2.0.32 + build: py311he736701_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/sqlalchemy-2.0.32-py311he736701_0.conda + sha256: 2c299eebd48a969927542ea7bc475bb8607f8440ef0692c17c30e59614eb1b02 + md5: 7f48222288e535a5ea2ad6d355fa1b4a + depends: + - greenlet !=0.4.17 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - typing-extensions >=4.6.0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/sqlalchemy?source=conda-forge-mapping + size: 3465892 + timestamp: 1722927619965 +- kind: conda + name: sqlalchemy + version: 2.0.32 + build: py312h41a817b_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.32-py312h41a817b_0.conda + sha256: e75d677e37d395f934e87b887a420b1a7b4b5a9a5fd0e65846901f4cfd68a314 + md5: 3ac8df9507553117fd7b9daf79ff1269 + depends: + - __glibc >=2.17,<3.0.a0 + - greenlet !=0.4.17 + - libgcc-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/sqlalchemy?source=conda-forge-mapping + size: 3484882 + timestamp: 1722927210468 +- kind: conda + name: sqlalchemy + version: 2.0.32 + build: py312h4389bb4_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/sqlalchemy-2.0.32-py312h4389bb4_0.conda + sha256: bd3e88f5244a3a64fd8c18cd140c62e42706ef3523d35e8a412ec84a7b19a1e6 + md5: e990eba5d45ebdd6676f36180010733f + depends: + - greenlet !=0.4.17 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + purls: + - pkg:pypi/sqlalchemy?source=conda-forge-mapping + size: 3441258 + timestamp: 1722927832901 +- kind: conda + name: sqlalchemy + version: 2.0.32 + build: py312h7e5086c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/sqlalchemy-2.0.32-py312h7e5086c_0.conda + sha256: 6f69acb02523bf02ca00d6dbf6d688ed3c3e6b9aa7511ab6c1680fa415796eb5 + md5: efdf833555d35528ab61de749b7ab429 + depends: + - __osx >=11.0 + - greenlet !=0.4.17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/sqlalchemy?source=conda-forge-mapping + size: 3485812 + timestamp: 1722927321083 +- kind: conda + name: sqlalchemy + version: 2.0.32 + build: py312hbd25219_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/sqlalchemy-2.0.32-py312hbd25219_0.conda + sha256: d79f8ab2105f3a70967d75e8e43bba30cc7bac46ca0f411e25506c584c9a5368 + md5: 041c8516eaddd2960f7f0730032f212a + depends: + - __osx >=10.13 + - greenlet !=0.4.17 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/sqlalchemy?source=conda-forge-mapping + size: 3449840 + timestamp: 1722927250841 +- kind: pypi + name: sqlcompyre + version: 1.0.0 + url: https://files.pythonhosted.org/packages/62/e8/d12c6fe3917a90db6fe096a56867b14707e4581a7a36a4c9eeed656ecf5d/sqlcompyre-1.0.0-py3-none-any.whl + sha256: 5fce6af20741a589b7dd711020cc53de83f40fbaf79284f314ce0ff94fa227ca + requires_dist: + - click + - pydantic<3,>=2 + - pyyaml + - sqlalchemy<3,>=2 + - tabulate + - tqdm + requires_python: '>=3.11' +- kind: conda + name: structlog + version: 24.4.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/structlog-24.4.0-pyhd8ed1ab_0.conda + sha256: c8e1547f8af2050c3a4199ae72944939af82feeaaf8c82a08b2224a9fddea0ab + md5: 43618d1d298cb21a1ba970cb0e35ea85 + depends: + - python >=3.7 + license: Apache-2.0 OR MIT + purls: + - pkg:pypi/structlog?source=conda-forge-mapping + size: 55471 + timestamp: 1721413195656 +- kind: pypi + name: tabulate + version: 0.9.0 + url: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl + sha256: 024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f + requires_dist: + - wcwidth ; extra == 'widechars' + requires_python: '>=3.7' +- kind: conda + name: tabulate + version: 0.9.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2 + sha256: f6e4a0dd24ba060a4af69ca79d32361a6678e61d78c73eb5e357909b025b4620 + md5: 4759805cce2d914c38472f70bf4d8bcb + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/tabulate?source=conda-forge-mapping + size: 35912 + timestamp: 1665138565317 +- kind: conda + name: taplo + version: 0.9.3 + build: h1de38c7_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/taplo-0.9.3-h1de38c7_0.conda + sha256: 31012219e1843dd23ac647a4bf866e2f9d1135c458d96d5dac3bc8aed1a4cdbc + md5: 15132abc26d062d31ae3f51f955e5af2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - openssl >=3.3.1,<4.0a0 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 3800652 + timestamp: 1722469974675 +- kind: conda + name: taplo + version: 0.9.3 + build: h563f0a8_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/taplo-0.9.3-h563f0a8_0.conda + sha256: 0dabdf9b68ecd90f5df0ed834fa169775e1b24bee3c41698c95128ca5f1ca52c + md5: 1586f6e3c42fddd12396e264bcf520fc + depends: + - __osx >=11.0 + - openssl >=3.3.1,<4.0a0 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 3489710 + timestamp: 1722470204954 +- kind: conda + name: taplo + version: 0.9.3 + build: h823019e_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/taplo-0.9.3-h823019e_0.conda + sha256: 54505d45d3801eb178f6d0b0870a47236d5ae7232368a6363cb4b68b67911dfa + md5: c7f563cf04c6c8202d2ba24ab3ededf0 + depends: + - m2w64-gcc-libs + - m2w64-gcc-libs-core + license: MIT + license_family: MIT + size: 3825427 + timestamp: 1722471277238 +- kind: conda + name: taplo + version: 0.9.3 + build: hd264b5c_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/taplo-0.9.3-hd264b5c_0.conda + sha256: b3a6e9eb8f9f1c7dc3feb54baccb52e29470a5115c85965d87730085f350c0c3 + md5: 23c7b26e204ac57d2eef3e61bb635be5 + depends: + - __osx >=10.13 + - openssl >=3.3.1,<4.0a0 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 3699006 + timestamp: 1722470174306 +- kind: conda + name: tbb + version: 2021.12.0 + build: hc790b64_3 + build_number: 3 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.12.0-hc790b64_3.conda + sha256: 721a88d702e31efd9437d387774ef9157846743e66648f5f863b29ae322e8479 + md5: a16e2a639e87c554abee5192ce6ee308 + depends: + - libhwloc >=2.11.1,<2.11.2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 161213 + timestamp: 1720768916898 +- kind: conda + name: tk + version: 8.6.13 + build: h1abcd95_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5 + md5: bf830ba5afc507c6232d4ef0fb1a882d + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3270220 + timestamp: 1699202389792 +- kind: conda + name: tk + version: 8.6.13 + build: h5083fa2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3145523 + timestamp: 1699202432999 +- kind: conda + name: tk + version: 8.6.13 + build: h5226925_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + sha256: 2c4e914f521ccb2718946645108c9bd3fc3216ba69aea20c2c3cedbd8db32bb1 + md5: fc048363eb8f03cd1737600a5d08aafe + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: TCL + license_family: BSD + purls: [] + size: 3503410 + timestamp: 1699202577803 +- kind: conda + name: tk + version: 8.6.13 + build: noxft_h4845f30_101 + build_number: 101 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- kind: conda + name: toml + version: 0.10.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 + sha256: f0f3d697349d6580e4c2f35ba9ce05c65dc34f9f049e85e45da03800b46139c1 + md5: f832c45a477c78bebd107098db465095 + depends: + - python >=2.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/toml?source=conda-forge-mapping + size: 18433 + timestamp: 1604308660817 +- kind: conda + name: tomli + version: 2.0.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 + sha256: 4cd48aba7cd026d17e86886af48d0d2ebc67ed36f87f6534f4b67138f5a5a58f + md5: 5844808ffab9ebdb694585b50ba02a96 + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/tomli?source=conda-forge-mapping + size: 15940 + timestamp: 1644342331069 +- kind: pypi + name: tqdm + version: 4.66.5 + url: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + sha256: 90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd + requires_dist: + - colorama ; platform_system == 'Windows' + - pytest>=6 ; extra == 'dev' + - pytest-cov ; extra == 'dev' + - pytest-timeout ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - ipywidgets>=6 ; extra == 'notebook' + - slack-sdk ; extra == 'slack' + - requests ; extra == 'telegram' + requires_python: '>=3.7' +- kind: conda + name: twine + version: 5.1.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/twine-5.1.1-pyhd8ed1ab_0.conda + sha256: e54a95bbc254e1196ebb4cb65b5653292e5ff83f924215bbe4a28c437e04754d + md5: 5463141e576b9aaa0db7ed488e298241 + depends: + - importlib-metadata >=3.6 + - keyring >=15.1 + - pkginfo >=1.8.1,<1.11 + - python >=3.8 + - readme_renderer >=35.0 + - requests >=2.20 + - requests-toolbelt >=0.8.0,!=0.9.0 + - rfc3986 >=1.4.0 + - rich >=12.0.0 + - urllib3 >=1.26.0 + license: Apache-2.0 + license_family: Apache + size: 33938 + timestamp: 1719431080574 +- kind: conda + name: types-pytz + version: 2024.1.0.20240417 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2024.1.0.20240417-pyhd8ed1ab_0.conda + sha256: cc3913a5504b867c748981ba302e82dbc2bda71837f4894d29db8f6cb490e25d + md5: 7b71ace1b99195041329427c435b8125 + depends: + - python >=3.6 + license: Apache-2.0 AND MIT + purls: + - pkg:pypi/types-pytz?source=conda-forge-mapping + size: 18725 + timestamp: 1713337633292 +- kind: conda + name: typing-extensions + version: 4.12.2 + build: hd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 + md5: 52d648bd608f5737b123f510bb5514b5 + depends: + - typing_extensions 4.12.2 pyha770c72_0 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 10097 + timestamp: 1717802659025 +- kind: conda + name: typing_extensions + version: 4.12.2 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb + md5: ebe6952715e1d5eb567eeebf25250fa7 + depends: + - python >=3.8 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=conda-forge-mapping + size: 39888 + timestamp: 1717802653893 +- kind: conda + name: typos + version: 1.23.6 + build: h686f776_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/typos-1.23.6-h686f776_0.conda + sha256: 2d233ab559731dc138ac69613d8fc0e38029d53d3e1d4bb28959481b0cd67b48 + md5: cf131ee2fc8e4a4cf141eb0dbab0f0dd + depends: + - __osx >=10.13 + constrains: + - __osx >=10.13 + license: MIT + license_family: MIT + size: 3347234 + timestamp: 1722478365544 +- kind: conda + name: typos + version: 1.23.6 + build: h6e96688_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/typos-1.23.6-h6e96688_0.conda + sha256: 04aef5e61df2424792d91046dc4c3fd971ff543c86892e9a708b97241b6c6c09 + md5: 2ce9c5d11ded742722a02bc0c1170c95 + depends: + - __osx >=11.0 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 3347511 + timestamp: 1722478465883 +- kind: conda + name: typos + version: 1.23.6 + build: h813c833_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/typos-1.23.6-h813c833_0.conda + sha256: a857f68d0ce318f66b9a49f16b61f4811c16c060544005cb1818098fe33123a1 + md5: d3fe5d121432ec55f86f553f009f32f1 + depends: + - m2w64-gcc-libs + - m2w64-gcc-libs-core + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.40.33810 + license: MIT + license_family: MIT + size: 2609725 + timestamp: 1722479029104 +- kind: conda + name: typos + version: 1.23.6 + build: h9678756_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/typos-1.23.6-h9678756_0.conda + sha256: 7249e99ccae256560da9f0c5ea7b21685fbb54371c250ca5117a97fb1049de4d + md5: a1c6a197839b1346506c445692645a21 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 3745308 + timestamp: 1722477889489 +- kind: conda + name: tzdata + version: 2024a + build: h0c530f3_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + sha256: 7b2b69c54ec62a243eb6fba2391b5e443421608c3ae5dbff938ad33ca8db5122 + md5: 161081fc7cec0bfda0d86d7cb595f8d8 + license: LicenseRef-Public-Domain + purls: [] + size: 119815 + timestamp: 1706886945727 +- kind: conda + name: ucrt + version: 10.0.22621.0 + build: h57928b3_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_0.tar.bz2 + sha256: f29cdaf8712008f6b419b8b1a403923b00ab2504bfe0fb2ba8eb60e72d4f14c6 + md5: 72608f6cd3e5898229c3ea16deb1ac43 + constrains: + - vs2015_runtime >=14.29.30037 + license: LicenseRef-Proprietary + license_family: PROPRIETARY + purls: [] + size: 1283972 + timestamp: 1666630199266 +- kind: conda + name: ukkonen + version: 1.0.1 + build: py312h0d7def4_4 + build_number: 4 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312h0d7def4_4.conda + sha256: f5f7550991ca647f69b67b9188c7104a3456122611dd6a6e753cff555e45dfd9 + md5: 57cfbb8ce3a1800bd343bf6afba6f878 + depends: + - cffi + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: MIT + license_family: MIT + size: 17235 + timestamp: 1695549871621 +- kind: conda + name: ukkonen + version: 1.0.1 + build: py312h389731b_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h389731b_4.conda + sha256: 7336cf66feba973207f4903c20b05c3c82e351246df4b6113f72d92b9ee55b81 + md5: 6407429e0969b58b8717dbb4c6c15513 + depends: + - cffi + - libcxx >=15.0.7 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 13948 + timestamp: 1695549890285 +- kind: conda + name: ukkonen + version: 1.0.1 + build: py312h49ebfd2_4 + build_number: 4 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312h49ebfd2_4.conda + sha256: efca19a5e73e4aacfc5e90a5389272b2508e41dc4adab9eb5353c5200ba37041 + md5: 4e6b5a8025cd8fd97b3cfe103ffce6b1 + depends: + - cffi + - libcxx >=15.0.7 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 13246 + timestamp: 1695549689363 +- kind: conda + name: ukkonen + version: 1.0.1 + build: py312h8572e83_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h8572e83_4.conda + sha256: f9a4384d466f4d8b5b497d951329dd4407ebe02f8f93456434e9ab789d6e23ce + md5: 52c9e25ee0a32485a102eeecdb7eef52 + depends: + - cffi + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 14050 + timestamp: 1695549556745 +- kind: conda + name: unixodbc + version: 2.3.12 + build: h0e2417a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/unixodbc-2.3.12-h0e2417a_0.conda + sha256: c23df29cd90c80f1bd599909cb8fb0281058d372324afde481687f240a7e77c7 + md5: 466dfbfb384f10c790f48c9b4316ffb1 + depends: + - libcxx >=15.0.7 + - libedit >=3.1.20191231,<3.2.0a0 + - libiconv >=1.17,<2.0a0 + license: LGPL-2.1 + purls: [] + size: 253937 + timestamp: 1691504579753 +- kind: conda + name: unixodbc + version: 2.3.12 + build: h661eb56_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/unixodbc-2.3.12-h661eb56_0.conda + sha256: 718eb807a5e6e6993ee06745cb2a25a6b353427485a6e50df01db99c6016a53f + md5: a737e5c549c13fbb5590c581848b0446 + depends: + - libedit >=3.1.20191231,<3.2.0a0 + - libgcc-ng >=12 + - libiconv >=1.17,<2.0a0 + - libstdcxx-ng >=12 + license: LGPL-2.1 + purls: [] + size: 281830 + timestamp: 1691504075258 +- kind: conda + name: unixodbc + version: 2.3.12 + build: he8a5cf4_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/unixodbc-2.3.12-he8a5cf4_0.conda + sha256: 048b6e6911905c413176601c6ea8ca519f57f5c12eeff297623dfcadd4012c68 + md5: ab0e676e1de2d40a2816aeda4d4edcab + depends: + - libcxx >=15.0.7 + - libedit >=3.1.20191231,<3.2.0a0 + - libiconv >=1.17,<2.0a0 + license: LGPL-2.1 + purls: [] + size: 259234 + timestamp: 1691504490810 +- kind: conda + name: untokenize + version: 0.1.1 + build: py_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-py_0.tar.bz2 + sha256: 38ac6f277f228e8b79a0707a85a86971e4c73dc6b4483c2286cfb413f0b62b58 + md5: 1447ead40f2a01733a9c8dfc32988375 + depends: + - python + license: MIT + license_family: MIT + size: 6143 + timestamp: 1583436833181 +- kind: conda + name: urllib3 + version: 2.2.2 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda + sha256: 00c47c602c03137e7396f904eccede8cc64cc6bad63ce1fc355125df8882a748 + md5: e804c43f58255e977093a2298e442bb8 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.8 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=conda-forge-mapping + size: 95048 + timestamp: 1719391384778 +- kind: conda + name: urllib3 + version: 2.2.2 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda + sha256: 00c47c602c03137e7396f904eccede8cc64cc6bad63ce1fc355125df8882a748 + md5: e804c43f58255e977093a2298e442bb8 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.8 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + size: 95048 + timestamp: 1719391384778 +- kind: conda + name: vc + version: '14.3' + build: h8a93ad2_20 + build_number: 20 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h8a93ad2_20.conda + sha256: 23ac5feb15a9adf3ab2b8c4dcd63650f8b7ae860c5ceb073e49cf71d203eddef + md5: 8558f367e1d7700554f7cdb823c46faf + depends: + - vc14_runtime >=14.40.33810 + track_features: + - vc14 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 17391 + timestamp: 1717709040616 +- kind: conda + name: vc14_runtime + version: 14.40.33810 + build: ha82c5b3_20 + build_number: 20 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.40.33810-ha82c5b3_20.conda + sha256: af3cfa347e3d7c1277e9b964b0849a9a9f095bff61836cb3c3a89862fbc32e17 + md5: e39cc4c34c53654ec939558993d9dc5b + depends: + - ucrt >=10.0.20348.0 + constrains: + - vs2015_runtime 14.40.33810.* *_20 + license: LicenseRef-ProprietaryMicrosoft + license_family: Proprietary + purls: [] + size: 751934 + timestamp: 1717709031266 +- kind: conda + name: virtualenv + version: 20.26.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.3-pyhd8ed1ab_0.conda + sha256: f78961b194e33eed5fdccb668774651ec9423a043069fa7a4e3e2f853b08aa0c + md5: 284008712816c64c85bf2b7fa9f3b264 + depends: + - distlib <1,>=0.3.7 + - filelock <4,>=3.12.2 + - platformdirs <5,>=3.9.1 + - python >=3.8 + license: MIT + license_family: MIT + size: 4363507 + timestamp: 1719150878323 +- kind: conda + name: vs2015_runtime + version: 14.40.33810 + build: h3bf8584_20 + build_number: 20 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.40.33810-h3bf8584_20.conda + sha256: 0c2803f7a788c51f28235a7228dc2ab3f107b4b16ab0845a3e595c8c51e50a7a + md5: c21f1b4a3a30bbc3ef35a50957578e0e + depends: + - vc14_runtime >=14.40.33810 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 17395 + timestamp: 1717709043353 +- kind: conda + name: wheel + version: 0.44.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.44.0-pyhd8ed1ab_0.conda + sha256: d828764736babb4322b8102094de38074dedfc71f5ff405c9dfee89191c14ebc + md5: d44e3b085abcaef02983c6305b84b584 + depends: + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/wheel?source=conda-forge-mapping + size: 58585 + timestamp: 1722797131787 +- kind: conda + name: win_inet_pton + version: 1.1.0 + build: pyhd8ed1ab_6 + build_number: 6 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyhd8ed1ab_6.tar.bz2 + sha256: a11ae693a0645bf6c7b8a47bac030be9c0967d0b1924537b9ff7458e832c0511 + md5: 30878ecc4bd36e8deeea1e3c151b2e0b + depends: + - __win + - python >=3.6 + license: PUBLIC-DOMAIN + purls: + - pkg:pypi/win-inet-pton?source=conda-forge-mapping + size: 8191 + timestamp: 1667051294134 +- kind: conda + name: win_inet_pton + version: 1.1.0 + build: pyhd8ed1ab_6 + build_number: 6 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyhd8ed1ab_6.tar.bz2 + sha256: a11ae693a0645bf6c7b8a47bac030be9c0967d0b1924537b9ff7458e832c0511 + md5: 30878ecc4bd36e8deeea1e3c151b2e0b + depends: + - __win + - python >=3.6 + license: PUBLIC-DOMAIN + size: 8191 + timestamp: 1667051294134 +- kind: conda + name: xorg-kbproto + version: 1.0.7 + build: h7f98852_1002 + build_number: 1002 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2 + sha256: e90b0a6a5d41776f11add74aa030f789faf4efd3875c31964d6f9cfa63a10dd1 + md5: 4b230e8381279d76131116660f5a241a + depends: + - libgcc-ng >=9.3.0 + license: MIT + license_family: MIT + purls: [] + size: 27338 + timestamp: 1610027759842 +- kind: conda + name: xorg-kbproto + version: 1.0.7 + build: hcd874cb_1002 + build_number: 1002 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-kbproto-1.0.7-hcd874cb_1002.tar.bz2 + sha256: 5b16e1ca1ecc0d2907f236bc4d8e6ecfd8417db013c862a01afb7f9d78e48c09 + md5: 8d11c1dac4756ca57e78c1bfe173bba4 + depends: + - m2w64-gcc-libs + license: MIT + license_family: MIT + purls: [] + size: 28166 + timestamp: 1610028297505 +- kind: conda + name: xorg-libice + version: 1.1.1 + build: hcd874cb_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-hcd874cb_0.conda + sha256: 353e07e311eb10e934f03e0123d0f05d9b3770a70b0c3993e6d11cf74d85689f + md5: 5271e3af4791170e2c55d02818366916 + depends: + - m2w64-gcc-libs + - m2w64-gcc-libs-core + - xorg-libx11 >=1.8.4,<2.0a0 + license: MIT + license_family: MIT + purls: [] + size: 158086 + timestamp: 1685308072189 +- kind: conda + name: xorg-libice + version: 1.1.1 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda + sha256: 5aa9b3682285bb2bf1a8adc064cb63aff76ef9178769740d855abb42b0d24236 + md5: b462a33c0be1421532f28bfe8f4a7514 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 58469 + timestamp: 1685307573114 +- kind: conda + name: xorg-libsm + version: 1.2.4 + build: h7391055_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda + sha256: 089ad5f0453c604e18985480218a84b27009e9e6de9a0fa5f4a20b8778ede1f1 + md5: 93ee23f12bc2e684548181256edd2cf6 + depends: + - libgcc-ng >=12 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.1,<2.0a0 + license: MIT + license_family: MIT + purls: [] + size: 27433 + timestamp: 1685453649160 +- kind: conda + name: xorg-libsm + version: 1.2.4 + build: hcd874cb_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-hcd874cb_0.conda + sha256: 3a8cc151142c379d3ec3ec4420395d3a273873d3a45a94cd3038d143f5a519e8 + md5: 25926681339df15918243d9a7cec25a1 + depends: + - m2w64-gcc-libs + - m2w64-gcc-libs-core + - xorg-libice >=1.1.1,<2.0a0 + license: MIT + license_family: MIT + purls: [] + size: 86397 + timestamp: 1685454296879 +- kind: conda + name: xorg-libx11 + version: 1.8.9 + build: h0076a8d_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.9-h0076a8d_1.conda + sha256: c378304044321e74c6acd483674f404864a229ab2a8841bf9515bc1a30783e99 + md5: 0296a4de2235cad9ad3112134f8e4519 + depends: + - libxcb >=1.16,<1.17.0a0 + - m2w64-gcc-libs + - m2w64-gcc-libs-core + - xorg-kbproto + - xorg-xextproto >=7.3.0,<8.0a0 + - xorg-xproto + license: MIT + license_family: MIT + purls: [] + size: 814589 + timestamp: 1718847832308 +- kind: conda + name: xorg-libx11 + version: 1.8.9 + build: hb711507_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.9-hb711507_1.conda + sha256: 66eabe62b66c1597c4a755dcd3f4ce2c78adaf7b32e25dfee45504d67d7735c1 + md5: 4a6d410296d7e39f00bacdee7df046e9 + depends: + - libgcc-ng >=12 + - libxcb >=1.16,<1.17.0a0 + - xorg-kbproto + - xorg-xextproto >=7.3.0,<8.0a0 + - xorg-xproto + license: MIT + license_family: MIT + purls: [] + size: 832198 + timestamp: 1718846846409 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hcd874cb_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-hcd874cb_0.conda + sha256: 8c5b976e3b36001bdefdb41fb70415f9c07eff631f1f0155f3225a7649320e77 + md5: c46ba8712093cb0114404ae8a7582e1a + depends: + - m2w64-gcc-libs + - m2w64-gcc-libs-core + license: MIT + license_family: MIT + purls: [] + size: 51297 + timestamp: 1684638355740 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda + sha256: 309751371d525ce50af7c87811b435c176915239fc9e132b99a25d5e1703f2d4 + md5: 2c80dc38fface310c9bd81b17037fee5 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 14468 + timestamp: 1684637984591 +- kind: conda + name: xorg-libxdmcp + version: 1.1.3 + build: h7f98852_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2 + sha256: 4df7c5ee11b8686d3453e7f3f4aa20ceef441262b49860733066c52cfd0e4a77 + md5: be93aabceefa2fac576e971aef407908 + depends: + - libgcc-ng >=9.3.0 + license: MIT + license_family: MIT + purls: [] + size: 19126 + timestamp: 1610071769228 +- kind: conda + name: xorg-libxdmcp + version: 1.1.3 + build: hcd874cb_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.3-hcd874cb_0.tar.bz2 + sha256: f51205d33c07d744ec177243e5d9b874002910c731954f2c8da82459be462b93 + md5: 46878ebb6b9cbd8afcf8088d7ef00ece + depends: + - m2w64-gcc-libs + license: MIT + license_family: MIT + purls: [] + size: 67908 + timestamp: 1610072296570 +- kind: conda + name: xorg-libxext + version: 1.3.4 + build: h0b41bf4_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda + sha256: 73e5cfbdff41ef8a844441f884412aa5a585a0f0632ec901da035a03e1fe1249 + md5: 82b6df12252e6f32402b96dacc656fec + depends: + - libgcc-ng >=12 + - xorg-libx11 >=1.7.2,<2.0a0 + - xorg-xextproto + license: MIT + license_family: MIT + purls: [] + size: 50143 + timestamp: 1677036907815 +- kind: conda + name: xorg-libxext + version: 1.3.4 + build: hcd874cb_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.4-hcd874cb_2.conda + sha256: 829320f05866ea1cc51924828427f215f4d0db093e748a662e3bb68b764785a4 + md5: 2aa695ac3c56193fd8d526e3b511e021 + depends: + - m2w64-gcc-libs + - xorg-libx11 >=1.7.2,<2.0a0 + - xorg-xextproto + license: MIT + license_family: MIT + purls: [] + size: 221821 + timestamp: 1677038179908 +- kind: conda + name: xorg-libxpm + version: 3.5.17 + build: hcd874cb_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-hcd874cb_0.conda + sha256: d5cc2f026658e8b85679813bff35c16c857f873ba02489e6eb6e30d5865dacc4 + md5: 029be9b667bf3896fa28bc32adb1bfc3 + depends: + - m2w64-gcc-libs + - m2w64-gcc-libs-core + - xorg-libx11 >=1.8.6,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libxt >=1.3.0,<2.0a0 + - xorg-xextproto >=7.3.0,<8.0a0 + - xorg-xproto + license: MIT + license_family: MIT + purls: [] + size: 195881 + timestamp: 1696449889560 +- kind: conda + name: xorg-libxrender + version: 0.9.11 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda + sha256: 26da4d1911473c965c32ce2b4ff7572349719eaacb88a066db8d968a4132c3f7 + md5: ed67c36f215b310412b2af935bf3e530 + depends: + - libgcc-ng >=12 + - xorg-libx11 >=1.8.6,<2.0a0 + - xorg-renderproto + license: MIT + license_family: MIT + purls: [] + size: 37770 + timestamp: 1688300707994 +- kind: conda + name: xorg-libxt + version: 1.3.0 + build: hcd874cb_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.0-hcd874cb_1.conda + sha256: d513e0c627f098ef6655ce188eca79a672eaf763b0bbf37b228cb46dc82a66ca + md5: 511a29edd2ff3d973f63e54f19dcc06e + depends: + - m2w64-gcc-libs + - m2w64-gcc-libs-core + - xorg-kbproto + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.6,<2.0a0 + - xorg-xproto + license: MIT + license_family: MIT + purls: [] + size: 671704 + timestamp: 1690289114426 +- kind: conda + name: xorg-renderproto + version: 0.11.1 + build: h7f98852_1002 + build_number: 1002 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2 + sha256: 38942930f233d1898594dd9edf4b0c0786f3dbc12065a0c308634c37fd936034 + md5: 06feff3d2634e3097ce2fe681474b534 + depends: + - libgcc-ng >=9.3.0 + license: MIT + license_family: MIT + purls: [] + size: 9621 + timestamp: 1614866326326 +- kind: conda + name: xorg-xextproto + version: 7.3.0 + build: h0b41bf4_1003 + build_number: 1003 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda + sha256: b8dda3b560e8a7830fe23be1c58cc41f407b2e20ae2f3b6901eb5842ba62b743 + md5: bce9f945da8ad2ae9b1d7165a64d0f87 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 30270 + timestamp: 1677036833037 +- kind: conda + name: xorg-xextproto + version: 7.3.0 + build: hcd874cb_1003 + build_number: 1003 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-xextproto-7.3.0-hcd874cb_1003.conda + sha256: 04c0a08fd34fa33406c20f729e8f9cc40e8fd898072b952a5c14280fcf26f2e6 + md5: 6e6c2639620e436bddb7c040cd4f3adb + depends: + - m2w64-gcc-libs + license: MIT + license_family: MIT + purls: [] + size: 31034 + timestamp: 1677037259999 +- kind: conda + name: xorg-xproto + version: 7.0.31 + build: h7f98852_1007 + build_number: 1007 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2 + sha256: f197bb742a17c78234c24605ad1fe2d88b1d25f332b75d73e5ba8cf8fbc2a10d + md5: b4a4381d54784606820704f7b5f05a15 + depends: + - libgcc-ng >=9.3.0 + license: MIT + license_family: MIT + purls: [] + size: 74922 + timestamp: 1607291557628 +- kind: conda + name: xorg-xproto + version: 7.0.31 + build: hcd874cb_1007 + build_number: 1007 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xorg-xproto-7.0.31-hcd874cb_1007.tar.bz2 + sha256: b84cacba8479fa14199c9255fb62e005cacc619e90198c53b1653973709ec331 + md5: 88f3c65d2ad13826a9e0b162063be023 + depends: + - m2w64-gcc-libs + license: MIT + license_family: MIT + purls: [] + size: 75708 + timestamp: 1607292254607 +- kind: conda + name: xz + version: 5.2.6 + build: h166bdaf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 + md5: 2161070d867d1b1204ea749c8eec4ef0 + depends: + - libgcc-ng >=12 + license: LGPL-2.1 and GPL-2.0 + purls: [] + size: 418368 + timestamp: 1660346797927 +- kind: conda + name: xz + version: 5.2.6 + build: h57fd34a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec + md5: 39c6b54e94014701dd157f4f576ed211 + license: LGPL-2.1 and GPL-2.0 + purls: [] + size: 235693 + timestamp: 1660346961024 +- kind: conda + name: xz + version: 5.2.6 + build: h775f41a_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + sha256: eb09823f34cc2dd663c0ec4ab13f246f45dcd52e5b8c47b9864361de5204a1c8 + md5: a72f9d4ea13d55d745ff1ed594747f10 + license: LGPL-2.1 and GPL-2.0 + purls: [] + size: 238119 + timestamp: 1660346964847 +- kind: conda + name: xz + version: 5.2.6 + build: h8d14728_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + sha256: 54d9778f75a02723784dc63aff4126ff6e6749ba21d11a6d03c1f4775f269fe0 + md5: 515d77642eaa3639413c6b1bc3f94219 + depends: + - vc >=14.1,<15 + - vs2015_runtime >=14.16.27033 + license: LGPL-2.1 and GPL-2.0 + purls: [] + size: 217804 + timestamp: 1660346976440 +- kind: conda + name: yaml + version: 0.2.5 + build: h0d85af4_2 + build_number: 2 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + sha256: 5301417e2c8dea45b401ffee8df3957d2447d4ce80c83c5ff151fc6bfe1c4148 + md5: d7e08fcf8259d742156188e8762b4d20 + license: MIT + license_family: MIT + purls: [] + size: 84237 + timestamp: 1641347062780 +- kind: conda + name: yaml + version: 0.2.5 + build: h3422bc3_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + license: MIT + license_family: MIT + purls: [] + size: 88016 + timestamp: 1641347076660 +- kind: conda + name: yaml + version: 0.2.5 + build: h7f98852_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- kind: conda + name: yaml + version: 0.2.5 + build: h8ffe710_2 + build_number: 2 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 + sha256: 4e2246383003acbad9682c7c63178e2e715ad0eb84f03a8df1fbfba455dfedc5 + md5: adbfb9f45d1004a26763652246a33764 + depends: + - vc >=14.1,<15.0a0 + - vs2015_runtime >=14.16.27012 + license: MIT + license_family: MIT + purls: [] + size: 63274 + timestamp: 1641347623319 +- kind: conda + name: zipp + version: 3.19.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda + sha256: e3e9c8501f581bfdc4700b83ea283395e237ec6b9b5cbfbedb556e1da6f4fdc9 + md5: 49808e59df5535116f6878b2a820d6f4 + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 20917 + timestamp: 1718013395428 +- kind: conda + name: zlib + version: 1.3.1 + build: h2466b09_1 + build_number: 1 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_1.conda + sha256: 76409556e6c7cb91991cd94d7fc853c9272c2872bd7e3573ff35eb33d6fca5be + md5: f8e0a35bf6df768ad87ed7bbbc36ab04 + depends: + - libzlib 1.3.1 h2466b09_1 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: Zlib + license_family: Other + purls: [] + size: 108081 + timestamp: 1716874767420 +- kind: conda + name: zlib + version: 1.3.1 + build: h4ab18f5_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda + sha256: cee16ab07a11303de721915f0a269e8c7a54a5c834aa52f74b1cc3a59000ade8 + md5: 9653f1bf3766164d0e65fa723cabbc54 + depends: + - libgcc-ng >=12 + - libzlib 1.3.1 h4ab18f5_1 + license: Zlib + license_family: Other + purls: [] + size: 93004 + timestamp: 1716874213487 +- kind: conda + name: zlib + version: 1.3.1 + build: h87427d6_1 + build_number: 1 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-h87427d6_1.conda + sha256: 41bd5fef28b2755d637e3a8ea5c84010628392fbcf80c7e3d7370aaced7ee4fe + md5: 3ac9ef8975965f9698dbedd2a4cc5894 + depends: + - __osx >=10.13 + - libzlib 1.3.1 h87427d6_1 + license: Zlib + license_family: Other + purls: [] + size: 88782 + timestamp: 1716874245467 +- kind: conda + name: zlib + version: 1.3.1 + build: hfb2fe0b_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-hfb2fe0b_1.conda + sha256: 87360c2dc662916aac37cf01e53324b4f4f78db6f399220818076752b093ede5 + md5: f27e021db7862b6ddbc1d3578f10d883 + depends: + - __osx >=11.0 + - libzlib 1.3.1 hfb2fe0b_1 + license: Zlib + license_family: Other + purls: [] + size: 78260 + timestamp: 1716874280334 +- kind: conda + name: zstandard + version: 0.23.0 + build: py312h331e495_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h331e495_0.conda + sha256: c1d379d1062f23e3fbd3dd8548fc6cf61b23d6f96b11e78c4e01f4761580cb02 + md5: fb62d40e45f51f7d6a7df47c9a12caf4 + depends: + - __osx >=10.13 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=conda-forge-mapping + size: 411066 + timestamp: 1721044218542 +- kind: conda + name: zstandard + version: 0.23.0 + build: py312h331e495_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h331e495_0.conda + sha256: c1d379d1062f23e3fbd3dd8548fc6cf61b23d6f96b11e78c4e01f4761580cb02 + md5: fb62d40e45f51f7d6a7df47c9a12caf4 + depends: + - __osx >=10.13 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 411066 + timestamp: 1721044218542 +- kind: conda + name: zstandard + version: 0.23.0 + build: py312h3483029_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h3483029_0.conda + sha256: 7e1e105ea7eab2af591faebf743ff2493f53c313079e316419577925e4492b03 + md5: eab52e88c858d87cf5a069f79d10bb50 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=conda-forge-mapping + size: 416708 + timestamp: 1721044154409 +- kind: conda + name: zstandard + version: 0.23.0 + build: py312h3483029_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h3483029_0.conda + sha256: 7e1e105ea7eab2af591faebf743ff2493f53c313079e316419577925e4492b03 + md5: eab52e88c858d87cf5a069f79d10bb50 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 416708 + timestamp: 1721044154409 +- kind: conda + name: zstandard + version: 0.23.0 + build: py312h721a963_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h721a963_0.conda + sha256: 6fc0d2f7a0a49a7c1453bb9eacd5456214b6cf000760067d72f0cce464975fa1 + md5: caf7f5b85615a132c0fa586b82bd59e6 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=conda-forge-mapping + size: 332489 + timestamp: 1721044244889 +- kind: conda + name: zstandard + version: 0.23.0 + build: py312h721a963_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h721a963_0.conda + sha256: 6fc0d2f7a0a49a7c1453bb9eacd5456214b6cf000760067d72f0cce464975fa1 + md5: caf7f5b85615a132c0fa586b82bd59e6 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 332489 + timestamp: 1721044244889 +- kind: conda + name: zstandard + version: 0.23.0 + build: py312h7606c53_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_0.conda + sha256: 907edf473419a5aff6151900d09bb3f2b2c2ede8964f20ae87cb6fae04d0cbb7 + md5: c405924e081cb476495ffe72c88e92c2 + depends: + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=conda-forge-mapping + size: 320649 + timestamp: 1721044547910 +- kind: conda + name: zstandard + version: 0.23.0 + build: py312h7606c53_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_0.conda + sha256: 907edf473419a5aff6151900d09bb3f2b2c2ede8964f20ae87cb6fae04d0cbb7 + md5: c405924e081cb476495ffe72c88e92c2 + depends: + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 320649 + timestamp: 1721044547910 +- kind: conda + name: zstd + version: 1.5.6 + build: h0ea2cb4_0 + subdir: win-64 + url: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + sha256: 768e30dc513568491818fb068ee867c57c514b553915536da09e5d10b4ebf3c3 + md5: 9a17230f95733c04dc40a2b1e5491d74 + depends: + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 349143 + timestamp: 1714723445995 +- kind: conda + name: zstd + version: 1.5.6 + build: h915ae27_0 + subdir: osx-64 + url: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda + sha256: efa04a98cb149643fa54c4dad5a0179e36a5fbc88427ea0eec88ceed87fd0f96 + md5: 4cb2cd56f039b129bb0e491c1164167e + depends: + - __osx >=10.9 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 498900 + timestamp: 1714723303098 +- kind: conda + name: zstd + version: 1.5.6 + build: ha6fb4c9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 554846 + timestamp: 1714722996770 +- kind: conda + name: zstd + version: 1.5.6 + build: hb46c0d2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 405089 + timestamp: 1714723101397 diff --git a/pixi.toml b/pixi.toml new file mode 100644 index 0000000..097095c --- /dev/null +++ b/pixi.toml @@ -0,0 +1,83 @@ +[project] +name = "tabulardelta" +description = "Simplify arbitrary table comparisons." +channels = ["conda-forge"] +platforms = ["osx-arm64", "osx-64", "linux-64", "win-64"] + +[tasks] +postinstall = "pip install --no-build-isolation --no-deps --disable-pip-version-check -e ." + +[dependencies] +python = ">=3.11" +numpy = ">=1.24.4,<3" +pandas = ">=2.0.3,<3" +pydiverse-pipedag = ">=0.9.3,<0.10" +duckdb = ">=1.0.0,<1.1" +duckdb-engine = ">=0.12.1,<0.13" + +[host-dependencies] +pip = "*" +setuptools = ">=61" +setuptools-scm = "*" +[feature.docs.dependencies] +make = "*" +numpydoc = "*" +sphinx = "*" +sphinxcontrib-apidoc = "*" +sphinx_rtd_theme = "*" +[feature.docs.tasks] +docs = "cd docs && make html" +readthedocs = "rm -rf $READTHEDOCS_OUTPUT/html && cp -r docs/_build/html $READTHEDOCS_OUTPUT/html" + +[feature.test.dependencies] +pytest = ">=6" +pytest-cov = "*" +pytest-md = "*" +pytest-emoji = "*" +mypy = "*" +pandas-stubs = "*" +pixi-pycharm = "*" +polars = "*" +[feature.test.tasks] +test = "pytest" +test-coverage = "pytest --cov=tabulardelta --cov-report=xml --cov-report=term-missing" + +[feature.build.dependencies] +build = "*" +twine = "*" +[feature.build.tasks] +build-wheel = "python -m build --no-isolation ." +twine-check = "twine check dist/*" + +[feature.lint.dependencies] +pre-commit = "*" +insert-license-header = "*" +docformatter = "*" +ruff = "*" +prettier = "*" +taplo = "*" +pre-commit-hooks = "*" +typos = "*" +[feature.lint.tasks] +pre-commit-install = "pre-commit install" +pre-commit-run = "pre-commit run -a" + +[feature.py311.dependencies] +python = "3.11.*" +[feature.py312.dependencies] +python = "3.12.*" + +[feature.sql.dependencies] +sqlalchemy = "*" +pyodbc = "*" +[feature.sql.pypi-dependencies] +sqlcompyre = "*" + +[environments] +no-sql = ["test"] +default = ["test", "sql"] +py311 = ["py311", "test", "sql"] +py312 = ["py312", "test", "sql"] +docs = ["docs", "sql"] +build = ["build"] +lint = { features = ["lint"], no-default-feature = true } diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..b86b4a4 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,67 @@ +[build-system] +requires = ["setuptools", "setuptools-scm", "wheel"] + +[tool.setuptools_scm] +version_scheme = "post-release" + +[project] +name = "tabulardelta" +description = "Simplify table comparisons." +dynamic = ["version"] +classifiers = [ + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", +] +readme = "README.md" +requires-python = ">=3.11" + +[project.urls] +repository = "https://github.com/quantco/tabulardelta" + +[tool.setuptools.packages.find] +include = ["tabulardelta"] + +[project.scripts] + +[tool.ruff] +line-length = 88 + +[tool.ruff.lint] +ignore = [ + "N803", # https://docs.astral.sh/ruff/rules/invalid-argument-name + "N806", # https://docs.astral.sh/ruff/rules/non-lowercase-variable-in-function + "E501", # https://docs.astral.sh/ruff/faq/#is-the-ruff-linter-compatible-with-black +] +select = [ + # pyflakes + "F", + # pycodestyle + "E", + "W", + # isort + "I", + # pep8-naming + "N", + # pyupgrade + "UP", +] + +[tool.ruff.format] +quote-style = "double" +indent-style = "space" + +[tool.mypy] +python_version = '3.11' +no_implicit_optional = true +check_untyped_defs = true + +# If you run into `missing library stubs or py.typed marker` errors +# and no stubs are available for this library, you can add an override +# to ignore the missing imports. +# [[tool.mypy.overrides]] +# module = ["my_module"] +# ignore_missing_imports = true + +[tool.pytest.ini_options] +testpaths = ["tests"] diff --git a/tabulardelta/__init__.py b/tabulardelta/__init__.py new file mode 100644 index 0000000..c6a2fef --- /dev/null +++ b/tabulardelta/__init__.py @@ -0,0 +1,40 @@ +# Copyright (c) QuantCo 2022-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo + +import importlib.metadata +import warnings +from typing import Any + +try: + __version__ = importlib.metadata.version(__name__) +except importlib.metadata.PackageNotFoundError as e: # pragma: no cover + warnings.warn(f"Could not determine version of {__name__}\n{e!s}", stacklevel=2) + __version__ = "unknown" + +from tabulardelta.comparators.comparator import Comparator +from tabulardelta.comparators.pandas_comparator import PandasComparator +from tabulardelta.formatters.detailed_text_formatter import DetailedTextFormatter +from tabulardelta.formatters.formatter import Formatter +from tabulardelta.formatters.overview_row_formatter import OverviewRowFormatter +from tabulardelta.tabulardelta import TabularDelta + +try: + from tabulardelta.comparators.sqlcompyre_comparator import SqlCompyreComparator +except ImportError: + SqlCompyreComparator = Any # type: ignore + +try: + from tabulardelta.comparators.sqlmetadata_comparator import SqlMetadataComparator +except ImportError: + SqlMetadataComparator = Any # type: ignore + +__all__ = [ + "TabularDelta", + "Formatter", + "DetailedTextFormatter", + "OverviewRowFormatter", + "Comparator", + "SqlCompyreComparator", + "SqlMetadataComparator", + "PandasComparator", +] diff --git a/tabulardelta/comparators/__init__.py b/tabulardelta/comparators/__init__.py new file mode 100644 index 0000000..e1e8b31 --- /dev/null +++ b/tabulardelta/comparators/__init__.py @@ -0,0 +1,2 @@ +# Copyright (c) QuantCo 2022-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo diff --git a/tabulardelta/comparators/comparator.py b/tabulardelta/comparators/comparator.py new file mode 100644 index 0000000..c654483 --- /dev/null +++ b/tabulardelta/comparators/comparator.py @@ -0,0 +1,35 @@ +# Copyright (c) QuantCo 2022-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo + + +from typing import Protocol, TypeVar + +from tabulardelta.tabulardelta import TabularDelta + +T = TypeVar("T", contravariant=True) + + +class Comparator(Protocol[T]): + """Protocol for offering table comparison logic for TabularDelta. + + Ensures compatibility with all :class:`Formatter` implementations. + + Methods + ------- + compare(old: T, new: T) -> TabularDelta: + Compare two tables + """ + + def compare(self, old: T, new: T) -> TabularDelta: + """Compare two tables. + + Arguments: + old :class:`T`: + The old table (first table to compare). + new :class:`T`: + The new table (second table to compare). + + Returns :class:`TabularDelta`: + Metadata and results of the comparison. + """ + ... diff --git a/tabulardelta/comparators/pandas_comparator.py b/tabulardelta/comparators/pandas_comparator.py new file mode 100644 index 0000000..bbbe26d --- /dev/null +++ b/tabulardelta/comparators/pandas_comparator.py @@ -0,0 +1,325 @@ +# Copyright (c) QuantCo 2022-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo + + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Any + +import numpy as np +import pandas as pd + +from tabulardelta.comparators.tabulardelta_dataclasses import ( + ColumnPair, + TabularDelta, +) + +LOSSLESS_CONV = { + "int8": {"int16", "int32", "int64", "object"}, + "int16": {"int32", "int64", "object"}, + "int32": {"int64", "object"}, + "int64": {"object"}, + "uint8": {"uint16", "uint32", "uint64", "object"}, + "uint16": {"uint32", "uint64", "object"}, + "uint32": {"uint64", "object"}, + "uint64": {"object"}, + "float32": {"float64", "object"}, + "float64": {"object"}, + # String dtypes are currently (2024-05-10) experimental and hard to compare. +} + + +@dataclass(frozen=True) +class PandasComparator: + """Implements :class:`Comparator` protocol for comparing pandas DataFrames. + + Methods + ------- + compare(old: pd.DataFrame, new: pd.DataFrame) -> TabularDelta: + Compare two pandas DataFrames + """ + + join_columns: list[str] | None = None + """Columns to join on, uses index if unspecified.""" + + name: str = "" + """Name of the comparison/tables.""" + float_rtol: float = 1.0e-5 + """Relative tolerance for comparing floats.""" + float_atol: float = 0.0 + """Absolute tolerance for comparing floats.""" + check_row_order: bool = True + """Check if row order changed. + + Slight performance hit. + """ + + def compare(self, old: pd.DataFrame, new: pd.DataFrame) -> TabularDelta: + """Compare two pandas DataFrames. + + Arguments: + old :pd.DataFrame: + The old table (first table to compare). + new :pd.DataFrame: + The new table (second table to compare). + + Returns :class:`TabularDelta`: + Metadata and results of the comparison. + """ + return compare_pandas( + old, + new, + old.dtypes.astype("string").to_dict(), + new.dtypes.astype("string").to_dict(), + self.join_columns, + self.name, + self.float_rtol, + self.float_atol, + self.check_row_order, + ) + + +def _specific_str(obj: Any) -> str | float: + """Get deterministic string representation for arbitrary objects.""" + if isinstance(obj, bool | str | int | float | type(None)): + return repr(obj) + if type(obj).__repr__ != object.__repr__: + return repr(obj) + f" (<{type(obj).__name__}>)" + if type(obj).__str__ != object.__str__: + return str(obj) + f" (<{type(obj).__name__}>)" + raise ValueError(f"Cannot convert {obj} to deterministic string representation") + + +def _cast(df: pd.DataFrame, col: str, dtype: str) -> None: + """Cast object into comparable dtype. + + Use string representation for objects. + """ + df[col] = df[col].map(_specific_str) if dtype == "object" else df[col].astype(dtype) # type: ignore + + +def _remove_suffix(df: pd.DataFrame, suffix: str) -> pd.DataFrame: + """Remove suffix from all column names in a DataFrame.""" + mapping = {col: col[: -len(suffix)] for col in df.columns if col.endswith(suffix)} + return df.rename(columns=mapping) + + +def _join( + old: pd.DataFrame, new: pd.DataFrame, join_cols: list[str], suffixes +) -> tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]: + """Join two DataFrames on join_cols, failing for non-unique join columns. + + Use outer join to get added and removed rows. Use inner join to not change data + types, since outer join adds Nones. + """ + outer = pd.merge( + old, + new, + how="outer", + on=join_cols or None, + left_index=not join_cols, + right_index=not join_cols, + suffixes=suffixes, + indicator=True, + ) + removed = _remove_suffix(outer[outer["_merge"] == "left_only"], suffixes[0]) + added = _remove_suffix(outer[outer["_merge"] == "right_only"], suffixes[1]) + joined = pd.merge( + old, + new, + how="inner", + on=join_cols or None, + left_index=not join_cols, + right_index=not join_cols, + suffixes=suffixes, + indicator=True, + ) + if join_cols: + duplicates = joined.duplicated(subset=join_cols, keep=False) + else: + duplicates = pd.Series(joined.index.duplicated(keep=False)) + if duplicates.any(): + raise KeyError(f"Join columns {join_cols} are not unique.") + return added[new.columns], removed[old.columns], joined + + +def _value_change( + df, join_cols, col, suffixes, old_dt, new_dt, incomparable: bool = False +) -> ColumnPair: + """Create ColumnChange object for one column in a given DataFrame.""" + diff = df[join_cols + [col + suffixes[0], col + suffixes[1]]].copy() + if not join_cols: + diff.reset_index(inplace=True) + diff.rename(columns={col + suffixes[1]: col}, inplace=True) + diff["_count"] = 1 + combined = col, old_dt[col], col, new_dt[col], False + return ColumnPair.from_str(*combined, incomparable, diff) + + +def compare_pandas( + old: pd.DataFrame, + new: pd.DataFrame, + old_dtypes: dict[str, str], + new_dtypes: dict[str, str], + join_columns: list[str] | None = None, + name: str = "", + float_rtol: float = 1.0e-5, + float_atol: float = 0, + check_row_order: bool = True, +) -> TabularDelta: + """Compare pandas Dataframes. + + If data was de-serialized imperfectly, the original dtypes can be specified. + + Arguments: + old :class:`pd.DataFrame`: + The old table (first table to compare). + new :class:`pd.DataFrame`: + The new table (second table to compare). + old_dtypes :class:`dict[str, str]`: + The dtypes of the old table (name -> type). + new_dtypes :class:`dict[str, str]`: + The dtypes of the new table (name -> type). + join_columns :class:`list[str]` | :code:`None`: + Columns to join on, uses index if unspecified. + name :class:`str`: + Name of the comparison/tables. + float_rtol :class:`float`: + Relative tolerance for comparing floats. + float_atol :class:`float`: + Absolute tolerance for comparing floats. + check_row_order :class:`bool`: + Check if row order changed. Slight performance hit. + + Returns :class:`TabularDelta`: + Metadata and results of the comparison. + """ + if not join_columns: + join_columns = [] + old = old.copy() + new = new.copy() + warnings = [] + info: list[str] = [] + if check_row_order: + old["_old_row_number"] = range(len(old)) + new["_new_row_number"] = range(len(new)) + + # 1. Join dataframes on join_columns + suffixes = ("_old", "_new") + try: + added_rows, removed_rows, joined = _join(old, new, join_columns, suffixes) + except KeyError as e: # Probably non-unique join columns + warnings.append( + f"Error when joining on columns {join_columns}: {e}\n" + f"Using all common columns as join columns instead.\n" + f"MODIFIED ROWS will be LISTED AS ADDED AND REMOVED" + ) + common = [col for col in old.columns if col in new.columns] + join_columns = [col for col in common if old_dtypes[col] == new_dtypes[col]] + added_rows, removed_rows, joined = _join(old, new, join_columns, suffixes) + if not join_columns: + added_rows.reset_index(inplace=True) + removed_rows.reset_index(inplace=True) + if check_row_order: + joined = joined.sort_values("_old_row_number") + if not joined["_new_row_number"].is_monotonic_increasing: + info.append("Row Order Changed!") + joined.drop(columns=["_old_row_number", "_new_row_number"], inplace=True) + added_rows.drop(columns=["_new_row_number"], inplace=True) + removed_rows.drop(columns=["_old_row_number"], inplace=True) + + # 2. Match columns (rename equal columns, drop unmatched) + only_old = set(old.columns) & set(joined.columns) - set(join_columns) + only_new = set(new.columns) & set(joined.columns) - set(join_columns) + tmp = {n: o for o in only_old for n in only_new if joined[o].equals(joined[n])} + renamed = {v: k for k, v in tmp.items()} # Make both sides unique by reversing + if joined.shape[0] == 0: + renamed = {} # Without rows, every column is equal + mapping = {v + suffixes[1]: v for v in renamed.values()} + mapping |= {v + suffixes[0]: k for k, v in renamed.items()} + unmatched_cols = (only_old | only_new) - set(renamed.keys()) - set(renamed.values()) + joined.rename(columns={v: k for k, v in mapping.items()}, inplace=True) + joined.drop(columns=list(unmatched_cols), inplace=True) + + # 2.5 Check column order + old_cols_renamed = [renamed.get(c, c) for c in old.columns] + new_col_positions = [np.flatnonzero(new.columns == c) for c in old_cols_renamed] + if any(len(pos) > 1 for pos in new_col_positions): + errors = [f"No injective column mapping (renaming: {renamed})"] + return TabularDelta.from_errors(errors) + filtered_positions = [pos[0] for pos in new_col_positions if len(pos) == 1] + if not all(i < j for i, j in zip(filtered_positions, filtered_positions[1:])): + info.append("Column Order Changed!") + + # Quick access to important datastructures: + cols = set(joined.columns) # Get interesting (non-joined) columns without suffix + cols = {col[: -len(suffixes[0])] for col in cols if col.endswith(suffixes[0])} + old_names = {col: mapping.get(col + suffixes[0], col) for col in cols} + new_names = {col: mapping.get(col + suffixes[1], col) for col in cols} + old_dt = {col: old_dtypes[old_names[col]] for col in cols} # Using new names + new_dt = {col: new_dtypes[new_names[col]] for col in cols} # Using new names + + # 3. Match dtypes (cast if possible, otherwise mark incomparable) + dtype_changes: list[ColumnPair] = [] + changed = {col for col in cols if old_dt[col] != new_dt[col]} + cast_old = {c for c in changed if old_dt[c] in LOSSLESS_CONV.get(new_dt[c], set())} + cast_new = {c for c in changed if new_dt[c] in LOSSLESS_CONV.get(old_dt[c], set())} + unsupported = changed - cast_old - cast_new + for col in cast_old | cast_new: + _cast( + joined, col + suffixes[0], new_dt[col] if col in cast_new else old_dt[col] + ) + _cast( + joined, col + suffixes[1], new_dt[col] if col in cast_new else old_dt[col] + ) + for col in unsupported: + change = _value_change( + joined, join_columns, col, suffixes, old_dt, new_dt, True + ) + dtype_changes.append(change) + joined.drop(columns=[col + suffixes[0], col + suffixes[1]], inplace=True) + cols -= unsupported + + # 4. Compare values + column_changes = [] + for col in cols: + left, right = joined[col + suffixes[0]], joined[col + suffixes[1]] + if joined.dtypes[col + suffixes[0]] in ["float32", "float64"]: + joined[col + "_equal"] = np.isclose( + left, right, float_rtol, float_atol, True + ) + else: + joined[col + "_equal"] = (left == right) | pd.isna(left) & pd.isna(right) + unequal = joined[~joined[col + "_equal"].astype("bool")] + change = _value_change(unequal, join_columns, col, suffixes, old_dt, new_dt) + if len(change) > 0: + column_changes.append(change) + joined["_equal"] = joined[[col + "_equal" for col in cols]].agg("all", axis=1) + equal_rows = joined[["_equal"]].value_counts().get(True, 0) + + # 5. Return DataFrameDiff + ren_cols = [ + ColumnPair.from_str(old, old_dtypes[old], new, new_dtypes[new]) + for old, new in renamed.items() + ] + added = [ + (None, None, col, new_dtypes[col]) for col in only_new - set(renamed.values()) + ] + removed = [(col, old_dtypes[col]) for col in only_old - set(renamed.keys())] + joins = [(c, old_dtypes[c], c, new_dtypes[c], True) for c in join_columns] + uncompared = [ColumnPair.from_str(*pair) for pair in added + removed + joins] + return TabularDelta( + name, + info=info, + warnings=warnings, + _columns=column_changes + dtype_changes + ren_cols + uncompared, + _old_rows=old.shape[0], + _new_rows=new.shape[0], + _added_rows=new.shape[0] - joined.shape[0], + _removed_rows=old.shape[0] - joined.shape[0], + _equal_rows=equal_rows, + _unequal_rows=joined.shape[0] - equal_rows, + _example_added_rows=added_rows.to_dict(orient="records"), # type: ignore + _example_removed_rows=removed_rows.to_dict(orient="records"), # type: ignore + ) diff --git a/tabulardelta/comparators/sqlcompyre_comparator.py b/tabulardelta/comparators/sqlcompyre_comparator.py new file mode 100644 index 0000000..4cd8f95 --- /dev/null +++ b/tabulardelta/comparators/sqlcompyre_comparator.py @@ -0,0 +1,254 @@ +# Copyright (c) QuantCo 2022-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo + + +from collections.abc import Callable +from dataclasses import dataclass +from typing import Any, TypeVar +from warnings import warn + +import pandas as pd +import sqlalchemy as sa +import sqlcompyre as sc +from sqlcompyre.analysis import TableComparison + +from tabulardelta.comparators.tabulardelta_dataclasses import ( + ColumnPair, + TabularDelta, +) + + +@dataclass(frozen=True) +class SqlCompyreComparator: + """Implements :class:`Comparator` protocol for comparing SQL Tables. + + This is mostly a wrapper for SQLCompyre's table comparison. + + Methods + ------- + compare(self, old: sa.Table | str, new: sa.Table | str) -> TabularDelta: + Compare two SQL tables + """ + + engine: sa.Engine + """SQLAlchemy engine to connect to the database.""" + join_columns: list[str] | None = None + """Columns to join the two tables on. + + If None, SQLCompyre will try to infer them. + """ + row_samples: int = 10 + """Number of example rows to sample.""" + value_samples: int = 50 + """Number of example value changes to sample.""" + float_precision: float = 1e-6 + """Relative precision for comparing floats.""" + warning_threshold: int = 10000 + """Minimal number of rows to warn about when comparing tables.""" + + def compare(self, old: sa.Table | str, new: sa.Table | str) -> TabularDelta: + """Compare two SQL tables. + + Arguments: + old :class:`sa.Table` | :class:`str`: + The old table (first table to compare). + new :class:`sa.Table` | :class:`str`: + The new table (second table to compare). + + Returns :class:`TabularDelta`: + Metadata and results of the comparison. + """ + try: + old, new = _sanitize_input( + self.engine, [old, new], self.join_columns or [], self.warning_threshold + ) + except ValueError as e: + return TabularDelta.from_errors([str(e)]) + + def table_comparison(ignore_columns=None, renaming=None) -> TableComparison: + config = ignore_columns, renaming, self.float_precision, None, False, True + return sc.compare_tables(self.engine, old, new, self.join_columns, *config) + + unfiltered_comp = table_comparison() + incomparable_cols = _incomparable_columns(unfiltered_comp) + mapping = _get_renames(unfiltered_comp) + comp = table_comparison(incomparable_cols, mapping) + + comparable_cols = comp.column_matches.mismatch_selects.keys() + cols, rows = comp.column_names, comp.row_matches + left, right = comp.left_table, comp.right_table + + removed = [(left.c[c], None) for c in cols.missing_right if c not in mapping] + added = [ + (None, right.c[c]) for c in cols.missing_left if c not in mapping.values() + ] + join = [(left.c[c], right.c[c], True) for c in comp.join_columns] + uncompared = [ColumnPair.from_sqlalchemy(*c) for c in removed + added + join] + incomparable = [ + _get_value_change(unfiltered_comp, name, False, self.value_samples) + for name in incomparable_cols + ] + comparable = [ + _get_value_change(comp, n, True, self.value_samples) + for n in comparable_cols + ] + added_rows = _get_sample(self.engine, rows.unjoined_right, self.row_samples) + removed_rows = _get_sample(self.engine, rows.unjoined_left, self.row_samples) + + return TabularDelta( + new if isinstance(new, str) else getattr(right.original, "name", ""), + old if isinstance(old, str) else getattr(left.original, "name", ""), + _columns=incomparable + comparable + uncompared, + _old_rows=comp.row_counts.left, + _new_rows=comp.row_counts.right, + _added_rows=comp.row_counts.right - rows.n_joined_total, + _removed_rows=comp.row_counts.left - rows.n_joined_total, + _equal_rows=rows.n_joined_equal, + _unequal_rows=rows.n_joined_total - rows.n_joined_equal, + _example_added_rows=added_rows, + _example_removed_rows=removed_rows, + ) + + +def _split_name(name: str) -> tuple[str | None, str]: + """Splits a name into (optional) schema and table name.""" + split = [part[1:-1] if part[0] == "[" else part for part in name.rsplit(".")] + return (".".join(split[:-1]), ".".join(split)) if len(split) > 1 else (None, name) + + +def _sanitize_input( + engine: sa.Engine, + tables: list[sa.Table | str], + cols: list[str], + warning_rows: int, +) -> list[sa.Table]: + """Checks whether tables and join columns are present in the database. Warns if + tables are large. + + Return SqlAlchemy Tables and supports table names in square brackets. Otherwise, + SqlCompyre would fail for table names in square brackets. + """ + result = [] + for table in tables: + if isinstance(table, str): + schema, table = _split_name(table) + meta = sa.MetaData() + try: + meta.reflect(bind=engine, schema=schema, views=True) + except sa.exc.OperationalError: + raise ValueError(f"Schema '{schema}' not found in database.") + if table not in meta.tables: + raise ValueError(f"Table '{table}' not found in database.") + table = meta.tables[table] + + limited = sa.select(sa.literal(1)).select_from(table).limit(warning_rows) + with engine.connect() as conn: + count_query = sa.select(sa.func.count()).select_from(limited.subquery()) + if conn.execute(count_query).scalar() == warning_rows: + print(f"Comparing over {warning_rows} rows. This may take a while.") + + for col in cols: + try: + conn.execute(sa.select(sa.column(col)).select_from(table).limit(0)) + except sa.exc.ProgrammingError: + raise ValueError(f"Column '{col}' missing in table '{table.name}'.") + result.append(table) + return result + + +def _get_sample(engine: sa.Engine, query: sa.Select, limit=10) -> list[dict[str, Any]]: + """Get first rows from a query, each as mapping from column name to value.""" + with engine.connect() as conn: + result = conn.execute(query.limit(limit)) + return [dict(zip(result.keys(), row)) for row in result.all()] + + +def _get_value_change( + tab_comp: TableComparison, name: str, comparable: bool = False, limit: int = 50 +) -> ColumnPair: + """Compare columns and ValueChange object with sample of changes. + + Uses SqlCompyre Mismatch-Query if columns are comparable (handles floats correctly). + Uses direct join if incomparable, otherwise SqlCompyre would crash. + """ + new_name = tab_comp.column_name_mapping.get(name, name) + old_name = name + ("_old" if new_name == name else "") + original_new = tab_comp.right_table.c[new_name] + original_old = tab_comp.left_table.c[name] + if comparable: + diffs: sa.FromClauseRole = tab_comp.column_matches.mismatch_selects[name] + cols = diffs.c + new_col = diffs.c[new_name + ("_1" if new_name == name else "")].label(new_name) + else: + cols = tab_comp.left_table.c + _join = [cols[c] == tab_comp.right_table.c[c] for c in tab_comp.join_columns] + diffs = tab_comp.left_table.join(tab_comp.right_table, sa.and_(*_join)) + new_col = tab_comp.right_table.c[new_name] + + count = sa.func.count("*").label("_count") + old_col = cols[name].label(old_name) + join_cols = [sa.func.min(cols[c]).label(c) for c in tab_comp.join_columns] + select = sa.select(new_col, old_col, count, *join_cols).select_from(diffs) + query = select.group_by(new_col, old_col).order_by(count.desc()).limit(limit) + + total = min(tab_comp.row_counts.left, tab_comp.row_counts.right) + try: + with tab_comp.engine.connect() as conn: + total = conn.execute(sa.select(count).select_from(diffs)).scalar() or total + result = pd.read_sql(query, tab_comp.engine).astype("object") + result.loc[result.shape[0], "_count"] = total - result["_count"].sum() + except (sa.exc.ProgrammingError, sa.exc.DataError): + warn(f"Couldn't get value change for {name}.") + result = pd.DataFrame({old_name: None, new_name: None, "_count": [total]}) + return ColumnPair.from_sqlalchemy( + original_old, original_new, False, not comparable, result + ) + + +T = TypeVar("T") + + +def _sa_raises(func: Callable[..., T], *args, **kwargs) -> tuple[bool, T | None]: + """Check if a SqlAlchemy function raises an error, return result if not.""" + try: + return False, func(*args, **kwargs) + except (sa.exc.ProgrammingError, sa.exc.DataError): + return True, None + + +def _incomparable_columns(tab_comp: TableComparison) -> list[str]: + """Return column type changes and list of incomparable columns to ignore.""" + in_common, get_changes = tab_comp.column_names.in_common, tab_comp.get_top_changes + return [n for n in in_common if _sa_raises(get_changes, n, n=1)[0]] + + +def _columns_equal( + tab_comp: TableComparison, old_col_name: str, new_col_name: str +) -> bool: + """Returns whether two columns are exactly equal.""" + left, right = tab_comp.left_table, tab_comp.right_table + if type(left.c[old_col_name].type) is not type(right.c[new_col_name].type): # noqa + return False + join = [left.c[col] == right.c[col] for col in tab_comp.join_columns] + join.append(left.c[old_col_name] != right.c[new_col_name]) + query = sa.select("*").select_from(left.join(right, sa.and_(*join))) + with tab_comp.engine.connect() as conn: + error, result = _sa_raises(lambda: conn.execute(query).first()) + return not error and result is None + + +def _get_renames(tab_comp: TableComparison) -> dict[str, str]: + """Returns Renamed columns and one-to-one mapping for SqlCompyre. + + Columns are only considered renamed if they are exactly equal. + """ + only_old = set(tab_comp.column_names.missing_right) + only_new = set(tab_comp.column_names.missing_left) + renamed = {} + for l_col in only_old: + for r_col in only_new: + if _columns_equal(tab_comp, l_col, r_col): + renamed[l_col] = r_col + break + only_new.discard(renamed.get(l_col, "")) + return renamed diff --git a/tabulardelta/comparators/sqlmetadata_comparator.py b/tabulardelta/comparators/sqlmetadata_comparator.py new file mode 100644 index 0000000..96fc5a6 --- /dev/null +++ b/tabulardelta/comparators/sqlmetadata_comparator.py @@ -0,0 +1,196 @@ +# Copyright (c) QuantCo 2022-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo + + +from __future__ import annotations + +from collections import defaultdict +from dataclasses import dataclass, field + +import sqlalchemy as sa + +from tabulardelta.comparators.tabulardelta_dataclasses import ( + Column, + ColumnPair, + TabularDelta, +) + +RowSelect = sa.Select[tuple[int, str, str]] +ColumnSelect = sa.Select[tuple[str, str, str, str]] + + +def get_mssql_metadata(db_name: str | None) -> tuple[RowSelect, ColumnSelect]: + """Implementation for retrieving metadata from a Microsoft SQL Server database. + + Arguments: + db_name :class:`str` | :code:`None`: + Name of the database to retrieve metadata from. + + Returns :class:`tuple[RowSelect, ColumnSelect]`: + SQL queries to retrieve row count and column information. + """ + db_prefix = f"[{db_name}]." if db_name else "" + rows = sa.select( + sa.column("rows", sa.Integer), + sa.column("table", sa.String), + sa.column("schema", sa.String), + ).select_from( + sa.text( + f"(SELECT max(i.rowcnt) as rows, o.name as [table], s.name as [schema] FROM " + f"{db_prefix}sys.sysindexes i, {db_prefix}sys.objects o, {db_prefix}sys.schemas s " + "WHERE i.id = o.object_id AND o.schema_id = s.schema_id GROUP BY o.name, s.name) tmp" + ) + ) + columns = sa.select( + sa.column("COLUMN_NAME", sa.String).label("column"), + sa.column("DATA_TYPE", sa.String).label("type"), + sa.column("TABLE_NAME", sa.String).label("table"), + sa.column("TABLE_SCHEMA", sa.String).label("schema"), + ).select_from(sa.text(f"{db_prefix}INFORMATION_SCHEMA.COLUMNS")) + return rows, columns + + +@dataclass(frozen=True) +class _TableDescr: + """Represents a table in a database using database, schema and table name.""" + + db: str | None + schema: str | None + table: str + + @staticmethod + def from_table(engine: sa.engine.base.Engine, table: sa.Table | str) -> _TableDescr: + # Get string from sa.Table + if not isinstance(table, str): + table = getattr(table, "original", table) + if not hasattr(table, "schema") or not hasattr(table, "name"): + raise ValueError("SqlAlchemy object does not have schema/table name.") + table = ".".join([part for part in [table.schema, table.name] if part]) + + # Get database, schema and table name from string + parts = [part[1:-1] if part[0] == "[" else part for part in table.split(".")] + if len(parts) == 1: + return _TableDescr(engine.url.database, None, table) + if len(parts) == 2: + return _TableDescr(engine.url.database, parts[0], parts[1]) + if len(parts) == 3: + return _TableDescr(parts[0], parts[1], parts[2]) + raise ValueError( + f"Table must be specified as '[[.].]', not {table}." + ) + + def differing_names(self, other: _TableDescr) -> tuple[str, str]: + """Returns the names of both tables, disregards equal prefixes.""" + self_parts = [self.db, self.schema, self.table] + other_parts = [other.db, other.schema, other.table] + for i, (old_part, new_part) in enumerate(zip(self_parts, other_parts)): + if old_part != new_part: + names = filter(None, self_parts[i:]), filter(None, other_parts[i:]) + return ".".join(names[0]), ".".join(names[1]) + return "", "" + + +@dataclass +class _TableMetadata: + """Stores row count and column information for a table.""" + + rows: int = 0 + cols: dict[str, Column] = field(default_factory=dict) + + +@dataclass +class SqlMetadataComparator: + """Implements :class:`Comparator` protocol for comparing SQL Tables. + + This will only use metadata from the database, to be as fast as possible. + + Methods + ------- + compare(self, old: sa.Table | str, new: sa.Table | str) -> TabularDelta: + Compare two SQL tables + """ + + engine: sa.Engine + """SQLAlchemy engine to connect to the database.""" + cache_db_metadata: bool = False + """Whether to cache metadata for whole database to speed up comparisons.""" + dialects = {"mssql": get_mssql_metadata} + """Dictionary of supported dialects and their metadata retrieval functions.""" + + _cache: dict[_TableDescr, _TableMetadata] = field( + default_factory=lambda: defaultdict(_TableMetadata) + ) + + def __post_init__(self): + """Check that the dialect is supported.""" + if self.engine.dialect.name not in self.dialects: + raise ValueError(f"Unsupported dialect: {self.engine.dialect.name}") + + def _cached_metadata(self, params: _TableDescr) -> _TableMetadata: + """Return metadata if cached, otherwise fetches metadata for whole database.""" + if params in self._cache: + return self._cache[params] + Rows, Columns = self.dialects[self.engine.dialect.name](params.db) + with self.engine.connect() as conn: + for rows, table, schema in conn.execute(Rows).fetchall(): + self._cache[_TableDescr(params.db, schema, table)].rows = rows + for name, dtype, table, schema in conn.execute(Columns).fetchall(): + descr = _TableDescr(params.db, schema, table) + self._cache[descr].cols[name] = Column(name, dtype) + return self._cache[params] + + @staticmethod + def _filter(query, table: str, schema: str | None): + """Where clause for queries to filter by table and optional schema.""" + if schema is None: + return query.c["table"] == table + return (query.c["table"] == table) & (query.c["schema"] == schema) + + def _uncached_metadata(self, params: _TableDescr) -> _TableMetadata: + """Fetches metadata for specific TableDescription.""" + Rows, Columns = self.dialects[self.engine.dialect.name](params.db) + with self.engine.connect() as conn: + row_filter = self._filter(Rows, params.table, params.schema) + rows = conn.execute(sa.select(Rows.c["rows"]).where(row_filter)).scalar() + col_filter = self._filter(Columns, params.table, params.schema) + col_result = conn.execute( + sa.select(Columns.c["column"], Columns.c["type"]).where(col_filter) + ).fetchall() + if not isinstance(rows, int): + rows = 0 + cols = {name: Column(name, dtype) for name, dtype in col_result} + return _TableMetadata(rows, cols) + + def compare(self, old: sa.Table | str, new: sa.Table | str) -> TabularDelta: + """Compare two SQL tables. + + Arguments: + old :class:`sa.Table` | :class:`str`: + The old table (first table to compare). + new :class:`sa.Table` | :class:`str`: + The new table (second table to compare). + + Returns :class:`TabularDelta`: + Metadata and results of the comparison. + """ + old_descr = _TableDescr.from_table(self.engine, old) + new_descr = _TableDescr.from_table(self.engine, new) + + get_metadata = self._uncached_metadata + if self.cache_db_metadata: + get_metadata = self._cached_metadata + old_meta, new_meta = get_metadata(old_descr), get_metadata(new_descr) + + cols: list[tuple[Column, Column | None] | tuple[None, Column]] + cols = [(old_meta.cols[n], new_meta.cols.get(n, None)) for n in old_meta.cols] + cols += [(None, c) for n, c in new_meta.cols.items() if n not in old_meta.cols] + + return TabularDelta( + *old_descr.differing_names(new_descr), + warnings=["No value comparison, just metadata analysis."], + _columns=[ColumnPair(*col_pair) for col_pair in cols], + _old_rows=old_meta.rows, + _new_rows=new_meta.rows, + _added_rows=max(0, new_meta.rows - old_meta.rows), + _removed_rows=max(0, old_meta.rows - new_meta.rows), + ) diff --git a/tabulardelta/comparators/tabulardelta_dataclasses.py b/tabulardelta/comparators/tabulardelta_dataclasses.py new file mode 100644 index 0000000..d0db0c0 --- /dev/null +++ b/tabulardelta/comparators/tabulardelta_dataclasses.py @@ -0,0 +1,420 @@ +# Copyright (c) QuantCo 2022-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo + + +from __future__ import annotations + +from collections.abc import Iterator +from dataclasses import dataclass, field +from functools import cached_property +from typing import Any + +import pandas as pd + +try: + import sqlalchemy as sa +except ImportError as e: + sa = f"SQLAlchemy not installed: {e}" # type: ignore + + +@dataclass(frozen=True) +class Column: + """Implements the :class:`Column` protocol for TabularDelta. + + Methods + ------- + + from_sqlalchemy(column: sa.sql.ColumnElement[Any]) -> Column: + Turns SQLAlchemy.Column into TabularDelta.Column + """ + + name: str + """Name of the column.""" + type: str + """Data type of the column.""" + + @staticmethod + def from_sqlalchemy(column: sa.sql.ColumnElement[Any]) -> Column: + """Turns SQLAlchemy.Column into TabularDelta.Column. + + Arguments: + column :class:`sa.sql.ColumnElement[Any]`: + SQLAlchemy column to be converted. + + Results :class:`Column`: + TabularDelta column with according name and type. + """ + return Column(column.name, str(column.type)) + + +@dataclass(frozen=True) +class ChangedValue: + """Implements the :class:`ChangedValue` protocol for TabularDelta.""" + + example_join_columns: dict[str, Any] + """Mapping from column names to values represents an example row where this change + occurred.""" + old: Any + """Previous value before the change.""" + new: Any + """New value after the change.""" + count: int + """(Positive) number of rows containing this change.""" + + +@dataclass +class ColumnPair: + """Implements the :class:`MatchedColumn` and :class:`ChangedColumn` protocol for + TabularDelta. + + Methods + ------- + from_sqlalchemy(...) -> ColumnPair: + Creates TabularDelta.ColumnPair using SQLAlchemy columns + from_str(...) -> ColumnPair: + Creates TabularDelta.ColumnPair using column names and types + __len__() -> int + Total number of changes + __iter__() -> Iterator[ChangedValue] + Examples of value changes + """ + + _old: Column | None = None + """Metadata of column in the old table or None if column was added.""" + _new: Column | None = None + """Metadata of column in the new table or None if column was removed.""" + join: bool = False + """Whether column was used as join column for comparison.""" + incomparable: bool = False + """Whether data types of column in old and new table are incomparable.""" + + _values: pd.DataFrame | None = None + + @property + def old(self) -> Column: + """The column in the old table. + + Fails if column was added. + """ + if self._old is None: + raise ValueError("Old column does not exist.") + return self._old + + @property + def new(self) -> Column: + """The column in the new table. + + Fails if column was removed. + """ + if self._new is None: + raise ValueError("New column does not exist.") + return self._new + + def __iter__(self) -> Iterator[ChangedValue]: + """Examples of value changes.""" + for idx, row in self._values.iterrows() if self._values is not None else []: + index = {k: v for k, v in row.to_dict().items() if k not in self._required} + yield ChangedValue(index, *[row[key] for key in self._required]) + + def __len__(self) -> int: + """Total number of changes.""" + return self._values["_count"].sum() if self._values is not None else 0 + + @staticmethod + def from_sqlalchemy( + old: sa.sql.ColumnElement[Any] | None = None, + new: sa.sql.ColumnElement[Any] | None = None, + join: bool = False, + incomparable: bool = False, + _values: pd.DataFrame | None = None, + ) -> ColumnPair: + """Creates TabularDelta.ColumnPair using SQLAlchemy columns. + + Arguments: + old :class:`sa.sql.ColumnElement[Any]` | :code:`None`: + Column in the old table or None if column was added. + new :class:`sa.sql.ColumnElement[Any]` | :code:`None`: + Column in the new table or None if column was removed. + join :class:`bool`: + Whether column was used as join column for comparison. + incomparable :class:`bool`: + Whether data types of column in old and new table are incomparable. + _values :class:`pd.DataFrame`: + DataFrame with examples of value changes. + Contains old column, new column, :code:`_count` column, + and optionally other columns for identifying example rows. + + Returns :class:`ColumnPair`: + TabularDelta.ColumnPair with according metadata and values. + """ + return ColumnPair( + Column.from_sqlalchemy(old) if old is not None else None, + Column.from_sqlalchemy(new) if new is not None else None, + join, + incomparable, + _values, + ) + + @staticmethod + def from_str( + old: str | None = None, + old_type: str | None = None, + new: str | None = None, + new_type: str | None = None, + join: bool = False, + incomparable: bool = False, + _values: pd.DataFrame | None = None, + ) -> ColumnPair: + """Creates TabularDelta.ColumnPair using column names and types. + + Arguments: + old :class:`str` | :code:`None`: + Column name in the old table or None if column was added. + old_type :class:`str` | :code:`None`: + Column type in the old table or None if column was added. + new :class:`str` | :code:`None`: + Column name in the new table or None if column was removed. + new_type :class:`str` | :code:`None`: + Column type in the new table or None if column was removed. + join :class:`bool`: + Whether column was used as join column for comparison. + incomparable :class:`bool`: + Whether data types of column in old and new table are incomparable. + _values :class:`pd.DataFrame`: + DataFrame with examples of value changes. + Contains old column, new column, :code:`_count` column, + and optionally other columns for identifying example rows. + If the column wasn't renamed, the name of the old column in the DataFrame should + be suffixed by :code:`_old`. + + Returns :class:`ColumnPair`: + TabularDelta.ColumnPair with according metadata and values. + """ + return ColumnPair( + Column(old, old_type) if old and old_type else None, + Column(new, new_type) if new and new_type else None, + join, + incomparable, + _values, + ) + + @cached_property + def _df_old_name(self) -> str: + """Name of the old column in the DataFrame. + + Suffixed with :code:`_old` if column wasn't renamed. + """ + return self.old.name + ("_old" if self.old.name == self.new.name else "") + + @cached_property + def _required(self) -> tuple[str, str, str]: + """Required columns in the DataFrame.""" + return self._df_old_name, self.new.name, "_count" + + def __post_init__(self): + """Check if DataFrame contains required columns and compactifies it.""" + if self._values is None: + return + + if missing := set(self._required) - set(self._values.columns): + raise ValueError(f"Missing columns in comparison: {missing}") + + group_by_cols = [self._df_old_name, self.new.name] + + # DIRTY FIX FOR PANDAS BUG: Categorical in GroupBy leads to + # ValueError: Length of values (5) does not match length of index (25) + for col in group_by_cols: + if self._values[col].dtype.name == "category": + self._values[col] = self._values[col].astype("object") + + # Compactify dataframe by grouping equal changes together + groupby = self._values.groupby(group_by_cols, as_index=False, dropna=False) + join_cols = {c: (c, "first") for c in set(self._values) - set(self._required)} + agg = groupby.agg(_count=("_count", "sum"), **join_cols) # type: ignore + sort = agg.sort_values(by="_count", ascending=False) + actual_changes = ~sort[self._df_old_name].isna() | ~sort[self.new.name].isna() + self._values = sort[actual_changes] + + +@dataclass(frozen=True) +class ColumnDelta: + """Implements the :class:`ColumnDelta` protocol.""" + + cols: list[ColumnPair] + """All (potentially matched) columns of both tables. + + Unmatched columns have None on other side. + """ + + @cached_property + def old(self) -> list[Column]: + """Metadata of columns in the old table.""" + return [col.old for col in self.cols if col._old] + + @cached_property + def new(self) -> list[Column]: + """Metadata of columns in the new table.""" + return [col.new for col in self.cols if col._new] + + @cached_property + def added(self) -> list[Column]: + """Metadata of added columns (only in new table).""" + return [col.new for col in self.cols if col._new and not col._old] + + @cached_property + def removed(self) -> list[Column]: + """Metadata of removed columns (only in old table).""" + return [col.old for col in self.cols if col._old and not col._new] + + @cached_property + def joined(self) -> list[ColumnPair]: + """Columns used to join the old and new table.""" + return [col for col in self.cols if col.join] + + @cached_property + def matched(self) -> list[ColumnPair]: + """Matched columns (exist in both tables).""" + return [col for col in self.cols if col._old and col._new] + + @cached_property + def renamed(self) -> list[ColumnPair]: + """Renamed columns (matched using values and types).""" + return [col for col in self.matched if col.old.name != col.new.name] + + @cached_property + def _type_changed(self) -> list[ColumnPair]: + """Columns with changed data types.""" + return [col for col in self.matched if col.old.type != col.new.type] + + @cached_property + def comparable_type_changed(self) -> list[ColumnPair]: + """Columns with changed but comparable data types.""" + return [col for col in self._type_changed if not col.incomparable] + + @cached_property + def incomparable_type_changed(self) -> list[ColumnPair]: + """Columns with changed and incomparable data types.""" + return [col for col in self._type_changed if col.incomparable] + + @cached_property + def differences(self) -> list[ColumnPair]: + """Comparable column with changed values.""" + return [col for col in self.cols if not col.incomparable and len(col) > 0] + + +@dataclass +class Rows: + """Implements the :class:`Rows` protocol.""" + + count: int + """Number of represented rows.""" + examples: list[dict[str, Any]] | None + """Optional examples of represented rows.""" + + def __len__(self) -> int: + """Number of represented rows.""" + return self.count + + def __iter__(self) -> Iterator[dict[str, Any]]: + """Examples of represented rows.""" + return iter(self.examples or []) + + +@dataclass(frozen=True) +class RowDelta: + """Implements the :class:`RowDelta` protocol.""" + + old: Rows + """Rows in the old table.""" + new: Rows + """Rows in the new table.""" + added: Rows + """Added rows (only in new table).""" + removed: Rows + """Removed rows (only in old table).""" + equal: Rows + """Equal rows (joined and all columns unchanged).""" + unequal: Rows + """Unequal rows (joined but at least one column changed).""" + + +@dataclass(frozen=True) +class TabularDelta: + """Implements the :class:`TabularDelta` protocol. + + Methods + ------- + + from_errors(errors: list[str], name: str = "") -> TabularDelta: + Default TabularDelta containing errors + """ + + name: str = "" + """Name of the new table and therefore the comparison.""" + old_name: str | None = None + """Optional name of the old table.""" + info: list[str] = field(default_factory=list) + """Additional information collected during the comparison.""" + warnings: list[str] = field(default_factory=list) + """Warnings collected during the comparison.""" + errors: list[str] = field(default_factory=list) + """Errors collected during the comparison.""" + + _columns: list[ColumnPair] = field(default_factory=list) + """All (potentially matched) columns of both tables. + + Unmatched columns have None on other side. + """ + + _old_rows: int = 0 + """Number of rows in the old table.""" + _new_rows: int = 0 + """Number of rows in the new table.""" + _added_rows: int = 0 + """Number of added rows (only in new table).""" + _removed_rows: int = 0 + """Number of removed rows (only in old table).""" + _equal_rows: int = 0 + """Number of equal rows (joined and all columns unchanged).""" + _unequal_rows: int = 0 + """Number of unequal rows (joined but at least one column changed).""" + _example_added_rows: list[dict[str, Any]] = field(default_factory=list) + """Optional examples of added rows (only in new table).""" + _example_removed_rows: list[dict[str, Any]] = field(default_factory=list) + """Optional examples of removed rows (only in old table).""" + _example_equal_rows: list[dict[str, Any]] = field(default_factory=list) + """Optional examples of equal rows (joined and all columns unchanged).""" + _example_unequal_rows: list[dict[str, Any]] = field(default_factory=list) + """Optional examples of unequal rows (joined but at least one column changed).""" + + @cached_property + def cols(self) -> ColumnDelta: + """Returns :class:`ColumnDelta` implementation.""" + return ColumnDelta(self._columns) + + @cached_property + def rows(self) -> RowDelta: + """Returns :class:`RowDelta` implementation.""" + return RowDelta( + Rows(self._old_rows, None), + Rows(self._new_rows, None), + Rows(self._added_rows, self._example_added_rows), + Rows(self._removed_rows, self._example_removed_rows), + Rows(self._equal_rows, self._example_equal_rows), + Rows(self._unequal_rows, self._example_unequal_rows), + ) + + @staticmethod + def from_errors(errors: list[str], name: str = "") -> TabularDelta: + """Creates default TabularDelta object with errors. + + Arguments: + errors :class:`list[str]`: + List of error messages. + name :class:`str`: + Name of the table. + + Returns :class:`TabularDelta`: + TabularDelta object containing errors. + """ + return TabularDelta(name=name, errors=errors) diff --git a/tabulardelta/formatters/__init__.py b/tabulardelta/formatters/__init__.py new file mode 100644 index 0000000..e1e8b31 --- /dev/null +++ b/tabulardelta/formatters/__init__.py @@ -0,0 +1,2 @@ +# Copyright (c) QuantCo 2022-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo diff --git a/tabulardelta/formatters/detailed_text_formatter.py b/tabulardelta/formatters/detailed_text_formatter.py new file mode 100644 index 0000000..ad889f9 --- /dev/null +++ b/tabulardelta/formatters/detailed_text_formatter.py @@ -0,0 +1,279 @@ +# Copyright (c) QuantCo 2022-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo + + +from __future__ import annotations + +from collections.abc import Iterable, Mapping +from dataclasses import dataclass +from typing import Any + +import numpy as np + +from tabulardelta.formatters.tabulartext.cell import Align, Cell +from tabulardelta.formatters.tabulartext.table import Border, Table +from tabulardelta.tabulardelta import ( + ChangedColumn, + Column, + MatchedColumn, + TabularDelta, +) + +ColType = Column | MatchedColumn + + +def _descr_border(top: bool, bottom: bool) -> Border: + """Creates horizontal hyphen-borders, top and bottom are optional.""" + t, b = "-" * top, "-" * bottom + return Border(f" {t}, {t},, {t},, -,,,, -,,,, -,, {b},, {b}, {b}") + + +@dataclass(frozen=True) +class DetailedTextFormatter: + """Implements :class:`Formatter` protocol for detailed report of single comparison. + + Tries to show as much information as possible, without overwhelming the user. + + Methods + ------- + format(delta: TabularDelta) -> str: + Formats comparison result + """ + + errors = True + """Whether to show errors in the report.""" + warnings = True + """Whether to show warnings in the report.""" + infos = True + """Whether to show additional information in the report.""" + column_changes = True + """Whether to show column and type changes in the report.""" + row_overview = True + """Whether to show graphical row matching in the report.""" + value_changes = 5 + """How many value changes per column to show in the report. + + 0 to disable. + """ + row_examples = 3 + """How many examples per row category to show in the report. + + 0 to disable. + """ + + def format(self, delta: TabularDelta) -> str: + """Formats comparison result. + + Arguments: + delta :class:`TabularDelta`: + Metadata and result of a comparison. + + Returns :class:`str`: + Detailed comparison report. + """ + name = (f"{delta.old_name} -> " if delta.old_name else "") + delta.name + result: list[list[Any]] = [ + [Cell([f" TabularDelta Report: {name} "], Align.MidCenter("-"))], + *[[f"ERROR: {error}"] for error in delta.errors if self.errors], + *[[f"WARNING: {warning}"] for warning in delta.warnings if self.warnings], + *[[f"INFO: {info}"] for info in delta.info if self.infos], + [f"Joined on {[c.new.name for c in delta.cols.joined] or 'index'}."], + ] + + if self.column_changes: + col_changes: list[tuple[str, Any]] = [ + ("Added columns", delta.cols.added), + ("Removed columns", delta.cols.removed), + ("Renamed columns", delta.cols.renamed), + ("Comparable type changes", delta.cols.comparable_type_changed), + ] + result.extend( + [_show_cols(name, cols)] for name, cols in col_changes if cols + ) + + incomparable = delta.cols.incomparable_type_changed + for chg in incomparable: + left = _show_cols("INCOMPARABLE type change", [chg]) + row = [left, Cell([" "]), _show_values(chg, len(left.content))] + result.append([Table([row], Border.Nothing)]) + + if not any([cols for _, cols in col_changes] + [incomparable]): + result.append(["All columns and types are identical."]) + + if self.row_overview: + result.append([_show_rows(delta)]) + + if self.value_changes > 0: + for chg in delta.cols.differences: + result.append([_show_values(chg, self.value_changes + 3, True)]) + + result.append(_example_rows("ADDED", delta.rows.added, self.row_examples)) + result.append(_example_rows("REMOVED", delta.rows.removed, self.row_examples)) + + return str(Table.from_lists(result, Border.InnerGap)) + + +def _example_rows( + name: str, rows: Iterable[Mapping[str, Any]], limit: int +) -> list[str]: + """Returns example rows as line-separated strings. + + > example_rows("ADDED", [{"id": 3, "data": 13}, {"id": 4, "data": 15}], 3) + ADDED ROWS EXAMPLES: + id|data + 3 | 13 + 4 | 15 + """ + result: list[list[Any]] = [] + for idx, row in enumerate(rows): + if idx == limit: + break + if not result: + result.append(list(row.keys())) + result.append(list(row.values())) + if result: + border = Border(",,,, โ”‚,,,,,,,,,,,,,,") + header = f"{name} ROWS EXAMPLES:\n" + return [header + Table.from_lists(result, border).to_string()] + return [] + + +def _standardize_col_data(col: ColType) -> list[str]: + """Formats column[-changes] in readable way. + + list('old_name [โ†’ new_name]', '(old_type[โ†’ new_type])') + """ + + if hasattr(col, "name") and hasattr(col, "type"): + return [col.name, f"({col.type})"] + name_change = f" โ†’ {col.new.name}" if col.old.name != col.new.name else "" + type_change = f" โ†’ {col.new.type}" if col.old.type != col.new.type else "" + return [col.old.name + name_change, f"({col.old.type + type_change})"] + + +def _show_cols(name: str, cols: list[ColType], max_width: int = 80) -> Cell: + """Shows columns nicely visualized, or listed in columns if too wide. + + ExampleName: + โ”โ”โ”โ”โ”โ”โ”โ”โ”ฏโ”โ”โ”โ”โ”โ”โ”โ”“ ExampleName: + โ”ƒ col1 โ”‚ col2 โ”ƒ VeryLongColumnName (VeryLongType) + โ”ƒ type1 โ”‚ type2 โ”ƒ col1 (type1) col2 (type2) + โ”ฃโ”โ”โ”โ”โ”โ”โ”โ”ฟโ”โ”โ”โ”โ”โ”โ”โ”ซ col3 (type3) col4 (type4) + """ + if not cols: + return Cell() + strs = [_standardize_col_data(col) for col in cols] + + if sum(len(s) for x in strs for s in x) <= max_width: + # Print detailed table if not too wide: + border = Border(" โ”, โ”, โ”ฏ, โ”“, โ”‚,,,, โ”ƒ,, โ”ƒ,,,,, โ”ฃ, โ”ท, โ”, โ”ซ") + table = Table.from_lists([strs], border) + else: + # Otherwise list cells: Long cells at the top, short cells in two columns below + flat = [" ".join(col) for col in strs] + long = [[Cell([col], colspan=3)] for col in flat if len(col) > max_width // 2] + short = [Cell([col]) for col in flat if len(col) <= max_width // 2] + [Cell()] + split = [[short[i], " ", short[i + 1]] for i in range(0, len(short) - 1, 2)] + table = Table.from_lists(long + split, Border.Nothing) + return Cell([f"{name}:"] + table.lines()) + + +def _show_values(chg: ChangedColumn, max_height=10, header: bool = False) -> Cell: + """ + Show value changes of columns: + id_old โ”€โ–บ id_new example_name + (5x) 0 โ”€โ–บ 0.0 Alice + (2x) 1 โ”€โ–บ 1.0 Bob + 2 โ”€โ–บ 2.0 Charlie + ...6 other differences + """ + old, new, total = chg.old.name, chg.new.name, len(chg) + result: list[list[Cell] | list[str]] = [] + indices = [] + for row, idx in zip(chg, range(1 + header, max_height)): + if not result: + indices = sorted(list(row.example_join_columns)) + if header: + content = [f"Column {new} - {total} rows changed:"] + result.append([Cell(content, colspan=5 + len(indices))]) + result.append(["", "", old, "โ†’", new] + [f"example_{i}" for i in indices]) + if idx == max_height - 1 and total > row.count: + break # max_height will not suffice to print all changes + content = [" ", f"({row.count}x)" * (row.count > 1), row.old, "โ†’", row.new] + result.append(content + [row.example_join_columns[ex] for ex in indices]) + total -= row.count + if total > 0: + content = [f"...{total} other differences"] + result.append([Cell(content, colspan=5 + len(indices))]) + return Cell(Table.from_lists(result, Border.VerticalGap).lines()) + + +def _show_rows(delta: TabularDelta) -> Table: + """Row overview is created as a table of tables (without outer borders): + + header_old_rows header_new_rows + โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฏโ”โ”โ”โ”โ”ฏโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฏโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฏโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“ + โ”ƒ Old โ”‚ โ”‚ New โ”‚ โ”‚ โ”ƒ + โ”ƒ 1557572484 โ”‚ โ”‚ 1557247374 โ”‚ โ”‚ โ”ƒ + โ” โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”ดโ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”จ + โ”ƒ โ”โ”โ”ฏโ”โ”ฏโ”โ”ฏโ”โ”“ โ”‚ "spacer" โ”‚ 325116 โ”‚ โ”ƒ + โ”ƒ โ”ƒ-โ”‚-โ”‚-โ”‚-โ”ƒ โ”‚ โ”‚ removed โ”‚ โ”ƒ + โ”ƒ โ”ƒ-โ”‚-โ”‚-โ”‚-โ”ƒ โ”œโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค ------------ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”จ + โ”ƒ โ” โ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”จ โ”‚ โ•Œโ•Œโ•Œ โ”‚ โ”โ”โ”ฏโ”โ”ฏโ”โ”ฏโ”โ”“ โ”‚ โ”‚ โ”ƒ + โ”ƒ โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ โ”‚ = โ”‚ โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ โ”‚ 44605 โ”‚ โ”ƒ + โ”ƒ โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ โ”‚ = โ”‚ โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ โ”‚ identical โ”‚ โ”ƒ + โ”ƒ โ” โ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”จ โ”‚ โ•Œโ•Œโ•Œ โ”‚ โ” โ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”จ โ”‚ ------------ โ”‚ โ•ถโ•ฎ โ”ƒ + โ”ƒ โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ โ”‚ โ‰  โ”‚ โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ + โ”ƒ โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ โ”‚ โ‰  โ”‚ โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ โ”‚ 1557120961 โ”‚ โ”‚ โ”ƒ + โ”ƒ โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ โ”‚ โ‰  โ”‚ โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ โ”‚ changed โ”‚ โ”‚ 1557202763 โ”ƒ + โ”ƒ โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ โ”‚ โ‰  โ”‚ โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ โ”‚ โ”‚ โ”œโ•ดrows โ”ƒ + โ”ƒ โ” โ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”จ โ”‚ โ•Œโ•Œโ•Œ โ”‚ โ” โ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”จ โ”‚ ------------ โ”‚ โ”‚ joined โ”ƒ + โ”ƒ โ”ƒ?โ”‚?โ”‚?โ”‚?โ”ƒ โ”‚ ? โ”‚ โ”ƒ?โ”‚?โ”‚?โ”‚?โ”ƒ โ”‚ 81802 โ”‚ โ”‚ โ”ƒ + โ”ƒ โ”ƒ?โ”‚?โ”‚?โ”‚?โ”ƒ โ”‚ ? โ”‚ โ”ƒ?โ”‚?โ”‚?โ”‚?โ”ƒ โ”‚ unknown โ”‚ โ”‚ โ”ƒ + โ”ƒ โ”—โ”โ”ทโ”โ”ทโ”โ”ทโ”โ”› โ”‚ โ•Œโ•Œโ•Œ โ”‚ โ” โ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”จ โ”‚ ------------ โ”‚ โ•ถโ•ฏ โ”ƒ + โ”ƒ โ”‚ โ”‚ โ”ƒ+โ”‚+โ”‚+โ”‚+โ”ƒ โ”‚ 6 added โ”‚ โ”ƒ + โ”ƒ โ”‚ โ”‚ โ”—โ”โ”ทโ”โ”ทโ”โ”ทโ”โ”› โ”‚ โ”‚ โ”ƒ + โ”—โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ทโ”โ”โ”โ”โ”โ”ทโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ทโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ทโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”› + left middle right text join + """ + # rows: [removed, equal, unequal, unknown, added] + rows = [ + len(delta.rows.removed), + len(delta.rows.equal), + len(delta.rows.unequal), + len(delta.rows.added), + ] + rows.insert(3, len(delta.rows.old) - sum(rows[0:3])) # unknown rows + heights = [int(np.log10(1000 * count + 1)) // 3 for count in rows] + + inner_cells = [[[c] * h] * 4 * bool(h) for h, c in zip(heights, "- ?+")] + left = Table.from_lists(inner_cells[:-1]).lines() + right = Table.from_lists(inner_cells[1:]).lines() + + middle_cells = [[[c] * h] for h, c in zip(heights[1:], "=โ‰ ? ") if h or c == " "] + middle_border = Border(" โ•Œ, โ•Œ,, โ•Œ,, โ•Œ,,,, โ•Œ,,,, โ•Œ,,,,,") + middle = Table.from_lists(middle_cells, middle_border).lines() + + text_data = zip(rows, "removed identical changed unknown added".split()) + texts = [[str(n), t] if n > 999 else [f"{n} {t}"] for n, t in text_data] + text_cells = [[[""] * h, t] for h, t in zip(heights, texts) if h] + text_table = Table.from_lists(text_cells, _descr_border(not rows[0], not rows[4])) + text = text_table.lines() + + join_height = heights[1] + heights[2] + bool(heights[1]) + bool(heights[2]) + 1 + bracket = [" โ”‚"] * join_height + bracket[0], bracket[(join_height - 1) // 2], bracket[-1] = "โ•ถโ•ฎ", " โ”œโ•ด", "โ•ถโ•ฏ" + join_descr = Cell([str(sum(rows[1:3])), "rows", "joined"], Align.MidLeft()) + join_segs = [[bracket, join_descr]] if join_height > 1 else [] + join = Table.from_lists(join_segs, Border.Nothing).lines() + + header_old_rows = Cell(["Old", str(len(delta.rows.old))], Align.MidCenter(), 2) + header_new_rows = Cell(["New", str(len(delta.rows.new))], Align.MidCenter(), 2) + spacer = Cell(["\n" * heights[0]] if heights[0] else [], colspan=3) + content: list[list[Cell]] = [ + [header_old_rows, Cell([" "]), header_new_rows], + [Cell(left, rowspan=2), spacer, Cell(text, rowspan=2, colspan=2)], + [Cell(middle, colspan=2), Cell(right), Cell(join)], + ] + + return Table(content, Border.Nothing) diff --git a/tabulardelta/formatters/formatter.py b/tabulardelta/formatters/formatter.py new file mode 100644 index 0000000..7661b33 --- /dev/null +++ b/tabulardelta/formatters/formatter.py @@ -0,0 +1,33 @@ +# Copyright (c) QuantCo 2022-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo + + +from typing import Protocol, TypeVar + +from tabulardelta.tabulardelta import TabularDelta + +T = TypeVar("T", covariant=True) + + +class Formatter(Protocol[T]): + """Protocol for offering visualizations or further analyses for TabularDelta. + + Ensures compatibility with all :class:`Comparator` implementations. + + Methods + ------- + format(delta: TabularDelta) -> T: + Formats comparison result + """ + + def format(self, delta: TabularDelta) -> T: + """Formats comparison result. + + Arguments: + delta :class:`TabularDelta`: + Metadata and result of a comparison. + + Returns :class:`T`: + Arbitrary output. Usually strings visualizing the comparison. + """ + ... diff --git a/tabulardelta/formatters/overview_row_formatter.py b/tabulardelta/formatters/overview_row_formatter.py new file mode 100644 index 0000000..fc96e85 --- /dev/null +++ b/tabulardelta/formatters/overview_row_formatter.py @@ -0,0 +1,319 @@ +# Copyright (c) QuantCo 2022-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo + + +from __future__ import annotations + +from dataclasses import dataclass, field +from typing import Any, Protocol + +from tabulardelta.formatters.tabulartext.cell import Cell +from tabulardelta.formatters.tabulartext.table import Border, Table +from tabulardelta.tabulardelta import TabularDelta + + +def _shrink(s: int) -> str: + sub = str.maketrans("0123456789", "โ‚€โ‚โ‚‚โ‚ƒโ‚„โ‚…โ‚†โ‚‡โ‚ˆโ‚‰") + return "" if s == 0 else f"{s:,}".translate(sub) + + +def _shorten(s: str, max_len: int = 30) -> str: + if len(s) > max_len: + return s[: max_len - 1] + "โ€ฆ" + return s + + +class Row(Protocol): + """Protocol defining how to retrieve data from a row. + + Methods + ------- + get_cells() -> list[Cell | str]: + Retrieve cells from the row + """ + + def get_cells(self) -> list[Cell | str]: + """Retrieve cells from the row. + + Returns :class:`list[Cell | str]`: + Returns cells such that they can be casted using :meth:`tabulartext.Table.from_lists`. + """ + ... + + +@dataclass(frozen=True) +class Header(Row): + """Header added by :meth:`OverviewRowFormatter.add_header`. + + Methods + ------- + get_cells() -> list[Cell | str]: + Retrieve cells from the row + """ + + title: str + """Title of the header.""" + + def get_cells(self) -> list[Cell | str]: + title = Cell([_shorten(self.title)], colspan=2) + return [title] + "ROWS = โ‰  + - ? COLUMNS + - โ‰  ฮ” t".split() + + +@dataclass(frozen=True) +class Single(Row): + """Row with single cell added by :meth:`OverviewRowFormatter.add_str`. + + Methods + ------- + get_cells() -> list[Cell | str]: + Retrieve cells from the row + """ + + content: str = "" + """Content of the row.""" + + def get_cells(self) -> list[Cell | str]: + return [Cell([self.content], colspan=14)] + + +@dataclass(frozen=True) +class Triple(Row): + """Row with three cells added by :meth:`OverviewRowFormatter.add_legend`. + + Methods + ------- + get_cells() -> list[Cell | str]: + Retrieve cells from the row + """ + + name: str = "" + """Content for char and name columns.""" + rows: str = "" + """Content for row-changes columns.""" + cols: str = "" + """Content for column-changes columns.""" + + def get_cells(self) -> list[Cell | str]: + return [ + Cell([self.name], colspan=2), + Cell([self.rows], colspan=6), + Cell([self.cols], colspan=6), + ] + + +@dataclass(frozen=True) +class Content(Row): + """Row with comparison data added by :meth:`OverviewRowFormatter.format` or + :meth:`OverviewRowFormatter.add_row`. + + Methods + ------- + get_cells() -> list[Cell | str]: + Retrieve cells from the row + """ + + state_char: str = "" + """One-char summary of comparison.""" + name: str = "" + """Name of the table.""" + rows: int = 0 + """Number of rows in the new table.""" + equal_rows: int = 0 + """Number of matched and equal rows.""" + unequal_rows: int = 0 + """Number of matched but unequal rows.""" + added_rows: int = 0 + """Number of added rows (not in old table).""" + removed_rows: int = 0 + """Number of removed rows (not in new table).""" + unknown_rows: int = 0 + """Number of rows with unknown state.""" + cols: int = 0 + """Number of columns in the new table.""" + added_cols: int = 0 + """Number of added columns (not in old table).""" + removed_cols: int = 0 + """Number of removed columns (not in new table).""" + value_changed_cols: int = 0 + """Number of columns with changed values.""" + name_changed_cols: int = 0 + """Number of columns with changed names.""" + type_changed_cols: int = 0 + """Number of columns with changed types.""" + + def get_cells(self) -> list[Cell | str]: + strs = ["state_char", "name"] + big = ["rows", "cols"] + return [ + _shorten(v) if k in strs else f"{v:,}" if k in big else _shrink(v) + for k, v in self.__dict__.items() + ] + + +@dataclass +class OverviewRowFormatter: + """Implements :class:`Formatter` protocol for combining multiple comparisons. + + This formatter is stateful to accumulate TabularDelta comparisons as rows. + + + + Additional rows can be added using add_str, add_row, add_header, and add_legend. + Call table() to retrieve the table, which by default resets the state of the + formatter. + + Methods + ------- + format(delta: TabularDelta) -> None: + Stores comparison as row in internal state + add_header(title: str = " TABLE") -> None: + Add header row to internal state + add_legend() -> None: + Add legend as rows to internal state + add_str(row: str) -> None: + Add string as row to internal state + add_row(char: str, name: str, rows: int, cols: int) -> None: + Manually add table as row to internal state + table(keep_state: bool = False) -> str: + Retrieve report from internal state + """ + + warnings: bool = True + """Whether to show warnings in the report.""" + errors: bool = True + """Whether to show errors in the report.""" + + state: list[Row] = field(default_factory=list) + """Internal state of the formatter. + + May be used to do custom modifications/analyses. May change. + """ + + def format(self, delta: TabularDelta) -> None: + """Stores comparison as row in internal state. + + Arguments: + delta :class:`TabularDelta`: + Metadata and result of a comparison. + + Returns :code:`None`: + No return value. Use :meth:`table` to retrieve report. + """ + if delta.errors: + if self.errors: + self.state.append(Content("โš ", delta.name)) + self.state.extend([Single(f" ERROR {err}") for err in delta.errors]) + return + + values: list[Any] = [ + len(delta.rows.new), + len(delta.rows.equal), + len(delta.rows.unequal), + len(delta.rows.added), + len(delta.rows.removed), + len(delta.cols.new), + len(delta.cols.added), + len(delta.cols.removed), + len(delta.cols.differences), + len(delta.cols.renamed), + len(delta.cols.comparable_type_changed) + + len(delta.cols.incomparable_type_changed), + ] + values.insert(5, values[0] - sum(values[1:4])) # unknown rows + char = "โ‰ " if any(values[2:5] + values[7:12]) else ("?" if values[5] else "") + self.state.append(Content(char, delta.name, *values)) + + if self.warnings: + self.state.extend(Single(f" WARNING {warn}") for warn in delta.warnings) + + def add_header(self, title: str = " TABLE") -> None: + """Add header row to internal state. + + This should be called at least once in the beginning. + + Use this method with the optional title, to separate different chunks of comparisons. + + Arguments: + title :class:`str`: + Title describing the following tables. + + Returns :code:`None`: + No return value. Use :meth:`table` to retrieve report. + """ + self.state.append(Header(title)) + + def add_legend(self) -> None: + """Add legend as rows to internal state. + + This should be called in the end, if the users aren't familiar with the column meanings. + + Returns :code:`None`: + No return value. Use :meth:`table` to retrieve report. + """ + legend = [ + Single(), + Single("LEGEND"), + Triple(" equal", "ROW COUNT", "COLUMN COUNT"), + Triple("+ added", "= joined and identical", "+ added"), + Triple("- removed", "โ‰  joined but different", "- removed"), + Triple("โ‰  unequal", "+ added", "โ‰  values differ"), + Triple("? unknown", "- removed", "ฮ” renamed"), + Triple("โš  error occurred", "? uncompared", "t type changed"), + ] + self.state.extend(legend) + + def add_str(self, row: str) -> None: + """Add string as row to internal state. + + This can be used to customize the report with additional information. + + Arguments: + row :class:`str`: + Content of the row. + + Returns :code:`None`: + No return value. Use :meth:`table` to retrieve report. + """ + self.state.append(Single(row)) + + def add_row(self, char: str, name: str, rows: int, cols: int) -> None: + """Manually add table as row to internal state. + + This is especially helpful for including added or removed tables. + + :code:`add_row("+", "table", 10, 5)` will result in + + .. code-block:: none + + TABLE ROWS COLUMNS + + table 10 5 + + Arguments: + char :class:`str`: + One-char summary of comparison, please refer to the legend. + name :class:`str`: + Name of the table. + rows :class:`int`: + Number of rows in the table. + cols :class:`int`: + Number of columns in the table. + + Returns :code:`None`: + No return value. Use :meth:`table` to retrieve report. + """ + self.state.append(Content(char, name, rows, cols=cols)) + + def table(self, keep_state: bool = False) -> str: + """Retrieve report from internal state. + + Arguments: + keep_state :class:`bool`: + Whether to keep the internal state or clean it up. + + Returns :class:`str`: + Table combining comparisons as rows. + """ + content = [row.get_cells() for row in self.state] + if not keep_state: + self.state = [] + return str(Table.from_lists(content, Border.VerticalGap)) diff --git a/tabulardelta/formatters/tabulartext/__init__.py b/tabulardelta/formatters/tabulartext/__init__.py new file mode 100644 index 0000000..7658b10 --- /dev/null +++ b/tabulardelta/formatters/tabulartext/__init__.py @@ -0,0 +1,2 @@ +# Copyright (c) QuantCo 2024-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo diff --git a/tabulardelta/formatters/tabulartext/cell.py b/tabulardelta/formatters/tabulartext/cell.py new file mode 100644 index 0000000..de17fe3 --- /dev/null +++ b/tabulardelta/formatters/tabulartext/cell.py @@ -0,0 +1,160 @@ +# Copyright (c) QuantCo 2024-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo + +from __future__ import annotations + +from collections.abc import Callable +from dataclasses import dataclass, field +from itertools import cycle, islice +from typing import ClassVar, Protocol + + +class Aligner(Protocol): + """Aligner is a protocol for aligning existing cell content within a larger target + size. + + Arguments: + content :class:`list[str]`: + Original cell content to be aligned. + width :class:`int`: + Target width of cell content, not smaller than length of any line in the original content. + height :class:`int`: + Target height of cell content, not smaller than number of lines of the original content. + + Returns :class:`list[str]`: + Cell content with `height` number of lines, each with length `width`. + + Methods + ------- + + __call__(self, content: list[str], width: int, height: int) -> list[str]: + Resize cell content to a target size. + """ + + def __call__(self, content: list[str], width: int, height: int) -> list[str]: ... + + +@dataclass(frozen=True) +class Align: + """Implementation of :class:`Aligner`, for aligning cell content given a target + size. + + Offers out-of-the-box alignment styles as class attributes: + :attr:`TopLeft`, :attr:`MidLeft`, :attr:`MidCenter`, and :attr:`Repeat`. + + Each can be customized with an optional fill character (see :class:`AlignOptionalChar`). + + Implement :attr:`vertical` and :attr:`horizontal` for specialized alignment styles. + + Methods + ------- + __call__(self, content: list[str], width: int, height: int) -> list[str]: + Implements :class:`Aligner` + """ + + TopLeft: ClassVar[AlignOptionalChar] + """:class:`AlignOptionalChar` that aligns content towards the top left.""" + MidLeft: ClassVar[AlignOptionalChar] + """:class:`AlignOptionalChar` that aligns content to the left, but vertically + centered.""" + MidCenter: ClassVar[AlignOptionalChar] + """:class:`AlignOptionalChar` that aligns content in the middle.""" + Repeat: ClassVar[AlignOptionalChar] + """:class:`AlignOptionalChar` that repeats the content through the cells.""" + + vertical: Callable[[list[str], int], list[str]] + """Callable adding lines to the cell content to reach the given height.""" + horizontal: Callable[[str, int], str] + """Callable adding characters to a line to reach the given width.""" + + class AlignOptionalChar(Protocol): + """Protocol for customizing out-of-the-box alignments with an optional fill + character. + + Arguments: + char :class:`str`: + Optional fill character for the alignment. Default is a space. + + Returns :class:`Align`: + An Aligner with the specified fill character. + + Methods + ------- + + __call__(self, char: str = " ") -> Align: + Gets the :class:`Align` instance + """ + + def __call__(self, char: str = " ") -> Align: ... + + def __call__(self, content: list[str], width: int, height: int) -> list[str]: + content = self.vertical(content, height) + return [self.horizontal(line, width) for line in content] + + +Align.TopLeft = lambda char=" ": Align( + lambda lines, size: (lines + [""] * (size - len(lines))), + lambda line, size: line.ljust(size, char), +) + +Align.MidLeft = lambda char=" ": Align( + lambda lines, size: Align.TopLeft(char).vertical( + [""] * ((size - len(lines)) // 2) + lines, size + ), + lambda line, size: line.ljust(size, char), +) + +Align.MidCenter = lambda char=" ": Align( + lambda lines, size: Align.TopLeft(char).vertical( + [""] * ((size - len(lines)) // 2) + lines, size + ), + lambda line, size: line.center(size, char), +) + +Align.Repeat = lambda char=" ": Align( + lambda lines, size: list(islice(cycle(lines or [""]), size)), + lambda line, size: "".join(islice(cycle(line or char or " "), size)), +) + + +@dataclass +class Cell: + """Represents a table cell with alignable content, which might span multiple columns + and rows. + + Methods + ------- + fill(self, width: int, height: int) -> list[str]: + Increase size of table content using :attr:`align` + """ + + content: list[str] = field(default_factory=list) + """Line-separated cell content.""" + + align: Aligner = Align.TopLeft() + """Alignment strategy (see :class:`Aligner`).""" + + colspan: int = 1 + """Number of columns to span.""" + + rowspan: int = 1 + """Number of rows to span.""" + + def __post_init__(self) -> None: + self.content = [split for line in self.content for split in line.split("\n")] + if self.rowspan < 1 or self.colspan < 1: + raise ValueError("Rowspan and colspan must be positive") + + def fill(self, width: int, height: int) -> list[str]: + """Return cell content resized to a target size by using :attr:`align` strategy. + + Arguments: + width :class:`int`: + The target width for the cell. + height :class:`int`: + The target height for the cell. + + Returns :class:`list[str]`: + The resized line-separated content. + """ + return self.align(self.content, width, height) diff --git a/tabulardelta/formatters/tabulartext/table.py b/tabulardelta/formatters/tabulartext/table.py new file mode 100644 index 0000000..589898a --- /dev/null +++ b/tabulardelta/formatters/tabulartext/table.py @@ -0,0 +1,386 @@ +# Copyright (c) QuantCo 2024-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo + +from __future__ import annotations + +from collections import defaultdict +from collections.abc import Callable +from dataclasses import dataclass, replace +from typing import Any, ClassVar, Protocol + +from .cell import Align, Cell + + +class BorderStyle(Protocol): + """BorderStyle is a protocol for adding border-cells in-between existing cells of a + table. + + Arguments: + table :class:`Table`: + Table to add borders to. + + Returns :class:`list[list[Cell]]`: + Table content with added border cells. + + Methods + ------- + + __call__(self, table: Table) -> list[list[Cell]]: + Adds border to given table + """ + + def __call__(self, table: Table) -> list[list[Cell]]: ... + + +class Border: + """Implementation of :class:`BorderStyle`, for adding a border to an existing table. + + Offers out-of-the-box border styles as class attributes: + :attr:`Nothing`, :attr:`InnerGap`, :attr:`Basic`, and :attr:`VerticalGap`. + + Use :meth:`__init__` with :attr:`style_specifier` for specialized border styles: + A style specifier are comma-separated border descriptions, for all 19 border positions. + + Border descriptions start with a space or a dot, followed by the content of the border cell. + + A dot means that the border cell is allowed to have size 0, a space means it is not. + + The style specifier for :attr:`Basic` therefore looks like this: + + .. code-block:: + + โ”,.โ”, โ”ฏ, โ”“,.โ”‚, + โ” , โ”ฌ, โ”ค,.โ”ƒ,.โ”€, + .โ”ƒ, โ”œ, โ”ด, โ”จ, โ”ผ, + โ”—, โ”ท,.โ”, โ”› + + Methods + ------- + __init__(self, style_specifier: str): + Initializes a :class:`Border` based on style specifier + __call__(self, table: Table) -> list[list[Cell]]: + Implements :class:`BorderStyle` + """ + + # Out-of-the-box Borders + Nothing: ClassVar[BorderStyle] + """Empty border cells. + + Can be used as syntactic sugar to not always specify `add_border=False`. + """ + InnerGap: ClassVar[BorderStyle] + """Adds empty lines between rows and two spaces between columns.""" + Basic: ClassVar[BorderStyle] + """Uses box-drawing characters to draw a beautiful border.""" + VerticalGap: ClassVar[BorderStyle] + """Adds two spaces between columns.""" + + def __init__(self, style_specifier: str): + style = style_specifier.replace("\n", "").split(",") + if len(style) != 19: + raise ValueError("Style must be 19 comma-separated strings") + order = [10, 5, 0, 2, 1, 3, 16, 15, 17, 8, 18, 13, 4, 11, 7, 14, 12, 6, 9] + contents = [(style[i][1:], (style[i][:1] not in (".", ""))) for i in order] + self._style = [Cell([val] * fix, Align.Repeat(val)) for val, fix in contents] + + @staticmethod + def _prune(arr: list[list[Any]], x: int, y: int) -> None: + """ + style e.g.: โ”ƒ, โ” , โ”, โ”ฏ, โ”, โ”“, โ”ท, โ”—, โ”, โ”ƒ, โ”›, โ”จ, โ”‚, โ”œ, โ”ค, โ”ผ, โ”ด, โ”ฌ, โ”€ + index: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18 + pruneTop: โ”ผ -> โ”ฌ, โ”ท -> โ”, โ”ด -> โ”€ (index += 2) + pruneBottom: โ”ผ -> โ”ด, โ”ฏ -> โ”, โ”ฌ -> โ”€ (index += 1) + pruneRight: โ”ผ -> โ”ค, โ”  -> โ”ƒ, โ”œ -> โ”‚ (index -= 1) + pruneLeft: โ”ผ -> โ”œ, โ”จ -> โ”ƒ, โ”ค -> โ”‚ (index -=2) + """ + arr[y][x] = None + arr[y + 1][x] = arr[y + 1][x] + 2 if isinstance(arr[y + 1][x], int) else None + arr[y - 1][x] = arr[y - 1][x] + 1 if isinstance(arr[y - 1][x], int) else None + arr[y][x - 1] = arr[y][x - 1] - 1 if isinstance(arr[y][x - 1], int) else None + arr[y][x + 1] = arr[y][x + 1] - 2 if isinstance(arr[y][x + 1], int) else None + + @staticmethod + def _get_border_table(x: int, y: int) -> list[list[int | Cell | None]]: + """Shows columns nicely visualized, or listed in columns if too wide + Example for 2x2: + โ”‚-----x=2-----โ”‚ + โ”โ”โ”โ”โ”โ”โ”โ”ฏโ”โ”โ”โ”โ”โ”โ”“ โ”ฌ + โ”ƒCell()โ”‚Cell()โ”ƒ โ•Ž + โ” โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”จ y=2 + โ”ƒCell()โ”‚Cell()โ”ƒ โ•Ž + โ”—โ”โ”โ”โ”โ”โ”โ”ทโ”โ”โ”โ”โ”โ”โ”› โ”ด + """ + + def _row(cells: tuple[Any, Any, Any, Any]) -> list[Any]: + """(A,B,C,D) => [A, B, C, B, C, B, ..., C, B, D] (len=x)""" + repeat_cells = [cell for _ in range(x - 1) for cell in cells[2:0:-1]] + return [cells[0], cells[1], *repeat_cells, cells[3]] + + top = (2, 4, 3, 5) # ......โ” โ” โ”ฏ โ”“ + mid = (0, Cell(), 12, 9) # โ”ƒ X โ”‚ โ”ƒ + sep = (1, 18, 15, 11) # ...โ”  โ”€ โ”ผ โ”จ + bot = (7, 8, 6, 10) # .....โ”— โ” โ”ท โ”› + repeat_rows = [row for _ in range(y - 1) for row in (_row(sep), _row(mid))] + return [_row(top), _row(mid), *repeat_rows, _row(bot)] + + def __call__(self, table: Table) -> list[list[Cell]]: + dimensions = table._dimensions() + if not any(dimensions): + return table.content + content: list[list[int | Cell | None]] = self._get_border_table(*dimensions) + + def fill(cell_x: int, cell_y: int, cell: Cell | None) -> None: + for x_offset in range(getattr(cell, "colspan", 0) * 2 - 1): + for y_offset in range(getattr(cell, "rowspan", 0) * 2 - 1): + x = 2 * cell_x + 1 + x_offset + y = 2 * cell_y + 1 + y_offset + # Iterate over borders within spanned cell: + if x % 2 == 0 or y % 2 == 0: + self._prune(content, x, y) + content[2 * cell_y + 1][2 * cell_x + 1] = cell + + table._traverse(fill) + + result: list[list[Cell]] = [] + for row in content: + result.append([]) + for cell in row: + if isinstance(cell, int): + result[-1].append(self._style[cell]) + elif isinstance(cell, Cell): + colspan, rowspan = cell.colspan * 2 - 1, cell.rowspan * 2 - 1 + result[-1].append(replace(cell, colspan=colspan, rowspan=rowspan)) + + return result + + +Border.Basic = Border( + "" # linebreak + + " โ”,.โ”, โ”ฏ, โ”“,.โ”‚," + + " โ” , โ”ฌ, โ”ค,.โ”ƒ,.โ”€," + + ".โ”ƒ, โ”œ, โ”ด, โ”จ, โ”ผ," + + " โ”—, โ”ท,.โ”, โ”›" +) +Border.Nothing = Border(",,,,,,,,,,,,,,,,,,") +Border.InnerGap = Border(",,,, ,,,,, ,,,,,,,,,") +Border.VerticalGap = Border(",,,, ,,,,,,,,,,,,,,") + + +@dataclass +class Table: + """Represents a table containing cells with a border style. + + Note: + If you don't have a :class:`list[list[Cell]]`, try :meth:`from_lists` to create a table. + + This will cast the content accordingly (see :meth:`from_lists` documentation). + + Methods + ------- + + __getitem__(self, item: int) -> list[Cell]: + Retrieves cells using :code:`table[row_nr][col_nr]`. + __setitem__(self, key: int, value: list[Cell]) -> None: + Setting cells using :code:`table[row_nr][col_nr] = cell`. + from_lists(strs: list[list[Any]], border: BorderStyle = Border.Basic) -> Table: + Casts content to create table (see :meth:`from_lists` documentation). + lines(self, add_border: bool = True) -> list[str]: + Renders table as line-separated list of strings. + to_string(self, add_border: bool = True) -> str: + Renders table as string. + __str__(self) -> str: + Renders table as string. + """ + + content: list[list[Cell]] + """Table content as a list of rows, each containing a list of cells.""" + + border: BorderStyle = Border.Basic + """Border style to be added.""" + + _border_added: bool = False + + def __getitem__(self, item: int) -> list[Cell]: + return self.content[item] + + def __setitem__(self, key: int, value: list[Cell]) -> None: + self.content[key] = value + + def _add_border(self, override: bool = False) -> bool: + """Adds border to table if not already added or override is True.""" + if not self._border_added or override: + self.content = self.border(self) + self._border_added = True + return True + return False + + @staticmethod + def from_lists(strs: list[list[Any]], border: BorderStyle = Border.Basic) -> Table: + """Creates a table from list of lists of objects, where each object is cast to a + cell: + + A :class:`Cell` won't be casted. + + A :class:`list` is interpreted as containing lines, with each line being casted to :class:`str`. + + Other objects are casted to strings. + + Arguments: + strs :class:`list[list[Any]]`: + List of lists of cell objects. + border :class:`BorderStyle`: + Border style of table. + + Returns :class:`Table`: + Table containing casted cells and border style. + """ + + def _cast(cell: Cell | list[Any] | Any) -> Cell: + if isinstance(cell, Cell): + return cell + elif isinstance(cell, list): + return Cell([str(row) for row in cell]) + return Cell([str(cell)]) + + return Table([[_cast(cell) for cell in row] for row in strs], border=border) + + def _traverse(self, func: Callable[[int, int, Cell | None], None]) -> None: + """Calls func for each cell with x_pos, y_pos, and cell as arguments. + + The cell is None if position is occupied by other cell with rowspan/colspan > 1. + """ + # Implicit cells due to rowspan: Dict row -> set(column) + rowspan_cells: dict[int, set[int]] = defaultdict(set) + + y_pos = 0 + for row in self.content: + row = [cell for cell in row if cell] + x_pos = 0 + for cell in row: + while x_pos in rowspan_cells[y_pos]: + func(x_pos, y_pos, None) + x_pos += 1 + for spanned_row in range(y_pos + 1, y_pos + cell.rowspan): + spanned_cols = range(x_pos, x_pos + cell.colspan) + rowspan_cells[spanned_row].update(spanned_cols) + func(x_pos, y_pos, cell) + for spanned_col in range(x_pos + 1, x_pos + cell.colspan): + func(spanned_col, y_pos, None) + x_pos += cell.colspan + if row: + y_pos += 1 + while y_pos in rowspan_cells: + for x_pos in rowspan_cells[y_pos]: + func(x_pos, y_pos, None) + y_pos += 1 + + def _dimensions(self) -> tuple[int, int]: + """Get width and height of cell grid, including rowspan/colspan.""" + width = _MaxValue() + height = _MaxValue() + + def measure(x: int, y: int, _: Cell | None) -> None: + width(x + 1) + height(y + 1) + + self._traverse(measure) + return width(), height() + + def lines(self, add_border: bool = True) -> list[str]: + """Returns rendered table as line-separated list of strings. + + This method will never add a border if it already exists! + + Arguments: + add_border :class:`bool`: + Whether to add a border to the table. + + Returns :class:`list[str]`: + Line-separated rendered table. + """ + if add_border: + self._add_border() + + # Cell size requirements: end_of_merge -> start_of_merge -> max_size + horizontal_sizes: dict[int, dict[int, _MaxValue]] = defaultdict( + lambda: defaultdict(_MaxValue) + ) + vertical_sizes: dict[int, dict[int, _MaxValue]] = defaultdict( + lambda: defaultdict(_MaxValue) + ) + + def update_size_requirements(x: int, y: int, cell: Cell | None) -> None: + if cell is not None: + height = len(cell.content) + width = max((len(line) for line in cell.content), default=0) + vertical_sizes[y + cell.rowspan - 1][y](height) + horizontal_sizes[x + cell.colspan - 1][x](width) + + self._traverse(update_size_requirements) + widths = _get_min_sizes(horizontal_sizes) + heights = _get_min_sizes(vertical_sizes) + + result = [[""] * sum(widths) for _ in range(sum(heights))] + + def collect_result(x: int, y: int, cell: Cell | None) -> None: + if cell is not None: + width = sum(widths[x : x + cell.colspan]) + height = sum(heights[y : y + cell.rowspan]) + filled = cell.fill(width, height) + current_row = sum(heights[:y]) + current_col = sum(widths[:x]) + for y_pos, line in enumerate(filled): + if line: + result[current_row + y_pos][current_col] = line + + self._traverse(collect_result) + return ["".join(row) for row in result] + + def to_string(self, add_border: bool = True) -> str: + """Returns rendered table as string by concatenating :meth:`lines`. + + This method will never add a border if it already exists! + + :meth:`__str__` calls this method with default arguments. + + Arguments: + add_border :class:`bool`: + Whether to add a border to the table. + + Returns :class:`str`: + Rendered table. + """ + return "\n".join(self.lines(add_border)) + + def __str__(self) -> str: + return self.to_string() + + +@dataclass +class _MaxValue: + value: int = 0 + + def __call__(self, new: int | None = None) -> int: + self.value = max(self.value, new or 0) + return self.value + + +def _get_min_sizes(ranges: dict[int, dict[int, _MaxValue]]) -> list[int]: + """ + ranges: Size requirements (end_of_range -> start_of_range -> required_size) + Gets the minimum sizes for multiple overlapping ranges + + โ”‚Aโ”‚Bโ”‚CDEFGHIโ”‚J โ”‚ <-> { 0: {0: 1}, 1: {1: 1}, 2: {2: 7}, 3: {3: 1} + โ”‚ABCDEF โ”‚GHIโ”‚ 3: {0: 6}, 4: {4: 3} } + โ•Ž โ•Ž โ•Ž โ•Ž โ•Ž + โ•Ž1โ•Ž1โ•Ž 7 โ•Ž 3 โ•Ž --> [1, 1, 7, 3] + """ + sizes: list[int] = [] + for end in range(max(ranges.keys(), default=-1) + 1): + # Set sizes[end] to fit all ranges ending there + gen = ( + min_range_size() - sum(sizes[start:end]) + for start, min_range_size in ranges[end].items() + ) + sizes.append(max(0, max(gen, default=0))) + return sizes diff --git a/tabulardelta/py.typed b/tabulardelta/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/tabulardelta/tabulardelta.py b/tabulardelta/tabulardelta.py new file mode 100644 index 0000000..8744a1e --- /dev/null +++ b/tabulardelta/tabulardelta.py @@ -0,0 +1,232 @@ +# Copyright (c) QuantCo 2022-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo + + +from collections.abc import Iterable, Mapping, Sequence +from typing import Any, Protocol + + +class ChangedValue(Protocol): + """Represents a change of a value.""" + + @property + def old(self) -> Any: + """Previous value before the change.""" + ... + + @property + def new(self) -> Any: + """New value after the change.""" + ... + + @property + def count(self) -> int: + """(Positive) number of rows containing this change.""" + ... + + @property + def example_join_columns(self) -> Mapping[str, Any]: + """Mapping from column names to values represents an example row where this + change occurred.""" + ... + + +class Column(Protocol): + """Represents a column in a table.""" + + @property + def name(self) -> str: + """Name of the column.""" + ... + + @property + def type(self) -> str: + """Data type of the column.""" + ... + + +class MatchedColumn(Protocol): + """Metadata of the same column in the old and new table.""" + + @property + def old(self) -> Column: + """The column in the old table.""" + ... + + @property + def new(self) -> Column: + """The column in the new table.""" + ... + + +class ChangedColumn(MatchedColumn, Protocol, Iterable[ChangedValue]): + """Represents changes within the same column between the old and new table. + + Use :code:`len()` to get the total number of changed values. + + Since this is an :class:`Iterable[ChangedValue]`, it may contain examples of the changes: + + A :class:`ChangedValue` can represent multiple occurrences of the same values changing. + + There might be fewer examples than the total number of changes (returned by :code:`len()`). + + + Methods + ------- + __len__() -> int + Total number of changes. + __iter__() -> Iterator[ChangedValue] + Examples of value changes. + """ + + def __len__(self): ... + + +class Rows(Protocol, Iterable[Mapping[str, Any]]): + """Represents multiple rows. Use :code:`len()` to get the number of represented + rows. + + Since this is an :class:`Iterable[Mapping[str, Any]]`, it may contain examples of the represented rows: + + A :class:`Mapping[str, Any]` maps column names to values of one row. + + There might be fewer examples than the number represented rows (returned by :code:`len()`). + + + Methods + ------- + __len__() -> int + Number of represented rows. + __iter__() -> Iterator[Mapping[str, Any]] + Examples of represented rows. + """ + + def __len__(self): ... + + +class ColumnDelta(Protocol): + """Generic collection of information about columns, types and their changes.""" + + @property + def old(self) -> Sequence[Column]: + """Metadata of columns in the old table.""" + ... + + @property + def new(self) -> Sequence[Column]: + """Metadata of columns in the new table.""" + ... + + @property + def added(self) -> Sequence[Column]: + """Metadata of added columns (only in new table).""" + ... + + @property + def removed(self) -> Sequence[Column]: + """Metadata of removed columns (only in old table).""" + ... + + @property + def joined(self) -> Sequence[MatchedColumn]: + """Metadata of columns used to join the old and new table.""" + ... + + @property + def renamed(self) -> Sequence[MatchedColumn]: + """Metadata of renamed columns (matched using values and types).""" + ... + + @property + def comparable_type_changed(self) -> Sequence[MatchedColumn]: + """Metadata of columns with changed but comparable data types.""" + ... + + @property + def incomparable_type_changed(self) -> Sequence[ChangedColumn]: + """Columns with changed and incomparable data types, including value changes. + + All values are assumed to be different. + """ + ... + + @property + def differences(self) -> Sequence[ChangedColumn]: + """Changed values of comparable columns.""" + ... + + +class RowDelta(Protocol): + """Generic collection of information about rows.""" + + @property + def old(self) -> Rows: + """Rows in the old table.""" + ... + + @property + def new(self) -> Rows: + """Rows in the new table.""" + ... + + @property + def added(self) -> Rows: + """Added rows (only in new table).""" + ... + + @property + def removed(self) -> Rows: + """Removed rows (only in old table).""" + ... + + @property + def equal(self) -> Rows: + """Equal rows (joined and all columns unchanged).""" + ... + + @property + def unequal(self) -> Rows: + """Unequal rows (joined but at least one column changed).""" + + +class TabularDelta(Protocol): + """Generic collection of information gathered by one table comparison. + + Contains metadata about the comparison, :class:`RowDelta` and :class:`ColumnDelta`. + """ + + @property + def name(self) -> str: + """Name of the new table and therefore the comparison.""" + ... + + @property + def old_name(self) -> str | None: + """Optional name of the old table.""" + ... + + @property + def info(self) -> Sequence[str]: + """Additional information collected during the comparison.""" + ... + + @property + def warnings(self) -> Sequence[str]: + """Warnings collected during the comparison.""" + ... + + @property + def errors(self) -> Sequence[str]: + """Errors collected during the comparison.""" + ... + + @property + def cols(self) -> ColumnDelta: + """Column comparison containing information about columns, types, and value + changes.""" + ... + + @property + def rows(self) -> RowDelta: + """Row comparison containing information about row changes and examples.""" + ... diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..7658b10 --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1,2 @@ +# Copyright (c) QuantCo 2024-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo diff --git a/tests/mssql_container/__init__.py b/tests/mssql_container/__init__.py new file mode 100644 index 0000000..7658b10 --- /dev/null +++ b/tests/mssql_container/__init__.py @@ -0,0 +1,2 @@ +# Copyright (c) QuantCo 2024-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo diff --git a/tests/mssql_container/cached_mssql_container.py b/tests/mssql_container/cached_mssql_container.py new file mode 100644 index 0000000..4e655d7 --- /dev/null +++ b/tests/mssql_container/cached_mssql_container.py @@ -0,0 +1,194 @@ +# Copyright (c) QuantCo 2022-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo +from __future__ import annotations + +import logging +import os +import socket +import subprocess +import sys +import time +from collections.abc import Iterator +from datetime import datetime +from pathlib import Path + +import pyodbc # type: ignore +import pytest +import sqlalchemy as sa +from pydantic import BaseModel, ValidationError + +logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) + + +class UnresponsiveMsSqlError(RuntimeError): + pass + + +def free_port() -> int: + """Get a (most likely) free port by closing socket on OS-assigned port.""" + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.bind(("0.0.0.0", 0)) + sock.listen(1) + _, port = sock.getsockname() + sock.close() + return port + + +class MsSqlContainer(BaseModel): + """Serializable class representing a mssql docker container.""" + + project_name: str = ( + f"tabulardelta_cached-mssql_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}" + ) + port: int | None = None + docker_compose_file: Path = Path(__file__).parent / "docker-compose.yml" + cache_file: Path = Path(__file__).parent / ".mssql_container_cache.json" + + def start(self) -> MsSqlContainer: + """Start the mssql container in detached mode.""" + self.port = self.port or free_port() + assert ( + subprocess.Popen( + f'docker compose -p "{self.project_name}" -f {self.docker_compose_file} up --detach', + env=os.environ | {"MSSQL_PORT": str(self.port)}, + shell=True, + ).wait() + == 0 + ) + return self + + def store_cache(self) -> MsSqlContainer: + """Store the current MsSqlContainer in the cache file.""" + self.cache_file.write_text(self.model_dump_json()) + return self + + def get_cache(self) -> MsSqlContainer: + """Get the MsSqlContainer from the cache file.""" + return MsSqlContainer.model_validate_json(self.cache_file.read_text()) + + def sqlalchemy_url(self) -> str: + # If no port is set, try using CI windows connection string: + host = f"localhost:{self.port}" if self.port else r"(localdb)\.\MSSQLLocalDB" + return f"mssql+pyodbc://sa:Passw0rd@{host}/master?Encrypt=no&TrustServerCertificate=yes&driver=ODBC+Driver+17+for+SQL+Server" + + def sqlalchemy_engine(self) -> sa.Engine: + return sa.create_engine(self.sqlalchemy_url()) + + def pyodbc_connect(self) -> pyodbc.Connection: + # If no port is set, try using CI windows connection string: + host = f"localhost,{self.port}" if self.port else r"(localdb)\.\MSSQLLocalDB" + pyodbc_str = f"DRIVER={{ODBC Driver 17 for SQL Server}};SERVER={host};DATABASE=master;UID=sa;PWD=Passw0rd;TrustServerCertificate=yes;Encrypt=No;DATABASE=master" + return pyodbc.connect(pyodbc_str) + + def healthcheck( + self, max_attempts: int = 3, sleep_interval: float = 3 + ) -> MsSqlContainer: + t = time.time() + for attempt in range(max_attempts): + try: + logging.debug(f"Connecting to docker mssql, attempt {attempt}") + cnn = self.pyodbc_connect() + cursor = cnn.cursor() + cursor.execute("SELECT 1") + cnn.commit() + logging.info( + f"Connecting to docker mssql, attempt {attempt} success after {time.time()-t:.2f}s" + ) + return self + except Exception: + logging.debug(f"Connecting to docker db, attempt {attempt} failed") + time.sleep(sleep_interval) + logging.error(">" * 20 + " DOCKER COMPOSE LOGS BELOW " + "<" * 20) + logging.error( + subprocess.check_output( + ["docker", "compose", "-p", self.project_name, "logs"] + ).decode("utf-8") + ) + logging.error(">" * 20 + " END DOCKER COMPOSE LOGS " + "<" * 20) + raise UnresponsiveMsSqlError( + f"Could not connect to temporary db on port :{self.port}\n" + ) + + def reset(self) -> MsSqlContainer: + conn = self.pyodbc_connect() + conn.autocommit = True + cur = conn.cursor() + + # Security check + if self.port == 1433: + raise RuntimeError( + "MISHAP PROTECTION: Let's not reset mssql on default ports." + ) + + # Drop databases + all_dbs = cur.execute("SELECT name FROM sys.databases").fetchall() + system_dbs = ["master", "tempdb", "model", "msdb"] + user_dbs = [row[0] for row in all_dbs if row[0] not in system_dbs] + if len(user_dbs) > 5: # Security check + raise RuntimeError( + "MISHAP PROTECTION: Let's not drop more than 5 databases." + ) + for user_db in user_dbs: + cur.execute(f"DROP DATABASE {user_db}") + + # Drop foreign keys in master + constraints_query = "SELECT * FROM master.INFORMATION_SCHEMA.TABLE_CONSTRAINTS" + constraints = cur.execute(constraints_query).fetchall() + for _, _, constraint, _, schema, table, category, _, _ in constraints: + if category == "FOREIGN KEY": + cur.execute(f"ALTER TABLE [{schema}].[{table}] DROP [{constraint}]") + + # Drop tables and views in master + master_objs = cur.execute( + "SELECT * FROM master.INFORMATION_SCHEMA.TABLES" + ).fetchall() + for _, schema, table, category in master_objs: + cur.execute(f"DROP {category.split()[-1]} [{schema}].[{table}]") + + # Drop schemas + system_schemas = { + "dbo", + "guest", + "INFORMATION_SCHEMA", + "sys", + "db_owner", + "db_accessadmin", + "db_securityadmin", + "db_ddladmin", + "db_backupoperator", + "db_datareader", + "db_datawriter", + "db_denydatareader", + "db_denydatawriter", + } + master_schemas = cur.execute( + "SELECT * FROM master.INFORMATION_SCHEMA.SCHEMATA" + ).fetchall() + user_schemas = {s[1] for s in master_schemas if s[1] not in system_schemas} + for schema in user_schemas: + cur.execute(f"DROP SCHEMA [{schema}]") + + cur.close() + conn.close() + return self + + +def cached_clean_mssql_container( + attempts: int = 2, + cache_file: Path = Path(__file__).parent / ".mssql_container_cache.json", +) -> MsSqlContainer: + """Get a cached MsSqlContainer from the cache file, or start this one if missing.""" + new_container = MsSqlContainer(cache_file=cache_file) + for _ in range(attempts): + try: + print(new_container.get_cache()) + return new_container.get_cache().healthcheck().reset() + except (FileNotFoundError, ValidationError, UnresponsiveMsSqlError) as e: + logging.debug(f"Couldn't get cached MsSql container: {e}") + new_container.start().store_cache() + raise UnresponsiveMsSqlError("Failed to start mssql container.") + + +@pytest.fixture(scope="function") +def mssql_engine() -> Iterator[sa.Engine]: + yield cached_clean_mssql_container().sqlalchemy_engine() diff --git a/tests/mssql_container/docker-compose.yml b/tests/mssql_container/docker-compose.yml new file mode 100644 index 0000000..1526269 --- /dev/null +++ b/tests/mssql_container/docker-compose.yml @@ -0,0 +1,14 @@ +services: + mssql: + platform: linux/amd64 + image: "mcr.microsoft.com/mssql/server:2022-latest" + ports: + - "${MSSQL_PORT:-1434}:1433" + environment: + - MSSQL_SA_PASSWORD=Passw0rd + - ACCEPT_EULA=y + healthcheck: + test: ["CMD", "/opt/mssql-tools/bin/sqlcmd", "-S", "localhost", "-U", "sa", "-P", "'Passw0rd'", "-Q", "'SELECT 1'", "||", "exit 1"] + interval: 5s + timeout: 5s + retries: 40 diff --git a/tests/test_assets/week24.csv b/tests/test_assets/week24.csv new file mode 100644 index 0000000..5fe34be --- /dev/null +++ b/tests/test_assets/week24.csv @@ -0,0 +1,33 @@ +Day,Who,Shift +Mon, ZR, 8h +Mon, WO, 7h +Mon, FJ, 6h +Mon, GT, 3h +Tue, FJ, 2h +Tue, AT, 6h +Tue, LK, 7h +Tue, GT, 6h +Tue, ZR, 3h +Wed, LK, 8h +Wed, ZR, 2h +Wed, JK, 4h +Wed, WO, 5h +Wed, DA, 5h +Thu, LK, 4h +Thu, JK, 7h +Thu, ZR, 5h +Thu, DA, 8h +Fri, DA, 4h +Fri, GT, 8h +Fri, LK, 2h +Fri, JK, 5h +Fri, LN, 5h +Sat, ZR, 4h +Sat, CN, 5h +Sat, LN, 2h +Sat, AT, 6h +Sat, LK, 7h +Sun, LN, 3h +Sun, FJ, 5h +Sun, JK, 8h +Sun, ZR, 8h diff --git a/tests/test_assets/week25.csv b/tests/test_assets/week25.csv new file mode 100644 index 0000000..6a00810 --- /dev/null +++ b/tests/test_assets/week25.csv @@ -0,0 +1,31 @@ +Day,Who,Shift +Sat, CN, 6h +Wed, DA, 5h +Thu, DA, 8h +Fri, DA, 4h +Mon, FJ, 6h +Tue, FJ, 5h +Sun, FJ, 5h +Mon, GT, 3h +Tue, GT, 7h +Fri, GT, 8h +Wed, JK, 4h +Thu, JK, 7h +Sun, JK, 8h +Fri, JK, 5h +Tue, LK, 7h +Wed, LK, 8h +Thu, LK, 4h +Fri, LK, 2h +Sat, LK, 7h +Fri, LN, 5h +Sat, LN, 5h +Sun, LN, 3h +Mon, WO, 7h +Wed, WO, 5h +Mon, ZR, 8h +Tue, ZR, 5h +Wed, ZR, 2h +Thu, ZR, 5h +Sat, ZR, 6h +Sun, ZR, 8h diff --git a/tests/test_comparators.py b/tests/test_comparators.py new file mode 100644 index 0000000..9e3722f --- /dev/null +++ b/tests/test_comparators.py @@ -0,0 +1,488 @@ +# Copyright (c) QuantCo 2022-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo +from typing import Any, NamedTuple + +import numpy as np +import pandas as pd +import pytest +from pandas.testing import assert_frame_equal + +from tabulardelta import ( + DetailedTextFormatter, + PandasComparator, + SqlCompyreComparator, + SqlMetadataComparator, +) +from tabulardelta.comparators.tabulardelta_dataclasses import ( + Column, + ColumnPair, +) + +try: + from tests.mssql_container.cached_mssql_container import mssql_engine +except ImportError: + + @pytest.fixture + def mssql_engine() -> Any: + return "SqlAlchemy or pyodbc not installed." + + +try: + import sqlalchemy as sa +except ImportError: + sa = NamedTuple("sa", [("Engine", Any)]) # type: ignore # noqa: UP014 + + +def rec_approx(a: Any, b: Any): + if isinstance(a, list) and isinstance(b, list): + assert len(a) == len(b) + for x, y in zip(a, b): + rec_approx(x, y) + elif isinstance(a, dict) and isinstance(b, dict): + assert len(a) == len(b) + for k in a: + assert k in b + rec_approx(a[k], b[k]) + else: + assert a == pytest.approx(b) + + +def old_df(): + return pd.DataFrame( + { + "id": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], + "equal": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "paid": [ + "yes", + "no", + "yes", + "maybe", + "yes", + "no", + "yes", + "no", + "yes", + "no", + ], + "unnecessary": [0] * 10, + "name": ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"], + "measurement": [[val] * 3 for val in np.arange(0.1, 1.1, 0.1)], + "expectation": [0.12, 0.24, 0.36, 0.48, 0.5, 0.68, 0.76, 0.84, 0.92, 1.0], + } + ) + + +def new_df(): + df = old_df() + # Swap first two rows + df.iloc[0], df.iloc[1] = (df.iloc[1], df.iloc[0].copy()) + # Remove unnecessary column + df.drop(columns=["unnecessary"], inplace=True) + # Uncomparable dtype change: str -> bool + df["paid"] = df["paid"] == "yes" + # Rename measurements + df.rename(columns={"measurement": "renamedmeasurement"}, inplace=True) + # Results are average of measurements + df["results"] = df["renamedmeasurement"].apply(lambda x: sum(x) / len(x)) + # Rename last row + df.loc[9, "name"] = "Jess" + # Add new row + df.loc[10] = [10, 0, True, "Karl", [1.0, 1.1, 1.2], 0.9, 1.1] + # Change expectation value for row 4 + df.loc[4, "expectation"] = 0.55 + # Change expectations to float32 + df["expectation"] = df["expectation"].astype("float32") + # Change id to float64 + df["id"] = df["id"].astype("float64") + # Create a second results column as float32 + df["second_result"] = df["results"].astype("float32") + return df + + +def test_pandas_comparator(): + delta = PandasComparator(["name"]).compare(old_df(), new_df()) + + print(delta) + + assert delta.warnings == [] + assert delta.errors == [] + assert delta.cols.joined == [ + ColumnPair(Column("name", "object"), Column("name", "object"), join=True) + ] + assert delta.cols.removed == [Column("unnecessary", "int64")] + assert set(delta.cols.added) == { + Column("results", "float64"), + Column("second_result", "float32"), + } + assert delta.cols.renamed == [ + ColumnPair( + Column("measurement", "object"), + Column("renamedmeasurement", "object"), + ) + ] + comparable = [chg for chg in delta.cols.comparable_type_changed] + assert len(comparable) == 1 + assert comparable[0].old == Column("expectation", "float64") + assert comparable[0].new == Column("expectation", "float32") + assert all(chg.old and chg.new for chg in delta.cols.incomparable_type_changed) + incomparable_dtype_dict = { + chg.new.name: ( + chg.old.name, + chg.new.name, + chg.old.type, + chg.new.type, + chg._values, + ) + for chg in delta.cols.incomparable_type_changed + if chg.old and chg.new + } + + assert "paid" in incomparable_dtype_dict + assert incomparable_dtype_dict["paid"][2] == "object" + assert incomparable_dtype_dict["paid"][3] == "bool" + assert isinstance(incomparable_dtype_dict["paid"][4], pd.DataFrame) + cols = incomparable_dtype_dict["paid"][4].columns + assert "name" in cols + assert "_count" in cols + assert incomparable_dtype_dict["paid"][0] in cols + assert incomparable_dtype_dict["paid"][1] in cols + + assert "id" in incomparable_dtype_dict + assert incomparable_dtype_dict["id"][2] == "int64" + assert incomparable_dtype_dict["id"][3] == "float64" + assert isinstance(incomparable_dtype_dict["id"][4], pd.DataFrame) + cols = incomparable_dtype_dict["id"][4].columns + assert "name" in cols + assert "_count" in cols + assert incomparable_dtype_dict["id"][0] in incomparable_dtype_dict["id"][4].columns + assert incomparable_dtype_dict["id"][1] in incomparable_dtype_dict["id"][4].columns + + assert len(delta.rows.old) == 10 + assert len(delta.rows.new) == 11 + assert len(delta.rows.equal) == 8 + assert len(delta.rows.removed) == 1 + assert len(delta.rows.added) == 2 + assert len(delta.rows.unequal) == 1 + + added = {row["id"]: row for row in delta.rows.added} + rec_approx( + added[9.0], + { + "id": 9.0, + "equal": 0.0, + "paid": False, + "name": "Jess", + "renamedmeasurement": [1.0, 1.0, 1.0], + "expectation": 1.0, + "results": 1.0, + "second_result": 1.0, + }, + ) + rec_approx( + added[10.0], + { + "id": 10.0, + "equal": 0.0, + "paid": True, + "name": "Karl", + "renamedmeasurement": [1.0, 1.1, 1.2], + "expectation": 0.9, + "results": 1.1, + "second_result": 1.1, + }, + ) + rec_approx( + list(delta.rows.removed), + [ + { + "id": 9.0, + "equal": 0.0, + "paid": "no", + "unnecessary": 0.0, + "name": "J", + "measurement": [1.0, 1.0, 1.0], + "expectation": 1.0, + } + ], + ) + + actual_differences = [diff for diff in delta.cols.differences if len(diff) > 0] + assert len(actual_differences) == 1 + assert actual_differences[0].new and actual_differences[0].new.name == "expectation" + df = actual_differences[0]._values + assert df is not None + assert actual_differences[0].old and actual_differences[0].old.name in df.columns + assert actual_differences[0].new and actual_differences[0].new.name in df.columns + expected_df = pd.DataFrame( + { + "expectation_old": [0.5], + "expectation": [0.55], + "_count": [1], + "name": ["E"], + } + ) + assert_frame_equal(df.reset_index(drop=True), expected_df.reset_index(drop=True)) + + +def test_pandas_comparator_row_col_orders(): + test_dfs = [ # (DataFrame, Order <1=RowChanged, 2=ColChanged>) + (pd.DataFrame({"id": [1, 2], "col": ["a", "b"]}), 0), + (pd.DataFrame({"id": [1, 2], "col": ["a", "b"], "extra": ["x", "y"]}), 0), + (pd.DataFrame({"id": [1, 2, 3], "col": ["a", "b", "c"]}), 0), + (pd.DataFrame({"id": [2, 1], "col": ["b", "a"]}), 1), + (pd.DataFrame({"col": ["a", "b"], "id": [1, 2]}), 2), + (pd.DataFrame({"col": ["b", "a"], "id": [2, 1]}), 3), + ] + tests = [(o_df, n_df, o ^ n) for o_df, o in test_dfs for n_df, n in test_dfs] + for old_df, new_df, expected_order in tests: + delta = PandasComparator(["id"]).compare(old_df, new_df) + assert ("Row Order Changed!" in delta.info) == expected_order % 2 + assert ("Column Order Changed!" in delta.info) == expected_order // 2 + print(DetailedTextFormatter().format(delta)) + + +@pytest.mark.sql +@pytest.mark.parametrize( + "input_type", ["table_str", "schema_table_str", "bracket_table_str", "sa_table"] +) +def test_sqlcompyre_comparator(mssql_engine: sa.Engine, input_type: str): + first = old_df() + first["measurement"] = first["measurement"].apply(str) + second = new_df() + second["renamedmeasurement"] = second["renamedmeasurement"].apply(str) + first.to_sql("first", mssql_engine, index=False, index_label="name", schema="dbo") + second.to_sql("second", mssql_engine, index=False, index_label="name", schema="dbo") + + old: str | sa.Table + new: str | sa.Table + if input_type == "table_str": + old, new = "first", "second" + elif input_type == "schema_table_str": + old, new = "dbo.first", "dbo.second" + elif input_type == "bracket_table_str": + old, new = "[dbo].[first]", "[dbo].[second]" + elif input_type == "sa_table": + meta = sa.MetaData() + meta.reflect(mssql_engine) + old, new = meta.tables["first"], meta.tables["second"] + else: + raise ValueError(f"Invalid input_type: {input_type}") + + delta = SqlCompyreComparator(mssql_engine, ["name"]).compare(old, new) + + print(delta) + + assert delta.warnings == [] + assert delta.errors == [] + assert delta.cols.joined == [ + ColumnPair( + Column("name", 'VARCHAR COLLATE "SQL_Latin1_General_CP1_CI_AS"'), + Column("name", 'VARCHAR COLLATE "SQL_Latin1_General_CP1_CI_AS"'), + True, + ) + ] + assert delta.cols.removed == [Column("unnecessary", "BIGINT")] + assert set(delta.cols.added) == { + Column("results", "FLOAT"), + Column("second_result", "REAL"), + } + renamed = delta.cols.renamed + assert len(renamed) == 1 + assert len(renamed[0]) == 0 + assert renamed[0].old == Column( + "measurement", 'VARCHAR COLLATE "SQL_Latin1_General_CP1_CI_AS"' + ) + assert renamed[0].new == Column( + "renamedmeasurement", 'VARCHAR COLLATE "SQL_Latin1_General_CP1_CI_AS"' + ) + assert all(chg.old for chg in delta.cols.comparable_type_changed) + changes = { + chg.old.name: chg for chg in delta.cols.comparable_type_changed if chg.old + } + assert changes.keys() == {"id", "expectation"} + assert changes["id"].old == Column("id", "BIGINT") + assert changes["id"].new == Column("id", "FLOAT") + assert changes["expectation"].old == Column("expectation", "FLOAT") + assert changes["expectation"].new == Column("expectation", "REAL") + assert all(chg.old and chg.new for chg in delta.cols.incomparable_type_changed) + incomparable_dtype_dict = { + chg.new.name: ( + chg.old.name, + chg.new.name, + chg.old.type, + chg.new.type, + chg._values, + ) + for chg in delta.cols.incomparable_type_changed + if chg.old and chg.new + } + + assert "paid" in incomparable_dtype_dict + assert ( + incomparable_dtype_dict["paid"][2] + == 'VARCHAR COLLATE "SQL_Latin1_General_CP1_CI_AS"' + ) + assert incomparable_dtype_dict["paid"][3] == "BIT" + assert isinstance(incomparable_dtype_dict["paid"][4], pd.DataFrame) + cols = incomparable_dtype_dict["paid"][4].columns + assert "name" in cols + assert "_count" in cols + assert incomparable_dtype_dict["paid"][0] in cols + assert incomparable_dtype_dict["paid"][1] in cols + + assert len(delta.rows.old) == 10 + assert len(delta.rows.new) == 11 + + assert len(delta.rows.equal) == 8 + assert len(delta.rows.removed) == 1 + assert len(delta.rows.added) == 2 + assert len(delta.rows.unequal) == 1 + + added = {row["id"]: row for row in delta.rows.added} + rec_approx( + added[9.0], + { + "id": 9.0, + "equal": 0.0, + "name": "Jess", + "renamedmeasurement": "[np.float64(1.0), np.float64(1.0), np.float64(1.0)]", + "expectation": 1.0, + }, + ) + rec_approx( + added[10.0], + { + "id": 10.0, + "equal": 0.0, + "name": "Karl", + "renamedmeasurement": "[1.0, 1.1, 1.2]", + "expectation": 0.9, + }, + ) + rec_approx( + list(delta.rows.removed), + [ + { + "id": 9.0, + "equal": 0.0, + "name": "J", + "measurement": "[np.float64(1.0), np.float64(1.0), np.float64(1.0)]", + "expectation": 1.0, + } + ], + ) + + actual_differences = [diff for diff in delta.cols.differences if len(diff) > 0] + assert len(actual_differences) == 1 + assert actual_differences[0].new + assert actual_differences[0].old + assert actual_differences[0].new.name == "expectation" + df = actual_differences[0]._values + assert df is not None + assert actual_differences[0].old.name in df.columns + assert actual_differences[0].new.name in df.columns + expected = pd.DataFrame( + { + "expectation_old": [0.5], + "expectation": [0.55], + "_count": [1], + "name": ["E"], + } + ) + assert_frame_equal( + df.reset_index(drop=True), expected.reset_index(drop=True), check_dtype=False + ) + + +@pytest.mark.sql +@pytest.mark.parametrize( + "input_type", ["table_str", "schema_table_str", "bracket_table_str", "sa_table"] +) +def test_sqlmetadata_comparator(mssql_engine: sa.Engine, input_type: str): + first = old_df() + first["measurement"] = first["measurement"].apply(str) + second = new_df() + second["renamedmeasurement"] = second["renamedmeasurement"].apply(str) + first.to_sql("first", mssql_engine, index=False, index_label="name") + second.to_sql("second", mssql_engine, index=False, index_label="name") + + old: str | sa.Table + new: str | sa.Table + if input_type == "table_str": + old, new = "first", "second" + elif input_type == "schema_table_str": + old, new = "dbo.first", "dbo.second" + elif input_type == "bracket_table_str": + old, new = "[dbo].[first]", "[dbo].[second]" + elif input_type == "sa_table": + meta = sa.MetaData() + meta.reflect(mssql_engine) + old, new = meta.tables["first"], meta.tables["second"] + else: + raise ValueError(f"Invalid input_type: {input_type}") + + delta = SqlMetadataComparator(mssql_engine).compare(old, new) + + print(delta) + + assert delta.warnings == ["No value comparison, just metadata analysis."] + assert delta.errors == [] + assert delta.cols.joined == [] + assert set(delta.cols.removed) == { + Column("unnecessary", "bigint"), + Column("measurement", "varchar"), + } + assert set(delta.cols.added) == { + Column("results", "float"), + Column("second_result", "real"), + Column("renamedmeasurement", "varchar"), + } + assert delta.cols.renamed == [] + comparable = delta.cols.comparable_type_changed + assert len(comparable) == 3 + assert comparable[0].old == Column("id", "bigint") + assert comparable[0].new == Column("id", "float") + assert comparable[1].old == Column("paid", "varchar") + assert comparable[1].new == Column("paid", "bit") + assert comparable[2].old == Column("expectation", "float") + assert comparable[2].new == Column("expectation", "real") + + assert [chg for chg in delta.cols.incomparable_type_changed] == [] + + assert len(delta.rows.old) == 10 + assert len(delta.rows.new) == 11 + + assert len(delta.rows.equal) == 0 + assert len(delta.rows.removed) == 0 + assert len(delta.rows.added) == 1 + assert len(delta.rows.unequal) == 0 + + assert delta.cols.differences == [] + + +@pytest.mark.sql +def test_sqlmetadata_comparator_cache(mssql_engine: sa.Engine): + first = old_df() + second = new_df() + first.to_sql("first", mssql_engine, index=False, index_label="name") + second.to_sql("second", mssql_engine, index=False, index_label="name") + + # Create a comparison with activated caching + cache_comp = SqlMetadataComparator(mssql_engine, cache_db_metadata=True) + original_delta = cache_comp.compare("first", "second") + + # Change (switch) the tables in the database + second.to_sql( + "first", mssql_engine, index=False, index_label="id", if_exists="replace" + ) + first.to_sql( + "second", mssql_engine, index=False, index_label="id", if_exists="replace" + ) + + # New comparison should be different + changed_delta = SqlMetadataComparator(mssql_engine).compare("first", "second") + assert original_delta != changed_delta + + # Cached comparison should be equal to original + cached_delta = cache_comp.compare("first", "second") + assert cached_delta == original_delta diff --git a/tests/test_docs_examples.py b/tests/test_docs_examples.py new file mode 100644 index 0000000..81a7ce8 --- /dev/null +++ b/tests/test_docs_examples.py @@ -0,0 +1,334 @@ +# Copyright (c) QuantCo 2024-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo +from dataclasses import dataclass +from itertools import chain +from pathlib import Path +from typing import Any + +import click +import pandas as pd +import polars as pl +import pytest +import sqlalchemy +from click.testing import CliRunner +from pydiverse import pipedag # type: ignore +from pydiverse.pipedag import ( # type: ignore + Flow, + Stage, + input_stage_versions, + materialize, +) +from pydiverse.pipedag.core.config import create_basic_pipedag_config # type: ignore +from pydiverse.pipedag.util.structlog import setup_logging # type: ignore + +from tabulardelta import ( + DetailedTextFormatter, + OverviewRowFormatter, + PandasComparator, + SqlCompyreComparator, + SqlMetadataComparator, + TabularDelta, +) +from tabulardelta.formatters.tabulartext.cell import Cell +from tabulardelta.formatters.tabulartext.table import Border, Table + +sa = sqlalchemy + + +try: + from tests.mssql_container.cached_mssql_container import ( + MsSqlContainer, + cached_clean_mssql_container, + mssql_engine, + ) +except ImportError: + + @pytest.fixture + def mssql_engine() -> Any: + return "SqlAlchemy or pyodbc not installed." + + +def test_df_example(): + df_old = df_new = pd.DataFrame() + # df_old, df_new = ... + + delta = PandasComparator().compare(df_old, df_new) + print(DetailedTextFormatter().format(delta)) + + +def test_csv_example(): + assets_path = Path(__file__).parent / "test_assets" + + df_old = pd.read_csv(assets_path / "week24.csv", index_col=[0, 1]) + df_new = pd.read_csv(assets_path / "week25.csv", index_col=[0, 1]) + + delta = PandasComparator().compare(df_old, df_new) + print(DetailedTextFormatter().format(delta)) + + +@pytest.mark.sql +def test_sql_cli_example(mssql_engine: sqlalchemy.Engine): + @click.command() + @click.argument("old_table") + @click.argument("new_table") + @click.argument("join_columns", nargs=-1) + def compare_sql(old_table: str, new_table: str, join_columns: list[str]): + engine = mssql_engine + # engine: sqlalchemy.Engine = ... + + delta = SqlCompyreComparator(engine, join_columns).compare(old_table, new_table) + print(DetailedTextFormatter().format(delta)) + + ################################## TEST EXECUTION ################################## + with mssql_engine.connect() as conn: + with conn.begin(): + conn.execute(sqlalchemy.text("CREATE SCHEMA archive")) + conn.execute(sqlalchemy.text("CREATE SCHEMA master")) + first = pd.DataFrame( + { + "activity": range(123, 892), + "registration": pd.to_datetime("2024-07-18"), + "valid_from": pd.Timestamp(year=2000, month=1, day=1), + "valid_until": pd.Timestamp(year=9999, month=12, day=31), + } + ) + second = pd.DataFrame( + { + "activity": range(123, 903), + "registration_date": pd.to_datetime("2024-07-18"), + "free_days_until_registered": 0, + "valid_from": pd.Timestamp(year=2000, month=1, day=1), + "valid_until": [pd.Timestamp(year=2024, month=6, day=28)] * 12 + + [pd.Timestamp(year=9999, month=12, day=31)] * 768, + } + ) + first.to_sql("registration", mssql_engine, index=False, schema="archive") + second.to_sql("registration", mssql_engine, index=False, schema="master") + + result = CliRunner().invoke( + compare_sql, + ["archive.registration", "master.registration", "activity", "valid_from"], + ) + assert result.stdout == ( + "---------------------- TabularDelta Report: registration -> registration ----------------------\n" + + " \n" + + "Joined on ['activity', 'valid_from']. \n" + + " \n" + + "Added columns: \n" + + "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“ \n" + + "โ”ƒfree_days_until_registeredโ”ƒ \n" + + "โ”ƒ(BIGINT) โ”ƒ \n" + + "โ”ฃโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ซ \n" + + " \n" + + "Renamed columns: \n" + + "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“ \n" + + "โ”ƒregistration โ†’ registration_dateโ”ƒ \n" + + "โ”ƒ(DATETIME) โ”ƒ \n" + + "โ”ฃโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ซ \n" + + " \n" + + " Old New \n" + + " 769 780 \n" + + "โ”โ”โ”ฏโ”โ”ฏโ”โ”ฏโ”โ”“โ•Œโ•Œโ•Œโ”โ”โ”ฏโ”โ”ฏโ”โ”ฏโ”โ”“----------------โ•ถโ•ฎ \n" + + "โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ = โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ 757 identical โ”‚ 769 \n" + + "โ” โ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”จโ•Œโ•Œโ•Œโ” โ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”จ---------------- โ”œโ•ดrows \n" + + "โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ โ‰  โ”ƒ โ”‚ โ”‚ โ”‚ โ”ƒ 12 changed โ”‚ joined \n" + + "โ”—โ”โ”ทโ”โ”ทโ”โ”ทโ”โ”›โ•Œโ•Œโ•Œโ” โ”€โ”ผโ”€โ”ผโ”€โ”ผโ”€โ”จ----------------โ•ถโ•ฏ \n" + + " โ”ƒ+โ”‚+โ”‚+โ”‚+โ”ƒ 11 added \n" + + " โ”—โ”โ”ทโ”โ”ทโ”โ”ทโ”โ”› \n" + + " \n" + + "Column valid_until - 12 rows changed: \n" + + " valid_until โ†’ valid_until example_activity example_valid_from \n" + + " (12x) 9999-12-31 00:00:00 โ†’ 2024-06-28 00:00:00 123 2000-01-01 00:00:00\n" + + " \n" + + "ADDED ROWS EXAMPLES: \n" + + "activityโ”‚valid_from โ”‚registration_date โ”‚valid_until \n" + + "892 โ”‚2000-01-01 00:00:00โ”‚2024-07-18 00:00:00โ”‚9999-12-31 00:00:00 \n" + + "893 โ”‚2000-01-01 00:00:00โ”‚2024-07-18 00:00:00โ”‚9999-12-31 00:00:00 \n" + + "894 โ”‚2000-01-01 00:00:00โ”‚2024-07-18 00:00:00โ”‚9999-12-31 00:00:00 \n" + ) + + +ENABLE_BUG = False + + +@materialize +def data_load(): + data = { + "id": [1, 2, 3], + "codes": ["A01", "B02", "A01\t"], + "dates": pd.to_datetime(["2024-02-01", "2024-02-02", "2024-02-03"]), + } + return pipedag.Table(pd.DataFrame(data), name="data_load") + + +@materialize(input_type=pd.DataFrame) +def clean(data): + # No cleaning necessary + return pipedag.Table(data, name="clean") + + +@materialize(input_type=pd.DataFrame) +def weekday_feature(data): + data["weekday"] = data["dates"].dt.weekday + return pipedag.Table(data[["id", "weekday"]], name="weekday_feature") + + +@materialize(input_type=pd.DataFrame) +def code_features(data): + data["code"] = data["codes"].str.strip(" " if ENABLE_BUG else None) + for code in data["code"].unique(): + data[f"code_{code}"] = data["codes"].str.contains(code) + result = data[["id"] + [f"code_{code}" for code in data["code"].unique()]] + return pipedag.Table(result, name="code_features") + + +@materialize(input_type=pd.DataFrame) +def feature_merge(weekday, codes): + return pipedag.Table(weekday.merge(codes, on="id"), name="feature_merge") + + +@materialize(input_type=pd.DataFrame) +def filter(data): + # No cleaning necessary + return pipedag.Table(data, name="filter") + + +@materialize(input_type=pd.DataFrame) +def export_dataframe(df): + print(df) + + +def row_count(tbl: sa.Table): + with MsSqlContainer().get_cache().sqlalchemy_engine().connect() as conn: + return conn.execute(sa.select(sa.func.count()).select_from(tbl)).scalar() + + +def col_count(tbl: sa.Table): + return len(tbl.columns) + + +@input_stage_versions(input_type=sqlalchemy.Table) +def validate_stage( + tbls: dict[str, sqlalchemy.Table], other_tbls: dict[str, sqlalchemy.Table] +): + comparator = SqlMetadataComparator(MsSqlContainer().get_cache().sqlalchemy_engine()) + formatter = OverviewRowFormatter(warnings=False) + formatter.add_header() + + for common in set(tbls) & set(other_tbls): + delta = comparator.compare(tbls[common], other_tbls[common]) + formatter.format(delta) + + for added in set(tbls) - set(other_tbls): + delta = comparator.compare(tbls[added], tbls[added]) + formatter.add_row("+", added, len(delta.rows.new), len(delta.cols.new)) + + formatter.add_legend() + print(formatter.table()) + + +@pytest.mark.sql +def test_pipedag_example(): + url = cached_clean_mssql_container().sqlalchemy_url() + cfg = create_basic_pipedag_config(url).get("default") + setup_logging() + + with Flow("flow") as flow: + with Stage("Features"): + data = data_load() + cleaned = clean(data) + weekday = weekday_feature(cleaned) + codes = code_features(cleaned) + merge = feature_merge(weekday, codes) + filtered = filter(merge) + export_dataframe(filtered) + validate_stage() + + flow.run(config=cfg) + global ENABLE_BUG + ENABLE_BUG = True + flow.run(config=cfg) + + +@dataclass +class PolarsComparator: + join_columns: list[str] | None = None + name: str = "" + + def compare(self, left: pl.DataFrame, right: pl.DataFrame) -> TabularDelta: + comparator = PandasComparator(self.join_columns, self.name) + return comparator.compare(left.to_pandas(), right.to_pandas()) + + +def test_polars_comparator(): + expected = pl.DataFrame({"id": [1, 2, 3]}) + observed = pl.DataFrame({"id": [1, 2, 3, 4], "data_column": [1, 2, 3, 4]}) + + delta = PolarsComparator(join_columns=["id"]).compare(expected, observed) + assert len(delta.rows.added) == 1 + assert len(delta.cols.added) == 1 + assert len(delta.rows.equal) == 3 + + +def test_tabular_text(): + row1 = ["Just", "first", "row", Cell(["Two", "Rows"], rowspan=2)] + row2 = [Cell(["Second\nRow"], colspan=3), "BottomRight"] + + print("\nDefault border:") + print(Table.from_lists([row1, row2]).to_string()) + + print("\nDIY border:") + inner_border = Border(",,,, | ,, + , + ,, ---,, + , + ,, + ,,,,") + print(Table.from_lists([row1, row2], inner_border).to_string()) + + assert Table.from_lists([row1, row2]).to_string() == ( + "โ”โ”โ”โ”โ”โ”ฏโ”โ”โ”โ”โ”โ”ฏโ”โ”โ”โ”ฏโ”โ”โ”โ”โ”ฏโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n" + + "โ”ƒJustโ”‚firstโ”‚rowโ”‚Two โ”‚ โ”ƒ\n" + + "โ” โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”คRowsโ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”จ\n" + + "โ”ƒSecond โ”‚ โ”‚BottomRightโ”ƒ\n" + + "โ”ƒRow โ”‚ โ”‚ โ”ƒ\n" + + "โ”—โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ทโ”โ”โ”โ”โ”ทโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”›" + ) + assert Table.from_lists([row1, row2], inner_border).to_string() == ( + "Just | first | row | Two | \n" + + "---- + ----- + --- + Rows + -----------\n" + + "Second | | BottomRight\n" + + "Row | | " + ) + + +class AssertingFormatter: + @staticmethod + def format(delta: TabularDelta) -> None: + type_chgs = chain.from_iterable( + (delta.cols.comparable_type_changed, delta.cols.incomparable_type_changed) + ) + changes = [ + [f"Removed column {c.name}" for c in delta.cols.removed], + [f"Added column {c.name}" for c in delta.cols.added], + [f"Renamed {c.old.name} -> {c.new.name}" for c in delta.cols.renamed], + [f"{c.new.name} changed: {c.old.type} -> {c.new.type}" for c in type_chgs], + ["New rows"] * (len(delta.rows.added) > 0), + ["Missing rows"] * (len(delta.rows.removed) > 0), + ["Changed rows"] * (len(delta.rows.unequal) > 0), + ] + if flat_changes := list(chain.from_iterable(changes)): + raise AssertionError("\n - ".join(flat_changes)) + + +def test_example(): + expected = pd.DataFrame({"id": [1, 2, 3]}) + # observed = ... + observed = pd.DataFrame({"key": [1, 2, 3, 4], "data": ["a", "b", "c", "d"]}) + + delta = PandasComparator().compare(expected, expected) + AssertingFormatter.format(delta) + delta = PandasComparator().compare(observed, observed) + AssertingFormatter.format(delta) + + try: + delta = PandasComparator().compare(expected, observed) + AssertingFormatter.format(delta) + raise AssertionError("No Assertion Error Raised") + except AssertionError as e: + assert str(e) == "Added column data\n - Renamed id -> key\n - New rows" diff --git a/tests/test_formatters.py b/tests/test_formatters.py new file mode 100644 index 0000000..cadd77b --- /dev/null +++ b/tests/test_formatters.py @@ -0,0 +1,201 @@ +# Copyright (c) QuantCo 2022-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo + +from __future__ import annotations + +from typing import Any + +import numpy as np +import pandas as pd +from numpy import ( + dtype, + ndarray, +) + +from tabulardelta import ( + DetailedTextFormatter, + OverviewRowFormatter, +) +from tabulardelta.comparators.tabulardelta_dataclasses import ( + Column, + ColumnPair, + TabularDelta, +) + + +def get_random_tabulardelta(gen: np.random.Generator): + def gen_str() -> str: + return "".join(gen.choice(list("abcdefghijklmnopqrstuvwxyz"), size=6)) + + def gen_dtype(exclude: str | None = None) -> str: + dtypes = ["int64", "float64", "object", "bool"] + if exclude: + dtypes = [dtype for dtype in dtypes if dtype != exclude] + return gen.choice(dtypes) + + def gen_col_meta() -> Column: + return Column(f"col_{gen_str()}", gen_dtype()) + + def gen_col_values(dtype: str, size: int) -> ndarray[Any, dtype[Any]]: + if dtype == "int64": + return gen.normal(0, 10 ** gen.integers(0, 10), size).astype("int") + if dtype == "float64": + return gen.normal(0, 10 ** gen.integers(0, 10), size) + if dtype == "object": + return np.array([gen_str() for _ in range(size)]) + if dtype == "bool": + return gen.choice([True, False], size) + if dtype == "uint64": + return gen.integers(0, 10 ** gen.integers(0, 8), size) + 1 + raise NotImplementedError(f"Random data for {dtype}") + + def gen_rows(cols: int, rows: int) -> list[dict[str, Any]]: + columns = [gen_str() for _ in range(cols)] + types = [gen_dtype() for _ in range(cols)] + values = [[gen_col_values(t, rows)[0] for t in types] for _ in range(rows)] + return [dict(zip(columns, value)) for value in values] + + def gen_chg_values( + chg: ColumnPair, join_columns: list[Column], incomparable: bool = False + ) -> ColumnPair: + if chg.old is None or chg.new is None: + raise ValueError("Can't generate values for non-matched columns.") + size = gen.integers(0, 2 ** gen.integers(0, 10)) + old_renamed = Column( + chg.old.name + ("_old" if chg.old.name == chg.new.name else ""), + chg.old.type, + ) + indexes = {col.name: gen_col_values(col.type, size) for col in join_columns} + df = pd.DataFrame( + { + old_renamed.name: gen_col_values(chg.old.type, size), + chg.new.name: gen_col_values(chg.new.type, size), + **indexes, + "_count": gen_col_values("uint64", size).astype("int"), + } + ) + if gen.random() < 0.5: + additional = gen.integers(0, 10 ** gen.integers(0, 8)) + df.loc[len(df)] = [None] * (2 + len(join_columns)) + [additional] + df["_count"] = df["_count"].astype("int") + return ColumnPair(chg.old, chg.new, incomparable=incomparable, _values=df) + + def gen_change() -> ColumnPair: + old = gen_col_meta() + new = old + if gen.random() < 0.1: # RENAMED COLUMN + new = Column(f"col_{gen_str()}", new.type) + if gen.random() < 0.1: # CHANGED DTYPE + new = Column(new.name, gen_dtype(new.type)) + return ColumnPair(old, new) + + strings = ["", "short", "LongRepeatingString" * 50] + name = gen.choice(strings) + warnings = list(gen.choice(strings, int(gen.exponential(3)))) + + common = [gen_change() for _ in range(int(gen.exponential(10)))] + added_cols = [gen_col_meta() for _ in range(int(gen.exponential(5)))] + removed_cols = [gen_col_meta() for _ in range(int(gen.exponential(5)))] + join_len = gen.integers(0, len(common) + 1) + join_cols: list[Column] = list( + gen.choice(np.array([chg.new for chg in common]), join_len, False) + ) + dtype_changes_raw = [ + chg for chg in common if chg.old and chg.new and chg.old.type != chg.new.type + ] + uncomp_candidates = [chg for chg in dtype_changes_raw if chg.new not in join_cols] + uncomp_len = gen.integers(0, len(uncomp_candidates) + 1) + uncomp = gen.choice(np.array(uncomp_candidates), uncomp_len, False) + type_changes: list[ColumnPair] = [ + ( + gen_chg_values(chg, join_cols, True) + if (len(uncomp) > 0 and chg in uncomp) + else chg + ) + for chg in dtype_changes_raw + ] + + diff_candidates: list[ColumnPair] = [ + chg + for chg in common + if (len(uncomp) == 0 or chg not in uncomp) and chg.new not in join_cols + ] + diff_len = gen.integers(0, len(diff_candidates) + 1) + diff_cols = gen.choice(np.array(diff_candidates), diff_len, False) + col_differences = [gen_chg_values(chg, join_cols) for chg in diff_cols] + + diff_counts = [len(chg) for chg in col_differences] + unequal_rows = gen.integers(max(diff_counts, default=0), sum(diff_counts) + 1) + + added_rows = int(gen.exponential(10 ** gen.integers(10))) + removed_rows = int(gen.exponential(10 ** gen.integers(10))) + equal_rows = int(gen.exponential(10 ** gen.integers(10))) + unknown_rows = int(gen.exponential(10 ** gen.integers(10))) + old_rows = removed_rows + equal_rows + unequal_rows + unknown_rows + new_rows = added_rows + equal_rows + unequal_rows + unknown_rows + + added = [ColumnPair(None, col) for col in added_cols] + removed = [ColumnPair(col, None) for col in removed_cols] + join = [ColumnPair(col, col, True) for col in join_cols] + + return TabularDelta( + name, + f"{name}_old" if gen.random() < 0.5 else None, + [], + warnings, + [], + added + removed + join + type_changes + col_differences, + old_rows, + new_rows, + added_rows, + removed_rows, + equal_rows, + unequal_rows, + _example_added_rows=gen_rows( + gen.choice([1, 5, 15]), gen.choice([0, 10, min(added_rows, 100)]) + ), + _example_removed_rows=gen_rows( + gen.choice([1, 5, 15]), gen.choice([0, 10, min(removed_rows, 100)]) + ), + ) + + +def test_random_tabulardelta_smoke(): + print(len(get_random_tabulardelta(np.random.default_rng(42)).rows.unequal)) + + +def test_detailed_text_formatter_smoke(sample_size: int = 100): + for idx in range(sample_size): + delta = get_random_tabulardelta(np.random.default_rng(idx)) + try: + print(DetailedTextFormatter().format(delta)) + except Exception as e: + print(f"Failed on index {idx}/{sample_size}:") + print(delta) + raise e + if idx % 100 == 0: + print(f"Completed {idx}/{sample_size}") + + +def test_row_formatter_smoke(sample_size: int = 10): + for idx in range(sample_size): + gen = np.random.default_rng(idx) + size = gen.integers(0, 20) + deltas = [get_random_tabulardelta(gen) for _ in range(size)] + try: + rf = OverviewRowFormatter( + gen.choice([True, False]), gen.choice([True, False]) + ) + if gen.choice([True, False]): + rf.add_header() + for delta in deltas: + rf.format(delta) + if gen.choice([True, False]): + rf.add_legend() + print(rf.table()) + except Exception as e: + print(f"Failed on index {idx}/{sample_size}:") + print(deltas) + raise e + if idx % 10 == 0: + print(f"Completed {idx}/{sample_size}") diff --git a/tests/test_tabular_text.py b/tests/test_tabular_text.py new file mode 100644 index 0000000..c51f2e6 --- /dev/null +++ b/tests/test_tabular_text.py @@ -0,0 +1,141 @@ +# Copyright (c) QuantCo 2022-2024 +# SPDX-License-Identifier: LicenseRef-QuantCo + +from __future__ import annotations + +from tabulardelta.formatters.tabulartext.cell import Align, Cell +from tabulardelta.formatters.tabulartext.table import Border, Table + + +def test_empty() -> None: + table = Table.from_lists([]) + assert table.to_string(add_border=False) == "" + assert str(table) == "" + + table = Table.from_lists([[]]) + assert table.to_string(add_border=False) == "" + assert str(table) == "" + + table = Table.from_lists([[""]]) + assert table.to_string(add_border=False) == "" + assert str(table) == "โ”โ”“\nโ”ƒโ”ƒ\nโ”—โ”›" + + table = Table.from_lists([[], []]) + assert table.to_string(add_border=False) == "" + assert str(table) == "" + + table = Table.from_lists([[], [], [Cell()]]) + assert table.to_string(add_border=False) == "" + assert str(table) == "โ”โ”“\nโ”—โ”›" + + table = Table.from_lists([[""], [], [], [""]]) + assert table.to_string(add_border=False) == "\n" + assert str(table) == "โ”โ”“\nโ”ƒโ”ƒ\nโ” โ”จ\nโ”ƒโ”ƒ\nโ”—โ”›" + + +def test_table() -> None: + content: list[list[str | Cell]] = [ + [Cell(["This"], colspan=2)], + ["", Cell(["is"], colspan=2)], + ["", "", Cell(["a"], colspan=2)], + [ + "m\nu\nl\nt\ni\nline", + "", + Cell(["\n\n\ncolspan\nis\n3"], rowspan=3), + Cell(["test"], colspan=2), + ], + ["..."], + ["colspan\nends\nhere", "->\n->\n->"], + ["A", "B", "C", "D", "E"], + [ + Cell([], rowspan=3), + "", + Cell(["."], align=Align.Repeat(), rowspan=3, colspan=3), + ], + [], + [Cell([])], + ["The end.", ""], + ] + table = Table.from_lists(content) + assert str(table) == ( + "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฏโ”โ”โ”โ”โ”โ”โ”โ”ฏโ”โ”ฏโ”โ”โ”ฏโ”“\n" + "โ”ƒThis โ”‚ โ”‚ โ”‚ โ”‚โ”ƒ\n" + "โ” โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”ผโ”€โ”€โ”ผโ”จ\n" + "โ”ƒ โ”‚is โ”‚ โ”‚ โ”‚โ”ƒ\n" + "โ” โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”ผโ”€โ”€โ”ผโ”จ\n" + "โ”ƒ โ”‚ โ”‚a โ”‚ โ”‚โ”ƒ\n" + "โ” โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”ดโ”€โ”€โ”ผโ”จ\n" + "โ”ƒm โ”‚ โ”‚ โ”‚testโ”‚โ”ƒ\n" + "โ”ƒu โ”‚ โ”‚ โ”‚ โ”‚โ”ƒ\n" + "โ”ƒl โ”‚ โ”‚ โ”‚ โ”‚โ”ƒ\n" + "โ”ƒt โ”‚ โ”‚colspanโ”‚ โ”‚โ”ƒ\n" + "โ”ƒi โ”‚ โ”‚is โ”‚ โ”‚โ”ƒ\n" + "โ”ƒline โ”‚ โ”‚3 โ”‚ โ”‚โ”ƒ\n" + "โ” โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”ฌโ”€โ”€โ”ผโ”จ\n" + "โ”ƒ... โ”‚ โ”‚ โ”‚ โ”‚ โ”‚โ”ƒ\n" + "โ” โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”ผโ”€โ”€โ”ผโ”จ\n" + "โ”ƒcolspanโ”‚-> โ”‚ โ”‚ โ”‚ โ”‚โ”ƒ\n" + "โ”ƒends โ”‚-> โ”‚ โ”‚ โ”‚ โ”‚โ”ƒ\n" + "โ”ƒhere โ”‚-> โ”‚ โ”‚ โ”‚ โ”‚โ”ƒ\n" + "โ” โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”ผโ”€โ”€โ”ผโ”จ\n" + "โ”ƒA โ”‚B โ”‚C โ”‚Dโ”‚E โ”‚โ”ƒ\n" + "โ” โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”ดโ”€โ”€โ”ผโ”จ\n" + "โ”ƒ โ”‚ โ”‚............โ”‚โ”ƒ\n" + "โ”ƒ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค............โ”œโ”จ\n" + "โ”ƒ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค............โ”œโ”จ\n" + "โ”ƒ โ”‚The end.โ”‚............โ”‚โ”ƒ\n" + "โ”—โ”โ”โ”โ”โ”โ”โ”โ”ทโ”โ”โ”โ”โ”โ”โ”โ”โ”ทโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ทโ”›" + ) + + +def test_only_vertical_borders() -> None: + content: list[list[str | Cell]] = [ + [Cell(["This"], colspan=2)], + ["", Cell(["is"], colspan=2)], + ["", "", Cell(["a"], colspan=2)], + [ + "m\nu\nl\nt\ni\nline", + "", + Cell(["\n\n\ncolspan\nis\n3"], rowspan=3), + Cell(["test"], colspan=2), + ], + ["..."], + ["colspan\nends\nhere", "->\n->\n->"], + ["A", "B", "C", "D", "E"], + [ + Cell([], rowspan=3), + "", + Cell(["."], align=Align.Repeat(), rowspan=3, colspan=3), + ], + [], + ["The end.", ""], + ] + border = Border( + """ + โ”,.โ”, โ”ฏ, โ”“,.โ”‚, +.โ” ,.โ”ฌ,.โ”ค,.โ”ƒ,.โ”€, +.โ”ƒ,.โ”œ,.โ”ด,.โ”จ,.โ”ผ, + โ”—, โ”ท,.โ”, โ”› +""" + ) + table = Table.from_lists(content, border) + assert str(table) == ( + "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฏโ”โ”โ”โ”โ”โ”โ”โ”ฏโ”โ”ฏโ”โ”โ”ฏโ”“\n" + "โ”ƒThis โ”‚ โ”‚ โ”‚ โ”‚โ”ƒ\n" + "โ”ƒ โ”‚is โ”‚ โ”‚ โ”‚โ”ƒ\n" + "โ”ƒ โ”‚ โ”‚a โ”‚ โ”‚โ”ƒ\n" + "โ”ƒm โ”‚ โ”‚ โ”‚testโ”‚โ”ƒ\n" + "โ”ƒu โ”‚ โ”‚ โ”‚ โ”‚โ”ƒ\n" + "โ”ƒl โ”‚ โ”‚ โ”‚ โ”‚โ”ƒ\n" + "โ”ƒt โ”‚ โ”‚colspanโ”‚ โ”‚โ”ƒ\n" + "โ”ƒi โ”‚ โ”‚is โ”‚ โ”‚โ”ƒ\n" + "โ”ƒline โ”‚ โ”‚3 โ”‚ โ”‚โ”ƒ\n" + "โ”ƒ... โ”‚ โ”‚ โ”‚ โ”‚ โ”‚โ”ƒ\n" + "โ”ƒcolspanโ”‚-> โ”‚ โ”‚ โ”‚ โ”‚โ”ƒ\n" + "โ”ƒends โ”‚-> โ”‚ โ”‚ โ”‚ โ”‚โ”ƒ\n" + "โ”ƒhere โ”‚-> โ”‚ โ”‚ โ”‚ โ”‚โ”ƒ\n" + "โ”ƒA โ”‚B โ”‚C โ”‚Dโ”‚E โ”‚โ”ƒ\n" + "โ”ƒ โ”‚ โ”‚............โ”‚โ”ƒ\n" + "โ”ƒ โ”‚The end.โ”‚............โ”‚โ”ƒ\n" + "โ”—โ”โ”โ”โ”โ”โ”โ”โ”ทโ”โ”โ”โ”โ”โ”โ”โ”โ”ทโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ทโ”›" + )