This is an automated email from the ASF dual-hosted git repository.
honahx 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 5ddf1ed Build: Bump moto from 4.2.13 to 5.0.1 (#373)
5ddf1ed is described below
commit 5ddf1edb50a84149384a80ed8f6ffac6e34fbe31
Author: Hussein Awala <[email protected]>
AuthorDate: Tue Feb 6 03:50:47 2024 +0100
Build: Bump moto from 4.2.13 to 5.0.1 (#373)
---
poetry.lock | 47 ++++++++++++---------------
pyproject.toml | 2 +-
tests/catalog/test_dynamodb.py | 68 +++++++++++++++++++-------------------
tests/catalog/test_glue.py | 74 +++++++++++++++++++++---------------------
tests/conftest.py | 14 ++++----
5 files changed, 101 insertions(+), 104 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index ff67dd2..9d34a7a 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1963,19 +1963,19 @@ files = [
[[package]]
name = "moto"
-version = "4.2.13"
+version = "5.0.1"
description = ""
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "moto-4.2.13-py2.py3-none-any.whl", hash =
"sha256:93e0fd13b624bd79115494f833308c3641b2be0fc9f4f18aa9264aa01f6168e0"},
- {file = "moto-4.2.13.tar.gz", hash =
"sha256:01aef6a489a725c8d725bd3dc6f70ff1bedaee3e2641752e4b471ff0ede4b4d7"},
+ {file = "moto-5.0.1-py2.py3-none-any.whl", hash =
"sha256:94e3b07a403cc8078ffee94bf404ef677112d036a57ddb5e0f19c5fcf48987f5"},
+ {file = "moto-5.0.1.tar.gz", hash =
"sha256:62b9798aef9028432194cebb7a671f4064257bb3be662d9c1b83b94411b694bb"},
]
[package.dependencies]
aws-xray-sdk = {version = ">=0.93,<0.96 || >0.96", optional = true, markers =
"extra == \"server\""}
boto3 = ">=1.9.201"
-botocore = ">=1.12.201"
+botocore = ">=1.14.0"
cfn-lint = {version = ">=0.40.0", optional = true, markers = "extra ==
\"server\""}
cryptography = ">=3.3.1"
docker = {version = ">=3.0.0", optional = true, markers = "extra ==
\"server\""}
@@ -1986,42 +1986,37 @@ graphql-core = {version = "*", optional = true, markers
= "extra == \"server\""}
Jinja2 = ">=2.10.1"
jsondiff = {version = ">=1.1.2", optional = true, markers = "extra ==
\"server\""}
openapi-spec-validator = {version = ">=0.5.0", optional = true, markers =
"extra == \"server\""}
-py-partiql-parser = {version = "0.5.0", optional = true, markers = "extra ==
\"server\""}
+py-partiql-parser = {version = "0.5.1", optional = true, markers = "extra ==
\"server\""}
pyparsing = {version = ">=3.0.7", optional = true, markers = "extra ==
\"server\""}
python-dateutil = ">=2.1,<3.0.0"
python-jose = {version = ">=3.1.0,<4.0.0", extras = ["cryptography"], optional
= true, markers = "extra == \"server\""}
PyYAML = {version = ">=5.1", optional = true, markers = "extra == \"server\""}
requests = ">=2.5"
-responses = ">=0.13.0"
+responses = ">=0.15.0"
setuptools = {version = "*", optional = true, markers = "extra == \"server\""}
sshpubkeys = {version = ">=3.1.0", optional = true, markers = "extra ==
\"server\""}
werkzeug = ">=0.5,<2.2.0 || >2.2.0,<2.2.1 || >2.2.1"
xmltodict = "*"
[package.extras]
-all = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint
(>=0.40.0)", "docker (>=3.0.0)", "ecdsa (!=0.15)", "graphql-core", "jsondiff
(>=1.1.2)", "multipart", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser
(==0.5.0)", "pyparsing (>=3.0.7)", "python-jose[cryptography]
(>=3.1.0,<4.0.0)", "setuptools", "sshpubkeys (>=3.1.0)"]
+all = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint
(>=0.40.0)", "docker (>=3.0.0)", "ecdsa (!=0.15)", "graphql-core", "jsondiff
(>=1.1.2)", "multipart", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser
(==0.5.1)", "pyparsing (>=3.0.7)", "python-jose[cryptography]
(>=3.1.0,<4.0.0)", "setuptools", "sshpubkeys (>=3.1.0)"]
apigateway = ["PyYAML (>=5.1)", "ecdsa (!=0.15)", "openapi-spec-validator
(>=0.5.0)", "python-jose[cryptography] (>=3.1.0,<4.0.0)"]
-apigatewayv2 = ["PyYAML (>=5.1)"]
+apigatewayv2 = ["PyYAML (>=5.1)", "openapi-spec-validator (>=0.5.0)"]
appsync = ["graphql-core"]
awslambda = ["docker (>=3.0.0)"]
batch = ["docker (>=3.0.0)"]
-cloudformation = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint
(>=0.40.0)", "docker (>=3.0.0)", "ecdsa (!=0.15)", "graphql-core", "jsondiff
(>=1.1.2)", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.0)",
"pyparsing (>=3.0.7)", "python-jose[cryptography] (>=3.1.0,<4.0.0)",
"setuptools", "sshpubkeys (>=3.1.0)"]
+cloudformation = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint
(>=0.40.0)", "docker (>=3.0.0)", "ecdsa (!=0.15)", "graphql-core", "jsondiff
(>=1.1.2)", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.1)",
"pyparsing (>=3.0.7)", "python-jose[cryptography] (>=3.1.0,<4.0.0)",
"setuptools", "sshpubkeys (>=3.1.0)"]
cognitoidp = ["ecdsa (!=0.15)", "python-jose[cryptography] (>=3.1.0,<4.0.0)"]
-ds = ["sshpubkeys (>=3.1.0)"]
-dynamodb = ["docker (>=3.0.0)", "py-partiql-parser (==0.5.0)"]
-dynamodbstreams = ["docker (>=3.0.0)", "py-partiql-parser (==0.5.0)"]
-ebs = ["sshpubkeys (>=3.1.0)"]
+dynamodb = ["docker (>=3.0.0)", "py-partiql-parser (==0.5.1)"]
+dynamodbstreams = ["docker (>=3.0.0)", "py-partiql-parser (==0.5.1)"]
ec2 = ["sshpubkeys (>=3.1.0)"]
-efs = ["sshpubkeys (>=3.1.0)"]
-eks = ["sshpubkeys (>=3.1.0)"]
glue = ["pyparsing (>=3.0.7)"]
iotdata = ["jsondiff (>=1.1.2)"]
-proxy = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint
(>=0.40.0)", "docker (>=2.5.1)", "ecdsa (!=0.15)", "graphql-core", "jsondiff
(>=1.1.2)", "multipart", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser
(==0.5.0)", "pyparsing (>=3.0.7)", "python-jose[cryptography]
(>=3.1.0,<4.0.0)", "setuptools", "sshpubkeys (>=3.1.0)"]
-resourcegroupstaggingapi = ["PyYAML (>=5.1)", "cfn-lint (>=0.40.0)", "docker
(>=3.0.0)", "ecdsa (!=0.15)", "graphql-core", "jsondiff (>=1.1.2)",
"openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.0)", "pyparsing
(>=3.0.7)", "python-jose[cryptography] (>=3.1.0,<4.0.0)", "sshpubkeys
(>=3.1.0)"]
-route53resolver = ["sshpubkeys (>=3.1.0)"]
-s3 = ["PyYAML (>=5.1)", "py-partiql-parser (==0.5.0)"]
-s3crc32c = ["PyYAML (>=5.1)", "crc32c", "py-partiql-parser (==0.5.0)"]
-server = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint
(>=0.40.0)", "docker (>=3.0.0)", "ecdsa (!=0.15)", "flask (!=2.2.0,!=2.2.1)",
"flask-cors", "graphql-core", "jsondiff (>=1.1.2)", "openapi-spec-validator
(>=0.5.0)", "py-partiql-parser (==0.5.0)", "pyparsing (>=3.0.7)",
"python-jose[cryptography] (>=3.1.0,<4.0.0)", "setuptools", "sshpubkeys
(>=3.1.0)"]
+proxy = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint
(>=0.40.0)", "docker (>=2.5.1)", "ecdsa (!=0.15)", "graphql-core", "jsondiff
(>=1.1.2)", "multipart", "openapi-spec-validator (>=0.5.0)", "py-partiql-parser
(==0.5.1)", "pyparsing (>=3.0.7)", "python-jose[cryptography]
(>=3.1.0,<4.0.0)", "setuptools", "sshpubkeys (>=3.1.0)"]
+resourcegroupstaggingapi = ["PyYAML (>=5.1)", "cfn-lint (>=0.40.0)", "docker
(>=3.0.0)", "ecdsa (!=0.15)", "graphql-core", "jsondiff (>=1.1.2)",
"openapi-spec-validator (>=0.5.0)", "py-partiql-parser (==0.5.1)", "pyparsing
(>=3.0.7)", "python-jose[cryptography] (>=3.1.0,<4.0.0)"]
+s3 = ["PyYAML (>=5.1)", "py-partiql-parser (==0.5.1)"]
+s3crc32c = ["PyYAML (>=5.1)", "crc32c", "py-partiql-parser (==0.5.1)"]
+server = ["PyYAML (>=5.1)", "aws-xray-sdk (>=0.93,!=0.96)", "cfn-lint
(>=0.40.0)", "docker (>=3.0.0)", "ecdsa (!=0.15)", "flask (!=2.2.0,!=2.2.1)",
"flask-cors", "graphql-core", "jsondiff (>=1.1.2)", "openapi-spec-validator
(>=0.5.0)", "py-partiql-parser (==0.5.1)", "pyparsing (>=3.0.7)",
"python-jose[cryptography] (>=3.1.0,<4.0.0)", "setuptools", "sshpubkeys
(>=3.1.0)"]
ssm = ["PyYAML (>=5.1)"]
xray = ["aws-xray-sdk (>=0.93,!=0.96)", "setuptools"]
@@ -2689,13 +2684,13 @@ files = [
[[package]]
name = "py-partiql-parser"
-version = "0.5.0"
+version = "0.5.1"
description = "Pure Python PartiQL Parser"
optional = false
python-versions = "*"
files = [
- {file = "py-partiql-parser-0.5.0.tar.gz", hash =
"sha256:427a662e87d51a0a50150fc8b75c9ebb4a52d49129684856c40c88b8c8e027e4"},
- {file = "py_partiql_parser-0.5.0-py3-none-any.whl", hash =
"sha256:dc454c27526adf62deca5177ea997bf41fac4fd109c5d4c8d81f984de738ba8f"},
+ {file = "py-partiql-parser-0.5.1.tar.gz", hash =
"sha256:aeac8f46529d8651bbae88a1a6c14dc3aa38ebc4bc6bd1eb975044c0564246c6"},
+ {file = "py_partiql_parser-0.5.1-py3-none-any.whl", hash =
"sha256:53053e70987dea2983e1990ad85f87a7d8cec13dd4a4b065a740bcfd661f5a6b"},
]
[package.extras]
@@ -4293,4 +4288,4 @@ zstandard = ["zstandard"]
[metadata]
lock-version = "2.0"
python-versions = "^3.8"
-content-hash =
"5becf154a072fa31d9cefaee2adaacca1e2315579fd821a4567f41b075ed3b1d"
+content-hash =
"6e7fbfc5ac9579e08a6deccb0dd3d80bf11bc3113302772b07c8bb3329a0ae72"
diff --git a/pyproject.toml b/pyproject.toml
index f823155..9fcb91b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -79,7 +79,7 @@ pre-commit = "3.5.0"
fastavro = "1.9.3"
coverage = { version = "^7.4.1", extras = ["toml"] }
requests-mock = "1.11.0"
-moto = { version = "^4.2.13", extras = ["server"] }
+moto = { version = "^5.0.1", extras = ["server"] }
typing-extensions = "4.9.0"
pytest-mock = "3.12.0"
pyspark = "3.5.0"
diff --git a/tests/catalog/test_dynamodb.py b/tests/catalog/test_dynamodb.py
index bc80146..2cb7c46 100644
--- a/tests/catalog/test_dynamodb.py
+++ b/tests/catalog/test_dynamodb.py
@@ -20,7 +20,7 @@ from unittest import mock
import boto3
import pyarrow as pa
import pytest
-from moto import mock_dynamodb
+from moto import mock_aws
from pyiceberg.catalog import METADATA_LOCATION, TABLE_TYPE
from pyiceberg.catalog.dynamodb import (
@@ -45,7 +45,7 @@ from pyiceberg.schema import Schema
from tests.conftest import BUCKET_NAME, TABLE_METADATA_LOCATION_REGEX
-@mock_dynamodb
+@mock_aws
def test_create_dynamodb_catalog_with_table_name(_dynamodb,
_bucket_initialize: None) -> None: # type: ignore
DynamoDbCatalog("test_ddb_catalog")
response = _dynamodb.describe_table(TableName=DYNAMODB_TABLE_NAME_DEFAULT)
@@ -59,7 +59,7 @@ def test_create_dynamodb_catalog_with_table_name(_dynamodb,
_bucket_initialize:
assert response["Table"]["TableStatus"] == ACTIVE
-@mock_dynamodb
+@mock_aws
def test_create_table_with_database_location(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -72,7 +72,7 @@ def test_create_table_with_database_location(
assert TABLE_METADATA_LOCATION_REGEX.match(table.metadata_location)
-@mock_dynamodb
+@mock_aws
def test_create_table_with_pyarrow_schema(
_bucket_initialize: None,
moto_endpoint_url: str,
@@ -89,7 +89,7 @@ def test_create_table_with_pyarrow_schema(
assert TABLE_METADATA_LOCATION_REGEX.match(table.metadata_location)
-@mock_dynamodb
+@mock_aws
def test_create_table_with_default_warehouse(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -102,7 +102,7 @@ def test_create_table_with_default_warehouse(
assert TABLE_METADATA_LOCATION_REGEX.match(table.metadata_location)
-@mock_dynamodb
+@mock_aws
def test_create_table_with_given_location(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -117,7 +117,7 @@ def test_create_table_with_given_location(
assert TABLE_METADATA_LOCATION_REGEX.match(table.metadata_location)
-@mock_dynamodb
+@mock_aws
def test_create_table_with_no_location(
_bucket_initialize: None, table_schema_nested: Schema, database_name: str,
table_name: str
) -> None:
@@ -128,7 +128,7 @@ def test_create_table_with_no_location(
test_catalog.create_table(identifier=identifier,
schema=table_schema_nested)
-@mock_dynamodb
+@mock_aws
def test_create_table_with_strips(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -141,7 +141,7 @@ def test_create_table_with_strips(
assert TABLE_METADATA_LOCATION_REGEX.match(table.metadata_location)
-@mock_dynamodb
+@mock_aws
def test_create_table_with_strips_bucket_root(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -154,7 +154,7 @@ def test_create_table_with_strips_bucket_root(
assert TABLE_METADATA_LOCATION_REGEX.match(table_strip.metadata_location)
-@mock_dynamodb
+@mock_aws
def test_create_table_with_no_database(
_bucket_initialize: None, table_schema_nested: Schema, database_name: str,
table_name: str
) -> None:
@@ -164,7 +164,7 @@ def test_create_table_with_no_database(
test_catalog.create_table(identifier=identifier,
schema=table_schema_nested)
-@mock_dynamodb
+@mock_aws
def test_create_duplicated_table(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -176,7 +176,7 @@ def test_create_duplicated_table(
test_catalog.create_table(identifier, table_schema_nested)
-@mock_dynamodb
+@mock_aws
def test_load_table(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -190,7 +190,7 @@ def test_load_table(
assert TABLE_METADATA_LOCATION_REGEX.match(table.metadata_location)
-@mock_dynamodb
+@mock_aws
def test_load_table_from_self_identifier(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -205,7 +205,7 @@ def test_load_table_from_self_identifier(
assert TABLE_METADATA_LOCATION_REGEX.match(table.metadata_location)
-@mock_dynamodb
+@mock_aws
def test_load_non_exist_table(_bucket_initialize: None, database_name: str,
table_name: str) -> None:
identifier = (database_name, table_name)
test_catalog = DynamoDbCatalog("test_ddb_catalog",
warehouse=f"s3://{BUCKET_NAME}")
@@ -214,7 +214,7 @@ def test_load_non_exist_table(_bucket_initialize: None,
database_name: str, tabl
test_catalog.load_table(identifier)
-@mock_dynamodb
+@mock_aws
def test_drop_table(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -231,7 +231,7 @@ def test_drop_table(
test_catalog.load_table(identifier)
-@mock_dynamodb
+@mock_aws
def test_drop_table_from_self_identifier(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -250,7 +250,7 @@ def test_drop_table_from_self_identifier(
test_catalog.load_table(table.identifier)
-@mock_dynamodb
+@mock_aws
def test_drop_non_exist_table(_bucket_initialize: None, database_name: str,
table_name: str) -> None:
identifier = (database_name, table_name)
test_catalog = DynamoDbCatalog("test_ddb_catalog",
warehouse=f"s3://{BUCKET_NAME}")
@@ -258,7 +258,7 @@ def test_drop_non_exist_table(_bucket_initialize: None,
database_name: str, tabl
test_catalog.drop_table(identifier)
-@mock_dynamodb
+@mock_aws
def test_rename_table(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -281,7 +281,7 @@ def test_rename_table(
test_catalog.load_table(identifier)
-@mock_dynamodb
+@mock_aws
def test_rename_table_from_self_identifier(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -306,7 +306,7 @@ def test_rename_table_from_self_identifier(
test_catalog.load_table(table.identifier)
-@mock_dynamodb
+@mock_aws
def test_fail_on_rename_table_with_missing_required_params(_bucket_initialize:
None, database_name: str, table_name: str) -> None:
new_database_name = f"{database_name}_new"
new_table_name = f"{table_name}_new"
@@ -330,7 +330,7 @@ def
test_fail_on_rename_table_with_missing_required_params(_bucket_initialize: N
test_catalog.rename_table(identifier, new_identifier)
-@mock_dynamodb
+@mock_aws
def test_fail_on_rename_non_iceberg_table(
_dynamodb: boto3.client, _bucket_initialize: None, database_name: str,
table_name: str
) -> None:
@@ -359,7 +359,7 @@ def test_fail_on_rename_non_iceberg_table(
test_catalog.rename_table(identifier, new_identifier)
-@mock_dynamodb
+@mock_aws
def test_list_tables(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_list: List[str]
) -> None:
@@ -372,7 +372,7 @@ def test_list_tables(
assert (database_name, table_name) in loaded_table_list
-@mock_dynamodb
+@mock_aws
def test_list_namespaces(_bucket_initialize: None, database_list: List[str])
-> None:
test_catalog = DynamoDbCatalog("test_ddb_catalog")
for database_name in database_list:
@@ -382,7 +382,7 @@ def test_list_namespaces(_bucket_initialize: None,
database_list: List[str]) ->
assert (database_name,) in loaded_database_list
-@mock_dynamodb
+@mock_aws
def test_create_namespace_no_properties(_bucket_initialize: None,
database_name: str) -> None:
test_catalog = DynamoDbCatalog("test_ddb_catalog")
test_catalog.create_namespace(namespace=database_name)
@@ -393,7 +393,7 @@ def test_create_namespace_no_properties(_bucket_initialize:
None, database_name:
assert properties == {}
-@mock_dynamodb
+@mock_aws
def test_create_namespace_with_comment_and_location(_bucket_initialize: None,
database_name: str) -> None:
test_location = f"s3://{BUCKET_NAME}/{database_name}.db"
test_properties = {
@@ -410,7 +410,7 @@ def
test_create_namespace_with_comment_and_location(_bucket_initialize: None, da
assert properties["location"] == test_location
-@mock_dynamodb
+@mock_aws
def test_create_duplicated_namespace(_bucket_initialize: None, database_name:
str) -> None:
test_catalog = DynamoDbCatalog("test_ddb_catalog")
test_catalog.create_namespace(namespace=database_name)
@@ -421,7 +421,7 @@ def test_create_duplicated_namespace(_bucket_initialize:
None, database_name: st
test_catalog.create_namespace(namespace=database_name,
properties={"test": "test"})
-@mock_dynamodb
+@mock_aws
def test_drop_namespace(_bucket_initialize: None, database_name: str) -> None:
test_catalog = DynamoDbCatalog("test_ddb_catalog")
test_catalog.create_namespace(namespace=database_name)
@@ -433,7 +433,7 @@ def test_drop_namespace(_bucket_initialize: None,
database_name: str) -> None:
assert len(loaded_database_list) == 0
-@mock_dynamodb
+@mock_aws
def test_drop_non_empty_namespace(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -446,14 +446,14 @@ def test_drop_non_empty_namespace(
test_catalog.drop_namespace(database_name)
-@mock_dynamodb
+@mock_aws
def test_drop_non_exist_namespace(_bucket_initialize: None, database_name:
str) -> None:
test_catalog = DynamoDbCatalog("test_ddb_catalog")
with pytest.raises(NoSuchNamespaceError):
test_catalog.drop_namespace(database_name)
-@mock_dynamodb
+@mock_aws
def test_load_namespace_properties(_bucket_initialize: None, database_name:
str) -> None:
test_location = f"s3://{BUCKET_NAME}/{database_name}.db"
test_properties = {
@@ -471,14 +471,14 @@ def test_load_namespace_properties(_bucket_initialize:
None, database_name: str)
assert v == test_properties[k]
-@mock_dynamodb
+@mock_aws
def test_load_non_exist_namespace_properties(_bucket_initialize: None,
database_name: str) -> None:
test_catalog = DynamoDbCatalog("test_ddb_catalog")
with pytest.raises(NoSuchNamespaceError):
test_catalog.load_namespace_properties(database_name)
-@mock_dynamodb
+@mock_aws
def test_update_namespace_properties(_bucket_initialize: None, database_name:
str) -> None:
test_properties = {
"comment": "this is a test description",
@@ -503,7 +503,7 @@ def test_update_namespace_properties(_bucket_initialize:
None, database_name: st
test_catalog.drop_namespace(database_name)
-@mock_dynamodb
+@mock_aws
def test_load_empty_namespace_properties(_bucket_initialize: None,
database_name: str) -> None:
test_catalog = DynamoDbCatalog("test_ddb_catalog")
test_catalog.create_namespace(database_name)
@@ -511,7 +511,7 @@ def
test_load_empty_namespace_properties(_bucket_initialize: None, database_name
assert listed_properties == {}
-@mock_dynamodb
+@mock_aws
def
test_update_namespace_properties_overlap_update_removal(_bucket_initialize:
None, database_name: str) -> None:
test_properties = {
"comment": "this is a test description",
diff --git a/tests/catalog/test_glue.py b/tests/catalog/test_glue.py
index 63a213f..270d225 100644
--- a/tests/catalog/test_glue.py
+++ b/tests/catalog/test_glue.py
@@ -20,7 +20,7 @@ from unittest import mock
import boto3
import pyarrow as pa
import pytest
-from moto import mock_glue
+from moto import mock_aws
from pyiceberg.catalog.glue import GlueCatalog
from pyiceberg.exceptions import (
@@ -37,7 +37,7 @@ from pyiceberg.types import IntegerType
from tests.conftest import BUCKET_NAME, TABLE_METADATA_LOCATION_REGEX
-@mock_glue
+@mock_aws
def test_create_table_with_database_location(
_glue: boto3.client,
_bucket_initialize: None,
@@ -72,7 +72,7 @@ def test_create_table_with_database_location(
assert storage_descriptor["Location"] ==
f"s3://{BUCKET_NAME}/{database_name}.db/{table_name}"
-@mock_glue
+@mock_aws
def test_create_table_with_default_warehouse(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -86,7 +86,7 @@ def test_create_table_with_default_warehouse(
assert test_catalog._parse_metadata_version(table.metadata_location) == 0
-@mock_glue
+@mock_aws
def test_create_table_with_given_location(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -102,7 +102,7 @@ def test_create_table_with_given_location(
assert test_catalog._parse_metadata_version(table.metadata_location) == 0
-@mock_glue
+@mock_aws
def test_create_table_with_pyarrow_schema(
_bucket_initialize: None,
moto_endpoint_url: str,
@@ -124,7 +124,7 @@ def test_create_table_with_pyarrow_schema(
assert test_catalog._parse_metadata_version(table.metadata_location) == 0
-@mock_glue
+@mock_aws
def test_create_table_with_no_location(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -136,7 +136,7 @@ def test_create_table_with_no_location(
test_catalog.create_table(identifier=identifier,
schema=table_schema_nested)
-@mock_glue
+@mock_aws
def test_create_table_with_strips(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -150,7 +150,7 @@ def test_create_table_with_strips(
assert test_catalog._parse_metadata_version(table.metadata_location) == 0
-@mock_glue
+@mock_aws
def test_create_table_with_strips_bucket_root(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -164,7 +164,7 @@ def test_create_table_with_strips_bucket_root(
assert test_catalog._parse_metadata_version(table_strip.metadata_location)
== 0
-@mock_glue
+@mock_aws
def test_create_table_with_no_database(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -174,7 +174,7 @@ def test_create_table_with_no_database(
test_catalog.create_table(identifier=identifier,
schema=table_schema_nested)
-@mock_glue
+@mock_aws
def test_create_duplicated_table(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -186,7 +186,7 @@ def test_create_duplicated_table(
test_catalog.create_table(identifier, table_schema_nested)
-@mock_glue
+@mock_aws
def test_load_table(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -201,7 +201,7 @@ def test_load_table(
assert test_catalog._parse_metadata_version(table.metadata_location) == 0
-@mock_glue
+@mock_aws
def test_load_table_from_self_identifier(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -215,7 +215,7 @@ def test_load_table_from_self_identifier(
assert TABLE_METADATA_LOCATION_REGEX.match(table.metadata_location)
-@mock_glue
+@mock_aws
def test_load_non_exist_table(_bucket_initialize: None, moto_endpoint_url:
str, database_name: str, table_name: str) -> None:
identifier = (database_name, table_name)
test_catalog = GlueCatalog("glue", **{"s3.endpoint": moto_endpoint_url,
"warehouse": f"s3://{BUCKET_NAME}/"})
@@ -224,7 +224,7 @@ def test_load_non_exist_table(_bucket_initialize: None,
moto_endpoint_url: str,
test_catalog.load_table(identifier)
-@mock_glue
+@mock_aws
def test_drop_table(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -241,7 +241,7 @@ def test_drop_table(
test_catalog.load_table(identifier)
-@mock_glue
+@mock_aws
def test_drop_table_from_self_identifier(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -260,7 +260,7 @@ def test_drop_table_from_self_identifier(
test_catalog.load_table(table.identifier)
-@mock_glue
+@mock_aws
def test_drop_non_exist_table(_bucket_initialize: None, moto_endpoint_url:
str, database_name: str, table_name: str) -> None:
identifier = (database_name, table_name)
test_catalog = GlueCatalog("glue", **{"s3.endpoint": moto_endpoint_url,
"warehouse": f"s3://{BUCKET_NAME}/"})
@@ -268,7 +268,7 @@ def test_drop_non_exist_table(_bucket_initialize: None,
moto_endpoint_url: str,
test_catalog.drop_table(identifier)
-@mock_glue
+@mock_aws
def test_rename_table(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -292,7 +292,7 @@ def test_rename_table(
test_catalog.load_table(identifier)
-@mock_glue
+@mock_aws
def test_rename_table_from_self_identifier(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -317,7 +317,7 @@ def test_rename_table_from_self_identifier(
test_catalog.load_table(table.identifier)
-@mock_glue
+@mock_aws
def test_rename_table_no_params(
_glue: boto3.client, _bucket_initialize: None, moto_endpoint_url: str,
database_name: str, table_name: str
) -> None:
@@ -336,7 +336,7 @@ def test_rename_table_no_params(
test_catalog.rename_table(identifier, new_identifier)
-@mock_glue
+@mock_aws
def test_rename_non_iceberg_table(
_glue: boto3.client, _bucket_initialize: None, moto_endpoint_url: str,
database_name: str, table_name: str
) -> None:
@@ -359,7 +359,7 @@ def test_rename_non_iceberg_table(
test_catalog.rename_table(identifier, new_identifier)
-@mock_glue
+@mock_aws
def test_list_tables(
_bucket_initialize: None,
moto_endpoint_url: str,
@@ -377,7 +377,7 @@ def test_list_tables(
assert (database_name, table_name) in loaded_table_list
-@mock_glue
+@mock_aws
def test_list_namespaces(_bucket_initialize: None, moto_endpoint_url: str,
database_list: List[str]) -> None:
test_catalog = GlueCatalog("glue", **{"s3.endpoint": moto_endpoint_url})
for database_name in database_list:
@@ -387,7 +387,7 @@ def test_list_namespaces(_bucket_initialize: None,
moto_endpoint_url: str, datab
assert (database_name,) in loaded_database_list
-@mock_glue
+@mock_aws
def test_create_namespace_no_properties(_bucket_initialize: None,
moto_endpoint_url: str, database_name: str) -> None:
test_catalog = GlueCatalog("glue", **{"s3.endpoint": moto_endpoint_url})
test_catalog.create_namespace(namespace=database_name)
@@ -398,7 +398,7 @@ def test_create_namespace_no_properties(_bucket_initialize:
None, moto_endpoint_
assert properties == {}
-@mock_glue
+@mock_aws
def test_create_namespace_with_comment_and_location(_bucket_initialize: None,
moto_endpoint_url: str, database_name: str) -> None:
test_location = f"s3://{BUCKET_NAME}/{database_name}.db"
test_properties = {
@@ -415,7 +415,7 @@ def
test_create_namespace_with_comment_and_location(_bucket_initialize: None, mo
assert properties["location"] == test_location
-@mock_glue
+@mock_aws
def test_create_duplicated_namespace(_bucket_initialize: None,
moto_endpoint_url: str, database_name: str) -> None:
test_catalog = GlueCatalog("glue", **{"s3.endpoint": moto_endpoint_url})
test_catalog.create_namespace(namespace=database_name)
@@ -426,7 +426,7 @@ def test_create_duplicated_namespace(_bucket_initialize:
None, moto_endpoint_url
test_catalog.create_namespace(namespace=database_name,
properties={"test": "test"})
-@mock_glue
+@mock_aws
def test_drop_namespace(_bucket_initialize: None, moto_endpoint_url: str,
database_name: str) -> None:
test_catalog = GlueCatalog("glue", **{"s3.endpoint": moto_endpoint_url})
test_catalog.create_namespace(namespace=database_name)
@@ -438,7 +438,7 @@ def test_drop_namespace(_bucket_initialize: None,
moto_endpoint_url: str, databa
assert len(loaded_database_list) == 0
-@mock_glue
+@mock_aws
def test_drop_non_empty_namespace(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
@@ -451,14 +451,14 @@ def test_drop_non_empty_namespace(
test_catalog.drop_namespace(database_name)
-@mock_glue
+@mock_aws
def test_drop_non_exist_namespace(_bucket_initialize: None, moto_endpoint_url:
str, database_name: str) -> None:
test_catalog = GlueCatalog("glue", **{"s3.endpoint": moto_endpoint_url})
with pytest.raises(NoSuchNamespaceError):
test_catalog.drop_namespace(database_name)
-@mock_glue
+@mock_aws
def test_load_namespace_properties(_bucket_initialize: None,
moto_endpoint_url: str, database_name: str) -> None:
test_location = f"s3://{BUCKET_NAME}/{database_name}.db"
test_properties = {
@@ -476,14 +476,14 @@ def test_load_namespace_properties(_bucket_initialize:
None, moto_endpoint_url:
assert v == test_properties[k]
-@mock_glue
+@mock_aws
def test_load_non_exist_namespace_properties(_bucket_initialize: None,
moto_endpoint_url: str, database_name: str) -> None:
test_catalog = GlueCatalog("glue", **{"s3.endpoint": moto_endpoint_url})
with pytest.raises(NoSuchNamespaceError):
test_catalog.load_namespace_properties(database_name)
-@mock_glue
+@mock_aws
def test_update_namespace_properties(_bucket_initialize: None,
moto_endpoint_url: str, database_name: str) -> None:
test_properties = {
"comment": "this is a test description",
@@ -508,7 +508,7 @@ def test_update_namespace_properties(_bucket_initialize:
None, moto_endpoint_url
test_catalog.drop_namespace(database_name)
-@mock_glue
+@mock_aws
def test_load_empty_namespace_properties(_bucket_initialize: None,
moto_endpoint_url: str, database_name: str) -> None:
test_catalog = GlueCatalog("glue", **{"s3.endpoint": moto_endpoint_url})
test_catalog.create_namespace(database_name)
@@ -516,7 +516,7 @@ def
test_load_empty_namespace_properties(_bucket_initialize: None, moto_endpoint
assert listed_properties == {}
-@mock_glue
+@mock_aws
def test_load_default_namespace_properties(_glue, _bucket_initialize: None,
moto_endpoint_url: str, database_name: str) -> None: # type: ignore
# simulate creating database with default settings through AWS Glue Web
Console
_glue.create_database(DatabaseInput={"Name": database_name})
@@ -525,7 +525,7 @@ def test_load_default_namespace_properties(_glue,
_bucket_initialize: None, moto
assert listed_properties == {}
-@mock_glue
+@mock_aws
def test_update_namespace_properties_overlap_update_removal(
_bucket_initialize: None, moto_endpoint_url: str, database_name: str
) -> None:
@@ -546,7 +546,7 @@ def test_update_namespace_properties_overlap_update_removal(
assert test_catalog.load_namespace_properties(database_name) ==
test_properties
-@mock_glue
+@mock_aws
def test_passing_profile_name() -> None:
session_properties: Dict[str, Any] = {
"aws_access_key_id": "abc",
@@ -566,7 +566,7 @@ def test_passing_profile_name() -> None:
assert test_catalog.glue is mock_session().client()
-@mock_glue
+@mock_aws
def test_commit_table_update_schema(
_glue: boto3.client,
_bucket_initialize: None,
@@ -619,7 +619,7 @@ def test_commit_table_update_schema(
assert storage_descriptor["Location"] ==
f"s3://{BUCKET_NAME}/{database_name}.db/{table_name}"
-@mock_glue
+@mock_aws
def test_commit_table_properties(
_bucket_initialize: None, moto_endpoint_url: str, table_schema_nested:
Schema, database_name: str, table_name: str
) -> None:
diff --git a/tests/conftest.py b/tests/conftest.py
index 063c064..c0c3d10 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -45,7 +45,7 @@ from urllib.parse import urlparse
import boto3
import pytest
-from moto import mock_dynamodb, mock_glue
+from moto import mock_aws
from pyiceberg import schema
from pyiceberg.catalog import Catalog
@@ -1784,23 +1784,24 @@ def moto_endpoint_url(moto_server:
"ThreadedMotoServer") -> str:
return _url
[email protected](name="_s3")
[email protected](name="_s3", scope="function")
def fixture_s3(_aws_credentials: None, moto_endpoint_url: str) ->
Generator[boto3.client, None, None]:
"""Yield a mocked S3 client."""
- yield boto3.client("s3", region_name="us-east-1",
endpoint_url=moto_endpoint_url)
+ with mock_aws():
+ yield boto3.client("s3", region_name="us-east-1",
endpoint_url=moto_endpoint_url)
@pytest.fixture(name="_glue")
def fixture_glue(_aws_credentials: None) -> Generator[boto3.client, None,
None]:
"""Yield a mocked glue client."""
- with mock_glue():
+ with mock_aws():
yield boto3.client("glue", region_name="us-east-1")
@pytest.fixture(name="_dynamodb")
def fixture_dynamodb(_aws_credentials: None) -> Generator[boto3.client, None,
None]:
"""Yield a mocked DynamoDB client."""
- with mock_dynamodb():
+ with mock_aws():
yield boto3.client("dynamodb", region_name="us-east-1")
@@ -1892,7 +1893,8 @@ def get_s3_path(bucket_name: str, database_name:
Optional[str] = None, table_nam
@pytest.fixture(name="s3", scope="module")
def fixture_s3_client() -> boto3.client:
- yield boto3.client("s3")
+ with mock_aws():
+ yield boto3.client("s3")
def clean_up(test_catalog: Catalog) -> None: