sqlalchemy-declarative-extensions 0.16.10__tar.gz → 0.17.0__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.10 → sqlalchemy_declarative_extensions-0.17.0}/.readthedocs.yml +1 -1
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/CHANGELOG.md +10 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/PKG-INFO +2 -2
- sqlalchemy_declarative_extensions-0.17.0/docs/source/triggers.md +97 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/pyproject.toml +1 -1
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/mysql/trigger.py +4 -2
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/__init__.py +2 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/function.py +30 -16
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/query.py +31 -17
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/schema.py +7 -1
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/trigger.py +5 -3
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/trigger/base.py +24 -3
- sqlalchemy_declarative_extensions-0.17.0/tests/dialect/postgresql/test_extension_owned_schema.py +47 -0
- sqlalchemy_declarative_extensions-0.17.0/tests/dialect/postgresql/test_function_attributes.py +50 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/dialect/postgresql/test_function_defaults.py +1 -1
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/dialect/postgresql/test_postgres_14_sqlbody.py +1 -1
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_pg_sqlbody/models.py +2 -2
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_with_params_postgresql/models.py +2 -2
- sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_trigger_table_args/models.py +24 -0
- sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_trigger_table_args/test_migrations.py +41 -0
- sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_update_pg/alembic.ini +36 -0
- sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_update_pg/migrations/env.py +26 -0
- sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_update_pg/migrations/script.py.mako +24 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_create_postgresql.py +17 -3
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_alembic.py +5 -0
- sqlalchemy_declarative_extensions-0.17.0/tests/trigger/test_table_args.py +131 -0
- sqlalchemy_declarative_extensions-0.17.0/tests/trigger/test_table_args_mysql.py +50 -0
- sqlalchemy_declarative_extensions-0.17.0/tests/trigger/test_table_args_postgres.py +87 -0
- sqlalchemy_declarative_extensions-0.17.0/tests/view/__init__.py +0 -0
- sqlalchemy_declarative_extensions-0.16.10/docs/source/triggers.md +0 -52
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/.github/FUNDING.yml +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/.github/workflows/release.yml +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/.github/workflows/test.yml +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/.gitignore +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/CONTRIBUTING.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/LICENSE +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/Makefile +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/README.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/Makefile +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/docs/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/make.bat +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/pyproject.toml +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/_static/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/alembic.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/api.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/audit_tables.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/conf.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/contributing/dialect-support.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/contributing/index.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/contributing/testing.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/dialects/index.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/dialects/mysql.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/dialects/postgresql.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/dialects/snowflake.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/functions.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/grants.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/index.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/roles.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/rows.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/schemas.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/sqlalchemy.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/source/views.md +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/docs/uv.lock +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/setup.cfg +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/alembic/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/alembic/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/alembic/database.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/alembic/function.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/alembic/grant.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/alembic/procedure.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/alembic/role.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/alembic/row.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/alembic/schema.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/alembic/trigger.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/alembic/view.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/api.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/audit.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/context.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/database/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/database/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/database/compare.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/database/ddl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/from_string.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/mysql/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/mysql/function.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/mysql/procedure.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/mysql/query.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/mysql/schema.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/acl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/grant.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/grant_type.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/procedure.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/role.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/postgresql/view.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/query.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/snowflake/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/snowflake/information_schema.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/snowflake/query.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/snowflake/role.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/snowflake/schema.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/snowflake/view.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/sqlite/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/sqlite/query.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/dialects/sqlite/schema.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/function/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/function/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/function/compare.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/function/ddl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/grant/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/grant/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/grant/compare.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/grant/ddl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/op.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/procedure/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/procedure/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/procedure/compare.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/procedure/ddl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/py.typed +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/role/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/role/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/role/compare.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/role/ddl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/role/generic.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/role/state.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/role/topological_sort.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/row/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/row/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/row/compare.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/row/query.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/schema/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/schema/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/schema/compare.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/schema/ddl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/sql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/sqlalchemy.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/trigger/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/trigger/compare.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/trigger/ddl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/typing.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/view/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/view/base.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/view/compare.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/src/sqlalchemy_declarative_extensions/view/ddl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/audit/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/audit/test_context_values.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/audit/test_create_all.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/audit/test_disabled_operation.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/audit/test_quoting.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/audit/test_schema_support.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/dialect/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/dialect/postgresql/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/dialect/postgresql/test_acl.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/dialect/postgresql/test_exclude_extension_objects.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/dialect/postgresql/test_postgres_11.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_create_role/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_create_role/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_create_role/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_create_role/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_create_role/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_create_role/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_create_role/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_create_rows/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_create_rows/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_create_rows/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_create_rows/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_create_rows/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_create_rows/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_create_rows/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_create_rows/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_rows/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_rows/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_rows/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_rows/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_rows/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_rows/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_rows/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_rows/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_rows_ignore_unspecified/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_rows_ignore_unspecified/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_rows_ignore_unspecified/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_rows_ignore_unspecified/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_rows_ignore_unspecified/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_rows_ignore_unspecified/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_rows_ignore_unspecified/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_rows_ignore_unspecified/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_unspecified_grants/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_unspecified_grants/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_unspecified_grants/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_unspecified_grants/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_unspecified_grants/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_unspecified_grants/migrations/versions/0522a3309c12_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_unspecified_grants/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_delete_unspecified_grants/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_pg_postgis/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_pg_postgis/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_pg_postgis/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_pg_postgis/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_pg_postgis/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_pg_postgis/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_pg_sqlbody/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_pg_sqlbody/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_pg_sqlbody/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_pg_sqlbody/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_pg_sqlbody/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_with_params_mysql/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_with_params_mysql/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_with_params_mysql/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_with_params_mysql/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_with_params_mysql/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_with_params_mysql/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_with_params_postgresql/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_with_params_postgresql/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_with_params_postgresql/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_with_params_postgresql/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_create_with_params_postgresql/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_drop/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_drop/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_drop/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_drop/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_drop/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_drop/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_leading_whitespace/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_leading_whitespace/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_leading_whitespace/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_leading_whitespace/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_leading_whitespace/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_leading_whitespace/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_rewriter/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_rewriter/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_rewriter/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_rewriter/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_rewriter/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_rewriter/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_update/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_update/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_update/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_update/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_update/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_function_update/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_after_schema/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_after_schema/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_after_schema/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_after_schema/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_after_schema/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_after_schema/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_after_schema/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_disabled/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_disabled/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_disabled/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_disabled/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_disabled/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_disabled/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_disabled/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_rewriter/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_rewriter/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_rewriter/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_rewriter/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_rewriter/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_rewriter/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_rewriter/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_update_existing/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_update_existing/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_update_existing/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_update_existing/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_update_existing/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_update_existing/migrations/versions/0522a3309c12_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_update_existing/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_grant_update_existing/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_identify_grants/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_identify_grants/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_identify_grants/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_identify_grants/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_identify_grants/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_identify_grants/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_identify_grants/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_procedure_create/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_procedure_create/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_procedure_create/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_procedure_create/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_procedure_create/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_procedure_create/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_procedure_rewriter/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_procedure_rewriter/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_procedure_rewriter/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_procedure_rewriter/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_procedure_rewriter/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_procedure_rewriter/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_disabled/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_disabled/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_disabled/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_disabled/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_disabled/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_disabled/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_disabled/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_operations/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_operations/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_operations/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_operations/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_operations/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_operations/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_operations/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_operations/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_rewriter/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_rewriter/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_rewriter/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_rewriter/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_rewriter/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_rewriter/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_role_rewriter/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_row_rewriter/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_row_rewriter/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_row_rewriter/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_row_rewriter/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_row_rewriter/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_row_rewriter/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_row_rewriter/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_row_rewriter/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_rows_disabled/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_rows_disabled/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_rows_disabled/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_rows_disabled/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_rows_disabled/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_rows_disabled/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_rows_disabled/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_rows_disabled/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_rows_drop_table/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_rows_drop_table/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_rows_drop_table/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_rows_drop_table/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_rows_drop_table/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_rows_drop_table/migrations/versions/34137c7892d1_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_rows_drop_table/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_rows_drop_table/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_rows_drop_table/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_create/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_create/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_create/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_create/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_create/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_create/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_create/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_disabled/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_disabled/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_disabled/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_disabled/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_disabled/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_disabled/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_disabled/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_drop/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_drop/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_drop/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_drop/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_drop/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_drop/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_drop/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_ignore_unspecified/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_ignore_unspecified/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_ignore_unspecified/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_ignore_unspecified/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_ignore_unspecified/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_ignore_unspecified/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_ignore_unspecified/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_rewriter/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_rewriter/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_rewriter/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_rewriter/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_rewriter/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_rewriter/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_schema_rewriter/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_single_row_ops/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_single_row_ops/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_single_row_ops/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_single_row_ops/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_single_row_ops/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_single_row_ops/migrations/versions/34137c7892d1_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_single_row_ops/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_single_row_ops/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_single_row_ops/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_create/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_create/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_create/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_create/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_create/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_create/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_drop/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_drop/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_drop/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_drop/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_drop/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_drop/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_rewriter/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_rewriter/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_rewriter/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_rewriter/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_rewriter/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_rewriter/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_trigger_update → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_trigger_table_args}/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_trigger_update → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_trigger_table_args}/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_trigger_update → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_trigger_table_args}/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_trigger_update → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_trigger_table_args}/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_update_role → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_trigger_update}/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_create_mysql → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_trigger_update}/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_update_role → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_trigger_update}/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_update_role → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_trigger_update}/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_update/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_trigger_update/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_update_rows → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_update_role}/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_update_role/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_update_role/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_update_rows → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_update_role}/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_update_rows → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_update_role}/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_update_role/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_update_role/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_complex_comparison_pg → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_update_rows}/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_update_rows/conftest.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_update_rows/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_complex_comparison_pg → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_update_rows}/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_complex_comparison_pg → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_update_rows}/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_update_rows/migrations/versions/a63ad8efc2f4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_update_rows/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_update_rows/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_create_mysql → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_complex_comparison_pg}/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_complex_comparison_pg/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_create_mysql → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_complex_comparison_pg}/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_create_mysql → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_complex_comparison_pg}/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_complex_comparison_pg/migrations/versions/c90a0d80e7a4_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_complex_comparison_pg/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_complex_comparison_pg/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_create_pg → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_create_mysql}/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_create_pg → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_create_mysql}/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_create_pg → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_create_mysql}/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_create_pg → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_create_mysql}/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_create_mysql/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_create_mysql/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_drop_mysql → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_create_pg}/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_drop_mysql → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_create_pg}/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_drop_mysql → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_create_pg}/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_drop_mysql → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_create_pg}/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_create_pg/migrations/versions/db72aad6c888_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_create_pg/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_create_pg/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_drop_pg → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_drop_mysql}/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_drop_pg → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_drop_mysql}/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_drop_pg → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_drop_mysql}/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_drop_pg → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_drop_mysql}/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_drop_mysql/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_drop_mysql/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_materialized_constraint → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_drop_pg}/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_materialized_constraint → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_drop_pg}/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_materialized_constraint → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_drop_pg}/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_materialized_constraint → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_drop_pg}/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_drop_pg/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_drop_pg/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_rewriter → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_materialized_constraint}/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_update_mysql → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_materialized_constraint}/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_rewriter → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_materialized_constraint}/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_rewriter → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_materialized_constraint}/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_materialized_constraint/migrations/versions/cc63f503ef39_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_materialized_constraint/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_materialized_constraint/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_update_mysql → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_rewriter}/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_rewriter/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_update_mysql → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_rewriter}/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_update_mysql → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_rewriter}/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_rewriter/migrations/versions/db72aad6c888_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_rewriter/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_rewriter/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_update_pg → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_update_mysql}/alembic.ini +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_update_pg → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_update_mysql}/migrations/env.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_update_pg → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_update_mysql}/migrations/script.py.mako +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/examples/test_view_update_pg → sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_update_mysql}/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_update_mysql/migrations/versions/2152079ac9a3_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_update_mysql/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_update_mysql/test_migrations.py +0 -0
- /sqlalchemy_declarative_extensions-0.16.10/tests/function/__init__.py → /sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_view_update_pg/migrations/versions/.gitkeep +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_update_pg/migrations/versions/2152079ac9a3_.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_update_pg/models.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/examples/test_view_update_pg/test_migrations.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/grant → sqlalchemy_declarative_extensions-0.17.0/tests/function}/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_alembic.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_create_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_create_requires_normalization.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_delete.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_delete_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_drop_all.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_exclude.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_filter.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_function_normalization.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_ignore_unspecified.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_include_exclude.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_metadata_sequence.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_pg_security_definer.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_quote.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_unnamed_param.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_update.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/function/test_update_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/procedure → sqlalchemy_declarative_extensions-0.17.0/tests/grant}/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/grant/test_alembic.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/grant/test_false_grants_imply_default_grants.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/grant/test_grant_schema.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/grant/test_ignore_unspecified.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/grant/test_metadata_sequence.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/grant/test_no_grants.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/grant/test_only_defined_roles.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/grant/test_postgresql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/grant/test_remove_unspecified.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/grant/test_sqlalchemy.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/grant/test_table_grants.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/grant/test_view.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/role → sqlalchemy_declarative_extensions-0.17.0/tests/procedure}/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/procedure/test_alembic.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/procedure/test_create.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/procedure/test_create_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/procedure/test_create_requires_normalization.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/procedure/test_delete.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/procedure/test_delete_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/procedure/test_drop_all.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/procedure/test_exclude.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/procedure/test_filter.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/procedure/test_ignore_unspecified.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/procedure/test_metadata_sequence.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/procedure/test_pg_security_definer.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/procedure/test_quote.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/procedure/test_update.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/procedure/test_update_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/row → sqlalchemy_declarative_extensions-0.17.0/tests/role}/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/role/test_alembic.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/role/test_drop_all.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/role/test_external.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/role/test_filter.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/role/test_iterable_roles.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/role/test_metadata_sequence.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/role/test_remove_valid_until.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/role/test_sqlalchemy.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/role/test_sqlalchemy_snowflake.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/role/test_topological_sort.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/role/test_update_parent_role.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/role/test_use_role.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/trigger → sqlalchemy_declarative_extensions-0.17.0/tests/row}/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/row/test_alembic.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/row/test_bind_syntax.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/row/test_column_added.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/row/test_invalid_table.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/row/test_metadata_sequence.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/row/test_missing_primary_key.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/row/test_schema_context.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/row/test_sqlalchemy.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/schema/test_alembic.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/schema/test_drop.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/schema/test_drop_all.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/schema/test_filter.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/schema/test_metadata_sequence.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/schema/test_snowflake.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/schema/test_sqlalchemy.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10/tests/view → sqlalchemy_declarative_extensions-0.17.0/tests/trigger}/__init__.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_arguments.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_create_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_create_postgres.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_drop_all.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_drop_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_drop_postgres.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_for_each_statement_postgres.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_ignore_unspecified_postgres.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_include_exclude.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_metadata_sequence.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_missing_when_postgres.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_same_name_postgres.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_schema_quoting.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_update_mysql.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_update_postgres.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_when_references_new_postgres.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/trigger/test_wrapped_parens_postgres.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/utilities.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_add_constraint_to_existing.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_alembic.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_alembic_utils.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_constraint_drops_first.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_convert_to_materialized.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_create_table_and_view_together.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_drop_all.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_escaped_bindparam.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_filter.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_ignore_glob.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_ignore_unspecified.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_ignore_views.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_materialized.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_metadata_sequence.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_only_constraint_changes.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_only_different_constraints_drop.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_pg_materialized_no_data.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_snowflake.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_sqlalchemy.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_update.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_view_function.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_view_in_schema.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/tests/view/test_view_index_bound_column.py +0 -0
- {sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/uv.lock +0 -0
{sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/CHANGELOG.md
RENAMED
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.17
|
|
4
|
+
|
|
3
5
|
### 0.17.0
|
|
4
6
|
|
|
7
|
+
- feat: Add support for declaring triggers in __table_args__.
|
|
8
|
+
- feat: Add PARALLEL, STRICT and LEAKPROOF support to pg functions.
|
|
9
|
+
- fix: Rename FunctionVolatility and FunctionParallel members to lowercase.
|
|
10
|
+
|
|
5
11
|
## 0.16
|
|
6
12
|
|
|
13
|
+
### 0.16.11
|
|
14
|
+
|
|
15
|
+
- fix: Correlate the extension-schema check in pg triggers_query.
|
|
16
|
+
|
|
7
17
|
### 0.16.10
|
|
8
18
|
|
|
9
19
|
- fix: TypeError breaking constraints on declared views.
|
{sqlalchemy_declarative_extensions-0.16.10 → sqlalchemy_declarative_extensions-0.17.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: sqlalchemy-declarative-extensions
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.17.0
|
|
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/
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Triggers
|
|
2
|
+
|
|
3
|
+
```python
|
|
4
|
+
from sqlalchemy.orm import declarative_base
|
|
5
|
+
from sqlalchemy_declarative_extensions import declarative_database, Function, Functions, Triggers
|
|
6
|
+
from sqlalchemy_declarative_extensions.dialects.postgresql import Trigger
|
|
7
|
+
|
|
8
|
+
_Base = declarative_base()
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@declarative_database
|
|
12
|
+
class Base(_Base):
|
|
13
|
+
__abstract__ = True
|
|
14
|
+
|
|
15
|
+
functions = Functions().are(
|
|
16
|
+
Function(
|
|
17
|
+
"fancy_trigger",
|
|
18
|
+
"""
|
|
19
|
+
BEGIN
|
|
20
|
+
INSERT INTO foo (id) select NEW.id + 1;
|
|
21
|
+
RETURN NULL;
|
|
22
|
+
END
|
|
23
|
+
""",
|
|
24
|
+
language="plpgsql",
|
|
25
|
+
returns="trigger",
|
|
26
|
+
)
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
triggers = Triggers().are(
|
|
30
|
+
Trigger.after("insert", on="foo", execute="fancy_trigger")
|
|
31
|
+
.named("on_insert_foo")
|
|
32
|
+
.when("pg_trigger_depth() < 1")
|
|
33
|
+
.for_each_row(),
|
|
34
|
+
)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
```{note}
|
|
38
|
+
Triggers options are wildly different across dialects. As such, you should always use
|
|
39
|
+
the dialect-specific `sqlalchemy_declarative_extensions.trigger.base.Trigger` subclasses.
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
```{note}
|
|
43
|
+
Trigger behavior not fully implemented at current time, although it **should** be functional for
|
|
44
|
+
the options it does support. Any ability to instantiate an object which produces a syntax error
|
|
45
|
+
should be considered a bug. Additionally, feature requests for supporting more trigger options
|
|
46
|
+
are welcome!
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Table-level triggers
|
|
50
|
+
|
|
51
|
+
Unlike most other object types, a trigger always targets exactly one table. It can
|
|
52
|
+
therefore be declared inline on that table instead, through `__table_args__` (or the
|
|
53
|
+
positional arguments of a [Table](sqlalchemy.schema.Table)), in the same way you would
|
|
54
|
+
declare an `Index` or `UniqueConstraint`.
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
from sqlalchemy import Column, types
|
|
58
|
+
from sqlalchemy_declarative_extensions.dialects.postgresql import Trigger
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class Foo(Base):
|
|
62
|
+
__tablename__ = "foo"
|
|
63
|
+
__table_args__ = (
|
|
64
|
+
Trigger.after("insert", execute="fancy_trigger")
|
|
65
|
+
.named("on_insert_foo")
|
|
66
|
+
.when("pg_trigger_depth() < 1")
|
|
67
|
+
.for_each_row(),
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
id = Column(types.Integer(), primary_key=True)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Declared this way, `on` is inferred from the table being attached to (schema-qualified,
|
|
74
|
+
where that table declares a non-default schema), and need not be supplied. Supplying an
|
|
75
|
+
`on` which disagrees with that table is an error.
|
|
76
|
+
|
|
77
|
+
The resulting trigger is registered against the same `MetaData` as one declared through
|
|
78
|
+
`Triggers`, so the two styles can be freely mixed, and both are picked up by alembic
|
|
79
|
+
autogeneration. The trigger object itself is not mutated by being attached, so a single
|
|
80
|
+
definition can be shared among multiple tables.
|
|
81
|
+
|
|
82
|
+
```{note}
|
|
83
|
+
`name`, unlike `on`, is **not** inferred. A trigger attached to a table must be given one,
|
|
84
|
+
either through `name=` or `.named(...)`, else a `ValueError` is raised at declaration time.
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
```{note}
|
|
88
|
+
The `MetaData` must have been set up (i.e. `declarative_database` applied, or
|
|
89
|
+
`declare_database` called) **before** the models which attach triggers are defined. This is
|
|
90
|
+
the natural ordering, but it does mean that doing so afterwards will discard any
|
|
91
|
+
already-attached table-level triggers.
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```{eval-rst}
|
|
95
|
+
.. autoapimodule:: sqlalchemy_declarative_extensions.trigger.base
|
|
96
|
+
:members: Trigger, Triggers, register_trigger
|
|
97
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sqlalchemy-declarative-extensions"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.17.0"
|
|
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" }
|
|
@@ -48,8 +48,9 @@ class Trigger(base.Trigger):
|
|
|
48
48
|
def before(
|
|
49
49
|
cls,
|
|
50
50
|
event: TriggerEvents | str,
|
|
51
|
-
|
|
51
|
+
*,
|
|
52
52
|
execute: str,
|
|
53
|
+
on: str = "",
|
|
53
54
|
name: str = "",
|
|
54
55
|
):
|
|
55
56
|
return cls(
|
|
@@ -64,8 +65,9 @@ class Trigger(base.Trigger):
|
|
|
64
65
|
def after(
|
|
65
66
|
cls,
|
|
66
67
|
event: TriggerEvents | str,
|
|
67
|
-
|
|
68
|
+
*,
|
|
68
69
|
execute: str,
|
|
70
|
+
on: str = "",
|
|
69
71
|
name: str = "",
|
|
70
72
|
):
|
|
71
73
|
return cls(
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from sqlalchemy_declarative_extensions.dialects.postgresql.function import (
|
|
2
2
|
Function,
|
|
3
|
+
FunctionParallel,
|
|
3
4
|
FunctionParam,
|
|
4
5
|
FunctionReturn,
|
|
5
6
|
FunctionSecurity,
|
|
@@ -45,6 +46,7 @@ __all__ = [
|
|
|
45
46
|
"DefaultGrantTypes",
|
|
46
47
|
"Function",
|
|
47
48
|
"FunctionGrants",
|
|
49
|
+
"FunctionParallel",
|
|
48
50
|
"FunctionParam",
|
|
49
51
|
"FunctionReturn",
|
|
50
52
|
"FunctionSecurity",
|
|
@@ -34,22 +34,24 @@ class FunctionSecurity(enum.Enum):
|
|
|
34
34
|
definer = "DEFINER"
|
|
35
35
|
|
|
36
36
|
|
|
37
|
-
@enum.unique
|
|
38
37
|
class FunctionVolatility(enum.Enum):
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
volatile = "VOLATILE"
|
|
39
|
+
stable = "STABLE"
|
|
40
|
+
immutable = "IMMUTABLE"
|
|
42
41
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
42
|
+
VOLATILE = volatile
|
|
43
|
+
STABLE = stable
|
|
44
|
+
IMMUTABLE = immutable
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class FunctionParallel(enum.Enum):
|
|
48
|
+
unsafe = "UNSAFE"
|
|
49
|
+
restricted = "RESTRICTED"
|
|
50
|
+
safe = "SAFE"
|
|
51
|
+
|
|
52
|
+
UNSAFE = unsafe
|
|
53
|
+
RESTRICTED = restricted
|
|
54
|
+
SAFE = safe
|
|
53
55
|
|
|
54
56
|
|
|
55
57
|
@dataclass
|
|
@@ -62,7 +64,10 @@ class Function(base.Function):
|
|
|
62
64
|
security: FunctionSecurity = FunctionSecurity.invoker
|
|
63
65
|
returns: FunctionReturn | str | None = None # type: ignore
|
|
64
66
|
parameters: Sequence[FunctionParam | str] | None = None # type: ignore
|
|
65
|
-
volatility: FunctionVolatility = FunctionVolatility.
|
|
67
|
+
volatility: FunctionVolatility = FunctionVolatility.volatile
|
|
68
|
+
parallel: FunctionParallel = FunctionParallel.unsafe
|
|
69
|
+
strict: bool = False
|
|
70
|
+
leakproof: bool = False
|
|
66
71
|
|
|
67
72
|
@property
|
|
68
73
|
def _has_sqlbody(self) -> bool:
|
|
@@ -91,9 +96,18 @@ class Function(base.Function):
|
|
|
91
96
|
if self.security == FunctionSecurity.definer:
|
|
92
97
|
components.append("SECURITY DEFINER")
|
|
93
98
|
|
|
94
|
-
if self.volatility != FunctionVolatility.
|
|
99
|
+
if self.volatility != FunctionVolatility.volatile:
|
|
95
100
|
components.append(self.volatility.value)
|
|
96
101
|
|
|
102
|
+
if self.strict:
|
|
103
|
+
components.append("STRICT")
|
|
104
|
+
|
|
105
|
+
if self.leakproof:
|
|
106
|
+
components.append("LEAKPROOF")
|
|
107
|
+
|
|
108
|
+
if self.parallel != FunctionParallel.unsafe:
|
|
109
|
+
components.append(f"PARALLEL {self.parallel.value}")
|
|
110
|
+
|
|
97
111
|
components.append(f"LANGUAGE {self.language}")
|
|
98
112
|
if self._has_sqlbody:
|
|
99
113
|
components.append(self.definition)
|
|
@@ -14,6 +14,7 @@ from sqlalchemy_declarative_extensions.dialects.postgresql.acl import (
|
|
|
14
14
|
)
|
|
15
15
|
from sqlalchemy_declarative_extensions.dialects.postgresql.function import (
|
|
16
16
|
Function,
|
|
17
|
+
FunctionParallel,
|
|
17
18
|
FunctionParam,
|
|
18
19
|
FunctionSecurity,
|
|
19
20
|
FunctionVolatility,
|
|
@@ -65,6 +66,21 @@ EXTENSION_TRIGGERS = {
|
|
|
65
66
|
"postgis_topology": {"layer_integrity_checks": "topology.layer"},
|
|
66
67
|
}
|
|
67
68
|
|
|
69
|
+
FUNCTION_SECURITY = {
|
|
70
|
+
True: FunctionSecurity.definer,
|
|
71
|
+
False: FunctionSecurity.invoker,
|
|
72
|
+
}
|
|
73
|
+
FUNCTION_VOLATILITY = {
|
|
74
|
+
"v": FunctionVolatility.volatile,
|
|
75
|
+
"s": FunctionVolatility.stable,
|
|
76
|
+
"i": FunctionVolatility.immutable,
|
|
77
|
+
}
|
|
78
|
+
FUNCTION_PARALLEL = {
|
|
79
|
+
"u": FunctionParallel.unsafe,
|
|
80
|
+
"r": FunctionParallel.restricted,
|
|
81
|
+
"s": FunctionParallel.safe,
|
|
82
|
+
}
|
|
83
|
+
|
|
68
84
|
|
|
69
85
|
def get_schemas_postgresql(connection: Connection):
|
|
70
86
|
from sqlalchemy_declarative_extensions.schema.base import Schema
|
|
@@ -227,33 +243,31 @@ def get_functions_postgresql(connection: Connection) -> Sequence[BaseFunction]:
|
|
|
227
243
|
|
|
228
244
|
functions = []
|
|
229
245
|
functions_query = get_functions_query(connection.dialect.server_version_info)
|
|
230
|
-
|
|
231
246
|
for f in connection.execute(functions_query).fetchall():
|
|
232
247
|
name = f.name
|
|
233
248
|
definition = f.source
|
|
234
249
|
language = f.language
|
|
235
250
|
schema = f.schema if f.schema != "public" else None
|
|
236
|
-
|
|
251
|
+
parameters = [
|
|
252
|
+
FunctionParam(name, type, default, mode)
|
|
253
|
+
for name, type, default, mode in zip_longest(
|
|
254
|
+
f.arg_names or [],
|
|
255
|
+
f.arg_types or [],
|
|
256
|
+
f.arg_defaults or [],
|
|
257
|
+
f.arg_modes or [],
|
|
258
|
+
)
|
|
259
|
+
]
|
|
237
260
|
function = Function(
|
|
238
|
-
parameters=
|
|
239
|
-
FunctionParam(name, type, default, mode)
|
|
240
|
-
for name, type, default, mode in zip_longest(
|
|
241
|
-
f.arg_names or [],
|
|
242
|
-
f.arg_types or [],
|
|
243
|
-
f.arg_defaults or [],
|
|
244
|
-
f.arg_modes or [],
|
|
245
|
-
)
|
|
246
|
-
],
|
|
247
|
-
volatility=FunctionVolatility.from_provolatile(f.volatility),
|
|
261
|
+
parameters=parameters,
|
|
248
262
|
name=name,
|
|
249
263
|
definition=definition,
|
|
250
264
|
language=language,
|
|
251
265
|
schema=schema,
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
266
|
+
volatility=FUNCTION_VOLATILITY[f.volatility],
|
|
267
|
+
security=FUNCTION_SECURITY[f.security_definer],
|
|
268
|
+
parallel=FUNCTION_PARALLEL[f.parallel],
|
|
269
|
+
strict=f.strict,
|
|
270
|
+
leakproof=f.leakproof,
|
|
257
271
|
returns=f.return_type_string or f.base_return_type,
|
|
258
272
|
)
|
|
259
273
|
functions.append(function)
|
|
@@ -115,6 +115,9 @@ pg_proc = table(
|
|
|
115
115
|
column("prolang"),
|
|
116
116
|
column("prorettype"),
|
|
117
117
|
column("prosecdef"),
|
|
118
|
+
column("proparallel"),
|
|
119
|
+
column("proisstrict"),
|
|
120
|
+
column("proleakproof"),
|
|
118
121
|
column("prokind"),
|
|
119
122
|
column("provolatile"),
|
|
120
123
|
column("pronargs"),
|
|
@@ -376,6 +379,9 @@ def get_functions_query(version_info):
|
|
|
376
379
|
pg_type.c.typname.label("base_return_type"),
|
|
377
380
|
source.label("source"),
|
|
378
381
|
pg_proc.c.prosecdef.label("security_definer"),
|
|
382
|
+
cast(pg_proc.c.proparallel, Text).label("parallel"),
|
|
383
|
+
pg_proc.c.proisstrict.label("strict"),
|
|
384
|
+
pg_proc.c.proleakproof.label("leakproof"),
|
|
379
385
|
cast(pg_proc.c.prokind, Text).label("kind"),
|
|
380
386
|
func.pg_get_function_arguments(pg_proc.c.oid).label("parameters"),
|
|
381
387
|
cast(pg_proc.c.provolatile, Text).label("volatility"),
|
|
@@ -450,6 +456,6 @@ triggers_query = (
|
|
|
450
456
|
.join(proc_nsp, pg_proc.c.pronamespace == proc_nsp.c.oid)
|
|
451
457
|
)
|
|
452
458
|
.where(pg_trigger.c.tgisinternal.is_(False))
|
|
453
|
-
.where(_schema_not_from_extension())
|
|
459
|
+
.where(_schema_not_from_extension(rel_nsp.c.oid))
|
|
454
460
|
.where(_not_from_extension(pg_trigger.c.oid, "pg_trigger"))
|
|
455
461
|
)
|
|
@@ -100,7 +100,7 @@ class Trigger(base.Trigger):
|
|
|
100
100
|
|
|
101
101
|
@classmethod
|
|
102
102
|
def before(
|
|
103
|
-
cls, *events: TriggerEvents | str,
|
|
103
|
+
cls, *events: TriggerEvents | str, execute: str, on: str = "", name: str = ""
|
|
104
104
|
):
|
|
105
105
|
return cls(
|
|
106
106
|
time=TriggerTimes.before,
|
|
@@ -111,7 +111,9 @@ class Trigger(base.Trigger):
|
|
|
111
111
|
)
|
|
112
112
|
|
|
113
113
|
@classmethod
|
|
114
|
-
def after(
|
|
114
|
+
def after(
|
|
115
|
+
cls, *events: TriggerEvents | str, execute: str, on: str = "", name: str = ""
|
|
116
|
+
):
|
|
115
117
|
return cls(
|
|
116
118
|
time=TriggerTimes.after,
|
|
117
119
|
events=TriggerEvents.from_strings(events),
|
|
@@ -122,7 +124,7 @@ class Trigger(base.Trigger):
|
|
|
122
124
|
|
|
123
125
|
@classmethod
|
|
124
126
|
def instead_of(
|
|
125
|
-
cls, *events: TriggerEvents | str,
|
|
127
|
+
cls, *events: TriggerEvents | str, execute: str, on: str = "", name: str = ""
|
|
126
128
|
):
|
|
127
129
|
return cls(
|
|
128
130
|
time=TriggerTimes.instead_of,
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass, field, replace
|
|
4
|
-
from typing import Hashable, Iterable, Sequence
|
|
4
|
+
from typing import Any, Hashable, Iterable, Sequence
|
|
5
5
|
|
|
6
|
-
from sqlalchemy import MetaData
|
|
6
|
+
from sqlalchemy import MetaData, Table
|
|
7
7
|
from sqlalchemy.engine import Connection
|
|
8
|
+
from sqlalchemy.sql.schema import SchemaItem
|
|
8
9
|
from typing_extensions import Self
|
|
9
10
|
|
|
11
|
+
from sqlalchemy_declarative_extensions.sql import qualify_name
|
|
10
12
|
from sqlalchemy_declarative_extensions.sqlalchemy import HasMetaData
|
|
11
13
|
|
|
12
14
|
|
|
13
15
|
@dataclass
|
|
14
|
-
class Trigger:
|
|
16
|
+
class Trigger(SchemaItem):
|
|
15
17
|
"""Describes a generic trigger."""
|
|
16
18
|
|
|
17
19
|
name: str
|
|
@@ -26,6 +28,25 @@ class Trigger:
|
|
|
26
28
|
def named(self, name: str):
|
|
27
29
|
return replace(self, name=name)
|
|
28
30
|
|
|
31
|
+
def _set_parent(self, parent: Any, **kw: Any) -> None:
|
|
32
|
+
"""Attach to the `Table` __table_args__ it was declared in."""
|
|
33
|
+
if not isinstance(parent, Table):
|
|
34
|
+
raise ValueError(
|
|
35
|
+
f"Trigger can only be attached to a `Table`, got: {parent}."
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
on = qualify_name(parent.schema, parent.name)
|
|
39
|
+
if not self.name:
|
|
40
|
+
raise ValueError(f"Trigger attached to table '{on}' must have a name.")
|
|
41
|
+
|
|
42
|
+
if self.on and self.on != on:
|
|
43
|
+
raise ValueError(
|
|
44
|
+
f"Trigger '{self.name}' declares `on='{self.on}'`,"
|
|
45
|
+
f" which conflicts with the table it is attached to: '{on}'."
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
register_trigger(parent.metadata, replace(self, on=on))
|
|
49
|
+
|
|
29
50
|
def to_sql_create(self):
|
|
30
51
|
raise NotImplementedError()
|
|
31
52
|
|
sqlalchemy_declarative_extensions-0.17.0/tests/dialect/postgresql/test_extension_owned_schema.py
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
from pytest_mock_resources import create_postgres_fixture
|
|
2
|
+
from sqlalchemy import text
|
|
3
|
+
|
|
4
|
+
from sqlalchemy_declarative_extensions import Triggers
|
|
5
|
+
from sqlalchemy_declarative_extensions.dialects import get_triggers
|
|
6
|
+
from sqlalchemy_declarative_extensions.trigger.compare import compare_triggers
|
|
7
|
+
|
|
8
|
+
pg = create_postgres_fixture(scope="function", engine_kwargs={"echo": True})
|
|
9
|
+
|
|
10
|
+
setup = """
|
|
11
|
+
CREATE EXTENSION hstore;
|
|
12
|
+
CREATE SCHEMA ext_owned;
|
|
13
|
+
|
|
14
|
+
INSERT INTO pg_depend
|
|
15
|
+
(classid, objid, objsubid, refclassid, refobjid, refobjsubid, deptype)
|
|
16
|
+
SELECT 'pg_namespace'::regclass, n.oid, 0, 'pg_extension'::regclass, e.oid, 0, 'e'
|
|
17
|
+
FROM pg_namespace n, pg_extension e
|
|
18
|
+
WHERE n.nspname = 'ext_owned' AND e.extname = 'hstore';
|
|
19
|
+
|
|
20
|
+
CREATE FUNCTION gimme() RETURNS trigger LANGUAGE plpgsql AS $$
|
|
21
|
+
BEGIN
|
|
22
|
+
RETURN NULL;
|
|
23
|
+
END
|
|
24
|
+
$$;
|
|
25
|
+
|
|
26
|
+
CREATE TABLE foo (id integer primary key);
|
|
27
|
+
CREATE TRIGGER on_insert_foo AFTER INSERT ON foo
|
|
28
|
+
FOR EACH ROW EXECUTE PROCEDURE gimme();
|
|
29
|
+
|
|
30
|
+
CREATE TABLE ext_owned.bar (id integer primary key);
|
|
31
|
+
CREATE TRIGGER on_insert_bar AFTER INSERT ON ext_owned.bar
|
|
32
|
+
FOR EACH ROW EXECUTE PROCEDURE gimme();
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def test_extension_owned_schema_only_excludes_triggers_on_own_tables(pg):
|
|
37
|
+
with pg.connect() as connection:
|
|
38
|
+
connection.execute(text(setup))
|
|
39
|
+
connection.commit()
|
|
40
|
+
|
|
41
|
+
trigger_names = [trigger.name for trigger in get_triggers(connection)]
|
|
42
|
+
assert trigger_names == ["on_insert_foo"]
|
|
43
|
+
|
|
44
|
+
diff = compare_triggers(connection, Triggers())
|
|
45
|
+
|
|
46
|
+
diff_trigger_names = [op.trigger.name for op in diff]
|
|
47
|
+
assert diff_trigger_names == ["on_insert_foo"]
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from pytest_mock_resources import create_postgres_fixture
|
|
3
|
+
from sqlalchemy import text
|
|
4
|
+
|
|
5
|
+
from sqlalchemy_declarative_extensions import Functions
|
|
6
|
+
from sqlalchemy_declarative_extensions.dialects.postgresql import (
|
|
7
|
+
Function,
|
|
8
|
+
FunctionParallel,
|
|
9
|
+
FunctionVolatility,
|
|
10
|
+
)
|
|
11
|
+
from sqlalchemy_declarative_extensions.function.compare import compare_functions
|
|
12
|
+
|
|
13
|
+
pg = create_postgres_fixture(scope="function", engine_kwargs={"echo": True})
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@pytest.mark.parametrize(
|
|
17
|
+
"attributes",
|
|
18
|
+
[
|
|
19
|
+
{},
|
|
20
|
+
{"parallel": FunctionParallel.restricted},
|
|
21
|
+
{"parallel": FunctionParallel.safe},
|
|
22
|
+
{"strict": True},
|
|
23
|
+
{"leakproof": True},
|
|
24
|
+
{"parallel": FunctionParallel.safe, "strict": True, "leakproof": True},
|
|
25
|
+
],
|
|
26
|
+
)
|
|
27
|
+
def test_function_attributes(pg, attributes):
|
|
28
|
+
add_function = Function(
|
|
29
|
+
name="add",
|
|
30
|
+
definition="SELECT a + b;",
|
|
31
|
+
parameters=["a integer", "b integer"],
|
|
32
|
+
returns="INTEGER",
|
|
33
|
+
**attributes,
|
|
34
|
+
).normalize()
|
|
35
|
+
functions = Functions([add_function])
|
|
36
|
+
with pg.connect() as connection:
|
|
37
|
+
connection.execute(text("\n".join(add_function.to_sql_create())))
|
|
38
|
+
diff = compare_functions(connection, functions)
|
|
39
|
+
assert diff == []
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@pytest.mark.parametrize(
|
|
43
|
+
"alias, member",
|
|
44
|
+
[
|
|
45
|
+
(FunctionVolatility.STABLE, FunctionVolatility.stable),
|
|
46
|
+
(FunctionParallel.SAFE, FunctionParallel.safe),
|
|
47
|
+
],
|
|
48
|
+
)
|
|
49
|
+
def test_uppercase_alias_is_lowercase_member(alias, member):
|
|
50
|
+
assert alias is member
|
|
@@ -31,7 +31,7 @@ def test_function_argument_defaults(pg, default_a, default_b, default_c):
|
|
|
31
31
|
FunctionParam("c", "text", default=default_c),
|
|
32
32
|
],
|
|
33
33
|
returns="TEXT",
|
|
34
|
-
volatility=FunctionVolatility.
|
|
34
|
+
volatility=FunctionVolatility.stable,
|
|
35
35
|
language="plpgsql",
|
|
36
36
|
).normalize()
|
|
37
37
|
create_function = add_label_function.to_sql_create()
|
|
@@ -23,7 +23,7 @@ def test_functions(pg):
|
|
|
23
23
|
definition="RETURN (i + 1)",
|
|
24
24
|
parameters=["i integer"],
|
|
25
25
|
returns="INTEGER",
|
|
26
|
-
volatility=FunctionVolatility.
|
|
26
|
+
volatility=FunctionVolatility.stable,
|
|
27
27
|
).normalize()
|
|
28
28
|
create_function = add_stable_function.to_sql_create()
|
|
29
29
|
functions = Functions([add_stable_function])
|
|
@@ -23,7 +23,7 @@ class Base(_Base): # type: ignore
|
|
|
23
23
|
"RETURN (i + 1)",
|
|
24
24
|
parameters=["i integer"],
|
|
25
25
|
returns="INTEGER",
|
|
26
|
-
volatility=FunctionVolatility.
|
|
26
|
+
volatility=FunctionVolatility.stable,
|
|
27
27
|
),
|
|
28
28
|
# NEW FUNCTION: Multiple params, RETURNS TABLE
|
|
29
29
|
Function(
|
|
@@ -39,7 +39,7 @@ class Base(_Base): # type: ignore
|
|
|
39
39
|
parameters=["group_ids integer[]"],
|
|
40
40
|
returns=FunctionReturn(table=["id integer", "name text"]),
|
|
41
41
|
language="sql",
|
|
42
|
-
volatility=FunctionVolatility.
|
|
42
|
+
volatility=FunctionVolatility.stable,
|
|
43
43
|
),
|
|
44
44
|
)
|
|
45
45
|
|
|
@@ -23,7 +23,7 @@ class Base(_Base): # type: ignore
|
|
|
23
23
|
"SELECT i + 1;",
|
|
24
24
|
parameters=["i integer"],
|
|
25
25
|
returns="INTEGER",
|
|
26
|
-
volatility=FunctionVolatility.
|
|
26
|
+
volatility=FunctionVolatility.stable,
|
|
27
27
|
),
|
|
28
28
|
# NEW FUNCTION: Multiple params, RETURNS TABLE, plpgsql
|
|
29
29
|
Function(
|
|
@@ -37,7 +37,7 @@ class Base(_Base): # type: ignore
|
|
|
37
37
|
parameters=["group_ids integer[]"],
|
|
38
38
|
returns=FunctionReturn(table=["id integer", "name text"]),
|
|
39
39
|
language="plpgsql", # Requires plpgsql
|
|
40
|
-
volatility=FunctionVolatility.
|
|
40
|
+
volatility=FunctionVolatility.stable,
|
|
41
41
|
),
|
|
42
42
|
)
|
|
43
43
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from sqlalchemy import Column, types
|
|
2
|
+
|
|
3
|
+
from sqlalchemy_declarative_extensions import declarative_database
|
|
4
|
+
from sqlalchemy_declarative_extensions.dialects.postgresql import Trigger
|
|
5
|
+
from sqlalchemy_declarative_extensions.sqlalchemy import declarative_base
|
|
6
|
+
|
|
7
|
+
_Base = declarative_base()
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@declarative_database
|
|
11
|
+
class Base(_Base): # type: ignore
|
|
12
|
+
__abstract__ = True
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class Foo(Base):
|
|
16
|
+
__tablename__ = "foo"
|
|
17
|
+
__table_args__ = (
|
|
18
|
+
Trigger.after("insert", execute="gimme")
|
|
19
|
+
.named("on_insert_foo")
|
|
20
|
+
.when("pg_trigger_depth() < 1")
|
|
21
|
+
.for_each_row(),
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
id = Column(types.Integer(), primary_key=True)
|
sqlalchemy_declarative_extensions-0.17.0/tests/examples/test_trigger_table_args/test_migrations.py
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from pytest_alembic import MigrationContext
|
|
3
|
+
from pytest_mock_resources import PostgresConfig, create_postgres_fixture
|
|
4
|
+
from sqlalchemy import text
|
|
5
|
+
|
|
6
|
+
alembic_engine = create_postgres_fixture(scope="function", engine_kwargs={"echo": True})
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@pytest.fixture(scope="session")
|
|
10
|
+
def pmr_postgres_config():
|
|
11
|
+
return PostgresConfig(image="postgres:13", port=None, ci_port=None)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def test_apply_autogenerated_revision(alembic_runner: MigrationContext, alembic_engine):
|
|
15
|
+
with alembic_engine.connect() as conn:
|
|
16
|
+
with conn.begin() as trans:
|
|
17
|
+
conn.execute(
|
|
18
|
+
text(
|
|
19
|
+
"""
|
|
20
|
+
CREATE FUNCTION gimme() RETURNS trigger LANGUAGE plpgsql AS $$
|
|
21
|
+
BEGIN
|
|
22
|
+
INSERT INTO foo (id) select NEW.id + 1;
|
|
23
|
+
RETURN NULL;
|
|
24
|
+
END
|
|
25
|
+
$$;
|
|
26
|
+
"""
|
|
27
|
+
)
|
|
28
|
+
)
|
|
29
|
+
trans.commit()
|
|
30
|
+
|
|
31
|
+
alembic_runner.migrate_up_one()
|
|
32
|
+
result = alembic_runner.generate_revision(
|
|
33
|
+
autogenerate=True, prevent_file_generation=False
|
|
34
|
+
)
|
|
35
|
+
alembic_runner.migrate_up_one()
|
|
36
|
+
|
|
37
|
+
with alembic_engine.connect() as conn:
|
|
38
|
+
conn.execute(text("insert into foo (id) values (1)"))
|
|
39
|
+
result = [r for r, *_ in conn.execute(text("select id from foo")).fetchall()]
|
|
40
|
+
|
|
41
|
+
assert result == [1, 2]
|