This is an automated email from the ASF dual-hosted git repository.
fokko pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg-python.git
The following commit(s) were added to refs/heads/main by this push:
new b98de518 infra: upgrade pytest and use pytest_lazy_fixtures (#2978)
b98de518 is described below
commit b98de5189db19b1f6a6bdce3ef786f9fe8773502
Author: Kevin Liu <[email protected]>
AuthorDate: Sat Feb 7 14:25:54 2026 -0500
infra: upgrade pytest and use pytest_lazy_fixtures (#2978)
<!--
Thanks for opening a pull request!
-->
<!-- In the case this PR will resolve an issue, please replace
${GITHUB_ISSUE_ID} below with the actual Github issue id. -->
<!-- Closes #${GITHUB_ISSUE_ID} -->
# Rationale for this change
Closes #2810, #393
Relates to #2743
This PR upgrades `pytest` to `9.0.2`. In doing so, we also had to switch
`pytest-lazy-fixture` to `pytest-lazy-fixtures` (notice the extra s)
which is a maintained version
https://github.com/dev-petrov/pytest-lazy-fixtures
Changed all references of `pytest_lazyfixture` to the new
`pytest_lazy_fixtures`
## Are these changes tested?
## Are there any user-facing changes?
<!-- In the case of user-facing changes, please add the changelog label.
-->
---
pyproject.toml | 4 +-
tests/catalog/test_catalog_behaviors.py | 10 +--
tests/conftest.py | 22 +++--
tests/integration/test_catalog.py | 13 +--
tests/integration/test_inspect_table.py | 3 +-
tests/integration/test_partition_evolution.py | 85 +++++++++----------
tests/integration/test_reads.py | 103 ++++++++++++------------
tests/integration/test_rest_catalog.py | 9 ++-
tests/integration/test_snapshot_operations.py | 15 ++--
tests/integration/test_sort_order_update.py | 41 +++++-----
tests/integration/test_statistics_operations.py | 3 +-
tests/integration/test_writes/test_writes.py | 9 ++-
tests/table/test_init.py | 5 +-
uv.lock | 21 ++---
14 files changed, 176 insertions(+), 167 deletions(-)
diff --git a/pyproject.toml b/pyproject.toml
index a0e7f12e..adbbd4fe 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -100,10 +100,10 @@ entra-auth = ["azure-identity>=1.25.1"]
[dependency-groups]
dev = [
- "pytest==7.4.4",
+ "pytest==9.0.2",
"pytest-checkdocs==2.14.0",
"prek>=0.2.1,<0.4",
- "pytest-lazy-fixture==0.6.3",
+ "pytest-lazy-fixtures==1.4.0",
"fastavro==1.12.1",
"coverage[toml]>=7.4.2,<8",
"requests-mock==1.12.1",
diff --git a/tests/catalog/test_catalog_behaviors.py
b/tests/catalog/test_catalog_behaviors.py
index 21508a8f..01e0d2ce 100644
--- a/tests/catalog/test_catalog_behaviors.py
+++ b/tests/catalog/test_catalog_behaviors.py
@@ -26,7 +26,7 @@ from typing import Any
import pyarrow as pa
import pytest
from pydantic_core import ValidationError
-from pytest_lazyfixture import lazy_fixture
+from pytest_lazy_fixtures import lf
from sqlalchemy.exc import IntegrityError
from pyiceberg.catalog import Catalog
@@ -323,10 +323,10 @@ def test_write_pyarrow_schema(catalog: Catalog,
test_table_identifier: Identifie
@pytest.mark.parametrize(
"schema,expected",
[
- (lazy_fixture("pyarrow_schema_simple_without_ids"),
lazy_fixture("iceberg_schema_simple_no_ids")),
- (lazy_fixture("table_schema_simple"),
lazy_fixture("table_schema_simple")),
- (lazy_fixture("table_schema_nested"),
lazy_fixture("table_schema_nested")),
- (lazy_fixture("pyarrow_schema_nested_without_ids"),
lazy_fixture("iceberg_schema_nested_no_ids")),
+ (lf("pyarrow_schema_simple_without_ids"),
lf("iceberg_schema_simple_no_ids")),
+ (lf("table_schema_simple"), lf("table_schema_simple")),
+ (lf("table_schema_nested"), lf("table_schema_nested")),
+ (lf("pyarrow_schema_nested_without_ids"),
lf("iceberg_schema_nested_no_ids")),
],
)
def test_convert_schema_if_needed(
diff --git a/tests/conftest.py b/tests/conftest.py
index 801c1e86..4de0a190 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -45,7 +45,7 @@ import boto3
import pytest
from moto import mock_aws
from pydantic_core import to_json
-from pytest_lazyfixture import lazy_fixture
+from pytest_lazy_fixtures import lf
from pyiceberg.catalog import Catalog, load_catalog
from pyiceberg.catalog.memory import InMemoryCatalog
@@ -3080,11 +3080,10 @@ def fixed_test_table_namespace() -> Identifier:
@pytest.fixture(
- scope="session",
params=[
- lazy_fixture("fixed_test_table_identifier"),
- lazy_fixture("random_table_identifier"),
- lazy_fixture("random_hierarchical_identifier"),
+ lf("fixed_test_table_identifier"),
+ lf("random_table_identifier"),
+ lf("random_hierarchical_identifier"),
],
)
def test_table_identifier(request: pytest.FixtureRequest) -> Identifier:
@@ -3092,11 +3091,10 @@ def test_table_identifier(request:
pytest.FixtureRequest) -> Identifier:
@pytest.fixture(
- scope="session",
params=[
- lazy_fixture("another_fixed_test_table_identifier"),
- lazy_fixture("another_random_table_identifier"),
- lazy_fixture("another_random_hierarchical_identifier"),
+ lf("another_fixed_test_table_identifier"),
+ lf("another_random_table_identifier"),
+ lf("another_random_hierarchical_identifier"),
],
)
def another_table_identifier(request: pytest.FixtureRequest) -> Identifier:
@@ -3105,9 +3103,9 @@ def another_table_identifier(request:
pytest.FixtureRequest) -> Identifier:
@pytest.fixture(
params=[
- lazy_fixture("database_name"),
- lazy_fixture("hierarchical_namespace_name"),
- lazy_fixture("fixed_test_table_namespace"),
+ lf("database_name"),
+ lf("hierarchical_namespace_name"),
+ lf("fixed_test_table_namespace"),
],
)
def test_namespace(request: pytest.FixtureRequest) -> Identifier:
diff --git a/tests/integration/test_catalog.py
b/tests/integration/test_catalog.py
index c164bed8..130d5cd7 100644
--- a/tests/integration/test_catalog.py
+++ b/tests/integration/test_catalog.py
@@ -21,6 +21,7 @@ from collections.abc import Generator
from pathlib import Path, PosixPath
import pytest
+from pytest_lazy_fixtures import lf
from pyiceberg.catalog import Catalog, MetastoreCatalog, load_catalog
from pyiceberg.catalog.hive import HiveCatalog
@@ -109,12 +110,12 @@ def hive_catalog() -> Generator[Catalog, None, None]:
CATALOGS = [
- pytest.lazy_fixture("memory_catalog"),
- pytest.lazy_fixture("sqlite_catalog_memory"),
- pytest.lazy_fixture("sqlite_catalog_file"),
- pytest.lazy_fixture("rest_catalog"),
- pytest.lazy_fixture("hive_catalog"),
- pytest.lazy_fixture("rest_test_catalog"),
+ lf("memory_catalog"),
+ lf("sqlite_catalog_memory"),
+ lf("sqlite_catalog_file"),
+ lf("rest_catalog"),
+ lf("hive_catalog"),
+ lf("rest_test_catalog"),
]
diff --git a/tests/integration/test_inspect_table.py
b/tests/integration/test_inspect_table.py
index b40ba7e1..03d4437d 100644
--- a/tests/integration/test_inspect_table.py
+++ b/tests/integration/test_inspect_table.py
@@ -24,6 +24,7 @@ import pyarrow as pa
import pytest
import pytz
from pyspark.sql import DataFrame, SparkSession
+from pytest_lazy_fixtures import lf
from pyiceberg.catalog import Catalog
from pyiceberg.exceptions import NoSuchTableError
@@ -672,7 +673,7 @@ def test_inspect_partitions_partitioned_with_filter(spark:
SparkSession, session
@pytest.mark.integration
[email protected]("catalog", [pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog")])
def test_inspect_partitions_partitioned_transform_with_filter(spark:
SparkSession, catalog: Catalog) -> None:
for table_name, predicate, partition_predicate in [
("test_partitioned_by_identity", "ts >= '2023-03-05T00:00:00+00:00'",
"ts >= '2023-03-05T00:00:00+00:00'"),
diff --git a/tests/integration/test_partition_evolution.py
b/tests/integration/test_partition_evolution.py
index 2444e187..2afc5ceb 100644
--- a/tests/integration/test_partition_evolution.py
+++ b/tests/integration/test_partition_evolution.py
@@ -17,6 +17,7 @@
# pylint:disable=redefined-outer-name
import pytest
+from pytest_lazy_fixtures import lf
from pyiceberg.catalog import Catalog
from pyiceberg.exceptions import NoSuchTableError
@@ -78,7 +79,7 @@ def _create_table_with_schema(
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_identity_partition(catalog: Catalog, table_schema_simple: Schema)
-> None:
simple_table = _simple_table(catalog, table_schema_simple)
simple_table.update_spec().add_identity("foo").commit()
@@ -90,7 +91,7 @@ def test_add_identity_partition(catalog: Catalog,
table_schema_simple: Schema) -
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_year(catalog: Catalog) -> None:
table = _table(catalog)
table.update_spec().add_field("event_ts", YearTransform(),
"year_transform").commit()
@@ -98,7 +99,7 @@ def test_add_year(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_year_generates_default_name(catalog: Catalog) -> None:
table = _table(catalog)
table.update_spec().add_field("event_ts", YearTransform()).commit()
@@ -106,7 +107,7 @@ def test_add_year_generates_default_name(catalog: Catalog)
-> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_month(catalog: Catalog) -> None:
table = _table(catalog)
table.update_spec().add_field("event_ts", MonthTransform(),
"month_transform").commit()
@@ -114,7 +115,7 @@ def test_add_month(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_month_generates_default_name(catalog: Catalog) -> None:
table = _table(catalog)
table.update_spec().add_field("event_ts", MonthTransform()).commit()
@@ -122,7 +123,7 @@ def test_add_month_generates_default_name(catalog: Catalog)
-> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_day(catalog: Catalog) -> None:
table = _table(catalog)
table.update_spec().add_field("event_ts", DayTransform(),
"day_transform").commit()
@@ -130,7 +131,7 @@ def test_add_day(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_day_generates_default_name(catalog: Catalog) -> None:
table = _table(catalog)
table.update_spec().add_field("event_ts", DayTransform()).commit()
@@ -138,7 +139,7 @@ def test_add_day_generates_default_name(catalog: Catalog)
-> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_hour(catalog: Catalog) -> None:
table = _table(catalog)
table.update_spec().add_field("event_ts", HourTransform(),
"hour_transform").commit()
@@ -146,7 +147,7 @@ def test_add_hour(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_hour_string_transform(catalog: Catalog) -> None:
table = _table(catalog)
table.update_spec().add_field("event_ts", "hour",
"str_hour_transform").commit()
@@ -154,7 +155,7 @@ def test_add_hour_string_transform(catalog: Catalog) ->
None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_hour_generates_default_name(catalog: Catalog) -> None:
table = _table(catalog)
table.update_spec().add_field("event_ts", HourTransform()).commit()
@@ -162,7 +163,7 @@ def test_add_hour_generates_default_name(catalog: Catalog)
-> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_bucket(catalog: Catalog, table_schema_simple: Schema) -> None:
simple_table = _create_table_with_schema(catalog, table_schema_simple, "1")
simple_table.update_spec().add_field("foo", BucketTransform(12),
"bucket_transform").commit()
@@ -170,7 +171,7 @@ def test_add_bucket(catalog: Catalog, table_schema_simple:
Schema) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_bucket_generates_default_name(catalog: Catalog,
table_schema_simple: Schema) -> None:
simple_table = _create_table_with_schema(catalog, table_schema_simple, "1")
simple_table.update_spec().add_field("foo", BucketTransform(12)).commit()
@@ -178,7 +179,7 @@ def test_add_bucket_generates_default_name(catalog:
Catalog, table_schema_simple
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_truncate(catalog: Catalog, table_schema_simple: Schema) -> None:
simple_table = _create_table_with_schema(catalog, table_schema_simple, "1")
simple_table.update_spec().add_field("foo", TruncateTransform(1),
"truncate_transform").commit()
@@ -188,7 +189,7 @@ def test_add_truncate(catalog: Catalog,
table_schema_simple: Schema) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_truncate_generates_default_name(catalog: Catalog,
table_schema_simple: Schema) -> None:
simple_table = _create_table_with_schema(catalog, table_schema_simple, "1")
simple_table.update_spec().add_field("foo", TruncateTransform(1)).commit()
@@ -196,7 +197,7 @@ def test_add_truncate_generates_default_name(catalog:
Catalog, table_schema_simp
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_multiple_adds(catalog: Catalog) -> None:
table = _table(catalog)
table.update_spec().add_identity("id").add_field("event_ts",
HourTransform(), "hourly_partitioned").add_field(
@@ -214,7 +215,7 @@ def test_multiple_adds(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_void(catalog: Catalog, table_schema_simple: Schema) -> None:
simple_table = _create_table_with_schema(catalog, table_schema_simple, "1")
simple_table.update_spec().add_field("foo", VoidTransform(),
"void_transform").commit()
@@ -222,7 +223,7 @@ def test_add_void(catalog: Catalog, table_schema_simple:
Schema) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_void_generates_default_name(catalog: Catalog,
table_schema_simple: Schema) -> None:
simple_table = _create_table_with_schema(catalog, table_schema_simple, "1")
simple_table.update_spec().add_field("foo", VoidTransform()).commit()
@@ -230,7 +231,7 @@ def test_add_void_generates_default_name(catalog: Catalog,
table_schema_simple:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_hour_to_day(catalog: Catalog) -> None:
table = _table(catalog)
table.update_spec().add_field("event_ts", DayTransform(),
"daily_partitioned").commit()
@@ -246,7 +247,7 @@ def test_add_hour_to_day(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_add_multiple_buckets(catalog: Catalog) -> None:
table = _table(catalog)
table.update_spec().add_field("id", BucketTransform(16)).add_field("id",
BucketTransform(4)).commit()
@@ -261,7 +262,7 @@ def test_add_multiple_buckets(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_remove_identity(catalog: Catalog) -> None:
table = _table(catalog)
table.update_spec().add_identity("id").commit()
@@ -274,7 +275,7 @@ def test_remove_identity(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_remove_identity_v2(catalog: Catalog) -> None:
table_v2 = _table_v2(catalog)
table_v2.update_spec().add_identity("id").commit()
@@ -285,7 +286,7 @@ def test_remove_identity_v2(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_remove_and_add_identity(catalog: Catalog) -> None:
table = _table(catalog)
table.update_spec().add_identity("id").commit()
@@ -302,7 +303,7 @@ def test_remove_and_add_identity(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_remove_and_add_identity_v2(catalog: Catalog) -> None:
table_v2 = _table_v2(catalog)
table_v2.update_spec().add_identity("id").commit()
@@ -317,7 +318,7 @@ def test_remove_and_add_identity_v2(catalog: Catalog) ->
None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_remove_bucket(catalog: Catalog) -> None:
table = _table(catalog)
with table.update_spec() as update:
@@ -338,7 +339,7 @@ def test_remove_bucket(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_remove_bucket_v2(catalog: Catalog) -> None:
table_v2 = _table_v2(catalog)
with table_v2.update_spec() as update:
@@ -353,7 +354,7 @@ def test_remove_bucket_v2(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_remove_day(catalog: Catalog) -> None:
table = _table(catalog)
with table.update_spec() as update:
@@ -374,7 +375,7 @@ def test_remove_day(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_remove_day_v2(catalog: Catalog) -> None:
table_v2 = _table_v2(catalog)
with table_v2.update_spec() as update:
@@ -389,7 +390,7 @@ def test_remove_day_v2(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_rename(catalog: Catalog) -> None:
table = _table(catalog)
table.update_spec().add_identity("id").commit()
@@ -400,7 +401,7 @@ def test_rename(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_cannot_add_and_remove(catalog: Catalog) -> None:
table = _table(catalog)
with pytest.raises(ValueError) as exc_info:
@@ -409,7 +410,7 @@ def test_cannot_add_and_remove(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_cannot_add_redundant_time_partition(catalog: Catalog) -> None:
table = _table(catalog)
with pytest.raises(ValueError) as exc_info:
@@ -420,7 +421,7 @@ def test_cannot_add_redundant_time_partition(catalog:
Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_cannot_delete_and_rename(catalog: Catalog) -> None:
table = _table(catalog)
with pytest.raises(ValueError) as exc_info:
@@ -430,7 +431,7 @@ def test_cannot_delete_and_rename(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_cannot_rename_and_delete(catalog: Catalog) -> None:
table = _table(catalog)
with pytest.raises(ValueError) as exc_info:
@@ -440,7 +441,7 @@ def test_cannot_rename_and_delete(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_cannot_add_same_tranform_for_same_field(catalog: Catalog) -> None:
table = _table(catalog)
with pytest.raises(ValueError) as exc_info:
@@ -451,7 +452,7 @@ def test_cannot_add_same_tranform_for_same_field(catalog:
Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_cannot_add_same_field_multiple_times(catalog: Catalog) -> None:
table = _table(catalog)
with pytest.raises(ValueError) as exc_info:
@@ -462,7 +463,7 @@ def test_cannot_add_same_field_multiple_times(catalog:
Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_cannot_add_multiple_specs_same_name(catalog: Catalog) -> None:
table = _table(catalog)
with pytest.raises(ValueError) as exc_info:
@@ -473,7 +474,7 @@ def test_cannot_add_multiple_specs_same_name(catalog:
Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_change_specs_and_schema_transaction(catalog: Catalog) -> None:
table = _table(catalog)
with table.transaction() as transaction:
@@ -506,7 +507,7 @@ def test_change_specs_and_schema_transaction(catalog:
Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_multiple_adds_and_remove_v1(catalog: Catalog) -> None:
table = _table(catalog)
with table.update_spec() as update:
@@ -528,7 +529,7 @@ def test_multiple_adds_and_remove_v1(catalog: Catalog) ->
None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_multiple_adds_and_remove_v2(catalog: Catalog) -> None:
table_v2 = _table_v2(catalog)
with table_v2.update_spec() as update:
@@ -542,7 +543,7 @@ def test_multiple_adds_and_remove_v2(catalog: Catalog) ->
None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_multiple_remove_and_add_reuses_v2(catalog: Catalog) -> None:
table_v2 = _table_v2(catalog)
with table_v2.update_spec() as update:
@@ -572,7 +573,7 @@ def _validate_new_partition_fields(
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_partition_schema_field_name_conflict(catalog: Catalog) -> None:
schema = Schema(
NestedField(1, "id", LongType(), required=False),
@@ -597,7 +598,7 @@ def test_partition_schema_field_name_conflict(catalog:
Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_partition_validation_during_table_creation(catalog: Catalog) -> None:
schema = Schema(
NestedField(1, "id", LongType(), required=False),
@@ -619,7 +620,7 @@ def
test_partition_validation_during_table_creation(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_schema_evolution_partition_conflict(catalog: Catalog) -> None:
schema = Schema(
NestedField(1, "id", LongType(), required=False),
diff --git a/tests/integration/test_reads.py b/tests/integration/test_reads.py
index fb63bee4..6c8b4a20 100644
--- a/tests/integration/test_reads.py
+++ b/tests/integration/test_reads.py
@@ -31,6 +31,7 @@ from hive_metastore.ttypes import LockRequest, LockResponse,
LockState, UnlockRe
from pyarrow.fs import S3FileSystem
from pydantic_core import ValidationError
from pyspark.sql import SparkSession
+from pytest_lazy_fixtures import lf
from pyiceberg.catalog import Catalog
from pyiceberg.catalog.hive import HiveCatalog, _HiveClient
@@ -84,7 +85,7 @@ def create_table(catalog: Catalog) -> Table:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_table_properties(catalog: Catalog) -> None:
table = create_table(catalog)
@@ -114,7 +115,7 @@ def test_table_properties(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive")])
[email protected]("catalog", [lf("session_catalog_hive")])
def test_hive_properties(catalog: Catalog) -> None:
table = create_table(catalog)
table.transaction().set_properties({"abc": "def", "p1":
"123"}).commit_transaction()
@@ -135,7 +136,7 @@ def test_hive_properties(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive")])
[email protected]("catalog", [lf("session_catalog_hive")])
def test_hive_preserves_hms_specific_properties(catalog: Catalog) -> None:
"""Test that HMS-specific table properties are preserved during table
commits.
@@ -212,7 +213,7 @@ def
test_iceberg_property_deletion_not_restored_from_old_hms_state(session_catal
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive")])
[email protected]("catalog", [lf("session_catalog_hive")])
def test_iceberg_metadata_is_source_of_truth(catalog: Catalog) -> None:
"""Test that Iceberg metadata is the source of truth for all
Iceberg-managed properties.
@@ -249,7 +250,7 @@ def test_iceberg_metadata_is_source_of_truth(catalog:
Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive")])
[email protected]("catalog", [lf("session_catalog_hive")])
def test_hive_critical_properties_always_from_iceberg(catalog: Catalog) ->
None:
"""Test that critical properties (EXTERNAL, table_type, metadata_location)
always come from Iceberg.
@@ -286,7 +287,7 @@ def
test_hive_critical_properties_always_from_iceberg(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive")])
[email protected]("catalog", [lf("session_catalog_hive")])
def test_hive_native_properties_cannot_be_deleted_via_iceberg(catalog:
Catalog) -> None:
"""Test that HMS-native properties (set outside Iceberg) cannot be deleted
via Iceberg.
@@ -346,7 +347,7 @@ def
test_hive_native_properties_cannot_be_deleted_via_iceberg(catalog: Catalog)
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_table_properties_dict(catalog: Catalog) -> None:
table = create_table(catalog)
@@ -376,7 +377,7 @@ def test_table_properties_dict(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_table_properties_error(catalog: Catalog) -> None:
table = create_table(catalog)
properties = {"abc": "def"}
@@ -386,7 +387,7 @@ def test_table_properties_error(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_pyarrow_nan(catalog: Catalog) -> None:
table_test_null_nan = catalog.load_table("default.test_null_nan")
arrow_table = table_test_null_nan.scan(row_filter=IsNaN("col_numeric"),
selected_fields=("idx", "col_numeric")).to_arrow()
@@ -396,7 +397,7 @@ def test_pyarrow_nan(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_pyarrow_nan_rewritten(catalog: Catalog) -> None:
table_test_null_nan_rewritten =
catalog.load_table("default.test_null_nan_rewritten")
arrow_table = table_test_null_nan_rewritten.scan(
@@ -408,7 +409,7 @@ def test_pyarrow_nan_rewritten(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
@pytest.mark.skip(reason="Fixing issues with NaN's:
https://github.com/apache/arrow/issues/34162")
def test_pyarrow_not_nan_count(catalog: Catalog) -> None:
table_test_null_nan = catalog.load_table("default.test_null_nan")
@@ -417,7 +418,7 @@ def test_pyarrow_not_nan_count(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_pyarrow_batches_nan(catalog: Catalog) -> None:
table_test_null_nan = catalog.load_table("default.test_null_nan")
arrow_batch_reader = table_test_null_nan.scan(
@@ -431,7 +432,7 @@ def test_pyarrow_batches_nan(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_pyarrow_batches_nan_rewritten(catalog: Catalog) -> None:
table_test_null_nan_rewritten =
catalog.load_table("default.test_null_nan_rewritten")
arrow_batch_reader = table_test_null_nan_rewritten.scan(
@@ -445,7 +446,7 @@ def test_pyarrow_batches_nan_rewritten(catalog: Catalog) ->
None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
@pytest.mark.skip(reason="Fixing issues with NaN's:
https://github.com/apache/arrow/issues/34162")
def test_pyarrow_batches_not_nan_count(catalog: Catalog) -> None:
table_test_null_nan = catalog.load_table("default.test_null_nan")
@@ -458,7 +459,7 @@ def test_pyarrow_batches_not_nan_count(catalog: Catalog) ->
None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_duckdb_nan(catalog: Catalog) -> None:
table_test_null_nan_rewritten =
catalog.load_table("default.test_null_nan_rewritten")
con = table_test_null_nan_rewritten.scan().to_duckdb("table_test_null_nan")
@@ -468,7 +469,7 @@ def test_duckdb_nan(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_pyarrow_limit(catalog: Catalog) -> None:
table_test_limit = catalog.load_table("default.test_limit")
limited_result = table_test_limit.scan(selected_fields=("idx",),
limit=1).to_arrow()
@@ -492,7 +493,7 @@ def test_pyarrow_limit(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_pyarrow_limit_with_multiple_files(catalog: Catalog) -> None:
table_name = "default.test_pyarrow_limit_with_multiple_files"
try:
@@ -530,7 +531,7 @@ def test_pyarrow_limit_with_multiple_files(catalog:
Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_daft_nan(catalog: Catalog) -> None:
table_test_null_nan_rewritten =
catalog.load_table("default.test_null_nan_rewritten")
df = table_test_null_nan_rewritten.to_daft()
@@ -539,7 +540,7 @@ def test_daft_nan(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_daft_nan_rewritten(catalog: Catalog) -> None:
table_test_null_nan_rewritten =
catalog.load_table("default.test_null_nan_rewritten")
df = table_test_null_nan_rewritten.to_daft()
@@ -553,7 +554,7 @@ def test_daft_nan_rewritten(catalog: Catalog) -> None:
@pytest.mark.skip(reason="Bodo should not monekeypatch PyArrowFileIO,
https://github.com/apache/iceberg-python/issues/2400")
@pytest.mark.integration
@pytest.mark.filterwarnings("ignore")
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_bodo_nan(catalog: Catalog, monkeypatch: pytest.MonkeyPatch) -> None:
# Avoid local Mac issues (see
https://github.com/apache/iceberg-python/issues/2225)
monkeypatch.setenv("BODO_DATAFRAME_LIBRARY_RUN_PARALLEL", "0")
@@ -567,7 +568,7 @@ def test_bodo_nan(catalog: Catalog, monkeypatch:
pytest.MonkeyPatch) -> None:
@pytest.mark.integration
@pytest.mark.filterwarnings("ignore")
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_ray_nan(catalog: Catalog, ray_session: Any) -> None:
table_test_null_nan_rewritten =
catalog.load_table("default.test_null_nan_rewritten")
ray_dataset = table_test_null_nan_rewritten.scan().to_ray()
@@ -577,7 +578,7 @@ def test_ray_nan(catalog: Catalog, ray_session: Any) ->
None:
@pytest.mark.integration
@pytest.mark.filterwarnings("ignore")
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_ray_nan_rewritten(catalog: Catalog, ray_session: Any) -> None:
table_test_null_nan_rewritten =
catalog.load_table("default.test_null_nan_rewritten")
ray_dataset = table_test_null_nan_rewritten.scan(
@@ -590,7 +591,7 @@ def test_ray_nan_rewritten(catalog: Catalog, ray_session:
Any) -> None:
@pytest.mark.integration
@pytest.mark.filterwarnings("ignore")
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
@pytest.mark.skip(reason="Fixing issues with NaN's:
https://github.com/apache/arrow/issues/34162")
def test_ray_not_nan_count(catalog: Catalog, ray_session: Any) -> None:
table_test_null_nan_rewritten =
catalog.load_table("default.test_null_nan_rewritten")
@@ -600,7 +601,7 @@ def test_ray_not_nan_count(catalog: Catalog, ray_session:
Any) -> None:
@pytest.mark.integration
@pytest.mark.filterwarnings("ignore")
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_ray_all_types(catalog: Catalog, ray_session: Any) -> None:
table_test_all_types = catalog.load_table("default.test_all_types")
ray_dataset = table_test_all_types.scan().to_ray()
@@ -610,7 +611,7 @@ def test_ray_all_types(catalog: Catalog, ray_session: Any)
-> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_pyarrow_to_iceberg_all_types(catalog: Catalog) -> None:
table_test_all_types = catalog.load_table("default.test_all_types")
fs = S3FileSystem(
@@ -629,7 +630,7 @@ def test_pyarrow_to_iceberg_all_types(catalog: Catalog) ->
None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
@pytest.mark.parametrize("format_version", [2, 3])
def test_pyarrow_deletes(catalog: Catalog, format_version: int) -> None:
# number, letter
@@ -669,7 +670,7 @@ def test_pyarrow_deletes(catalog: Catalog, format_version:
int) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
@pytest.mark.parametrize("format_version", [2, 3])
def test_pyarrow_deletes_double(catalog: Catalog, format_version: int) -> None:
# number, letter
@@ -709,7 +710,7 @@ def test_pyarrow_deletes_double(catalog: Catalog,
format_version: int) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
@pytest.mark.parametrize("format_version", [2, 3])
def test_pyarrow_batches_deletes(catalog: Catalog, format_version: int) ->
None:
# number, letter
@@ -753,7 +754,7 @@ def test_pyarrow_batches_deletes(catalog: Catalog,
format_version: int) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
@pytest.mark.parametrize("format_version", [2, 3])
def test_pyarrow_batches_deletes_double(catalog: Catalog, format_version: int)
-> None:
# number, letter
@@ -799,7 +800,7 @@ def test_pyarrow_batches_deletes_double(catalog: Catalog,
format_version: int) -
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_partitioned_tables(catalog: Catalog) -> None:
for table_name, predicate in [
("test_partitioned_by_identity", "ts >= '2023-03-05T00:00:00+00:00'"),
@@ -816,7 +817,7 @@ def test_partitioned_tables(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_unpartitioned_uuid_table(catalog: Catalog) -> None:
unpartitioned_uuid =
catalog.load_table("default.test_uuid_and_fixed_unpartitioned")
arrow_table_eq = unpartitioned_uuid.scan(row_filter="uuid_col ==
'102cb62f-e6f8-4eb0-9973-d9b012ff0967'").to_arrow()
@@ -833,7 +834,7 @@ def test_unpartitioned_uuid_table(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_unpartitioned_fixed_table(catalog: Catalog) -> None:
fixed_table =
catalog.load_table("default.test_uuid_and_fixed_unpartitioned")
arrow_table_eq = fixed_table.scan(row_filter=EqualTo("fixed_col",
b"1234567890123456789012345")).to_arrow()
@@ -852,7 +853,7 @@ def test_unpartitioned_fixed_table(catalog: Catalog) ->
None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
@pytest.mark.parametrize("format_version", [2, 3])
def test_scan_tag(catalog: Catalog, format_version: int) -> None:
test_positional_mor_deletes =
catalog.load_table(f"default.test_positional_mor_deletes_v{format_version}")
@@ -861,7 +862,7 @@ def test_scan_tag(catalog: Catalog, format_version: int) ->
None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
@pytest.mark.parametrize("format_version", [2, 3])
def test_scan_branch(catalog: Catalog, format_version: int) -> None:
test_positional_mor_deletes =
catalog.load_table(f"default.test_positional_mor_deletes_v{format_version}")
@@ -870,7 +871,7 @@ def test_scan_branch(catalog: Catalog, format_version: int)
-> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_filter_on_new_column(catalog: Catalog) -> None:
test_table_add_column = catalog.load_table("default.test_table_add_column")
arrow_table = test_table_add_column.scan(row_filter="b == '2'").to_arrow()
@@ -884,7 +885,7 @@ def test_filter_on_new_column(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_filter_case_sensitive_by_default(catalog: Catalog) -> None:
test_table_add_column = catalog.load_table("default.test_table_add_column")
arrow_table = test_table_add_column.scan().to_arrow()
@@ -899,7 +900,7 @@ def test_filter_case_sensitive_by_default(catalog: Catalog)
-> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_filter_case_sensitive(catalog: Catalog) -> None:
test_table_add_column = catalog.load_table("default.test_table_add_column")
arrow_table = test_table_add_column.scan().to_arrow()
@@ -914,7 +915,7 @@ def test_filter_case_sensitive(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_filter_case_insensitive(catalog: Catalog) -> None:
test_table_add_column = catalog.load_table("default.test_table_add_column")
arrow_table = test_table_add_column.scan().to_arrow()
@@ -928,7 +929,7 @@ def test_filter_case_insensitive(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_filters_on_top_level_struct(catalog: Catalog) -> None:
test_empty_struct =
catalog.load_table("default.test_table_empty_list_and_map")
@@ -946,7 +947,7 @@ def test_filters_on_top_level_struct(catalog: Catalog) ->
None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_upgrade_table_version(catalog: Catalog) -> None:
table_test_table_version = catalog.load_table("default.test_table_version")
@@ -974,7 +975,7 @@ def test_upgrade_table_version(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_sanitize_character(catalog: Catalog) -> None:
table_test_table_sanitized_character =
catalog.load_table("default.test_table_sanitized_character")
arrow_table = table_test_table_sanitized_character.scan().to_arrow()
@@ -984,7 +985,7 @@ def test_sanitize_character(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_null_list_and_map(catalog: Catalog) -> None:
table_test_empty_list_and_map =
catalog.load_table("default.test_table_empty_list_and_map")
arrow_table = table_test_empty_list_and_map.scan().to_arrow()
@@ -1083,7 +1084,7 @@ def test_configure_row_group_batch_size(session_catalog:
Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_table_scan_keep_types(catalog: Catalog) -> None:
expected_schema = pa.schema(
[
@@ -1125,7 +1126,7 @@ def test_table_scan_keep_types(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_empty_scan_ordered_str(catalog: Catalog) -> None:
table_empty_scan_ordered_str =
catalog.load_table("default.test_empty_scan_ordered_str")
arrow_table = table_empty_scan_ordered_str.scan(EqualTo("id",
"b")).to_arrow()
@@ -1133,7 +1134,7 @@ def test_empty_scan_ordered_str(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_table_scan_empty_table(catalog: Catalog) -> None:
identifier = "default.test_table_scan_empty_table"
arrow_table = pa.Table.from_arrays(
@@ -1161,7 +1162,7 @@ def test_table_scan_empty_table(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_read_from_s3_and_local_fs(catalog: Catalog, tmp_path: PosixPath) ->
None:
identifier = "default.test_read_from_s3_and_local_fs"
schema = pa.schema([pa.field("colA", pa.string())])
@@ -1189,7 +1190,7 @@ def test_read_from_s3_and_local_fs(catalog: Catalog,
tmp_path: PosixPath) -> Non
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_scan_with_datetime(catalog: Catalog) -> None:
table = create_table(catalog)
@@ -1217,8 +1218,8 @@ def test_scan_with_datetime(catalog: Catalog) -> None:
@pytest.mark.integration
# TODO: For Hive we require writing V3
-# @pytest.mark.parametrize("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [pytest.lazy_fixture("session_catalog")])
+# @pytest.mark.parametrize("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
[email protected]("catalog", [lf("session_catalog")])
def test_initial_default(catalog: Catalog, spark: SparkSession) -> None:
identifier = "default.test_initial_default"
try:
@@ -1244,7 +1245,7 @@ def test_initial_default(catalog: Catalog, spark:
SparkSession) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_filter_after_arrow_scan(catalog: Catalog) -> None:
identifier = "test_partitioned_by_hours"
table = catalog.load_table(f"default.{identifier}")
@@ -1257,7 +1258,7 @@ def test_filter_after_arrow_scan(catalog: Catalog) ->
None:
@pytest.mark.integration
[email protected]("catalog", [pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog")])
def test_scan_source_field_missing_in_spec(catalog: Catalog, spark:
SparkSession) -> None:
identifier = "default.test_dropped_field"
spark.sql(f"DROP TABLE IF EXISTS {identifier}")
diff --git a/tests/integration/test_rest_catalog.py
b/tests/integration/test_rest_catalog.py
index 24a8d9f6..18aa9431 100644
--- a/tests/integration/test_rest_catalog.py
+++ b/tests/integration/test_rest_catalog.py
@@ -17,6 +17,7 @@
# pylint:disable=redefined-outer-name
import pytest
+from pytest_lazy_fixtures import lf
from pyiceberg.catalog.rest import RestCatalog
@@ -24,7 +25,7 @@ TEST_NAMESPACE_IDENTIFIER = "TEST NS"
@pytest.mark.integration
[email protected]("catalog", [pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog")])
def test_namespace_exists(catalog: RestCatalog) -> None:
if not catalog.namespace_exists(TEST_NAMESPACE_IDENTIFIER):
catalog.create_namespace(TEST_NAMESPACE_IDENTIFIER)
@@ -33,7 +34,7 @@ def test_namespace_exists(catalog: RestCatalog) -> None:
@pytest.mark.integration
[email protected]("catalog", [pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog")])
def test_namespace_not_exists(catalog: RestCatalog) -> None:
if catalog.namespace_exists(TEST_NAMESPACE_IDENTIFIER):
catalog.drop_namespace(TEST_NAMESPACE_IDENTIFIER)
@@ -42,7 +43,7 @@ def test_namespace_not_exists(catalog: RestCatalog) -> None:
@pytest.mark.integration
[email protected]("catalog", [pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog")])
def test_create_namespace_if_not_exists(catalog: RestCatalog) -> None:
if catalog.namespace_exists(TEST_NAMESPACE_IDENTIFIER):
catalog.drop_namespace(TEST_NAMESPACE_IDENTIFIER)
@@ -53,7 +54,7 @@ def test_create_namespace_if_not_exists(catalog: RestCatalog)
-> None:
@pytest.mark.integration
[email protected]("catalog", [pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog")])
def test_create_namespace_if_already_existing(catalog: RestCatalog) -> None:
if not catalog.namespace_exists(TEST_NAMESPACE_IDENTIFIER):
catalog.create_namespace(TEST_NAMESPACE_IDENTIFIER)
diff --git a/tests/integration/test_snapshot_operations.py
b/tests/integration/test_snapshot_operations.py
index 6fd3aada..07fb77ed 100644
--- a/tests/integration/test_snapshot_operations.py
+++ b/tests/integration/test_snapshot_operations.py
@@ -19,6 +19,7 @@ from collections.abc import Generator
import pyarrow as pa
import pytest
+from pytest_lazy_fixtures import lf
from pyiceberg.catalog import Catalog
from pyiceberg.table import Table
@@ -53,7 +54,7 @@ def table_with_snapshots(session_catalog: Catalog) ->
Generator[Table, None, Non
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_create_tag(catalog: Catalog) -> None:
identifier = "default.test_table_snapshot_operations"
tbl = catalog.load_table(identifier)
@@ -64,7 +65,7 @@ def test_create_tag(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_create_branch(catalog: Catalog) -> None:
identifier = "default.test_table_snapshot_operations"
tbl = catalog.load_table(identifier)
@@ -75,7 +76,7 @@ def test_create_branch(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_remove_tag(catalog: Catalog) -> None:
identifier = "default.test_table_snapshot_operations"
tbl = catalog.load_table(identifier)
@@ -91,7 +92,7 @@ def test_remove_tag(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_remove_branch(catalog: Catalog) -> None:
identifier = "default.test_table_snapshot_operations"
tbl = catalog.load_table(identifier)
@@ -107,7 +108,7 @@ def test_remove_branch(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_set_current_snapshot(catalog: Catalog) -> None:
identifier = "default.test_table_snapshot_operations"
tbl = catalog.load_table(identifier)
@@ -132,7 +133,7 @@ def test_set_current_snapshot(catalog: Catalog) -> None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_set_current_snapshot_by_ref(catalog: Catalog) -> None:
identifier = "default.test_table_snapshot_operations"
tbl = catalog.load_table(identifier)
@@ -163,7 +164,7 @@ def test_set_current_snapshot_by_ref(catalog: Catalog) ->
None:
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_set_current_snapshot_chained_with_create_tag(catalog: Catalog) ->
None:
identifier = "default.test_table_snapshot_operations"
tbl = catalog.load_table(identifier)
diff --git a/tests/integration/test_sort_order_update.py
b/tests/integration/test_sort_order_update.py
index 548c6692..fdbfa9a3 100644
--- a/tests/integration/test_sort_order_update.py
+++ b/tests/integration/test_sort_order_update.py
@@ -17,6 +17,7 @@
# pylint:disable=redefined-outer-name
import pytest
+from pytest_lazy_fixtures import lf
from pyiceberg.catalog import Catalog
from pyiceberg.exceptions import NoSuchTableError
@@ -45,10 +46,10 @@ def _create_table_with_schema(catalog: Catalog, schema:
Schema, format_version:
@pytest.mark.parametrize(
"catalog, format_version",
[
- (pytest.lazy_fixture("session_catalog"), "1"),
- (pytest.lazy_fixture("session_catalog_hive"), "1"),
- (pytest.lazy_fixture("session_catalog"), "2"),
- (pytest.lazy_fixture("session_catalog_hive"), "2"),
+ (lf("session_catalog"), "1"),
+ (lf("session_catalog_hive"), "1"),
+ (lf("session_catalog"), "2"),
+ (lf("session_catalog_hive"), "2"),
],
)
def test_map_column_name_to_id(catalog: Catalog, format_version: str,
table_schema_simple: Schema) -> None:
@@ -61,10 +62,10 @@ def test_map_column_name_to_id(catalog: Catalog,
format_version: str, table_sche
@pytest.mark.parametrize(
"catalog, format_version",
[
- (pytest.lazy_fixture("session_catalog"), "1"),
- (pytest.lazy_fixture("session_catalog_hive"), "1"),
- (pytest.lazy_fixture("session_catalog"), "2"),
- (pytest.lazy_fixture("session_catalog_hive"), "2"),
+ (lf("session_catalog"), "1"),
+ (lf("session_catalog_hive"), "1"),
+ (lf("session_catalog"), "2"),
+ (lf("session_catalog_hive"), "2"),
],
)
def test_update_sort_order(catalog: Catalog, format_version: str,
table_schema_simple: Schema) -> None:
@@ -83,10 +84,10 @@ def test_update_sort_order(catalog: Catalog,
format_version: str, table_schema_s
@pytest.mark.parametrize(
"catalog, format_version",
[
- (pytest.lazy_fixture("session_catalog"), "1"),
- (pytest.lazy_fixture("session_catalog_hive"), "1"),
- (pytest.lazy_fixture("session_catalog"), "2"),
- (pytest.lazy_fixture("session_catalog_hive"), "2"),
+ (lf("session_catalog"), "1"),
+ (lf("session_catalog_hive"), "1"),
+ (lf("session_catalog"), "2"),
+ (lf("session_catalog_hive"), "2"),
],
)
def test_increment_existing_sort_order_id(catalog: Catalog, format_version:
str, table_schema_simple: Schema) -> None:
@@ -113,10 +114,10 @@ def test_increment_existing_sort_order_id(catalog:
Catalog, format_version: str,
@pytest.mark.parametrize(
"catalog, format_version",
[
- (pytest.lazy_fixture("session_catalog"), "1"),
- (pytest.lazy_fixture("session_catalog_hive"), "1"),
- (pytest.lazy_fixture("session_catalog"), "2"),
- (pytest.lazy_fixture("session_catalog_hive"), "2"),
+ (lf("session_catalog"), "1"),
+ (lf("session_catalog_hive"), "1"),
+ (lf("session_catalog"), "2"),
+ (lf("session_catalog_hive"), "2"),
],
)
def test_update_existing_sort_order(catalog: Catalog, format_version: str,
table_schema_simple: Schema) -> None:
@@ -144,10 +145,10 @@ def test_update_existing_sort_order(catalog: Catalog,
format_version: str, table
@pytest.mark.parametrize(
"catalog, format_version",
[
- (pytest.lazy_fixture("session_catalog"), "1"),
- (pytest.lazy_fixture("session_catalog_hive"), "1"),
- (pytest.lazy_fixture("session_catalog"), "2"),
- (pytest.lazy_fixture("session_catalog_hive"), "2"),
+ (lf("session_catalog"), "1"),
+ (lf("session_catalog_hive"), "1"),
+ (lf("session_catalog"), "2"),
+ (lf("session_catalog_hive"), "2"),
],
)
def test_update_existing_sort_order_with_unsorted_sort_order(
diff --git a/tests/integration/test_statistics_operations.py
b/tests/integration/test_statistics_operations.py
index 09273768..35e36bcd 100644
--- a/tests/integration/test_statistics_operations.py
+++ b/tests/integration/test_statistics_operations.py
@@ -17,6 +17,7 @@
from typing import TYPE_CHECKING
import pytest
+from pytest_lazy_fixtures import lf
from pyiceberg.exceptions import NoSuchTableError
from pyiceberg.table.statistics import BlobMetadata, StatisticsFile
@@ -40,7 +41,7 @@ def _create_table_with_schema(catalog: "Catalog", schema:
"Schema") -> "Table":
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_manage_statistics(catalog: "Catalog", arrow_table_with_null:
"pa.Table") -> None:
tbl = _create_table_with_schema(catalog, arrow_table_with_null.schema)
diff --git a/tests/integration/test_writes/test_writes.py
b/tests/integration/test_writes/test_writes.py
index a8b7e328..e17c8ef6 100644
--- a/tests/integration/test_writes/test_writes.py
+++ b/tests/integration/test_writes/test_writes.py
@@ -38,6 +38,7 @@ import pytz
from pyarrow.fs import S3FileSystem
from pydantic_core import ValidationError
from pyspark.sql import SparkSession
+from pytest_lazy_fixtures import lf
from pytest_mock.plugin import MockerFixture
from pyiceberg.catalog import Catalog, load_catalog
@@ -966,7 +967,7 @@ def test_write_and_evolve(session_catalog: Catalog,
format_version: int) -> None
@pytest.mark.integration
@pytest.mark.parametrize("format_version", [1, 2])
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_create_table_transaction(catalog: Catalog, format_version: int) ->
None:
identifier =
f"default.arrow_create_table_transaction_{catalog.name}_{format_version}"
@@ -1018,7 +1019,7 @@ def test_create_table_transaction(catalog: Catalog,
format_version: int) -> None
@pytest.mark.integration
@pytest.mark.parametrize("format_version", [1, 2])
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_create_table_with_non_default_values(catalog: Catalog,
table_schema_with_all_types: Schema, format_version: int) -> None:
identifier =
f"default.arrow_create_table_transaction_with_non_default_values_{catalog.name}_{format_version}"
identifier_ref =
f"default.arrow_create_table_transaction_with_non_default_values_ref_{catalog.name}_{format_version}"
@@ -1256,7 +1257,7 @@ def test_hive_catalog_storage_descriptor_has_changed(
@pytest.mark.integration
[email protected]("catalog",
[pytest.lazy_fixture("session_catalog_hive"),
pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog_hive"),
lf("session_catalog")])
def test_sanitize_character_partitioned(catalog: Catalog) -> None:
table_name = "default.test_table_partitioned_sanitized_character"
try:
@@ -1278,7 +1279,7 @@ def test_sanitize_character_partitioned(catalog: Catalog)
-> None:
@pytest.mark.integration
[email protected]("catalog", [pytest.lazy_fixture("session_catalog")])
[email protected]("catalog", [lf("session_catalog")])
def test_sanitize_character_partitioned_avro_bug(catalog: Catalog) -> None:
table_name = "default.test_table_partitioned_sanitized_character_avro"
try:
diff --git a/tests/table/test_init.py b/tests/table/test_init.py
index d677d42b..aef6e3cc 100644
--- a/tests/table/test_init.py
+++ b/tests/table/test_init.py
@@ -22,6 +22,7 @@ from typing import Any
import pytest
from pydantic import BaseModel, ValidationError
+from pytest_lazy_fixtures import lf
from pyiceberg.catalog.noop import NoopCatalog
from pyiceberg.exceptions import CommitFailedException
@@ -262,8 +263,8 @@ def test_history(table_v2: Table) -> None:
@pytest.mark.parametrize(
"table_fixture",
[
- pytest.param(pytest.lazy_fixture("table_v2"), id="parquet"),
- pytest.param(pytest.lazy_fixture("table_v2_orc"), id="orc"),
+ pytest.param(lf("table_v2"), id="parquet"),
+ pytest.param(lf("table_v2_orc"), id="orc"),
],
)
def test_table_scan_select(table_fixture: Table) -> None:
diff --git a/uv.lock b/uv.lock
index bec534da..f686b2ee 100644
--- a/uv.lock
+++ b/uv.lock
@@ -4473,7 +4473,7 @@ dev = [
{ name = "pyspark", extra = ["connect"] },
{ name = "pytest" },
{ name = "pytest-checkdocs" },
- { name = "pytest-lazy-fixture" },
+ { name = "pytest-lazy-fixtures" },
{ name = "pytest-mock" },
{ name = "requests-mock" },
{ name = "sqlalchemy" },
@@ -4559,9 +4559,9 @@ dev = [
{ name = "protobuf", specifier = "==6.33.5" },
{ name = "pyarrow-stubs", specifier = ">=20.0.0.20251107" },
{ name = "pyspark", extras = ["connect"], specifier = "==4.0.1" },
- { name = "pytest", specifier = "==7.4.4" },
+ { name = "pytest", specifier = "==9.0.2" },
{ name = "pytest-checkdocs", specifier = "==2.14.0" },
- { name = "pytest-lazy-fixture", specifier = "==0.6.3" },
+ { name = "pytest-lazy-fixtures", specifier = "==1.4.0" },
{ name = "pytest-mock", specifier = "==3.15.1" },
{ name = "requests-mock", specifier = "==1.12.1" },
{ name = "sqlalchemy", specifier = ">=2.0.18,<3" },
@@ -4727,7 +4727,7 @@ connect = [
[[package]]
name = "pytest"
-version = "7.4.4"
+version = "9.0.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "colorama", marker = "sys_platform == 'win32'" },
@@ -4735,11 +4735,12 @@ dependencies = [
{ name = "iniconfig" },
{ name = "packaging" },
{ name = "pluggy" },
+ { name = "pygments" },
{ name = "tomli", marker = "python_full_version < '3.11'" },
]
-sdist = { url =
"https://files.pythonhosted.org/packages/80/1f/9d8e98e4133ffb16c90f3b405c43e38d3abb715bb5d7a63a5a684f7e46a3/pytest-7.4.4.tar.gz",
hash =
"sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280", size
= 1357116, upload-time = "2023-12-31T12:00:18.035Z" }
+sdist = { url =
"https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz",
hash =
"sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size
= 1568901, upload-time = "2025-12-06T21:30:51.014Z" }
wheels = [
- { url =
"https://files.pythonhosted.org/packages/51/ff/f6e8b8f39e08547faece4bd80f89d5a8de68a38b2d179cc1c4490ffa3286/pytest-7.4.4-py3-none-any.whl",
hash =
"sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8", size
= 325287, upload-time = "2023-12-31T12:00:13.963Z" },
+ { url =
"https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl",
hash =
"sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size
= 374801, upload-time = "2025-12-06T21:30:49.154Z" },
]
[[package]]
@@ -4756,15 +4757,15 @@ wheels = [
]
[[package]]
-name = "pytest-lazy-fixture"
-version = "0.6.3"
+name = "pytest-lazy-fixtures"
+version = "1.4.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "pytest" },
]
-sdist = { url =
"https://files.pythonhosted.org/packages/b2/82/ae6d2f6903719c4ec410dcd31ee24e3bce74b2cef3c5b9150ad36e8594b6/pytest-lazy-fixture-0.6.3.tar.gz",
hash =
"sha256:0e7d0c7f74ba33e6e80905e9bfd81f9d15ef9a790de97993e34213deb5ad10ac", size
= 7878, upload-time = "2020-02-01T18:04:02.321Z" }
+sdist = { url =
"https://files.pythonhosted.org/packages/75/05/030c4efe596bc31bcb4fefb31f5fcefc8917df99bd745a920763c5e81863/pytest_lazy_fixtures-1.4.0.tar.gz",
hash =
"sha256:f544b60c96b909b307558a62cc1f28f026f11e9f03d7f583a1dc636de3dbcb10", size
= 36188, upload-time = "2025-09-16T18:42:31.797Z" }
wheels = [
- { url =
"https://files.pythonhosted.org/packages/2d/a1/2f2c1c2353350d66c4d110d283e422e4943eb5ad10effa9357ba66f7b5b9/pytest_lazy_fixture-0.6.3-py3-none-any.whl",
hash =
"sha256:e0b379f38299ff27a653f03eaa69b08a6fd4484e46fd1c9907d984b9f9daeda6", size
= 4948, upload-time = "2020-02-01T18:04:00.347Z" },
+ { url =
"https://files.pythonhosted.org/packages/60/a0/a07399bd4842282fe3c2da264746069d5216640bc0940b7a359e2c950aa6/pytest_lazy_fixtures-1.4.0-py3-none-any.whl",
hash =
"sha256:c5db4506fa0ade5887189d1a18857fec4c329b4f49043fef6732c67c9553389a", size
= 9680, upload-time = "2025-09-16T18:42:30.534Z" },
]
[[package]]