sqlalchemy-declarative-extensions 0.16.7__tar.gz → 0.16.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/CHANGELOG.md +9 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/PKG-INFO +1 -1
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/conf.py +1 -1
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/pyproject.toml +1 -1
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/audit.py +10 -2
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/postgresql/acl.py +3 -1
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/postgresql/trigger.py +4 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/trigger/base.py +6 -1
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/trigger/compare.py +12 -10
- sqlalchemy_declarative_extensions-0.16.9/tests/audit/test_schema_support.py +253 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/dialect/postgresql/test_acl.py +20 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/test_create_postgres.py +10 -0
- sqlalchemy_declarative_extensions-0.16.9/tests/trigger/test_same_name_postgres.py +63 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/.github/FUNDING.yml +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/.github/workflows/release.yml +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/.github/workflows/test.yml +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/.gitignore +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/.readthedocs.yml +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/CONTRIBUTING.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/LICENSE +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/Makefile +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/README.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/Makefile +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/docs/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/make.bat +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/pyproject.toml +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/_static/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/alembic.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/api.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/audit_tables.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/contributing/dialect-support.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/contributing/index.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/contributing/testing.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/dialects/index.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/dialects/mysql.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/dialects/postgresql.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/dialects/snowflake.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/functions.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/grants.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/index.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/roles.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/rows.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/schemas.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/sqlalchemy.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/triggers.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/source/views.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/uv.lock +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/setup.cfg +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/alembic/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/alembic/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/alembic/database.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/alembic/function.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/alembic/grant.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/alembic/procedure.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/alembic/role.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/alembic/row.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/alembic/schema.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/alembic/trigger.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/alembic/view.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/api.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/context.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/database/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/database/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/database/compare.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/database/ddl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/from_string.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/mysql/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/mysql/function.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/mysql/procedure.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/mysql/query.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/mysql/schema.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/mysql/trigger.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/postgresql/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/postgresql/function.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/postgresql/grant.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/postgresql/grant_type.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/postgresql/procedure.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/postgresql/query.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/postgresql/role.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/postgresql/schema.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/postgresql/view.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/query.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/snowflake/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/snowflake/information_schema.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/snowflake/query.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/snowflake/role.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/snowflake/schema.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/snowflake/view.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/sqlite/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/sqlite/query.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/dialects/sqlite/schema.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/function/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/function/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/function/compare.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/function/ddl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/grant/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/grant/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/grant/compare.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/grant/ddl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/op.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/procedure/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/procedure/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/procedure/compare.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/procedure/ddl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/py.typed +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/role/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/role/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/role/compare.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/role/ddl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/role/generic.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/role/state.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/role/topological_sort.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/row/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/row/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/row/compare.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/row/query.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/schema/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/schema/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/schema/compare.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/schema/ddl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/sql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/sqlalchemy.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/trigger/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/trigger/ddl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/typing.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/view/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/view/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/view/compare.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/src/sqlalchemy_declarative_extensions/view/ddl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/audit/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/audit/test_context_values.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/audit/test_create_all.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/audit/test_disabled_operation.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/audit/test_quoting.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/dialect/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/dialect/postgresql/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/dialect/postgresql/test_exclude_extension_objects.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/dialect/postgresql/test_function_defaults.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/dialect/postgresql/test_postgres_11.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/dialect/postgresql/test_postgres_14_sqlbody.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_create_role/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_create_role/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_create_role/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_create_role/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_create_role/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_create_role/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_create_role/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_create_rows/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_create_rows/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_create_rows/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_create_rows/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_create_rows/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_create_rows/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_create_rows/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_create_rows/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_rows/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_rows/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_rows/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_rows/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_rows/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_rows/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_rows/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_rows/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_rows_ignore_unspecified/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_rows_ignore_unspecified/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_rows_ignore_unspecified/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_rows_ignore_unspecified/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_rows_ignore_unspecified/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_rows_ignore_unspecified/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_rows_ignore_unspecified/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_rows_ignore_unspecified/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_unspecified_grants/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_unspecified_grants/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_unspecified_grants/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_unspecified_grants/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_unspecified_grants/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_unspecified_grants/migrations/versions/0522a3309c12_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_unspecified_grants/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_delete_unspecified_grants/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_pg_postgis/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_pg_postgis/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_pg_postgis/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_pg_postgis/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_pg_postgis/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_pg_postgis/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_pg_sqlbody/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_pg_sqlbody/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_pg_sqlbody/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_pg_sqlbody/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_pg_sqlbody/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_pg_sqlbody/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_with_params_mysql/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_with_params_mysql/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_with_params_mysql/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_with_params_mysql/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_with_params_mysql/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_with_params_mysql/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_with_params_postgresql/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_with_params_postgresql/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_with_params_postgresql/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_with_params_postgresql/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_with_params_postgresql/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_create_with_params_postgresql/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_drop/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_drop/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_drop/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_drop/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_drop/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_drop/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_leading_whitespace/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_leading_whitespace/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_leading_whitespace/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_leading_whitespace/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_leading_whitespace/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_leading_whitespace/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_rewriter/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_rewriter/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_rewriter/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_rewriter/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_rewriter/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_rewriter/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_update/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_update/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_update/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_update/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_update/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_function_update/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_after_schema/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_after_schema/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_after_schema/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_after_schema/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_after_schema/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_after_schema/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_after_schema/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_disabled/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_disabled/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_disabled/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_disabled/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_disabled/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_disabled/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_disabled/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_rewriter/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_rewriter/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_rewriter/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_rewriter/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_rewriter/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_rewriter/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_rewriter/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_update_existing/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_update_existing/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_update_existing/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_update_existing/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_update_existing/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_update_existing/migrations/versions/0522a3309c12_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_update_existing/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_grant_update_existing/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_identify_grants/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_identify_grants/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_identify_grants/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_identify_grants/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_identify_grants/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_identify_grants/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_identify_grants/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_procedure_create/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_procedure_create/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_procedure_create/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_procedure_create/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_procedure_create/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_procedure_create/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_procedure_rewriter/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_procedure_rewriter/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_procedure_rewriter/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_procedure_rewriter/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_procedure_rewriter/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_procedure_rewriter/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_disabled/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_disabled/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_disabled/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_disabled/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_disabled/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_disabled/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_disabled/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_operations/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_operations/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_operations/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_operations/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_operations/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_operations/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_operations/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_operations/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_rewriter/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_rewriter/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_rewriter/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_rewriter/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_rewriter/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_rewriter/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_role_rewriter/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_row_rewriter/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_row_rewriter/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_row_rewriter/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_row_rewriter/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_row_rewriter/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_row_rewriter/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_row_rewriter/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_row_rewriter/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_rows_disabled/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_rows_disabled/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_rows_disabled/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_rows_disabled/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_rows_disabled/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_rows_disabled/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_rows_disabled/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_rows_disabled/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_rows_drop_table/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_rows_drop_table/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_rows_drop_table/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_rows_drop_table/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_rows_drop_table/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_rows_drop_table/migrations/versions/34137c7892d1_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_rows_drop_table/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_rows_drop_table/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_rows_drop_table/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_create/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_create/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_create/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_create/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_create/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_create/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_create/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_disabled/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_disabled/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_disabled/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_disabled/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_disabled/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_disabled/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_disabled/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_drop/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_drop/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_drop/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_drop/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_drop/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_drop/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_drop/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_ignore_unspecified/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_ignore_unspecified/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_ignore_unspecified/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_ignore_unspecified/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_ignore_unspecified/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_ignore_unspecified/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_ignore_unspecified/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_rewriter/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_rewriter/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_rewriter/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_rewriter/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_rewriter/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_rewriter/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_schema_rewriter/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_single_row_ops/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_single_row_ops/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_single_row_ops/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_single_row_ops/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_single_row_ops/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_single_row_ops/migrations/versions/34137c7892d1_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_single_row_ops/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_single_row_ops/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_single_row_ops/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_create/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_create/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_create/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_create/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_create/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_create/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_drop/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_drop/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_drop/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_drop/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_drop/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_drop/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_rewriter/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_rewriter/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_rewriter/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_rewriter/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_rewriter/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_rewriter/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_update/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_update/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_update/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_update/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_update/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_trigger_update/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_update_role/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_update_role/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_update_role/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_update_role/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_update_role/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_update_role/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_update_role/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_update_rows/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_update_rows/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_update_rows/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_update_rows/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_update_rows/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_update_rows/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_update_rows/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_update_rows/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_complex_comparison_pg/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_complex_comparison_pg/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_complex_comparison_pg/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_complex_comparison_pg/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_complex_comparison_pg/migrations/versions/c90a0d80e7a4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_complex_comparison_pg/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_complex_comparison_pg/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_create_mysql/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_create_mysql/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_create_mysql/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_create_mysql/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_create_mysql/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_create_mysql/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_create_pg/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_create_pg/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_create_pg/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_create_pg/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_create_pg/migrations/versions/db72aad6c888_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_create_pg/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_create_pg/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_drop_mysql/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_drop_mysql/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_drop_mysql/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_drop_mysql/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_drop_mysql/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_drop_mysql/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_drop_pg/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_drop_pg/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_drop_pg/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_drop_pg/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_drop_pg/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_drop_pg/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_materialized_constraint/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_materialized_constraint/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_materialized_constraint/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_materialized_constraint/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_materialized_constraint/migrations/versions/cc63f503ef39_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_materialized_constraint/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_materialized_constraint/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_rewriter/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_rewriter/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_rewriter/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_rewriter/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_rewriter/migrations/versions/db72aad6c888_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_rewriter/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_rewriter/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_update_mysql/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_update_mysql/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_update_mysql/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_update_mysql/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_update_mysql/migrations/versions/2152079ac9a3_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_update_mysql/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_update_mysql/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_update_pg/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_update_pg/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_update_pg/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_update_pg/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_update_pg/migrations/versions/2152079ac9a3_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_update_pg/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/examples/test_view_update_pg/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_alembic.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_create_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_create_postgresql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_create_requires_normalization.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_delete.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_delete_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_drop_all.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_exclude.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_filter.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_function_normalization.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_ignore_unspecified.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_include_exclude.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_metadata_sequence.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_pg_security_definer.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_quote.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_unnamed_param.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_update.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/function/test_update_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/grant/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/grant/test_alembic.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/grant/test_false_grants_imply_default_grants.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/grant/test_grant_schema.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/grant/test_ignore_unspecified.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/grant/test_metadata_sequence.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/grant/test_no_grants.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/grant/test_only_defined_roles.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/grant/test_postgresql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/grant/test_remove_unspecified.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/grant/test_sqlalchemy.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/grant/test_table_grants.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/grant/test_view.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/procedure/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/procedure/test_alembic.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/procedure/test_create.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/procedure/test_create_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/procedure/test_create_requires_normalization.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/procedure/test_delete.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/procedure/test_delete_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/procedure/test_drop_all.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/procedure/test_exclude.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/procedure/test_filter.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/procedure/test_ignore_unspecified.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/procedure/test_metadata_sequence.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/procedure/test_pg_security_definer.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/procedure/test_quote.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/procedure/test_update.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/procedure/test_update_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/role/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/role/test_alembic.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/role/test_drop_all.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/role/test_external.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/role/test_filter.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/role/test_iterable_roles.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/role/test_metadata_sequence.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/role/test_remove_valid_until.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/role/test_sqlalchemy.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/role/test_sqlalchemy_snowflake.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/role/test_topological_sort.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/role/test_update_parent_role.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/role/test_use_role.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/row/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/row/test_alembic.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/row/test_bind_syntax.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/row/test_column_added.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/row/test_invalid_table.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/row/test_metadata_sequence.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/row/test_missing_primary_key.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/row/test_schema_context.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/row/test_sqlalchemy.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/schema/test_alembic.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/schema/test_drop.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/schema/test_drop_all.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/schema/test_filter.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/schema/test_metadata_sequence.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/schema/test_snowflake.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/schema/test_sqlalchemy.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/test_alembic.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/test_arguments.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/test_create_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/test_drop_all.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/test_drop_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/test_drop_postgres.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/test_for_each_statement_postgres.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/test_ignore_unspecified_postgres.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/test_include_exclude.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/test_metadata_sequence.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/test_missing_when_postgres.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/test_schema_quoting.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/test_update_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/test_update_postgres.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/test_when_references_new_postgres.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/trigger/test_wrapped_parens_postgres.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/utilities.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_add_constraint_to_existing.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_alembic.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_alembic_utils.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_constraint_drops_first.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_convert_to_materialized.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_create_table_and_view_together.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_drop_all.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_escaped_bindparam.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_filter.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_ignore_glob.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_ignore_unspecified.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_ignore_views.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_materialized.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_metadata_sequence.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_only_constraint_changes.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_only_different_constraints_drop.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_pg_materialized_no_data.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_snowflake.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_sqlalchemy.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_update.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_view_function.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/tests/view/test_view_in_schema.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/uv.lock +0 -0
{sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/CHANGELOG.md
RENAMED
|
@@ -4,6 +4,15 @@
|
|
|
4
4
|
|
|
5
5
|
## 0.16
|
|
6
6
|
|
|
7
|
+
### 0.16.9
|
|
8
|
+
|
|
9
|
+
- fix: Support for duplicate PostgreSQL trigger names.
|
|
10
|
+
- fix: Parsing quoted ACL usernames at end of input.
|
|
11
|
+
|
|
12
|
+
### 0.16.8
|
|
13
|
+
|
|
14
|
+
- fix: Adds schema support to audit functions (that is, they will now be created in the schema of the table to avoid conflicts).
|
|
15
|
+
|
|
7
16
|
### 0.16.7
|
|
8
17
|
|
|
9
18
|
- feat: Add missing support for `exclude` on triggers.
|
{sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sqlalchemy-declarative-extensions
|
|
3
|
-
Version: 0.16.
|
|
3
|
+
Version: 0.16.9
|
|
4
4
|
Summary: Library to declare additional kinds of objects not natively supported by SQLAlchemy/Alembic.
|
|
5
5
|
Project-URL: documentation, https://sqlalchemy-declarative-extensions.readthedocs.io/en/latest/
|
|
6
6
|
Project-URL: homepage, https://sqlalchemy-declarative-extensions.readthedocs.io/en/latest/
|
|
@@ -2,7 +2,7 @@ from sphinx_pyproject import SphinxConfig
|
|
|
2
2
|
|
|
3
3
|
config = SphinxConfig("../../pyproject.toml")
|
|
4
4
|
|
|
5
|
-
project = "
|
|
5
|
+
project = "SQLAlchemy Declarative Extensions"
|
|
6
6
|
copyright = "2022, Dan Cardin"
|
|
7
7
|
author = config.author
|
|
8
8
|
release = config.version
|
{sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/pyproject.toml
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sqlalchemy-declarative-extensions"
|
|
3
|
-
version = "0.16.
|
|
3
|
+
version = "0.16.9"
|
|
4
4
|
authors = [{ name = "Dan Cardin", email = "ddcardin@gmail.com" }]
|
|
5
5
|
description = "Library to declare additional kinds of objects not natively supported by SQLAlchemy/Alembic."
|
|
6
6
|
license = { file = "LICENSE" }
|
|
@@ -10,7 +10,7 @@ from sqlalchemy_declarative_extensions import (
|
|
|
10
10
|
register_trigger,
|
|
11
11
|
)
|
|
12
12
|
from sqlalchemy_declarative_extensions.dialects.postgresql.trigger import Trigger
|
|
13
|
-
from sqlalchemy_declarative_extensions.sql import quote_name
|
|
13
|
+
from sqlalchemy_declarative_extensions.sql import qualify_name, quote_name
|
|
14
14
|
|
|
15
15
|
default_primary_key = Column(
|
|
16
16
|
"audit_pk", types.Integer(), primary_key=True, autoincrement=True
|
|
@@ -109,6 +109,7 @@ def audit_table(
|
|
|
109
109
|
create_audit_triggers(
|
|
110
110
|
table.metadata,
|
|
111
111
|
table,
|
|
112
|
+
audit_table,
|
|
112
113
|
insert=insert,
|
|
113
114
|
update=update,
|
|
114
115
|
delete=delete,
|
|
@@ -242,6 +243,7 @@ def create_audit_functions(
|
|
|
242
243
|
""",
|
|
243
244
|
returns="TRIGGER",
|
|
244
245
|
language="plpgsql",
|
|
246
|
+
schema=audit_table.schema,
|
|
245
247
|
)
|
|
246
248
|
functions.append(function)
|
|
247
249
|
register_function(metadata, function)
|
|
@@ -252,6 +254,7 @@ def create_audit_functions(
|
|
|
252
254
|
def create_audit_triggers(
|
|
253
255
|
metadata: MetaData,
|
|
254
256
|
table: Table,
|
|
257
|
+
audit_table: Table,
|
|
255
258
|
insert: bool = True,
|
|
256
259
|
update: bool = True,
|
|
257
260
|
delete: bool = True,
|
|
@@ -282,10 +285,15 @@ def create_audit_triggers(
|
|
|
282
285
|
if not enabled:
|
|
283
286
|
continue
|
|
284
287
|
|
|
288
|
+
# Use qualified function name (schema.function_name) for trigger execution
|
|
289
|
+
# Use audit_table.schema since functions are created in the audit table's schema
|
|
290
|
+
function_qualified_name = qualify_name(
|
|
291
|
+
audit_table.schema, "_".join([function_name, op])
|
|
292
|
+
)
|
|
285
293
|
trigger = Trigger.after(
|
|
286
294
|
op,
|
|
287
295
|
on=table.fullname,
|
|
288
|
-
execute=
|
|
296
|
+
execute=function_qualified_name,
|
|
289
297
|
name="_".join([trigger_name, op]),
|
|
290
298
|
).for_each_row()
|
|
291
299
|
triggers.append(trigger)
|
|
@@ -78,7 +78,8 @@ def _parse_acl(
|
|
|
78
78
|
|
|
79
79
|
if acl is not None:
|
|
80
80
|
eq_pos, grantee = get_acl_username(acl)
|
|
81
|
-
|
|
81
|
+
if eq_pos >= len(acl) or acl[eq_pos] != "=":
|
|
82
|
+
raise ValueError("ACL syntax error: missing '='.")
|
|
82
83
|
|
|
83
84
|
if not grantee:
|
|
84
85
|
grantee = "PUBLIC"
|
|
@@ -157,6 +158,7 @@ def get_acl_username(acl: str):
|
|
|
157
158
|
# Quoting convention is to escape " as "".
|
|
158
159
|
has_next_char = i + 1 < acl_len
|
|
159
160
|
if not has_next_char:
|
|
161
|
+
i += 1
|
|
160
162
|
break
|
|
161
163
|
|
|
162
164
|
next_char = acl[i + 1]
|
|
@@ -94,6 +94,10 @@ class Trigger(base.Trigger):
|
|
|
94
94
|
old_table: str | None = None
|
|
95
95
|
new_table: str | None = None
|
|
96
96
|
|
|
97
|
+
@property
|
|
98
|
+
def identity(self) -> tuple[str, str]:
|
|
99
|
+
return self.on, self.name
|
|
100
|
+
|
|
97
101
|
@classmethod
|
|
98
102
|
def before(
|
|
99
103
|
cls, *events: TriggerEvents | str, on: str, execute: str, name: str = ""
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass, field, replace
|
|
4
|
-
from typing import Iterable, Sequence
|
|
4
|
+
from typing import Hashable, Iterable, Sequence
|
|
5
5
|
|
|
6
6
|
from sqlalchemy import MetaData
|
|
7
7
|
from sqlalchemy.engine import Connection
|
|
@@ -18,6 +18,11 @@ class Trigger:
|
|
|
18
18
|
on: str
|
|
19
19
|
execute: str
|
|
20
20
|
|
|
21
|
+
@property
|
|
22
|
+
def identity(self) -> Hashable:
|
|
23
|
+
"""Return the dialect-specific identity used to compare triggers."""
|
|
24
|
+
return self.name
|
|
25
|
+
|
|
21
26
|
def named(self, name: str):
|
|
22
27
|
return replace(self, name=name)
|
|
23
28
|
|
|
@@ -51,34 +51,36 @@ Operation = Union[CreateTriggerOp, UpdateTriggerOp, DropTriggerOp]
|
|
|
51
51
|
def compare_triggers(connection: Connection, triggers: Triggers) -> list[Operation]:
|
|
52
52
|
result: list[Operation] = []
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
triggers_by_identity = {r.identity: r for r in triggers.triggers}
|
|
55
|
+
expected_trigger_identities = set(triggers_by_identity)
|
|
56
56
|
|
|
57
57
|
raw_existing_triggers = get_triggers(connection)
|
|
58
58
|
existing_triggers = filter_triggers(
|
|
59
59
|
raw_existing_triggers, exclude=triggers.ignore, include=triggers.include
|
|
60
60
|
)
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
existing_triggers_by_identity = {r.identity: r for r in existing_triggers}
|
|
63
|
+
existing_trigger_identities = set(existing_triggers_by_identity)
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
new_trigger_identities = expected_trigger_identities - existing_trigger_identities
|
|
66
|
+
removed_trigger_identities = (
|
|
67
|
+
existing_trigger_identities - expected_trigger_identities
|
|
68
|
+
)
|
|
67
69
|
|
|
68
70
|
for trigger in triggers:
|
|
69
|
-
trigger_created = trigger.
|
|
71
|
+
trigger_created = trigger.identity in new_trigger_identities
|
|
70
72
|
|
|
71
73
|
if trigger_created:
|
|
72
74
|
result.append(CreateTriggerOp(trigger))
|
|
73
75
|
else:
|
|
74
|
-
existing_trigger =
|
|
76
|
+
existing_trigger = existing_triggers_by_identity[trigger.identity]
|
|
75
77
|
|
|
76
78
|
if existing_trigger != trigger:
|
|
77
79
|
result.append(UpdateTriggerOp(existing_trigger, trigger))
|
|
78
80
|
|
|
79
81
|
if not triggers.ignore_unspecified:
|
|
80
|
-
for removed_trigger in
|
|
81
|
-
trigger =
|
|
82
|
+
for removed_trigger in removed_trigger_identities:
|
|
83
|
+
trigger = existing_triggers_by_identity[removed_trigger]
|
|
82
84
|
result.append(DropTriggerOp(trigger))
|
|
83
85
|
|
|
84
86
|
return result
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
"""Tests for schema-aware audit function and trigger creation."""
|
|
2
|
+
from pytest_mock_resources import create_postgres_fixture
|
|
3
|
+
from sqlalchemy import Column, text, types
|
|
4
|
+
|
|
5
|
+
from sqlalchemy_declarative_extensions import (
|
|
6
|
+
Schemas,
|
|
7
|
+
declarative_database,
|
|
8
|
+
register_sqlalchemy_events,
|
|
9
|
+
)
|
|
10
|
+
from sqlalchemy_declarative_extensions.audit import audit
|
|
11
|
+
from sqlalchemy_declarative_extensions.sqlalchemy import declarative_base
|
|
12
|
+
|
|
13
|
+
_Base = declarative_base()
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@declarative_database
|
|
17
|
+
class Base(_Base): # type: ignore
|
|
18
|
+
__abstract__ = True
|
|
19
|
+
|
|
20
|
+
schemas = Schemas().are("myschema", "otherschema")
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# Test table with schema from __table_args__
|
|
24
|
+
@audit()
|
|
25
|
+
class Product(Base):
|
|
26
|
+
__tablename__ = "product"
|
|
27
|
+
__table_args__ = {"schema": "myschema"}
|
|
28
|
+
|
|
29
|
+
id = Column(types.Integer(), primary_key=True)
|
|
30
|
+
name = Column(types.Unicode())
|
|
31
|
+
price = Column(types.Numeric())
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# Test table with explicit schema parameter in @audit decorator
|
|
35
|
+
@audit(schema="otherschema")
|
|
36
|
+
class Order(Base):
|
|
37
|
+
__tablename__ = "order"
|
|
38
|
+
__table_args__ = {"schema": "myschema"}
|
|
39
|
+
|
|
40
|
+
id = Column(types.Integer(), primary_key=True)
|
|
41
|
+
product_id = Column(types.Integer())
|
|
42
|
+
quantity = Column(types.Integer())
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
# Test table without schema (should use default)
|
|
46
|
+
@audit()
|
|
47
|
+
class Customer(Base):
|
|
48
|
+
__tablename__ = "customer"
|
|
49
|
+
|
|
50
|
+
id = Column(types.Integer(), primary_key=True)
|
|
51
|
+
name = Column(types.Unicode())
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
register_sqlalchemy_events(Base.metadata, schemas=True, functions=True, triggers=True)
|
|
55
|
+
|
|
56
|
+
pg = create_postgres_fixture(engine_kwargs={"echo": True}, session=True)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def test_audit_functions_in_table_schema(pg):
|
|
60
|
+
"""Test that audit functions are created in the same schema as the audited table."""
|
|
61
|
+
Base.metadata.create_all(bind=pg.connection())
|
|
62
|
+
pg.commit()
|
|
63
|
+
|
|
64
|
+
# Check that audit functions exist in myschema (for Product table)
|
|
65
|
+
result = pg.execute(
|
|
66
|
+
text(
|
|
67
|
+
"""
|
|
68
|
+
SELECT routine_schema, routine_name
|
|
69
|
+
FROM information_schema.routines
|
|
70
|
+
WHERE routine_schema = 'myschema'
|
|
71
|
+
AND routine_name LIKE '%product_audit%'
|
|
72
|
+
ORDER BY routine_name
|
|
73
|
+
"""
|
|
74
|
+
)
|
|
75
|
+
).fetchall()
|
|
76
|
+
|
|
77
|
+
# Should have 3 functions: insert, update, delete
|
|
78
|
+
assert len(result) == 3
|
|
79
|
+
schemas = {r[0] for r in result}
|
|
80
|
+
assert schemas == {"myschema"}
|
|
81
|
+
|
|
82
|
+
function_names = {r[1] for r in result}
|
|
83
|
+
assert function_names == {
|
|
84
|
+
"myschema_product_audit_insert",
|
|
85
|
+
"myschema_product_audit_update",
|
|
86
|
+
"myschema_product_audit_delete",
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def test_audit_functions_with_explicit_schema(pg):
|
|
91
|
+
"""Test that audit functions respect explicit schema parameter in @audit decorator."""
|
|
92
|
+
Base.metadata.create_all(bind=pg.connection())
|
|
93
|
+
pg.commit()
|
|
94
|
+
|
|
95
|
+
# Check that audit functions exist in otherschema (explicit schema for Order)
|
|
96
|
+
result = pg.execute(
|
|
97
|
+
text(
|
|
98
|
+
"""
|
|
99
|
+
SELECT routine_schema, routine_name
|
|
100
|
+
FROM information_schema.routines
|
|
101
|
+
WHERE routine_schema = 'otherschema'
|
|
102
|
+
AND routine_name LIKE '%order_audit%'
|
|
103
|
+
ORDER BY routine_name
|
|
104
|
+
"""
|
|
105
|
+
)
|
|
106
|
+
).fetchall()
|
|
107
|
+
|
|
108
|
+
# Should have 3 functions: insert, update, delete
|
|
109
|
+
assert len(result) == 3
|
|
110
|
+
schemas = {r[0] for r in result}
|
|
111
|
+
assert schemas == {"otherschema"}
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def test_audit_table_in_correct_schema(pg):
|
|
115
|
+
"""Test that audit tables are created in the correct schema."""
|
|
116
|
+
Base.metadata.create_all(bind=pg.connection())
|
|
117
|
+
pg.commit()
|
|
118
|
+
|
|
119
|
+
# Check Product audit table is in myschema
|
|
120
|
+
result = pg.execute(
|
|
121
|
+
text(
|
|
122
|
+
"""
|
|
123
|
+
SELECT table_schema, table_name
|
|
124
|
+
FROM information_schema.tables
|
|
125
|
+
WHERE table_schema = 'myschema'
|
|
126
|
+
AND table_name = 'product_audit'
|
|
127
|
+
"""
|
|
128
|
+
)
|
|
129
|
+
).fetchall()
|
|
130
|
+
|
|
131
|
+
assert len(result) == 1
|
|
132
|
+
assert result[0] == ("myschema", "product_audit")
|
|
133
|
+
|
|
134
|
+
# Check Order audit table is in otherschema (explicit schema)
|
|
135
|
+
result = pg.execute(
|
|
136
|
+
text(
|
|
137
|
+
"""
|
|
138
|
+
SELECT table_schema, table_name
|
|
139
|
+
FROM information_schema.tables
|
|
140
|
+
WHERE table_schema = 'otherschema'
|
|
141
|
+
AND table_name = 'order_audit'
|
|
142
|
+
"""
|
|
143
|
+
)
|
|
144
|
+
).fetchall()
|
|
145
|
+
|
|
146
|
+
assert len(result) == 1
|
|
147
|
+
assert result[0] == ("otherschema", "order_audit")
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def test_audit_triggers_reference_correct_functions(pg):
|
|
151
|
+
"""Test that triggers correctly reference schema-qualified function names."""
|
|
152
|
+
Base.metadata.create_all(bind=pg.connection())
|
|
153
|
+
pg.commit()
|
|
154
|
+
|
|
155
|
+
# Check Product triggers reference myschema functions
|
|
156
|
+
result = pg.execute(
|
|
157
|
+
text(
|
|
158
|
+
"""
|
|
159
|
+
SELECT trigger_name, action_statement
|
|
160
|
+
FROM information_schema.triggers
|
|
161
|
+
WHERE event_object_schema = 'myschema'
|
|
162
|
+
AND event_object_table = 'product'
|
|
163
|
+
ORDER BY trigger_name
|
|
164
|
+
"""
|
|
165
|
+
)
|
|
166
|
+
).fetchall()
|
|
167
|
+
|
|
168
|
+
assert len(result) == 3
|
|
169
|
+
|
|
170
|
+
# Each trigger should execute a function from myschema
|
|
171
|
+
for trigger_name, action_statement in result:
|
|
172
|
+
assert "myschema." in action_statement.lower(), (
|
|
173
|
+
f"Trigger {trigger_name} should reference myschema-qualified function, "
|
|
174
|
+
f"got: {action_statement}"
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
def test_audit_functionality_with_schema(pg):
|
|
179
|
+
"""Integration test: verify audit trail works correctly with schema-qualified functions."""
|
|
180
|
+
Base.metadata.create_all(bind=pg.connection())
|
|
181
|
+
pg.commit()
|
|
182
|
+
|
|
183
|
+
# Insert a product
|
|
184
|
+
product = Product(id=1, name="Widget", price=19.99)
|
|
185
|
+
pg.add(product)
|
|
186
|
+
pg.commit()
|
|
187
|
+
|
|
188
|
+
# Check audit trail
|
|
189
|
+
result = pg.execute(
|
|
190
|
+
text("SELECT audit_operation, name, price FROM myschema.product_audit ORDER BY audit_pk")
|
|
191
|
+
).fetchall()
|
|
192
|
+
|
|
193
|
+
assert len(result) == 1
|
|
194
|
+
assert result[0][0] == "I" # Insert operation
|
|
195
|
+
assert result[0][1] == "Widget"
|
|
196
|
+
assert float(result[0][2]) == 19.99
|
|
197
|
+
|
|
198
|
+
# Update the product
|
|
199
|
+
product.price = 24.99
|
|
200
|
+
pg.commit()
|
|
201
|
+
|
|
202
|
+
result = pg.execute(
|
|
203
|
+
text("SELECT audit_operation, name, price FROM myschema.product_audit ORDER BY audit_pk")
|
|
204
|
+
).fetchall()
|
|
205
|
+
|
|
206
|
+
assert len(result) == 2
|
|
207
|
+
assert result[1][0] == "U" # Update operation
|
|
208
|
+
assert float(result[1][2]) == 24.99
|
|
209
|
+
|
|
210
|
+
# Delete the product
|
|
211
|
+
pg.delete(product)
|
|
212
|
+
pg.commit()
|
|
213
|
+
|
|
214
|
+
result = pg.execute(
|
|
215
|
+
text("SELECT audit_operation FROM myschema.product_audit ORDER BY audit_pk")
|
|
216
|
+
).fetchall()
|
|
217
|
+
|
|
218
|
+
assert len(result) == 3
|
|
219
|
+
assert result[2][0] == "D" # Delete operation
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
def test_audit_functions_default_schema(pg):
|
|
223
|
+
"""Test that audit functions work in default schema when no schema is specified."""
|
|
224
|
+
Base.metadata.create_all(bind=pg.connection())
|
|
225
|
+
pg.commit()
|
|
226
|
+
|
|
227
|
+
# Check that Customer audit functions exist in public schema
|
|
228
|
+
result = pg.execute(
|
|
229
|
+
text(
|
|
230
|
+
"""
|
|
231
|
+
SELECT routine_schema, routine_name
|
|
232
|
+
FROM information_schema.routines
|
|
233
|
+
WHERE routine_schema = 'public'
|
|
234
|
+
AND routine_name LIKE '%customer_audit%'
|
|
235
|
+
ORDER BY routine_name
|
|
236
|
+
"""
|
|
237
|
+
)
|
|
238
|
+
).fetchall()
|
|
239
|
+
|
|
240
|
+
# Should have 3 functions: insert, update, delete
|
|
241
|
+
assert len(result) == 3
|
|
242
|
+
|
|
243
|
+
# Verify Customer audit works
|
|
244
|
+
customer = Customer(id=1, name="John Doe")
|
|
245
|
+
pg.add(customer)
|
|
246
|
+
pg.commit()
|
|
247
|
+
|
|
248
|
+
result = pg.execute(
|
|
249
|
+
text("SELECT audit_operation, name FROM public.customer_audit ORDER BY audit_pk")
|
|
250
|
+
).fetchall()
|
|
251
|
+
|
|
252
|
+
assert len(result) == 1
|
|
253
|
+
assert result[0] == ("I", "John Doe")
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
|
|
3
3
|
from sqlalchemy_declarative_extensions.dialects.postgresql.acl import (
|
|
4
|
+
get_acl_username,
|
|
4
5
|
parse_acl,
|
|
5
6
|
parse_default_acl,
|
|
6
7
|
)
|
|
@@ -23,6 +24,25 @@ def test_invalid(acl):
|
|
|
23
24
|
parse_default_acl(acl, "r", "public")
|
|
24
25
|
|
|
25
26
|
|
|
27
|
+
@pytest.mark.parametrize(
|
|
28
|
+
"acl, expected",
|
|
29
|
+
(
|
|
30
|
+
('"role-name"=x', (11, "role-name")),
|
|
31
|
+
('"role-name"', (11, "role-name")),
|
|
32
|
+
('"role""name"', (12, 'role"name')),
|
|
33
|
+
),
|
|
34
|
+
)
|
|
35
|
+
def test_get_acl_username_quoted(acl, expected):
|
|
36
|
+
assert get_acl_username(acl) == expected
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def test_acl_with_quoted_grantor():
|
|
40
|
+
result = parse_acl('"grantee-name"=r/"grantor-name"', "r", "foo")
|
|
41
|
+
|
|
42
|
+
assert len(result) == 1
|
|
43
|
+
assert result[0].grant.target_role == "grantee-name"
|
|
44
|
+
|
|
45
|
+
|
|
26
46
|
@pytest.mark.parametrize(
|
|
27
47
|
"acl, grant_option", (("user=r/user", False), ("user=r*/user", True))
|
|
28
48
|
)
|
|
@@ -37,6 +37,10 @@ class Base(_Base): # type: ignore
|
|
|
37
37
|
.named("on_insert_foo")
|
|
38
38
|
.when("pg_trigger_depth() < 1")
|
|
39
39
|
.for_each_row(),
|
|
40
|
+
Trigger.after("insert", on="bar", execute="gimme")
|
|
41
|
+
.named("on_insert_foo")
|
|
42
|
+
.when("pg_trigger_depth() < 1")
|
|
43
|
+
.for_each_row(),
|
|
40
44
|
)
|
|
41
45
|
|
|
42
46
|
|
|
@@ -46,6 +50,12 @@ class Foo(Base):
|
|
|
46
50
|
id = Column(types.Integer(), primary_key=True)
|
|
47
51
|
|
|
48
52
|
|
|
53
|
+
class Bar(Base):
|
|
54
|
+
__tablename__ = "bar"
|
|
55
|
+
|
|
56
|
+
id = Column(types.Integer(), primary_key=True)
|
|
57
|
+
|
|
58
|
+
|
|
49
59
|
register_sqlalchemy_events(Base.metadata, functions=True, triggers=True)
|
|
50
60
|
|
|
51
61
|
pg = create_postgres_fixture(engine_kwargs={"echo": True}, session=True)
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
from unittest.mock import Mock
|
|
2
|
+
|
|
3
|
+
from sqlalchemy_declarative_extensions import Triggers
|
|
4
|
+
from sqlalchemy_declarative_extensions.dialects.postgresql import Trigger
|
|
5
|
+
from sqlalchemy_declarative_extensions.trigger.compare import (
|
|
6
|
+
CreateTriggerOp,
|
|
7
|
+
DropTriggerOp,
|
|
8
|
+
UpdateTriggerOp,
|
|
9
|
+
compare_triggers,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def trigger(on: str, event: str = "insert"):
|
|
14
|
+
return Trigger.after(event, on=on, execute="gimme").named("on_change")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def test_same_name_on_different_tables_matches_existing(monkeypatch):
|
|
18
|
+
expected = Triggers().are(trigger("foo"), trigger("bar"))
|
|
19
|
+
monkeypatch.setattr(
|
|
20
|
+
"sqlalchemy_declarative_extensions.trigger.compare.get_triggers",
|
|
21
|
+
Mock(return_value=list(expected)),
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
assert compare_triggers(Mock(), expected) == []
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def test_same_name_on_different_table_is_created(monkeypatch):
|
|
28
|
+
foo_trigger = trigger("foo")
|
|
29
|
+
bar_trigger = trigger("bar")
|
|
30
|
+
expected = Triggers().are(foo_trigger, bar_trigger)
|
|
31
|
+
monkeypatch.setattr(
|
|
32
|
+
"sqlalchemy_declarative_extensions.trigger.compare.get_triggers",
|
|
33
|
+
Mock(return_value=[foo_trigger]),
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
assert compare_triggers(Mock(), expected) == [CreateTriggerOp(bar_trigger)]
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def test_same_name_updates_only_trigger_on_matching_table(monkeypatch):
|
|
40
|
+
foo_trigger = trigger("foo")
|
|
41
|
+
old_bar_trigger = trigger("bar")
|
|
42
|
+
new_bar_trigger = trigger("bar", event="update")
|
|
43
|
+
expected = Triggers().are(foo_trigger, new_bar_trigger)
|
|
44
|
+
monkeypatch.setattr(
|
|
45
|
+
"sqlalchemy_declarative_extensions.trigger.compare.get_triggers",
|
|
46
|
+
Mock(return_value=[foo_trigger, old_bar_trigger]),
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
assert compare_triggers(Mock(), expected) == [
|
|
50
|
+
UpdateTriggerOp(old_bar_trigger, new_bar_trigger)
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def test_same_name_drops_only_trigger_on_unspecified_table(monkeypatch):
|
|
55
|
+
foo_trigger = trigger("foo")
|
|
56
|
+
bar_trigger = trigger("bar")
|
|
57
|
+
expected = Triggers().are(foo_trigger)
|
|
58
|
+
monkeypatch.setattr(
|
|
59
|
+
"sqlalchemy_declarative_extensions.trigger.compare.get_triggers",
|
|
60
|
+
Mock(return_value=[foo_trigger, bar_trigger]),
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
assert compare_triggers(Mock(), expected) == [DropTriggerOp(bar_trigger)]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/.gitignore
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/LICENSE
RENAMED
|
File without changes
|
{sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/Makefile
RENAMED
|
File without changes
|
{sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/README.md
RENAMED
|
File without changes
|
{sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/Makefile
RENAMED
|
File without changes
|
|
File without changes
|
{sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/make.bat
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/docs/uv.lock
RENAMED
|
File without changes
|
{sqlalchemy_declarative_extensions-0.16.7 → sqlalchemy_declarative_extensions-0.16.9}/setup.cfg
RENAMED
|
File without changes
|
|
File without changes
|