diff --git a/pyproject.toml b/pyproject.toml index 8afcd7d362..9d40b4f9de 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 21508a8f63..01e0d2ce31 100644 --- a/tests/catalog/test_catalog_behaviors.py +++ b/tests/catalog/test_catalog_behaviors.py @@ -26,7 +26,7 @@ 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 801c1e86a9..4de0a19034 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -45,7 +45,7 @@ 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 0e39beb241..71ff2be429 100644 --- a/tests/integration/test_catalog.py +++ b/tests/integration/test_catalog.py @@ -21,6 +21,7 @@ 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 b40ba7e176..03d4437d18 100644 --- a/tests/integration/test_inspect_table.py +++ b/tests/integration/test_inspect_table.py @@ -24,6 +24,7 @@ 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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 2444e18737..2afc5ceb60 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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 c123ddb760..20a74e4529 100644 --- a/tests/integration/test_reads.py +++ b/tests/integration/test_reads.py @@ -31,6 +31,7 @@ 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 @@ -85,7 +86,7 @@ def create_table(catalog: Catalog) -> Table: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("catalog", [lf("session_catalog_hive"), lf("session_catalog")]) def test_table_properties(catalog: Catalog) -> None: table = create_table(catalog) @@ -115,7 +116,7 @@ def test_table_properties(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive")]) +@pytest.mark.parametrize("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() @@ -136,7 +137,7 @@ def test_hive_properties(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive")]) +@pytest.mark.parametrize("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. @@ -213,7 +214,7 @@ def test_iceberg_property_deletion_not_restored_from_old_hms_state(session_catal @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive")]) +@pytest.mark.parametrize("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. @@ -250,7 +251,7 @@ def test_iceberg_metadata_is_source_of_truth(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive")]) +@pytest.mark.parametrize("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. @@ -287,7 +288,7 @@ def test_hive_critical_properties_always_from_iceberg(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive")]) +@pytest.mark.parametrize("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. @@ -347,7 +348,7 @@ def test_hive_native_properties_cannot_be_deleted_via_iceberg(catalog: Catalog) @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("catalog", [lf("session_catalog_hive"), lf("session_catalog")]) def test_table_properties_dict(catalog: Catalog) -> None: table = create_table(catalog) @@ -377,7 +378,7 @@ def test_table_properties_dict(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("catalog", [lf("session_catalog_hive"), lf("session_catalog")]) def test_table_properties_error(catalog: Catalog) -> None: table = create_table(catalog) properties = {"abc": "def"} @@ -387,7 +388,7 @@ def test_table_properties_error(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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() @@ -397,7 +398,7 @@ def test_pyarrow_nan(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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( @@ -409,7 +410,7 @@ def test_pyarrow_nan_rewritten(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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") @@ -418,7 +419,7 @@ def test_pyarrow_not_nan_count(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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( @@ -432,7 +433,7 @@ def test_pyarrow_batches_nan(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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( @@ -446,7 +447,7 @@ def test_pyarrow_batches_nan_rewritten(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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") @@ -459,7 +460,7 @@ def test_pyarrow_batches_not_nan_count(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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") @@ -469,7 +470,7 @@ def test_duckdb_nan(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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() @@ -493,7 +494,7 @@ def test_pyarrow_limit(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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: @@ -531,7 +532,7 @@ def test_pyarrow_limit_with_multiple_files(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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() @@ -540,7 +541,7 @@ def test_daft_nan(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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() @@ -554,7 +555,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") -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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") @@ -568,7 +569,7 @@ def test_bodo_nan(catalog: Catalog, monkeypatch: pytest.MonkeyPatch) -> None: @pytest.mark.integration @pytest.mark.filterwarnings("ignore") -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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() @@ -578,7 +579,7 @@ def test_ray_nan(catalog: Catalog, ray_session: Any) -> None: @pytest.mark.integration @pytest.mark.filterwarnings("ignore") -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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( @@ -591,7 +592,7 @@ def test_ray_nan_rewritten(catalog: Catalog, ray_session: Any) -> None: @pytest.mark.integration @pytest.mark.filterwarnings("ignore") -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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") @@ -601,7 +602,7 @@ def test_ray_not_nan_count(catalog: Catalog, ray_session: Any) -> None: @pytest.mark.integration @pytest.mark.filterwarnings("ignore") -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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() @@ -611,7 +612,7 @@ def test_ray_all_types(catalog: Catalog, ray_session: Any) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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( @@ -630,7 +631,7 @@ def test_pyarrow_to_iceberg_all_types(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 @@ -670,7 +671,7 @@ def test_pyarrow_deletes(catalog: Catalog, format_version: int) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 @@ -710,7 +711,7 @@ def test_pyarrow_deletes_double(catalog: Catalog, format_version: int) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 @@ -754,7 +755,7 @@ def test_pyarrow_batches_deletes(catalog: Catalog, format_version: int) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 @@ -800,7 +801,7 @@ def test_pyarrow_batches_deletes_double(catalog: Catalog, format_version: int) - @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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'"), @@ -817,7 +818,7 @@ def test_partitioned_tables(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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() @@ -834,7 +835,7 @@ def test_unpartitioned_uuid_table(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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() @@ -853,7 +854,7 @@ def test_unpartitioned_fixed_table(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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}") @@ -862,7 +863,7 @@ def test_scan_tag(catalog: Catalog, format_version: int) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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}") @@ -871,7 +872,7 @@ def test_scan_branch(catalog: Catalog, format_version: int) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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() @@ -885,7 +886,7 @@ def test_filter_on_new_column(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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() @@ -900,7 +901,7 @@ def test_filter_case_sensitive_by_default(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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() @@ -915,7 +916,7 @@ def test_filter_case_sensitive(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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() @@ -929,7 +930,7 @@ def test_filter_case_insensitive(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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") @@ -947,7 +948,7 @@ def test_filters_on_top_level_struct(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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") @@ -975,7 +976,7 @@ def test_upgrade_table_version(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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() @@ -985,7 +986,7 @@ def test_sanitize_character(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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() @@ -1084,7 +1085,7 @@ def test_configure_row_group_batch_size(session_catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("catalog", [lf("session_catalog_hive"), lf("session_catalog")]) def test_table_scan_keep_types(catalog: Catalog) -> None: expected_schema = pa.schema( [ @@ -1126,7 +1127,7 @@ def test_table_scan_keep_types(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("catalog", [lf("session_catalog_hive"), lf("session_catalog")]) def test_table_scan_override_with_small_types(catalog: Catalog) -> None: identifier = "default.test_table_scan_override_with_small_types" arrow_table = pa.Table.from_arrays( @@ -1169,7 +1170,7 @@ def test_table_scan_override_with_small_types(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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() @@ -1177,7 +1178,7 @@ def test_empty_scan_ordered_str(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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( @@ -1205,7 +1206,7 @@ def test_table_scan_empty_table(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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())]) @@ -1233,7 +1234,7 @@ def test_read_from_s3_and_local_fs(catalog: Catalog, tmp_path: PosixPath) -> Non @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("catalog", [lf("session_catalog_hive"), lf("session_catalog")]) def test_scan_with_datetime(catalog: Catalog) -> None: table = create_table(catalog) @@ -1261,8 +1262,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")]) -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog")]) +# @pytest.mark.parametrize("catalog", [lf("session_catalog_hive"), lf("session_catalog")]) +@pytest.mark.parametrize("catalog", [lf("session_catalog")]) def test_initial_default(catalog: Catalog, spark: SparkSession) -> None: identifier = "default.test_initial_default" try: @@ -1288,7 +1289,7 @@ def test_initial_default(catalog: Catalog, spark: SparkSession) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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}") @@ -1301,7 +1302,7 @@ def test_filter_after_arrow_scan(catalog: Catalog) -> None: @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 24a8d9f6ef..18aa943175 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 @@ @pytest.mark.integration -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 6fd3aadaa3..07fb77edbb 100644 --- a/tests/integration/test_snapshot_operations.py +++ b/tests/integration/test_snapshot_operations.py @@ -19,6 +19,7 @@ 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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 548c6692db..fdbfa9a307 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 09273768d9..35e36bcdf5 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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 a8b7e32850..e17c8ef633 100644 --- a/tests/integration/test_writes/test_writes.py +++ b/tests/integration/test_writes/test_writes.py @@ -38,6 +38,7 @@ 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]) -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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]) -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog_hive"), pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 -@pytest.mark.parametrize("catalog", [pytest.lazy_fixture("session_catalog")]) +@pytest.mark.parametrize("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 d677d42b1c..aef6e3cc5f 100644 --- a/tests/table/test_init.py +++ b/tests/table/test_init.py @@ -22,6 +22,7 @@ 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 112adebdbc..0041e7a5b4 100644 --- a/uv.lock +++ b/uv.lock @@ -4436,7 +4436,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" }, @@ -4522,9 +4522,9 @@ dev = [ { name = "protobuf", specifier = "==6.33.4" }, { 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" }, @@ -4690,7 +4690,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'" }, @@ -4698,11 +4698,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]] @@ -4719,15 +4720,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]]