This is an automated email from the ASF dual-hosted git repository. kevinjqliu pushed a commit to branch iceberg-mirror-sa1 in repository https://gitbox.apache.org/repos/asf/iceberg-python.git
commit e687fb5bb125b75833e43b777156d29c401f931d Merge: 9fcb77d2 b0a78781 Author: Kevin Liu <[email protected]> AuthorDate: Wed Dec 24 12:08:09 2025 -0800 Merge remote-tracking branch 'origin/main' into iceberg-mirror-sa1 .asf.yaml | 5 +- .github/dependabot.yml | 2 +- .github/workflows/check-md-link.yml | 3 +- .github/workflows/license_check.yml | 2 +- .github/workflows/nightly-pypi-build.yml | 37 +- .github/workflows/pypi-build-artifacts.yml | 15 +- .github/workflows/python-ci-docs.yml | 6 +- .github/workflows/python-ci.yml | 10 +- .github/workflows/python-release-docs.yml | 6 +- .github/workflows/python-release.yml | 16 +- .github/workflows/stale.yml | 2 +- .github/workflows/svn-build-artifacts.yml | 12 +- .pre-commit-config.yaml | 4 +- MANIFEST.in | 20 +- Makefile | 62 +- build-module.py | 71 - dev/.rat-excludes | 2 +- dev/hive/Dockerfile | 20 +- mkdocs/docs/api.md | 6 +- mkdocs/docs/cli.md | 36 +- mkdocs/docs/configuration.md | 44 + mkdocs/docs/contributing.md | 56 +- mkdocs/docs/how-to-release.md | 10 +- mkdocs/gen_doc_stubs.py | 4 +- poetry.lock | 6742 -------------------- pyiceberg/avro/codecs/__init__.py | 8 +- pyiceberg/avro/decoder.py | 18 +- pyiceberg/avro/file.py | 40 +- pyiceberg/avro/reader.py | 22 +- pyiceberg/avro/resolver.py | 157 +- pyiceberg/avro/writer.py | 13 +- pyiceberg/catalog/__init__.py | 145 +- pyiceberg/catalog/bigquery_metastore.py | 48 +- pyiceberg/catalog/dynamodb.py | 60 +- pyiceberg/catalog/glue.py | 89 +- pyiceberg/catalog/hive.py | 74 +- pyiceberg/catalog/noop.py | 44 +- pyiceberg/catalog/rest/__init__.py | 105 +- pyiceberg/catalog/rest/auth.py | 46 +- pyiceberg/catalog/rest/response.py | 18 +- pyiceberg/catalog/sql.py | 44 +- pyiceberg/cli/console.py | 19 +- pyiceberg/cli/output.py | 22 +- pyiceberg/conversions.py | 52 +- pyiceberg/expressions/__init__.py | 602 +- pyiceberg/expressions/literals.py | 4 +- pyiceberg/expressions/parser.py | 4 +- pyiceberg/expressions/visitors.py | 370 +- pyiceberg/io/__init__.py | 25 +- pyiceberg/io/fsspec.py | 15 +- pyiceberg/io/pyarrow.py | 529 +- pyiceberg/manifest.py | 116 +- pyiceberg/partitioning.py | 50 +- pyiceberg/schema.py | 279 +- pyiceberg/serializers.py | 2 +- pyiceberg/table/__init__.py | 217 +- pyiceberg/table/inspect.py | 75 +- pyiceberg/table/locations.py | 9 +- pyiceberg/table/metadata.py | 98 +- pyiceberg/table/name_mapping.py | 124 +- pyiceberg/table/puffin.py | 20 +- pyiceberg/table/refs.py | 8 +- pyiceberg/table/snapshots.py | 47 +- pyiceberg/table/sorting.py | 15 +- pyiceberg/table/statistics.py | 14 +- pyiceberg/table/update/__init__.py | 126 +- pyiceberg/table/update/schema.py | 127 +- pyiceberg/table/update/snapshot.py | 140 +- pyiceberg/table/update/sorting.py | 14 +- pyiceberg/table/update/spec.py | 34 +- pyiceberg/table/update/statistics.py | 4 +- pyiceberg/table/update/validate.py | 30 +- pyiceberg/table/upsert_util.py | 4 +- pyiceberg/transforms.py | 126 +- pyiceberg/typedef.py | 36 +- pyiceberg/types.py | 55 +- pyiceberg/utils/bin_packing.py | 17 +- pyiceberg/utils/concurrent.py | 7 +- pyiceberg/utils/config.py | 15 +- pyiceberg/utils/decimal.py | 5 +- pyiceberg/utils/deprecated.py | 9 +- pyiceberg/utils/lazydict.py | 17 +- pyiceberg/utils/properties.py | 18 +- pyiceberg/utils/schema_conversion.py | 45 +- pyiceberg/utils/singleton.py | 6 +- pyiceberg/utils/truncate.py | 5 +- pyproject.toml | 594 +- ruff.toml | 4 +- setup.py | 90 + tests/avro/test_decoder.py | 6 +- tests/avro/test_reader.py | 2 +- tests/avro/test_resolver.py | 3 +- tests/catalog/integration_test_dynamodb.py | 6 +- tests/catalog/integration_test_glue.py | 9 +- tests/catalog/test_base.py | 3 +- tests/catalog/test_dynamodb.py | 5 +- tests/catalog/test_glue.py | 5 +- tests/catalog/test_hive.py | 3 +- tests/catalog/test_rest.py | 93 +- tests/catalog/test_sql.py | 3 +- tests/conftest.py | 77 +- tests/expressions/test_evaluator.py | 4 +- tests/expressions/test_expressions.py | 268 +- tests/expressions/test_literals.py | 11 +- tests/expressions/test_parser.py | 3 + tests/expressions/test_visitors.py | 86 +- tests/integration/test_add_files.py | 101 +- tests/integration/test_catalog.py | 6 +- tests/integration/test_delete_count.py | 4 +- tests/integration/test_deletes.py | 4 +- tests/integration/test_inspect_table.py | 33 +- tests/integration/test_partitioning_key.py | 8 +- tests/integration/test_reads.py | 16 + tests/integration/test_rest_manifest.py | 6 +- .../test_writes/test_partitioned_writes.py | 4 +- tests/integration/test_writes/test_writes.py | 46 +- tests/integration/test_writes/utils.py | 4 +- tests/io/test_fsspec.py | 5 +- tests/io/test_pyarrow.py | 280 +- tests/io/test_pyarrow_stats.py | 25 +- tests/io/test_pyarrow_visitor.py | 39 +- tests/table/test_expire_snapshots.py | 40 +- tests/table/test_init.py | 8 +- tests/table/test_locations.py | 6 +- tests/table/test_metadata.py | 38 +- tests/table/test_partitioning.py | 36 + tests/table/test_puffin.py | 3 +- tests/table/test_sorting.py | 4 +- tests/test_avro_sanitization.py | 16 +- tests/test_conversions.py | 4 +- tests/test_schema.py | 117 +- tests/test_serializers.py | 6 +- tests/test_transforms.py | 177 +- tests/test_types.py | 7 +- tests/utils/test_bin_packing.py | 9 +- tests/utils/test_concurrent.py | 4 +- tests/utils/test_config.py | 8 +- tests/utils/test_manifest.py | 9 +- tests/utils/test_schema_conversion.py | 8 +- uv.lock | 5343 ++++++++++++++++ 140 files changed, 9182 insertions(+), 10197 deletions(-) diff --cc .github/workflows/pypi-build-artifacts.yml index 56d81076,a3f6006b..02748877 --- a/.github/workflows/pypi-build-artifacts.yml +++ b/.github/workflows/pypi-build-artifacts.yml @@@ -45,10 -45,9 +45,10 @@@ jobs 3.10 3.11 3.12 + 3.13 - - name: Install poetry - run: make install-poetry + - name: Install UV + uses: astral-sh/setup-uv@v7 - name: Set version with RC env: diff --cc .github/workflows/python-ci.yml index b3b5cb3d,2b3682cc..e909640f --- a/.github/workflows/python-ci.yml +++ b/.github/workflows/python-ci.yml @@@ -47,10 -47,10 +47,10 @@@ jobs runs-on: ubuntu-latest strategy: matrix: - python: ['3.10', '3.11', '3.12'] + python: ['3.10', '3.11', '3.12', '3.13'] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: actions/setup-python@v6 with: python-version: ${{ matrix.python }} diff --cc .github/workflows/svn-build-artifacts.yml index 36fac96e,62d37990..e1065d44 --- a/.github/workflows/svn-build-artifacts.yml +++ b/.github/workflows/svn-build-artifacts.yml @@@ -45,10 -45,9 +45,10 @@@ jobs 3.10 3.11 3.12 + 3.13 - - name: Install poetry - run: make install-poetry + - name: Install UV + uses: astral-sh/setup-uv@v7 # Publish the source distribution with the version that's in # the repository, otherwise the tests will fail diff --cc pyproject.toml index c86b5f68,9bca14c5..1c856cd1 --- a/pyproject.toml +++ b/pyproject.toml @@@ -347,8 -158,8 +158,10 @@@ markers = # Turns a warning into an error filterwarnings = [ "error", + # Ignore Python version deprecation warning from google.api_core while we still support 3.10 + "ignore:You are using a Python version.*which Google will stop supporting:FutureWarning:google.api_core", + # Python 3.13 sqlite3 module ResourceWarnings for unclosed database connections + "ignore:unclosed database in <sqlite3.Connection object*:ResourceWarning", ] [tool.black]
