From 51d9785719e525587189bc2803330d0d911bc115 Mon Sep 17 00:00:00 2001 From: DanCardin Date: Fri, 16 Sep 2022 14:26:59 -0400 Subject: [PATCH] refactor: Remove unnecessary namespacing of fixtures. (#167) --- docs/source/api.rst | 2 +- pyproject.toml | 2 +- src/pytest_mock_resources/__init__.py | 8 +-- src/pytest_mock_resources/fixture/__init__.py | 53 ++++++++++++++++--- src/pytest_mock_resources/fixture/base.py | 8 +++ .../{database/generic.py => credentials.py} | 0 .../fixture/database/__init__.py | 26 --------- .../fixture/database/relational/__init__.py | 22 -------- .../fixture/{database => }/mongo.py | 2 +- .../{database/relational => }/mysql.py | 4 +- .../{database/relational => }/postgresql.py | 10 ++-- .../fixture/{database => }/redis.py | 2 +- .../relational => }/redshift/__init__.py | 6 +-- .../{database/relational => }/redshift/udf.py | 2 +- .../{database/relational => }/sqlite.py | 4 +- .../relational/generic.py => sqlalchemy.py} | 0 tests/fixture/__init__.py | 2 +- .../relational => redshift}/__init__.py | 0 .../{database => redshift}/test_copy.py | 2 +- .../{database => redshift}/test_patch.py | 2 +- .../{database => redshift}/test_udf.py | 0 .../{database => redshift}/test_unload.py | 2 +- .../__init__.py => redshift/utils.py} | 0 tests/fixture/{database => }/test_database.py | 2 +- ...test_generic.py => test_engine_manager.py} | 2 +- tests/fixture/{database => }/test_mongo.py | 0 .../{database => }/test_ordered_actions.py | 0 tests/fixture/{database => }/test_postgres.py | 2 +- tests/fixture/{database => }/test_redis.py | 0 tests/fixture/{database => }/test_rows.py | 0 tests/fixture/{database => }/test_sqlite.py | 2 +- .../fixture/{database => }/test_statements.py | 0 32 files changed, 81 insertions(+), 86 deletions(-) create mode 100644 src/pytest_mock_resources/fixture/base.py rename src/pytest_mock_resources/fixture/{database/generic.py => credentials.py} (100%) delete mode 100644 src/pytest_mock_resources/fixture/database/__init__.py delete mode 100644 src/pytest_mock_resources/fixture/database/relational/__init__.py rename src/pytest_mock_resources/fixture/{database => }/mongo.py (96%) rename src/pytest_mock_resources/fixture/{database/relational => }/mysql.py (95%) rename src/pytest_mock_resources/fixture/{database/relational => }/postgresql.py (96%) rename src/pytest_mock_resources/fixture/{database => }/redis.py (96%) rename src/pytest_mock_resources/fixture/{database/relational => }/redshift/__init__.py (95%) rename src/pytest_mock_resources/fixture/{database/relational => }/redshift/udf.py (98%) rename src/pytest_mock_resources/fixture/{database/relational => }/sqlite.py (98%) rename src/pytest_mock_resources/{fixture/database/relational/generic.py => sqlalchemy.py} (100%) rename tests/fixture/{database/relational => redshift}/__init__.py (100%) rename tests/fixture/{database => redshift}/test_copy.py (99%) rename tests/fixture/{database => redshift}/test_patch.py (98%) rename tests/fixture/{database => redshift}/test_udf.py (100%) rename tests/fixture/{database => redshift}/test_unload.py (99%) rename tests/fixture/{database/__init__.py => redshift/utils.py} (100%) rename tests/fixture/{database => }/test_database.py (97%) rename tests/fixture/{database/relational/test_generic.py => test_engine_manager.py} (98%) rename tests/fixture/{database => }/test_mongo.py (100%) rename tests/fixture/{database => }/test_ordered_actions.py (100%) rename tests/fixture/{database => }/test_postgres.py (94%) rename tests/fixture/{database => }/test_redis.py (100%) rename tests/fixture/{database => }/test_rows.py (100%) rename tests/fixture/{database => }/test_sqlite.py (99%) rename tests/fixture/{database => }/test_statements.py (100%) diff --git a/docs/source/api.rst b/docs/source/api.rst index 0e517e2b..c42a5e72 100644 --- a/docs/source/api.rst +++ b/docs/source/api.rst @@ -9,7 +9,7 @@ Fixture Functions :members: create_mongo_fixture, create_mysql_fixture, create_postgres_fixture, create_redis_fixture, create_redshift_fixture, create_sqlite_fixture, Rows, Statements, StaticStatements -.. automodule:: pytest_mock_resources.fixture.database.generic +.. automodule:: pytest_mock_resources.fixture.credentials :members: Credentials Fixture Config diff --git a/pyproject.toml b/pyproject.toml index 27479751..fa760b4c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "pytest-mock-resources" -version = "2.5.1" +version = "2.5.2" description = "A pytest plugin for easily instantiating reproducible mock resources." authors = [ "Omar Khan ", diff --git a/src/pytest_mock_resources/__init__.py b/src/pytest_mock_resources/__init__.py index eaa394d4..75d568c0 100644 --- a/src/pytest_mock_resources/__init__.py +++ b/src/pytest_mock_resources/__init__.py @@ -6,13 +6,14 @@ RedisConfig, RedshiftConfig, ) -from pytest_mock_resources.fixture.database import ( +from pytest_mock_resources.fixture import ( create_mongo_fixture, create_mysql_fixture, create_postgres_fixture, create_redis_fixture, create_redshift_fixture, create_sqlite_fixture, + Credentials, pmr_mongo_config, pmr_mongo_container, pmr_mysql_config, @@ -23,9 +24,6 @@ pmr_redis_container, pmr_redshift_config, pmr_redshift_container, - Rows, - Statements, - StaticStatements, ) from pytest_mock_resources.hooks import ( # noqa pytest_addoption, @@ -33,6 +31,7 @@ pytest_itemcollected, pytest_sessionfinish, ) +from pytest_mock_resources.sqlalchemy import Rows, Statements, StaticStatements __all__ = [ "get_container", @@ -47,6 +46,7 @@ "create_redis_fixture", "create_redshift_fixture", "create_sqlite_fixture", + "Credentials", "pmr_mongo_config", "pmr_mongo_container", "pmr_mysql_config", diff --git a/src/pytest_mock_resources/fixture/__init__.py b/src/pytest_mock_resources/fixture/__init__.py index 27bace09..c74b5a8f 100644 --- a/src/pytest_mock_resources/fixture/__init__.py +++ b/src/pytest_mock_resources/fixture/__init__.py @@ -1,8 +1,47 @@ -import uuid +from pytest_mock_resources.fixture.credentials import Credentials +from pytest_mock_resources.fixture.mongo import ( + create_mongo_fixture, + pmr_mongo_config, + pmr_mongo_container, +) +from pytest_mock_resources.fixture.mysql import ( + create_mysql_fixture, + pmr_mysql_config, + pmr_mysql_container, +) +from pytest_mock_resources.fixture.postgresql import ( + create_postgres_fixture, + pmr_postgres_config, + pmr_postgres_container, +) +from pytest_mock_resources.fixture.redis import ( + create_redis_fixture, + pmr_redis_config, + pmr_redis_container, +) +from pytest_mock_resources.fixture.redshift import ( + create_redshift_fixture, + pmr_redshift_config, + pmr_redshift_container, +) +from pytest_mock_resources.fixture.sqlite import create_sqlite_fixture - -def generate_fixture_id(enabled: bool = True, name=""): - if enabled: - uuid_str = str(uuid.uuid4()).replace("-", "_") - return "_".join(["pmr_template", name, uuid_str]) - return None +__all__ = [ + "create_mongo_fixture", + "create_mysql_fixture", + "create_postgres_fixture", + "create_redis_fixture", + "create_redshift_fixture", + "create_sqlite_fixture", + "Credentials", + "pmr_mongo_config", + "pmr_mongo_container", + "pmr_mysql_config", + "pmr_mysql_container", + "pmr_postgres_config", + "pmr_postgres_container", + "pmr_redis_config", + "pmr_redis_container", + "pmr_redshift_config", + "pmr_redshift_container", +] diff --git a/src/pytest_mock_resources/fixture/base.py b/src/pytest_mock_resources/fixture/base.py new file mode 100644 index 00000000..27bace09 --- /dev/null +++ b/src/pytest_mock_resources/fixture/base.py @@ -0,0 +1,8 @@ +import uuid + + +def generate_fixture_id(enabled: bool = True, name=""): + if enabled: + uuid_str = str(uuid.uuid4()).replace("-", "_") + return "_".join(["pmr_template", name, uuid_str]) + return None diff --git a/src/pytest_mock_resources/fixture/database/generic.py b/src/pytest_mock_resources/fixture/credentials.py similarity index 100% rename from src/pytest_mock_resources/fixture/database/generic.py rename to src/pytest_mock_resources/fixture/credentials.py diff --git a/src/pytest_mock_resources/fixture/database/__init__.py b/src/pytest_mock_resources/fixture/database/__init__.py deleted file mode 100644 index 6b2e44b7..00000000 --- a/src/pytest_mock_resources/fixture/database/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# flake8: noqa -from pytest_mock_resources.fixture.database.mongo import ( - create_mongo_fixture, - pmr_mongo_config, - pmr_mongo_container, -) -from pytest_mock_resources.fixture.database.redis import ( - create_redis_fixture, - pmr_redis_config, - pmr_redis_container, -) -from pytest_mock_resources.fixture.database.relational import ( - create_mysql_fixture, - create_postgres_fixture, - create_redshift_fixture, - create_sqlite_fixture, - pmr_mysql_config, - pmr_mysql_container, - pmr_postgres_config, - pmr_postgres_container, - pmr_redshift_config, - pmr_redshift_container, - Rows, - Statements, - StaticStatements, -) diff --git a/src/pytest_mock_resources/fixture/database/relational/__init__.py b/src/pytest_mock_resources/fixture/database/relational/__init__.py deleted file mode 100644 index f17efcd0..00000000 --- a/src/pytest_mock_resources/fixture/database/relational/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -# flake8: noqa -from pytest_mock_resources.fixture.database.relational.generic import ( - Rows, - Statements, - StaticStatements, -) -from pytest_mock_resources.fixture.database.relational.mysql import ( - create_mysql_fixture, - pmr_mysql_config, - pmr_mysql_container, -) -from pytest_mock_resources.fixture.database.relational.postgresql import ( - create_postgres_fixture, - pmr_postgres_config, - pmr_postgres_container, -) -from pytest_mock_resources.fixture.database.relational.redshift import ( - create_redshift_fixture, - pmr_redshift_config, - pmr_redshift_container, -) -from pytest_mock_resources.fixture.database.relational.sqlite import create_sqlite_fixture diff --git a/src/pytest_mock_resources/fixture/database/mongo.py b/src/pytest_mock_resources/fixture/mongo.py similarity index 96% rename from src/pytest_mock_resources/fixture/database/mongo.py rename to src/pytest_mock_resources/fixture/mongo.py index 57b5722b..fca95760 100644 --- a/src/pytest_mock_resources/fixture/database/mongo.py +++ b/src/pytest_mock_resources/fixture/mongo.py @@ -3,7 +3,7 @@ from pytest_mock_resources.compat import pymongo from pytest_mock_resources.container.base import get_container from pytest_mock_resources.container.mongo import MongoConfig -from pytest_mock_resources.fixture.database.generic import assign_fixture_credentials +from pytest_mock_resources.fixture.credentials import assign_fixture_credentials @pytest.fixture(scope="session") diff --git a/src/pytest_mock_resources/fixture/database/relational/mysql.py b/src/pytest_mock_resources/fixture/mysql.py similarity index 95% rename from src/pytest_mock_resources/fixture/database/relational/mysql.py rename to src/pytest_mock_resources/fixture/mysql.py index 88aa11c3..39fc4f8c 100644 --- a/src/pytest_mock_resources/fixture/database/relational/mysql.py +++ b/src/pytest_mock_resources/fixture/mysql.py @@ -4,8 +4,8 @@ from pytest_mock_resources.container.base import get_container from pytest_mock_resources.container.mysql import get_sqlalchemy_engine, MysqlConfig -from pytest_mock_resources.fixture.database.generic import assign_fixture_credentials -from pytest_mock_resources.fixture.database.relational.generic import EngineManager +from pytest_mock_resources.fixture.credentials import assign_fixture_credentials +from pytest_mock_resources.sqlalchemy import EngineManager @pytest.fixture(scope="session") diff --git a/src/pytest_mock_resources/fixture/database/relational/postgresql.py b/src/pytest_mock_resources/fixture/postgresql.py similarity index 96% rename from src/pytest_mock_resources/fixture/database/relational/postgresql.py rename to src/pytest_mock_resources/fixture/postgresql.py index 82c5088b..031274b6 100644 --- a/src/pytest_mock_resources/fixture/database/relational/postgresql.py +++ b/src/pytest_mock_resources/fixture/postgresql.py @@ -7,13 +7,9 @@ from pytest_mock_resources.container.base import get_container from pytest_mock_resources.container.postgres import get_sqlalchemy_engine, PostgresConfig -from pytest_mock_resources.fixture import generate_fixture_id -from pytest_mock_resources.fixture.database.generic import assign_fixture_credentials -from pytest_mock_resources.fixture.database.relational.generic import ( - bifurcate_actions, - EngineManager, - normalize_actions, -) +from pytest_mock_resources.fixture.base import generate_fixture_id +from pytest_mock_resources.fixture.credentials import assign_fixture_credentials +from pytest_mock_resources.sqlalchemy import bifurcate_actions, EngineManager, normalize_actions log = logging.getLogger(__name__) diff --git a/src/pytest_mock_resources/fixture/database/redis.py b/src/pytest_mock_resources/fixture/redis.py similarity index 96% rename from src/pytest_mock_resources/fixture/database/redis.py rename to src/pytest_mock_resources/fixture/redis.py index 2db2f782..e426bf2d 100644 --- a/src/pytest_mock_resources/fixture/database/redis.py +++ b/src/pytest_mock_resources/fixture/redis.py @@ -3,7 +3,7 @@ from pytest_mock_resources.compat import redis from pytest_mock_resources.container.base import get_container from pytest_mock_resources.container.redis import RedisConfig -from pytest_mock_resources.fixture.database.generic import assign_fixture_credentials +from pytest_mock_resources.fixture.credentials import assign_fixture_credentials @pytest.fixture(scope="session") diff --git a/src/pytest_mock_resources/fixture/database/relational/redshift/__init__.py b/src/pytest_mock_resources/fixture/redshift/__init__.py similarity index 95% rename from src/pytest_mock_resources/fixture/database/relational/redshift/__init__.py rename to src/pytest_mock_resources/fixture/redshift/__init__.py index a14fbaef..5a6cb47c 100644 --- a/src/pytest_mock_resources/fixture/database/relational/redshift/__init__.py +++ b/src/pytest_mock_resources/fixture/redshift/__init__.py @@ -2,8 +2,8 @@ from pytest_mock_resources.container.base import get_container from pytest_mock_resources.container.redshift import get_sqlalchemy_engine, RedshiftConfig -from pytest_mock_resources.fixture import generate_fixture_id -from pytest_mock_resources.fixture.database.relational.postgresql import create_engine_manager +from pytest_mock_resources.fixture.base import generate_fixture_id +from pytest_mock_resources.fixture.postgresql import create_engine_manager from pytest_mock_resources.patch.redshift import psycopg2, sqlalchemy @@ -69,7 +69,7 @@ def create_redshift_fixture( to bad default behavior). """ - from pytest_mock_resources.fixture.database.relational.redshift.udf import REDSHIFT_UDFS + from pytest_mock_resources.fixture.redshift.udf import REDSHIFT_UDFS fixture_id = generate_fixture_id(enabled=template_database, name="pg") diff --git a/src/pytest_mock_resources/fixture/database/relational/redshift/udf.py b/src/pytest_mock_resources/fixture/redshift/udf.py similarity index 98% rename from src/pytest_mock_resources/fixture/database/relational/redshift/udf.py rename to src/pytest_mock_resources/fixture/redshift/udf.py index dff9ca3b..be549b0c 100644 --- a/src/pytest_mock_resources/fixture/database/relational/redshift/udf.py +++ b/src/pytest_mock_resources/fixture/redshift/udf.py @@ -2,7 +2,7 @@ from sqlalchemy import text -from pytest_mock_resources.fixture.database import Statements +from pytest_mock_resources.sqlalchemy import Statements @enum.unique diff --git a/src/pytest_mock_resources/fixture/database/relational/sqlite.py b/src/pytest_mock_resources/fixture/sqlite.py similarity index 98% rename from src/pytest_mock_resources/fixture/database/relational/sqlite.py rename to src/pytest_mock_resources/fixture/sqlite.py index 792fbb37..a553458c 100644 --- a/src/pytest_mock_resources/fixture/database/relational/sqlite.py +++ b/src/pytest_mock_resources/fixture/sqlite.py @@ -25,8 +25,8 @@ from sqlalchemy.ext.compiler import compiles from sqlalchemy.sql import sqltypes -from pytest_mock_resources.fixture.database.generic import assign_fixture_credentials -from pytest_mock_resources.fixture.database.relational.generic import EngineManager +from pytest_mock_resources.fixture.credentials import assign_fixture_credentials +from pytest_mock_resources.sqlalchemy import EngineManager class PMRSQLiteDDLCompiler(sqlite_base.SQLiteDDLCompiler): diff --git a/src/pytest_mock_resources/fixture/database/relational/generic.py b/src/pytest_mock_resources/sqlalchemy.py similarity index 100% rename from src/pytest_mock_resources/fixture/database/relational/generic.py rename to src/pytest_mock_resources/sqlalchemy.py diff --git a/tests/fixture/__init__.py b/tests/fixture/__init__.py index 817bde56..810cdb16 100644 --- a/tests/fixture/__init__.py +++ b/tests/fixture/__init__.py @@ -1,3 +1,3 @@ import pytest -pytest.register_assert_rewrite("tests.fixture.database") +pytest.register_assert_rewrite("tests.fixture.redshift.utils") diff --git a/tests/fixture/database/relational/__init__.py b/tests/fixture/redshift/__init__.py similarity index 100% rename from tests/fixture/database/relational/__init__.py rename to tests/fixture/redshift/__init__.py diff --git a/tests/fixture/database/test_copy.py b/tests/fixture/redshift/test_copy.py similarity index 99% rename from tests/fixture/database/test_copy.py rename to tests/fixture/redshift/test_copy.py index 432c3adc..6852ad21 100644 --- a/tests/fixture/database/test_copy.py +++ b/tests/fixture/redshift/test_copy.py @@ -6,7 +6,7 @@ from pytest_mock_resources.compat import boto3, moto from pytest_mock_resources.compat.sqlalchemy import declarative_base from tests import skip_if_sqlalchemy2 -from tests.fixture.database import ( +from tests.fixture.redshift.utils import ( COPY_TEMPLATE, data_columns, fetch_values_from_table_and_assert, diff --git a/tests/fixture/database/test_patch.py b/tests/fixture/redshift/test_patch.py similarity index 98% rename from tests/fixture/database/test_patch.py rename to tests/fixture/redshift/test_patch.py index d4d03963..b43acfb7 100644 --- a/tests/fixture/database/test_patch.py +++ b/tests/fixture/redshift/test_patch.py @@ -3,7 +3,7 @@ from sqlalchemy import text from pytest_mock_resources import create_postgres_fixture, create_redshift_fixture -from tests.fixture.database import ( +from tests.fixture.redshift.utils import ( copy_fn_to_test_create_engine_patch, copy_fn_to_test_psycopg2_connect_patch, copy_fn_to_test_psycopg2_connect_patch_as_context_manager, diff --git a/tests/fixture/database/test_udf.py b/tests/fixture/redshift/test_udf.py similarity index 100% rename from tests/fixture/database/test_udf.py rename to tests/fixture/redshift/test_udf.py diff --git a/tests/fixture/database/test_unload.py b/tests/fixture/redshift/test_unload.py similarity index 99% rename from tests/fixture/database/test_unload.py rename to tests/fixture/redshift/test_unload.py index 87e8d6a6..cfc28530 100644 --- a/tests/fixture/database/test_unload.py +++ b/tests/fixture/redshift/test_unload.py @@ -4,7 +4,7 @@ from pytest_mock_resources import create_redshift_fixture from pytest_mock_resources.compat import moto from tests import skip_if_sqlalchemy2 -from tests.fixture.database import ( +from tests.fixture.redshift.utils import ( fetch_values_from_s3_and_assert, randomcase, setup_table_and_insert_data, diff --git a/tests/fixture/database/__init__.py b/tests/fixture/redshift/utils.py similarity index 100% rename from tests/fixture/database/__init__.py rename to tests/fixture/redshift/utils.py diff --git a/tests/fixture/database/test_database.py b/tests/fixture/test_database.py similarity index 97% rename from tests/fixture/database/test_database.py rename to tests/fixture/test_database.py index aca7fe77..e1cc5ce3 100644 --- a/tests/fixture/database/test_database.py +++ b/tests/fixture/test_database.py @@ -8,7 +8,7 @@ create_redshift_fixture, create_sqlite_fixture, ) -from pytest_mock_resources.fixture.database.relational.generic import EngineManager +from pytest_mock_resources.sqlalchemy import EngineManager from tests import skip_if_not_sqlalchemy2 sqlite = create_sqlite_fixture() diff --git a/tests/fixture/database/relational/test_generic.py b/tests/fixture/test_engine_manager.py similarity index 98% rename from tests/fixture/database/relational/test_generic.py rename to tests/fixture/test_engine_manager.py index 8a86e1a0..c5c359e2 100644 --- a/tests/fixture/database/relational/test_generic.py +++ b/tests/fixture/test_engine_manager.py @@ -5,7 +5,7 @@ from pytest_mock_resources import create_postgres_fixture, create_sqlite_fixture, Rows from pytest_mock_resources.compat.sqlalchemy import declarative_base, select -from pytest_mock_resources.fixture.database.relational.generic import identify_matching_tables +from pytest_mock_resources.sqlalchemy import identify_matching_tables from tests import skip_if_not_sqlalchemy2, skip_if_sqlalchemy2 Base = declarative_base() diff --git a/tests/fixture/database/test_mongo.py b/tests/fixture/test_mongo.py similarity index 100% rename from tests/fixture/database/test_mongo.py rename to tests/fixture/test_mongo.py diff --git a/tests/fixture/database/test_ordered_actions.py b/tests/fixture/test_ordered_actions.py similarity index 100% rename from tests/fixture/database/test_ordered_actions.py rename to tests/fixture/test_ordered_actions.py diff --git a/tests/fixture/database/test_postgres.py b/tests/fixture/test_postgres.py similarity index 94% rename from tests/fixture/database/test_postgres.py rename to tests/fixture/test_postgres.py index ca66d83e..943cfb81 100644 --- a/tests/fixture/database/test_postgres.py +++ b/tests/fixture/test_postgres.py @@ -3,7 +3,7 @@ from pytest_mock_resources import create_postgres_fixture from pytest_mock_resources.compat.sqlalchemy import declarative_base from pytest_mock_resources.container.postgres import get_sqlalchemy_engine -from pytest_mock_resources.fixture.database.relational.postgresql import _produce_clean_database +from pytest_mock_resources.fixture.postgresql import _produce_clean_database Base = declarative_base() diff --git a/tests/fixture/database/test_redis.py b/tests/fixture/test_redis.py similarity index 100% rename from tests/fixture/database/test_redis.py rename to tests/fixture/test_redis.py diff --git a/tests/fixture/database/test_rows.py b/tests/fixture/test_rows.py similarity index 100% rename from tests/fixture/database/test_rows.py rename to tests/fixture/test_rows.py diff --git a/tests/fixture/database/test_sqlite.py b/tests/fixture/test_sqlite.py similarity index 99% rename from tests/fixture/database/test_sqlite.py rename to tests/fixture/test_sqlite.py index 04023f2e..0f6385b0 100644 --- a/tests/fixture/database/test_sqlite.py +++ b/tests/fixture/test_sqlite.py @@ -7,7 +7,7 @@ from pytest_mock_resources import create_postgres_fixture, create_sqlite_fixture, Rows from pytest_mock_resources.compat.sqlalchemy import declarative_base, select -from pytest_mock_resources.fixture.database.relational.sqlite import utc +from pytest_mock_resources.fixture.sqlite import utc Base = declarative_base() diff --git a/tests/fixture/database/test_statements.py b/tests/fixture/test_statements.py similarity index 100% rename from tests/fixture/database/test_statements.py rename to tests/fixture/test_statements.py