From 8ea69cc2e29d271107da0fadee9dc265820441c3 Mon Sep 17 00:00:00 2001 From: Kevin Liu Date: Tue, 16 Sep 2025 10:27:46 -0700 Subject: [PATCH 1/4] use command from python --- Makefile | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index fe080764de..13a9185ac0 100644 --- a/Makefile +++ b/Makefile @@ -23,10 +23,15 @@ COVERAGE ?= 0 # Set COVERAGE=1 to enable coverage: make test COVERAGE=1 COVERAGE_FAIL_UNDER ?= 85 # Minimum coverage % to pass: make coverage-report COVERAGE_FAIL_UNDER=70 KEEP_COMPOSE ?= 0 # Set KEEP_COMPOSE=1 to keep containers after integration tests +PIP = python -m pip + +POETRY_VERSION = 2.1.4 +POETRY = python -m poetry + ifeq ($(COVERAGE),1) - TEST_RUNNER = poetry run coverage run --parallel-mode --source=pyiceberg -m + TEST_RUNNER = $(POETRY) run coverage run --parallel-mode --source=pyiceberg -m else - TEST_RUNNER = poetry run + TEST_RUNNER = $(POETRY) run endif ifeq ($(KEEP_COMPOSE),1) @@ -35,8 +40,6 @@ else CLEANUP_COMMAND = docker compose -f dev/docker-compose-integration.yml down -v --remove-orphans 2>/dev/null || true endif -POETRY_VERSION = 2.1.4 - # ============ # Help Section # ============ @@ -53,21 +56,21 @@ help: ## Display this help message ##@ Setup install-poetry: ## Ensure Poetry is installed at the specified version - @if ! command -v poetry &> /dev/null; then \ + @if ! command -v ${POETRY} &> /dev/null; then \ echo "Poetry not found. Installing..."; \ - pip install --user poetry==$(POETRY_VERSION); \ + ${PIP} install --user poetry==$(POETRY_VERSION); \ else \ - INSTALLED_VERSION=$$(pip show poetry | grep Version | awk '{print $$2}'); \ + INSTALLED_VERSION=$$(${PIP} show poetry | grep Version | awk '{print $$2}'); \ if [ "$$INSTALLED_VERSION" != "$(POETRY_VERSION)" ]; then \ echo "Updating Poetry to version $(POETRY_VERSION)..."; \ - pip install --user --upgrade poetry==$(POETRY_VERSION); \ + ${PIP} install --user --upgrade poetry==$(POETRY_VERSION); \ else \ echo "Poetry version $(POETRY_VERSION) already installed."; \ fi; \ fi install-dependencies: ## Install all dependencies including extras - poetry install --all-extras + $(POETRY) install --all-extras install: install-poetry install-dependencies ## Install Poetry and dependencies @@ -81,7 +84,7 @@ check-license: ## Check license headers ./dev/check-license lint: ## Run code linters via pre-commit - poetry run pre-commit run --all-files + $(POETRY) run pre-commit run --all-files # =============== # Testing Section @@ -132,10 +135,10 @@ test-coverage: COVERAGE=1 test-coverage: test test-integration test-s3 test-adls test-gcs coverage-report ## Run all tests with coverage and report coverage-report: ## Combine and report coverage - poetry run coverage combine - poetry run coverage report -m --fail-under=$(COVERAGE_FAIL_UNDER) - poetry run coverage html - poetry run coverage xml + ${POETRY} run coverage combine + ${POETRY} run coverage report -m --fail-under=$(COVERAGE_FAIL_UNDER) + ${POETRY} run coverage html + ${POETRY} run coverage xml # ================ # Documentation @@ -144,13 +147,13 @@ coverage-report: ## Combine and report coverage ##@ Documentation docs-install: ## Install docs dependencies - poetry install --with docs + ${POETRY} install --with docs docs-serve: ## Serve local docs preview (hot reload) - poetry run mkdocs serve -f mkdocs/mkdocs.yml + ${POETRY} run mkdocs serve -f mkdocs/mkdocs.yml docs-build: ## Build the static documentation site - poetry run mkdocs build -f mkdocs/mkdocs.yml --strict + ${POETRY} run mkdocs build -f mkdocs/mkdocs.yml --strict # =================== # Project Maintenance From 92007bc81fecfa1521ec2427bdadc78c11b211f4 Mon Sep 17 00:00:00 2001 From: Kevin Liu Date: Tue, 16 Sep 2025 10:44:43 -0700 Subject: [PATCH 2/4] install python before poetry --- .github/workflows/python-ci-docs.yml | 4 ++-- .github/workflows/python-ci.yml | 4 ++-- .github/workflows/python-release-docs.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/python-ci-docs.yml b/.github/workflows/python-ci-docs.yml index 5517e0323b..a2c08bd3e5 100644 --- a/.github/workflows/python-ci-docs.yml +++ b/.github/workflows/python-ci-docs.yml @@ -36,11 +36,11 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Install poetry - run: make install-poetry - uses: actions/setup-python@v6 with: python-version: 3.12 + - name: Install poetry + run: make install-poetry - name: Install run: make docs-install - name: Build docs diff --git a/.github/workflows/python-ci.yml b/.github/workflows/python-ci.yml index 86e1ce72e7..a79daa597c 100644 --- a/.github/workflows/python-ci.yml +++ b/.github/workflows/python-ci.yml @@ -51,11 +51,11 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Install poetry - run: make install-poetry - uses: actions/setup-python@v6 with: python-version: ${{ matrix.python }} + - name: Install poetry + run: make install-poetry - name: Install system dependencies run: sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos - name: Install diff --git a/.github/workflows/python-release-docs.yml b/.github/workflows/python-release-docs.yml index 6c372cdb50..c76aeab2bd 100644 --- a/.github/workflows/python-release-docs.yml +++ b/.github/workflows/python-release-docs.yml @@ -31,11 +31,11 @@ jobs: steps: - uses: actions/checkout@v5 - - name: Install poetry - run: make install-poetry - uses: actions/setup-python@v6 with: python-version: ${{ matrix.python }} + - name: Install poetry + run: make install-poetry - name: Install docs run: make docs-install - name: Build docs From f6e09fa26f60d137c2c6c0ffd5aaccc29606be93 Mon Sep 17 00:00:00 2001 From: Kevin Liu Date: Tue, 16 Sep 2025 22:01:41 -0700 Subject: [PATCH 3/4] run ci with windows --- .github/workflows/python-ci.yml | 125 +++++++++++++++++++------------- 1 file changed, 76 insertions(+), 49 deletions(-) diff --git a/.github/workflows/python-ci.yml b/.github/workflows/python-ci.yml index a79daa597c..46e1b1c2ee 100644 --- a/.github/workflows/python-ci.yml +++ b/.github/workflows/python-ci.yml @@ -43,66 +43,93 @@ concurrency: cancel-in-progress: ${{ github.event_name == 'pull_request' }} jobs: - lint-and-test: - runs-on: ubuntu-22.04 + # lint-and-test: + # runs-on: ubuntu-22.04 + # strategy: + # matrix: + # python: ['3.9', '3.10', '3.11', '3.12'] + + # steps: + # - uses: actions/checkout@v5 + # - uses: actions/setup-python@v6 + # with: + # python-version: ${{ matrix.python }} + # - name: Install poetry + # run: make install-poetry + # - name: Install system dependencies + # run: sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos + # - name: Install + # run: make install-dependencies + # - name: Run linters + # run: make lint + # - name: Run unit tests with coverage + # run: COVERAGE=1 make test + # - name: Generate coverage report (85%) # Coverage threshold should only increase over time — never decrease it! + # run: COVERAGE_FAIL_UNDER=85 make coverage-report + + # integration-test: + # runs-on: ubuntu-22.04 + # strategy: + # matrix: + # python: ['3.9', '3.10', '3.11', '3.12'] + + # steps: + # - uses: actions/checkout@v5 + # - name: Install system dependencies + # run: sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos + # - name: Install + # run: make install + + # - name: Run integration tests with coverage + # run: COVERAGE=1 make test-integration + # - name: Show debug logs + # if: ${{ failure() }} + # run: docker compose -f dev/docker-compose.yml logs + + # - name: Run s3 integration tests with coverage + # run: COVERAGE=1 make test-s3 + # - name: Show debug logs + # if: ${{ failure() }} + # run: docker compose -f dev/docker-compose.yml logs + + # - name: Run adls integration tests with coverage + # run: COVERAGE=1 make test-adls + # - name: Show debug logs + # if: ${{ failure() }} + # run: docker compose -f dev/docker-compose-azurite.yml logs + + # - name: Run gcs integration tests with coverage + # run: COVERAGE=1 make test-gcs + # - name: Show debug logs + # if: ${{ failure() }} + # run: docker compose -f dev/docker-compose-gcs-server.yml logs + + # - name: Generate coverage report (75%) # Coverage threshold should only increase over time — never decrease it! + # run: COVERAGE_FAIL_UNDER=75 make coverage-report + + make-test-windows: + runs-on: windows-2022 strategy: matrix: - python: ['3.9', '3.10', '3.11', '3.12'] + python: ['3.12'] steps: - uses: actions/checkout@v5 + - name: Install Make + run: choco install make + shell: powershell - uses: actions/setup-python@v6 with: python-version: ${{ matrix.python }} - name: Install poetry run: make install-poetry - - name: Install system dependencies - run: sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos - - name: Install + shell: bash + - name: Install dependencies run: make install-dependencies - - name: Run linters - run: make lint + shell: bash - name: Run unit tests with coverage run: COVERAGE=1 make test - - name: Generate coverage report (85%) # Coverage threshold should only increase over time — never decrease it! + shell: bash + - name: Generate coverage report (85%) run: COVERAGE_FAIL_UNDER=85 make coverage-report - - integration-test: - runs-on: ubuntu-22.04 - strategy: - matrix: - python: ['3.9', '3.10', '3.11', '3.12'] - - steps: - - uses: actions/checkout@v5 - - name: Install system dependencies - run: sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos - - name: Install - run: make install - - - name: Run integration tests with coverage - run: COVERAGE=1 make test-integration - - name: Show debug logs - if: ${{ failure() }} - run: docker compose -f dev/docker-compose.yml logs - - - name: Run s3 integration tests with coverage - run: COVERAGE=1 make test-s3 - - name: Show debug logs - if: ${{ failure() }} - run: docker compose -f dev/docker-compose.yml logs - - - name: Run adls integration tests with coverage - run: COVERAGE=1 make test-adls - - name: Show debug logs - if: ${{ failure() }} - run: docker compose -f dev/docker-compose-azurite.yml logs - - - name: Run gcs integration tests with coverage - run: COVERAGE=1 make test-gcs - - name: Show debug logs - if: ${{ failure() }} - run: docker compose -f dev/docker-compose-gcs-server.yml logs - - - name: Generate coverage report (75%) # Coverage threshold should only increase over time — never decrease it! - run: COVERAGE_FAIL_UNDER=75 make coverage-report + shell: bash From 522771c9b278934c1323d1901be4f1d2d0e6b2b0 Mon Sep 17 00:00:00 2001 From: Kevin Liu Date: Tue, 16 Sep 2025 22:08:04 -0700 Subject: [PATCH 4/4] dont install kerberos for windows --- poetry.lock | 84 +++++++++++++++++++++++++------------------------- pyproject.toml | 3 +- 2 files changed, 44 insertions(+), 43 deletions(-) diff --git a/poetry.lock b/poetry.lock index cf1f270228..8498bddee7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.4 and should not be changed by hand. [[package]] name = "adlfs" @@ -59,7 +59,7 @@ description = "Happy Eyeballs for asyncio" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"adlfs\" or extra == \"gcsfs\" or extra == \"s3fs\"" +markers = "extra == \"s3fs\" or extra == \"adlfs\" or extra == \"gcsfs\"" files = [ {file = "aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8"}, {file = "aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558"}, @@ -72,7 +72,7 @@ description = "Async http client/server framework (asyncio)" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"adlfs\" or extra == \"gcsfs\" or extra == \"s3fs\"" +markers = "extra == \"s3fs\" or extra == \"adlfs\" or extra == \"gcsfs\"" files = [ {file = "aiohttp-3.12.12-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6f25e9d274d6abbb15254f76f100c3984d6b9ad6e66263cc60a465dd5c7e48f5"}, {file = "aiohttp-3.12.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b8ec3c1a1c13d24941b5b913607e57b9364e4c0ea69d5363181467492c4b2ba6"}, @@ -202,7 +202,7 @@ description = "aiosignal: a list of registered asynchronous callbacks" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "(extra == \"adlfs\" or extra == \"gcsfs\" or extra == \"s3fs\") and (extra == \"adlfs\" or extra == \"gcsfs\" or extra == \"s3fs\" or extra == \"ray\")" +markers = "extra == \"ray\" or extra == \"s3fs\" or extra == \"adlfs\" or extra == \"gcsfs\"" files = [ {file = "aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5"}, {file = "aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54"}, @@ -254,7 +254,7 @@ description = "Timeout context manager for asyncio programs" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "(extra == \"adlfs\" or extra == \"gcsfs\" or extra == \"s3fs\") and python_version <= \"3.10\"" +markers = "(extra == \"s3fs\" or extra == \"adlfs\" or extra == \"gcsfs\") and python_version <= \"3.10\"" files = [ {file = "async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c"}, {file = "async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3"}, @@ -271,7 +271,7 @@ files = [ {file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3"}, {file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b"}, ] -markers = {main = "(extra == \"adlfs\" or extra == \"gcsfs\" or extra == \"s3fs\") and (extra == \"adlfs\" or extra == \"gcsfs\" or extra == \"s3fs\" or extra == \"ray\")"} +markers = {main = "extra == \"ray\" or extra == \"s3fs\" or extra == \"adlfs\" or extra == \"gcsfs\""} [package.extras] benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] @@ -530,7 +530,7 @@ files = [ {file = "boto3-1.40.18-py3-none-any.whl", hash = "sha256:daa776ba1251a7458c9d6c7627873d0c2460c8e8272d35759065580e9193700a"}, {file = "boto3-1.40.18.tar.gz", hash = "sha256:64301d39adecc154e3e595eaf0d4f28998ef0a5551f1d033aeac51a9e1a688e5"}, ] -markers = {main = "extra == \"dynamodb\" or extra == \"glue\" or extra == \"rest-sigv4\""} +markers = {main = "extra == \"glue\" or extra == \"dynamodb\" or extra == \"rest-sigv4\""} [package.dependencies] botocore = ">=1.40.18,<1.41.0" @@ -551,14 +551,14 @@ files = [ {file = "botocore-1.40.18-py3-none-any.whl", hash = "sha256:57025c46ca00cf8cec25de07a759521bfbfb3036a0f69b272654a354615dc45f"}, {file = "botocore-1.40.18.tar.gz", hash = "sha256:afd69bdadd8c55cc89d69de0799829e555193a352d87867f746e19020271cc0f"}, ] -markers = {main = "extra == \"dynamodb\" or extra == \"glue\" or extra == \"rest-sigv4\" or extra == \"s3fs\""} +markers = {main = "extra == \"glue\" or extra == \"dynamodb\" or extra == \"rest-sigv4\" or extra == \"s3fs\""} [package.dependencies] jmespath = ">=0.7.1,<2.0.0" python-dateutil = ">=2.1,<3.0.0" urllib3 = [ - {version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""}, {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""}, + {version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""}, ] [package.extras] @@ -1601,7 +1601,7 @@ description = "A list-like structure which implements collections.abc.MutableSeq optional = true python-versions = ">=3.9" groups = ["main"] -markers = "(extra == \"adlfs\" or extra == \"gcsfs\" or extra == \"s3fs\") and (extra == \"adlfs\" or extra == \"gcsfs\" or extra == \"s3fs\" or extra == \"ray\")" +markers = "extra == \"ray\" or extra == \"s3fs\" or extra == \"adlfs\" or extra == \"gcsfs\"" files = [ {file = "frozenlist-1.7.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cc4df77d638aa2ed703b878dd093725b72a824c3c546c076e8fdf276f78ee84a"}, {file = "frozenlist-1.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:716a9973a2cc963160394f701964fe25012600f3d311f60c790400b00e568b61"}, @@ -1800,7 +1800,7 @@ description = "Google API client core library" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"gcsfs\" or extra == \"bigquery\"" +markers = "extra == \"bigquery\" or extra == \"gcsfs\"" files = [ {file = "google_api_core-2.25.0-py3-none-any.whl", hash = "sha256:1db79d1281dcf9f3d10023283299ba38f3dc9f639ec41085968fd23e5bcf512e"}, {file = "google_api_core-2.25.0.tar.gz", hash = "sha256:9b548e688702f82a34ed8409fb8a6961166f0b7795032f0be8f48308dff4333a"}, @@ -1810,16 +1810,16 @@ files = [ google-auth = ">=2.14.1,<3.0.0" googleapis-common-protos = ">=1.56.2,<2.0.0" grpcio = [ - {version = ">=1.33.2,<2.0.0", optional = true, markers = "extra == \"grpc\""}, {version = ">=1.49.1,<2.0.0", optional = true, markers = "python_version >= \"3.11\" and extra == \"grpc\""}, + {version = ">=1.33.2,<2.0.0", optional = true, markers = "python_version < \"3.11\" and extra == \"grpc\""}, ] grpcio-status = [ - {version = ">=1.33.2,<2.0.0", optional = true, markers = "extra == \"grpc\""}, {version = ">=1.49.1,<2.0.0", optional = true, markers = "python_version >= \"3.11\" and extra == \"grpc\""}, + {version = ">=1.33.2,<2.0.0", optional = true, markers = "extra == \"grpc\""}, ] proto-plus = [ - {version = ">=1.22.3,<2.0.0"}, {version = ">=1.25.0,<2.0.0", markers = "python_version >= \"3.13\""}, + {version = ">=1.22.3,<2.0.0"}, ] protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<7.0.0" requests = ">=2.18.0,<3.0.0" @@ -1837,7 +1837,7 @@ description = "Google Authentication Library" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"gcsfs\" or extra == \"bigquery\" or extra == \"gcp-auth\"" +markers = "extra == \"gcp-auth\" or extra == \"bigquery\" or extra == \"gcsfs\"" files = [ {file = "google_auth-2.40.3-py2.py3-none-any.whl", hash = "sha256:1370d4593e86213563547f97a92752fc658456fe4514c809544f330fed45a7ca"}, {file = "google_auth-2.40.3.tar.gz", hash = "sha256:500c3a29adedeb36ea9cf24b8d10858e152f2412e3ca37829b3fa18e33d63b77"}, @@ -1919,7 +1919,7 @@ description = "Google Cloud API client core library" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"gcsfs\" or extra == \"bigquery\"" +markers = "extra == \"bigquery\" or extra == \"gcsfs\"" files = [ {file = "google_cloud_core-2.4.3-py2.py3-none-any.whl", hash = "sha256:5130f9f4c14b4fafdff75c79448f9495cfade0d8775facf1b09c3bf67e027f6e"}, {file = "google_cloud_core-2.4.3.tar.gz", hash = "sha256:1fab62d7102844b278fe6dead3af32408b1df3eb06f5c7e8634cbd40edc4da53"}, @@ -1964,7 +1964,7 @@ description = "A python wrapper of the C library 'Google CRC32C'" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"gcsfs\" or extra == \"bigquery\"" +markers = "extra == \"bigquery\" or extra == \"gcsfs\"" files = [ {file = "google_crc32c-1.7.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:b07d48faf8292b4db7c3d64ab86f950c2e94e93a11fd47271c28ba458e4a0d76"}, {file = "google_crc32c-1.7.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:7cc81b3a2fbd932a4313eb53cc7d9dde424088ca3a0337160f35d91826880c1d"}, @@ -2012,7 +2012,7 @@ description = "Utilities for Google Media Downloads and Resumable Uploads" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"gcsfs\" or extra == \"bigquery\"" +markers = "extra == \"bigquery\" or extra == \"gcsfs\"" files = [ {file = "google_resumable_media-2.7.2-py2.py3-none-any.whl", hash = "sha256:3ce7551e9fe6d99e9a126101d2536612bb73486721951e9562fee0f90c6ababa"}, {file = "google_resumable_media-2.7.2.tar.gz", hash = "sha256:5280aed4629f2b60b847b0d42f9857fd4935c11af266744df33d8074cae92fe0"}, @@ -2032,7 +2032,7 @@ description = "Common protobufs used in Google APIs" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"bigquery\" or extra == \"gcsfs\" or python_version <= \"3.10\" and (extra == \"gcsfs\" or extra == \"bigquery\")" +markers = "extra == \"bigquery\" or extra == \"gcsfs\"" files = [ {file = "googleapis_common_protos-1.70.0-py3-none-any.whl", hash = "sha256:b8bfcca8c25a2bb253e0e0b0adaf8c00773e5e6af6fd92397576680b807e0fd8"}, {file = "googleapis_common_protos-1.70.0.tar.gz", hash = "sha256:0e1b44e0ea153e6594f9f394fef15193a68aaaea2d843f83e2742717ca753257"}, @@ -2066,7 +2066,7 @@ description = "Lightweight in-process concurrent programming" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "python_version < \"3.14\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\") and (extra == \"sql-postgres\" or extra == \"sql-sqlite\")" +markers = "(platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\") and (extra == \"sql-postgres\" or extra == \"sql-sqlite\") and python_version <= \"3.13\"" files = [ {file = "greenlet-3.2.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:1afd685acd5597349ee6d7a88a8bec83ce13c106ac78c196ee9dde7c04fe87be"}, {file = "greenlet-3.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:761917cac215c61e9dc7324b2606107b3b292a8349bdebb31503ab4de3f559ac"}, @@ -2475,7 +2475,7 @@ files = [ {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"}, {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, ] -markers = {main = "extra == \"dynamodb\" or extra == \"glue\" or extra == \"rest-sigv4\" or extra == \"s3fs\""} +markers = {main = "extra == \"glue\" or extra == \"dynamodb\" or extra == \"rest-sigv4\" or extra == \"s3fs\""} [[package]] name = "joserfc" @@ -2602,7 +2602,7 @@ description = "Kerberos high-level interface" optional = true python-versions = "*" groups = ["main"] -markers = "extra == \"hive-kerberos\"" +markers = "sys_platform != \"win32\" and extra == \"hive-kerberos\"" files = [ {file = "kerberos-1.3.1-cp27-cp27m-macosx_11_1_x86_64.whl", hash = "sha256:98a695c072efef535cb2b5f98e474d00671588859a94ec96c2c1508a113ff3aa"}, {file = "kerberos-1.3.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:2e03c6a9d201d4aab5f899bfb8150de15335955bfce8ca43bfe9a41d7aae54dc"}, @@ -3375,7 +3375,7 @@ description = "multidict implementation" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"adlfs\" or extra == \"gcsfs\" or extra == \"s3fs\"" +markers = "extra == \"s3fs\" or extra == \"adlfs\" or extra == \"gcsfs\"" files = [ {file = "multidict-6.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8adee3ac041145ffe4488ea73fa0a622b464cc25340d98be76924d0cda8545ff"}, {file = "multidict-6.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b61e98c3e2a861035aaccd207da585bdcacef65fe01d7a0d07478efac005e028"}, @@ -3686,7 +3686,7 @@ description = "Fundamental package for array computing in Python" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "python_version < \"3.10\" and (extra == \"bodo\" or extra == \"pandas\" or extra == \"ray\")" +markers = "python_version < \"3.10\" and (extra == \"pandas\" or extra == \"ray\" or extra == \"bodo\")" files = [ {file = "numpy-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:51129a29dbe56f9ca83438b706e2e69a39892b5eda6cedcb6b0c9fdc9b0d3ece"}, {file = "numpy-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f15975dfec0cf2239224d80e32c3170b1d168335eaedee69da84fbe9f1f9cd04"}, @@ -3742,7 +3742,7 @@ description = "Fundamental package for array computing in Python" optional = true python-versions = ">=3.10" groups = ["main"] -markers = "python_version >= \"3.10\" and (extra == \"bodo\" or extra == \"pandas\" or extra == \"ray\")" +markers = "python_version >= \"3.10\" and (extra == \"pandas\" or extra == \"ray\" or extra == \"bodo\")" files = [ {file = "numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb"}, {file = "numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90"}, @@ -3865,7 +3865,7 @@ files = [ {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, ] -markers = {main = "(extra == \"bigquery\" or extra == \"hf\") and (extra == \"bigquery\" or extra == \"hf\" or extra == \"ray\")"} +markers = {main = "extra == \"ray\" or extra == \"bigquery\" or extra == \"hf\""} [[package]] name = "paginate" @@ -3890,7 +3890,7 @@ description = "Powerful data structures for data analysis, time series, and stat optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"bodo\" or extra == \"pandas\" or extra == \"ray\"" +markers = "extra == \"pandas\" or extra == \"ray\" or extra == \"bodo\"" files = [ {file = "pandas-2.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52bc29a946304c360561974c6542d1dd628ddafa69134a7131fdfd6a5d7a1a35"}, {file = "pandas-2.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:220cc5c35ffaa764dd5bb17cf42df283b5cb7fdf49e10a7b053a06c9cb48ee2b"}, @@ -3938,9 +3938,9 @@ files = [ [package.dependencies] numpy = [ - {version = ">=1.22.4", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2", markers = "python_version == \"3.11\""}, {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -4111,7 +4111,7 @@ description = "Accelerated property cache" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"adlfs\" or extra == \"gcsfs\" or extra == \"s3fs\"" +markers = "extra == \"s3fs\" or extra == \"adlfs\" or extra == \"gcsfs\"" files = [ {file = "propcache-0.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:22d9962a358aedbb7a2e36187ff273adeaab9743373a272976d2e348d08c7770"}, {file = "propcache-0.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0d0fda578d1dc3f77b6b5a5dce3b9ad69a8250a891760a548df850a5e8da87f3"}, @@ -4220,7 +4220,7 @@ description = "Beautiful, Pythonic protocol buffers" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "python_version < \"3.12\" and (extra == \"gcsfs\" or extra == \"bigquery\") or extra == \"bigquery\" or extra == \"gcsfs\"" +markers = "extra == \"bigquery\" or extra == \"gcsfs\"" files = [ {file = "proto_plus-1.26.1-py3-none-any.whl", hash = "sha256:13285478c2dcf2abb829db158e1047e2f1e8d63a077d94263c2b88b043c75a66"}, {file = "proto_plus-1.26.1.tar.gz", hash = "sha256:21a515a4c4c0088a773899e23c7bbade3d18f9c66c73edd4c7ee3816bc96a012"}, @@ -4239,7 +4239,7 @@ description = "" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "(extra == \"gcsfs\" or extra == \"bigquery\") and (extra == \"gcsfs\" or extra == \"bigquery\" or extra == \"ray\")" +markers = "extra == \"ray\" or extra == \"bigquery\" or extra == \"gcsfs\"" files = [ {file = "protobuf-6.31.1-cp310-abi3-win32.whl", hash = "sha256:7fa17d5a29c2e04b7d90e5e32388b8bfd0e7107cd8e616feef7ed3fa6bdab5c9"}, {file = "protobuf-6.31.1-cp310-abi3-win_amd64.whl", hash = "sha256:426f59d2964864a1a366254fa703b8632dcec0790d8862d30034d8245e1cd447"}, @@ -4406,7 +4406,7 @@ description = "Python library for Apache Arrow" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"bodo\" or extra == \"daft\" or extra == \"datafusion\" or extra == \"duckdb\" or extra == \"pandas\" or extra == \"pyarrow\" or extra == \"ray\"" +markers = "extra == \"pyarrow\" or extra == \"pandas\" or extra == \"duckdb\" or extra == \"ray\" or extra == \"bodo\" or extra == \"daft\" or extra == \"datafusion\"" files = [ {file = "pyarrow-19.0.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:fc28912a2dc924dddc2087679cc8b7263accc71b9ff025a1362b004711661a69"}, {file = "pyarrow-19.0.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:fca15aabbe9b8355800d923cc2e82c8ef514af321e18b437c3d782aa884eaeec"}, @@ -4462,7 +4462,7 @@ description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"gcsfs\" or extra == \"bigquery\" or extra == \"gcp-auth\"" +markers = "extra == \"gcp-auth\" or extra == \"bigquery\" or extra == \"gcsfs\"" files = [ {file = "pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629"}, {file = "pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034"}, @@ -4475,7 +4475,7 @@ description = "A collection of ASN.1-based protocols modules" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"gcsfs\" or extra == \"bigquery\" or extra == \"gcp-auth\"" +markers = "extra == \"gcp-auth\" or extra == \"bigquery\" or extra == \"gcsfs\"" files = [ {file = "pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a"}, {file = "pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6"}, @@ -4960,7 +4960,7 @@ description = "World timezone definitions, modern and historical" optional = true python-versions = "*" groups = ["main"] -markers = "extra == \"bodo\" or extra == \"pandas\" or extra == \"ray\"" +markers = "extra == \"pandas\" or extra == \"ray\" or extra == \"bodo\"" files = [ {file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00"}, {file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3"}, @@ -5519,7 +5519,7 @@ description = "Pure-Python RSA implementation" optional = true python-versions = "<4,>=3.6" groups = ["main"] -markers = "extra == \"gcsfs\" or extra == \"bigquery\" or extra == \"gcp-auth\"" +markers = "extra == \"gcp-auth\" or extra == \"bigquery\" or extra == \"gcsfs\"" files = [ {file = "rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762"}, {file = "rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75"}, @@ -5561,7 +5561,7 @@ files = [ {file = "s3transfer-0.13.1-py3-none-any.whl", hash = "sha256:a981aa7429be23fe6dfc13e80e4020057cbab622b08c0315288758d67cabc724"}, {file = "s3transfer-0.13.1.tar.gz", hash = "sha256:c3fdba22ba1bd367922f27ec8032d6a1cf5f10c934fb5d68cf60fd5a23d936cf"}, ] -markers = {main = "extra == \"dynamodb\" or extra == \"glue\" or extra == \"rest-sigv4\""} +markers = {main = "extra == \"glue\" or extra == \"dynamodb\" or extra == \"rest-sigv4\""} [package.dependencies] botocore = ">=1.37.4,<2.0a.0" @@ -5993,7 +5993,7 @@ description = "Fast, Extensible Progress Meter" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"daft\" or extra == \"hf\"" +markers = "extra == \"hf\" or extra == \"daft\"" files = [ {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, @@ -6044,7 +6044,7 @@ description = "Provider of IANA time zone data" optional = true python-versions = ">=2" groups = ["main"] -markers = "extra == \"bodo\" or extra == \"pandas\" or extra == \"ray\"" +markers = "extra == \"pandas\" or extra == \"ray\" or extra == \"bodo\"" files = [ {file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8"}, {file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"}, @@ -6278,7 +6278,7 @@ description = "Yet another URL library" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"adlfs\" or extra == \"gcsfs\" or extra == \"s3fs\"" +markers = "extra == \"s3fs\" or extra == \"adlfs\" or extra == \"gcsfs\"" files = [ {file = "yarl-1.20.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6032e6da6abd41e4acda34d75a816012717000fa6839f37124a47fcefc49bec4"}, {file = "yarl-1.20.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2c7b34d804b8cf9b214f05015c4fee2ebe7ed05cf581e7192c06555c71f4446a"}, @@ -6554,4 +6554,4 @@ zstandard = ["zstandard"] [metadata] lock-version = "2.1" python-versions = "^3.9.2, !=3.9.7" -content-hash = "e88d9855b6de9f6c28d928e1be2ff05af18c9d58dfe0122ba79d7ccc13c5549f" +content-hash = "395495d73516a824257ef55344b11a54379bf771624295629d1a0edb3610f2d2" diff --git a/pyproject.toml b/pyproject.toml index 1f54c29059..6feef8ed59 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -87,7 +87,8 @@ cachetools = ">=5.5,<7.0" pyiceberg-core = { version = ">=0.5.1,<0.7.0", optional = true } polars = { version = "^1.21.0", optional = true } thrift-sasl = { version = ">=0.4.3", optional = true } -kerberos = {version = "^1.3.1", optional = true} +# kerberos does not build / work on Windows. Only include on non-Windows platforms. +kerberos = { version = "^1.3.1", optional = true, markers = "sys_platform != 'win32'" } datafusion = { version = ">=45", optional = true } [tool.poetry.group.dev.dependencies]