dblift 3.3.2__tar.gz → 3.3.3__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.
- {dblift-3.3.2 → dblift-3.3.3}/PKG-INFO +1 -1
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/cockroachdb/__init__.py +8 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/cockroachdb/plugin.py +5 -1
- dblift-3.3.3/db/plugins/cockroachdb/sqlalchemy_dialect.py +124 -0
- dblift-3.3.3/db/plugins/cockroachdb/sqlalchemy_url.py +93 -0
- {dblift-3.3.2 → dblift-3.3.3}/dblift.egg-info/PKG-INFO +1 -1
- {dblift-3.3.2 → dblift-3.3.3}/dblift.egg-info/SOURCES.txt +2 -0
- {dblift-3.3.2 → dblift-3.3.3}/pyproject.toml +1 -1
- {dblift-3.3.2 → dblift-3.3.3}/LICENSE +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/README.md +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/api/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/api/_cli_support.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/api/_client_factory.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/api/_client_operations.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/api/_engine_config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/api/async_client.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/api/client.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/api/events.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/api/migrations.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/api/py.typed +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/_command_handlers.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/_config_helpers.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/_constants.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/_output.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/_parser_setup.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/commands/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/commands/config_command.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/db_utils.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/extensions.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/handlers/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/handlers/_shared.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/handlers/baseline.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/handlers/clean.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/handlers/import_flyway.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/handlers/info.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/handlers/migrate.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/handlers/repair.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/handlers/undo.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/handlers/validate.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/main.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/cli/premium_manifest.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/config/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/config/_credential_masking.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/config/_subclasses/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/config/_subclasses/dummy_config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/config/_url_builder_mixin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/config/config_builder.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/config/database_config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/config/dblift_config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/config/errors.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/config/property_registry.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/config/secrets/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/config/secrets/_cache.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/config/secrets/_provider_base.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/config/secrets/_registry.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/config/secrets/_resolver.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/config/secrets/_secrets_config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/constants.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/dialect_boundary.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/exceptions.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/_column_enricher.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/_partition_enricher.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/_schema_orchestrator.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/_utils.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/_vendor_property_applier.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/base_introspector.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/extractors/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/extractors/base_extractor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/extractors/column_extractor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/extractors/constraint_extractor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/extractors/index_extractor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/extractors/misc_extractor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/extractors/procedure_extractor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/extractors/sequence_extractor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/extractors/table_extractor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/extractors/trigger_extractor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/extractors/view_extractor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/introspector_factory.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/result.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/schema_introspector.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/vendor_queries_base.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/vendor_queries_factory.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/vendor_queries_protocols.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/introspection/version_detector.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/_base.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/_factory.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/_formatters.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/_levels.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/_multi.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/_null.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/console.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/formatters/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/formatters/_formatter_impl.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/formatters/factory.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/formatters/formatter.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/formatters/htmlformatter.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/formatters/jsonformatter.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/log.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/results.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/templates/oldreport.html +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/logger/templates/report.html +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/_type_match.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/clean_summary.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/commands/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/commands/_script_events.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/commands/base_command.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/commands/baseline_command.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/commands/clean_command.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/commands/import_flyway_command.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/commands/info_command.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/commands/migrate_command.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/commands/repair_command.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/commands/undo_command.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/commands/validate_command.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/encoding.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/executor/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/executor/execution_engine.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/executor/migration_executor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/executor/migration_helpers.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/executor/placeholder_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/executor/transaction_policy.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/executors/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/executors/base_executor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/executors/executor_factory.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/executors/python_executor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/executors/sql_executor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/formats/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/formats/format_detector.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/formats/migration_format.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/history/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/history/migration_history_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/journals/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/journals/migration_journal.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/migration.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/placeholders/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/placeholders/placeholder_service.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/rules/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/rules/migration_rules.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/scripting/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/scripting/migration_script_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/scripting/undo_script_generator/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/scripting/undo_script_generator/_ddl_reversers.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/scripting/undo_script_generator/_dml_reversers.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/scripting/undo_script_generator/_extractors.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/scripting/undo_script_generator/_generator.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/scripting/undo_script_generator/_helpers.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/scripting/undo_script_generator/_models.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/scripting/undo_script_generator/_reversers.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/sql/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/sql/execution_statement.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/sql/sql_analyzer.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/sql/sql_execution_service.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/sql/statement_splitter.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/state/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/state/migration_data_service.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/state/migration_display_state.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/state/migration_formatter.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/state/migration_state.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/state/migration_state_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/state/migration_state_service.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/ui/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/ui/data_collector.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/ui/display_formatters.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/ui/migration_analyzer.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/ui/migration_ui.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/ui/table_renderer.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/migration/version_utils.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/normalization/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/normalization/dependency_resolver.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/normalization/identifier_normalizer.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/normalization/object_orderer.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/normalization/type_constants.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/normalization/type_mapper.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/normalization/type_mappings.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/normalization/type_normalizer.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/seams/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/seams/capabilities.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/seams/client_factory.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/seams/event_listeners.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/seams/feature_loading.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/seams/introspection.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/seams/license_info.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/seams/runtime_checks.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/seams/sql_generators.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/seams/tier_resolver.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_generator/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_generator/alter/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_generator/alter/alter_generator_factory.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_generator/alter/base_alter_generator.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_generator/alter_generator.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_generator/base_generator.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_generator/basic_table_ddl_generator.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_generator/dependency_analyzer.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_generator/diff_converters/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_generator/diff_converters/base_converter.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_generator/formatter.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_generator/generator_factory.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_generator/options.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_generator/script_organizer.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_generator/sql_generator.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_generator/sql_statement.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_generator/table_ddl_render.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/_base_parse_result.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/_base_sql_column.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/_base_sql_constraint.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/_base_sql_object.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/_base_sql_statement.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/base.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/constraint_validator.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/database_link.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/dialect.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/event.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/extension.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/feature_gates.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/foreign_data_wrapper.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/foreign_server.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/index.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/linked_server.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/module.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/package.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/partition.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/procedure.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/sequence.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/server_info.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/synonym.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/table.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/table_canonicalizer.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/table_options.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/trigger.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/user_defined_type.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/view.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_model/view_options.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_parser/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_parser/_partition_handler.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_parser/_sqlglot_builders.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_parser/base_statement_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_parser/base_tokenizer.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_parser/common/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_parser/common/base_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_parser/dialects/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_parser/dialects/base_config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_parser/enhanced_regex_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_parser/hybrid_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_parser/parser_context.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_parser/parser_factory.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_parser/parser_interface.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_parser/sqlglot_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_parser/tokens.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_parser/unified_regex_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_validator/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_validator/_checksum_validator.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_validator/_flyway_compatibility.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_validator/_migration_filter.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_validator/_sql_syntax_validator.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_validator/_strict_mode_validator.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/sql_validator/migration_validator.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/state/sql_script_formatter.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/state/sql_statement.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/utils/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/utils/database_url_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/utils/metadata_helpers.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/utils/row_access.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/utils/string_utils.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/core/utils/url_masking.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/base_provider.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/base_quirks.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/constants.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/dml_analysis.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/error.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/error_handler.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/exceptions.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/feature_gate.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/native_connection_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/object_naming.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/_pg_compatible.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/alloydb/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/alloydb/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/aurora_postgresql/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/aurora_postgresql/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/base_history_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/base_locking_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/base_query_executor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/base_schema_operations.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/base_snapshot_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/base_undo_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/citus/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/citus/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/cockroachdb/provider.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/cockroachdb/quirks.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/cosmosdb/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/cosmosdb/config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/cosmosdb/cosmosdb/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/cosmosdb/cosmosdb/_sdk.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/cosmosdb/cosmosdb/connection_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/cosmosdb/cosmosdb/history_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/cosmosdb/cosmosdb/locking_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/cosmosdb/cosmosdb/query_executor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/cosmosdb/cosmosdb/schema_operations.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/cosmosdb/introspection/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/cosmosdb/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/cosmosdb/provider.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/cosmosdb/quirks.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/db2/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/db2/config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/db2/db2/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/db2/db2/history_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/db2/db2/locking_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/db2/db2/schema_operations.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/db2/introspection/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/db2/parser/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/db2/parser/db2_regex_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/db2/parser/parser_config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/db2/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/db2/provider.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/db2/quirks.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/db2/sqlalchemy_url.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/duckdb/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/duckdb/config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/duckdb/parser/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/duckdb/parser/duckdb_regex_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/duckdb/parser/parser_config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/duckdb/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/duckdb/provider.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/duckdb/quirks.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/duckdb/sqlalchemy_url.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mariadb/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mariadb/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mariadb/provider.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mariadb/quirks.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mysql/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mysql/config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mysql/introspection/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mysql/mysql/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mysql/mysql/history_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mysql/mysql/locking_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mysql/mysql/schema_operations.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mysql/parser/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mysql/parser/mysql_regex_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mysql/parser/mysql_statement_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mysql/parser/mysql_tokenizer.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mysql/parser/parser_config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mysql/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mysql/provider.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mysql/quirks.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/mysql/sqlalchemy_url.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/neon/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/neon/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/nosql_base/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/nosql_base/history.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/nosql_base/introspection.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/nosql_base/locking.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/introspection/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/introspection/oracle_utils.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/oracle/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/oracle/dbms_output.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/oracle/history_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/oracle/locking_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/oracle/schema_operations.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/parser/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/parser/_comments.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/parser/_object_extractor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/parser/_plsql_block.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/parser/_sqlplus.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/parser/_statement_splitter.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/parser/oracle_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/parser/oracle_statement_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/parser/oracle_tokenizer.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/parser/parser_config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/parser/sqlplus_context.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/provider.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/quirks.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/oracle/sqlalchemy_url.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/postgresql/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/postgresql/_provider_query_executor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/postgresql/config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/postgresql/introspection/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/postgresql/parser/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/postgresql/parser/parser_config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/postgresql/parser/postgresql_regex_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/postgresql/parser/postgresql_statement_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/postgresql/parser/postgresql_tokenizer.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/postgresql/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/postgresql/postgresql/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/postgresql/postgresql/history_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/postgresql/postgresql/locking_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/postgresql/postgresql/schema_operations.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/postgresql/provider.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/postgresql/quirks.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/postgresql/sqlalchemy_url.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/redshift/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/redshift/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/redshift/provider.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/redshift/quirks.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/redshift/sqlalchemy_url.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/snowflake/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/snowflake/config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/snowflake/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/snowflake/provider.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/snowflake/quirks.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/snowflake/sqlalchemy_url.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlite/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlite/config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlite/introspection/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlite/parser/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlite/parser/parser_config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlite/parser/sqlite_regex_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlite/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlite/provider.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlite/quirks.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlite/sqlalchemy_url.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlite/sqlite/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlite/sqlite/connection_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlite/sqlite/history_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlite/sqlite/locking_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlite/sqlite/query_executor.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlite/sqlite/schema_operations.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlserver/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlserver/config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlserver/introspection/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlserver/parser/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlserver/parser/parser_config.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlserver/parser/sqlserver_regex_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlserver/parser/sqlserver_statement_parser.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlserver/parser/sqlserver_tokenizer.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlserver/parser/tsql_batch_separator.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlserver/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlserver/provider.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlserver/quirks.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlserver/sqlalchemy_url.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlserver/sqlserver/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlserver/sqlserver/history_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlserver/sqlserver/locking_manager.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/sqlserver/sqlserver/schema_operations.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/supabase/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/supabase/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/timescaledb/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/timescaledb/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/yugabytedb/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/plugins/yugabytedb/plugin.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/provider_capabilities.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/provider_interfaces.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/provider_registry.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/sqlalchemy_provider.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/db/value_utils.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/dblift.egg-info/dependency_links.txt +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/dblift.egg-info/entry_points.txt +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/dblift.egg-info/requires.txt +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/dblift.egg-info/top_level.txt +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/integrations/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/integrations/django/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/integrations/django/_client.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/integrations/django/_engine.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/integrations/django/apps.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/integrations/django/checks.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/integrations/django/management/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/integrations/django/management/commands/__init__.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/integrations/django/management/commands/dblift_info.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/integrations/django/management/commands/dblift_migrate.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/integrations/django/management/commands/dblift_validate.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/integrations/fastapi.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/integrations/flask.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/integrations/opentelemetry.py +0 -0
- {dblift-3.3.2 → dblift-3.3.3}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dblift
|
|
3
|
-
Version: 3.3.
|
|
3
|
+
Version: 3.3.3
|
|
4
4
|
Summary: A database migration tool that supports multiple databases with native Python drivers
|
|
5
5
|
Classifier: Development Status :: 5 - Production/Stable
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
"""CockroachDB database provider plugin (PostgreSQL-compatible)."""
|
|
2
2
|
|
|
3
|
+
# Side-effect import: register the SQLAlchemy dialect so create_engine can
|
|
4
|
+
# resolve cockroachdb+psycopg even if plugin.py was not loaded yet.
|
|
5
|
+
from db.plugins.cockroachdb.sqlalchemy_dialect import ( # noqa: F401
|
|
6
|
+
register_cockroach_dialect,
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
register_cockroach_dialect()
|
|
10
|
+
|
|
3
11
|
__plugin_name__ = "cockroachdb"
|
|
4
12
|
__plugin_version__ = "1.0.0"
|
|
5
13
|
__plugin_description__ = "CockroachDB database provider"
|
|
@@ -11,9 +11,13 @@ from __future__ import annotations
|
|
|
11
11
|
|
|
12
12
|
from db.plugins.cockroachdb.provider import CockroachdbProvider
|
|
13
13
|
from db.plugins.cockroachdb.quirks import CockroachdbQuirks
|
|
14
|
-
from db.plugins.
|
|
14
|
+
from db.plugins.cockroachdb.sqlalchemy_dialect import register_cockroach_dialect
|
|
15
|
+
from db.plugins.cockroachdb.sqlalchemy_url import build_sqlalchemy_url
|
|
15
16
|
from db.provider_registry import PluginInfo
|
|
16
17
|
|
|
18
|
+
# Register before any create_engine call can race plugin discovery.
|
|
19
|
+
register_cockroach_dialect()
|
|
20
|
+
|
|
17
21
|
PLUGIN: PluginInfo = PluginInfo(
|
|
18
22
|
name="cockroachdb",
|
|
19
23
|
version="1.0.0",
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"""SQLAlchemy dialect for CockroachDB (PostgreSQL wire, CRDB version banner).
|
|
2
|
+
|
|
3
|
+
SQLAlchemy's stock PostgreSQL dialect requires a ``PostgreSQL X.Y`` (or
|
|
4
|
+
``EnterpriseDB``) prefix from ``select version()``. CockroachDB returns banners
|
|
5
|
+
like::
|
|
6
|
+
|
|
7
|
+
CockroachDB CCL v24.3.18 (x86_64-pc-linux-gnu, built 2025/08/07 22:44:01, go1.22.8 ...)
|
|
8
|
+
|
|
9
|
+
which raise ``AssertionError: Could not determine version from string`` on every
|
|
10
|
+
``create_engine`` connect. This dialect reuses the psycopg PostgreSQL dialect
|
|
11
|
+
and only overrides server-version parsing so the product version ``vX.Y.Z`` is
|
|
12
|
+
used — never the trailing ``go1.x.y`` fragment.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
import re
|
|
18
|
+
from typing import Any, Optional, Tuple
|
|
19
|
+
|
|
20
|
+
from sqlalchemy.dialects.postgresql.psycopg import PGDialect_psycopg
|
|
21
|
+
|
|
22
|
+
# Prefer an explicit product "vMAJOR.MINOR[.PATCH]" token (CRDB's usual form).
|
|
23
|
+
_CRDB_V_TOKEN = re.compile(r"\bv(\d+)\.(\d+)(?:\.(\d+))?\b", re.IGNORECASE)
|
|
24
|
+
# Fallback when the banner omits the leading ``v`` (older strings).
|
|
25
|
+
_CRDB_DOTTED = re.compile(
|
|
26
|
+
r"CockroachDB(?:\s+CCL)?\s+(\d+)\.(\d+)(?:\.(\d+))?",
|
|
27
|
+
re.IGNORECASE,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
_registered = False
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def parse_cockroach_server_version(banner: str) -> Tuple[int, ...]:
|
|
34
|
+
"""Return ``(major, minor[, patch])`` from a CockroachDB ``version()`` banner.
|
|
35
|
+
|
|
36
|
+
Raises:
|
|
37
|
+
AssertionError: when no product version can be extracted (same shape as
|
|
38
|
+
SQLAlchemy's PostgreSQL dialect failure).
|
|
39
|
+
"""
|
|
40
|
+
text = banner or ""
|
|
41
|
+
match = _CRDB_V_TOKEN.search(text)
|
|
42
|
+
if match is None:
|
|
43
|
+
match = _CRDB_DOTTED.search(text)
|
|
44
|
+
if match is None:
|
|
45
|
+
raise AssertionError(f"Could not determine version from string '{banner}'")
|
|
46
|
+
major = int(match.group(1))
|
|
47
|
+
minor = int(match.group(2))
|
|
48
|
+
patch = match.group(3)
|
|
49
|
+
if patch is not None:
|
|
50
|
+
return (major, minor, int(patch))
|
|
51
|
+
return (major, minor)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class CockroachDBDialect_psycopg(PGDialect_psycopg):
|
|
55
|
+
"""PostgreSQL+psycopg dialect that accepts CockroachDB version banners."""
|
|
56
|
+
|
|
57
|
+
name = "cockroachdb"
|
|
58
|
+
driver = "psycopg"
|
|
59
|
+
# Inherit PG caching semantics; SQLAlchemy warns if a subclass omits this.
|
|
60
|
+
supports_statement_cache = True
|
|
61
|
+
|
|
62
|
+
def _get_server_version_info(self, connection: Any) -> Tuple[int, ...]:
|
|
63
|
+
raw = connection.exec_driver_sql("select version()").scalar()
|
|
64
|
+
return parse_cockroach_server_version(str(raw) if raw is not None else "")
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def register_cockroach_dialect() -> None:
|
|
68
|
+
"""Register ``cockroachdb`` / ``cockroachdb.psycopg`` with SQLAlchemy once."""
|
|
69
|
+
global _registered
|
|
70
|
+
if _registered:
|
|
71
|
+
return
|
|
72
|
+
from sqlalchemy.dialects import registry
|
|
73
|
+
|
|
74
|
+
registry.register(
|
|
75
|
+
"cockroachdb",
|
|
76
|
+
"db.plugins.cockroachdb.sqlalchemy_dialect",
|
|
77
|
+
"CockroachDBDialect_psycopg",
|
|
78
|
+
)
|
|
79
|
+
registry.register(
|
|
80
|
+
"cockroachdb.psycopg",
|
|
81
|
+
"db.plugins.cockroachdb.sqlalchemy_dialect",
|
|
82
|
+
"CockroachDBDialect_psycopg",
|
|
83
|
+
)
|
|
84
|
+
_registered = True
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def ensure_cockroach_drivername(drivername: str) -> str:
|
|
88
|
+
"""Map a PostgreSQL-family drivername onto ``cockroachdb+psycopg``.
|
|
89
|
+
|
|
90
|
+
Only the ``psycopg`` DBAPI is registered for CockroachDB. Bare
|
|
91
|
+
``postgresql`` / ``postgres`` / ``cockroachdb`` names and ``+psycopg``
|
|
92
|
+
variants rewrite cleanly; any other driver suffix (e.g. ``asyncpg``)
|
|
93
|
+
raises so ``create_engine`` does not fail later with an unloadable dialect.
|
|
94
|
+
"""
|
|
95
|
+
if drivername in (
|
|
96
|
+
"cockroachdb",
|
|
97
|
+
"cockroachdb+psycopg",
|
|
98
|
+
"postgresql",
|
|
99
|
+
"postgres",
|
|
100
|
+
"postgresql+psycopg",
|
|
101
|
+
"postgres+psycopg",
|
|
102
|
+
):
|
|
103
|
+
return "cockroachdb+psycopg"
|
|
104
|
+
if drivername.startswith(("postgresql+", "postgres+", "cockroachdb+")):
|
|
105
|
+
suffix = drivername.split("+", 1)[1]
|
|
106
|
+
if suffix != "psycopg":
|
|
107
|
+
raise ValueError(
|
|
108
|
+
"CockroachDB native connections require the psycopg driver "
|
|
109
|
+
f"(got {drivername!r}); use cockroachdb+psycopg or "
|
|
110
|
+
"postgresql+psycopg"
|
|
111
|
+
)
|
|
112
|
+
return "cockroachdb+psycopg"
|
|
113
|
+
raise ValueError(
|
|
114
|
+
"CockroachDB native connections require a PostgreSQL/CockroachDB "
|
|
115
|
+
f"SQLAlchemy URL (got drivername {drivername!r})"
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
__all__ = [
|
|
120
|
+
"CockroachDBDialect_psycopg",
|
|
121
|
+
"ensure_cockroach_drivername",
|
|
122
|
+
"parse_cockroach_server_version",
|
|
123
|
+
"register_cockroach_dialect",
|
|
124
|
+
]
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"""SQLAlchemy URL construction for CockroachDB.
|
|
2
|
+
|
|
3
|
+
Reuses the PostgreSQL URL shape (host/user/sslmode/search_path) but forces the
|
|
4
|
+
``cockroachdb+psycopg`` drivername so SQLAlchemy loads
|
|
5
|
+
:class:`CockroachDBDialect_psycopg` instead of the stock PostgreSQL dialect
|
|
6
|
+
that cannot parse CockroachDB ``version()`` banners.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from typing import Any, Dict
|
|
12
|
+
|
|
13
|
+
from sqlalchemy.engine import URL, make_url
|
|
14
|
+
|
|
15
|
+
from db.plugins.cockroachdb.sqlalchemy_dialect import (
|
|
16
|
+
ensure_cockroach_drivername,
|
|
17
|
+
register_cockroach_dialect,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def _string_mapping(values: Any) -> Dict[str, str]:
|
|
22
|
+
if not isinstance(values, dict):
|
|
23
|
+
return {}
|
|
24
|
+
return {str(key): str(value) for key, value in values.items()}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _query_mapping(database_config: Any, base_query: Any = None) -> Dict[str, str]:
|
|
28
|
+
query = _string_mapping(base_query)
|
|
29
|
+
query.update(_string_mapping(getattr(database_config, "extra_params", None)))
|
|
30
|
+
query.update(_string_mapping(getattr(database_config, "options", None)))
|
|
31
|
+
|
|
32
|
+
connection_timeout = getattr(database_config, "connection_timeout", None)
|
|
33
|
+
if connection_timeout:
|
|
34
|
+
query["connect_timeout"] = str(connection_timeout)
|
|
35
|
+
|
|
36
|
+
ssl_mode = getattr(database_config, "ssl_mode", None)
|
|
37
|
+
if ssl_mode:
|
|
38
|
+
query["sslmode"] = str(ssl_mode)
|
|
39
|
+
|
|
40
|
+
schema = getattr(database_config, "schema", None)
|
|
41
|
+
if schema:
|
|
42
|
+
schema_option = f"-csearch_path={schema}"
|
|
43
|
+
query["options"] = (
|
|
44
|
+
f"{query['options']} {schema_option}" if query.get("options") else schema_option
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
return query
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def build_sqlalchemy_url(database_config: Any) -> str:
|
|
51
|
+
"""Build a CockroachDB SQLAlchemy URL (psycopg driver, CRDB dialect)."""
|
|
52
|
+
register_cockroach_dialect()
|
|
53
|
+
|
|
54
|
+
raw_url = getattr(database_config, "url", None)
|
|
55
|
+
if isinstance(raw_url, str) and raw_url:
|
|
56
|
+
# Same scheme gate as the PostgreSQL builder, plus cockroachdb:// so a
|
|
57
|
+
# pre-rewritten URL still validates. Other schemes raise immediately.
|
|
58
|
+
if not raw_url.startswith(
|
|
59
|
+
(
|
|
60
|
+
"postgresql://",
|
|
61
|
+
"postgresql+",
|
|
62
|
+
"postgres://",
|
|
63
|
+
"postgres+",
|
|
64
|
+
"cockroachdb://",
|
|
65
|
+
"cockroachdb+",
|
|
66
|
+
)
|
|
67
|
+
):
|
|
68
|
+
raise ValueError(
|
|
69
|
+
"CockroachDB native connections require a PostgreSQL/CockroachDB SQLAlchemy URL"
|
|
70
|
+
)
|
|
71
|
+
url = make_url(raw_url)
|
|
72
|
+
url = url.set(drivername=ensure_cockroach_drivername(url.drivername))
|
|
73
|
+
username = getattr(database_config, "username", None) or url.username or None
|
|
74
|
+
password = getattr(database_config, "password", None) or url.password or None
|
|
75
|
+
if username != url.username or password != url.password:
|
|
76
|
+
url = url.set(username=username, password=password)
|
|
77
|
+
query = _query_mapping(database_config, url.query)
|
|
78
|
+
if query != dict(url.query):
|
|
79
|
+
url = url.set(query=query)
|
|
80
|
+
return url.render_as_string(hide_password=False)
|
|
81
|
+
|
|
82
|
+
return URL.create(
|
|
83
|
+
"cockroachdb+psycopg",
|
|
84
|
+
username=getattr(database_config, "username", None) or None,
|
|
85
|
+
password=getattr(database_config, "password", None) or None,
|
|
86
|
+
host=getattr(database_config, "host", None) or "localhost",
|
|
87
|
+
port=getattr(database_config, "port", None),
|
|
88
|
+
database=getattr(database_config, "database", None),
|
|
89
|
+
query=_query_mapping(database_config),
|
|
90
|
+
).render_as_string(hide_password=False)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
__all__ = ["build_sqlalchemy_url"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dblift
|
|
3
|
-
Version: 3.3.
|
|
3
|
+
Version: 3.3.3
|
|
4
4
|
Summary: A database migration tool that supports multiple databases with native Python drivers
|
|
5
5
|
Classifier: Development Status :: 5 - Production/Stable
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -295,6 +295,8 @@ db/plugins/cockroachdb/__init__.py
|
|
|
295
295
|
db/plugins/cockroachdb/plugin.py
|
|
296
296
|
db/plugins/cockroachdb/provider.py
|
|
297
297
|
db/plugins/cockroachdb/quirks.py
|
|
298
|
+
db/plugins/cockroachdb/sqlalchemy_dialect.py
|
|
299
|
+
db/plugins/cockroachdb/sqlalchemy_url.py
|
|
298
300
|
db/plugins/cosmosdb/__init__.py
|
|
299
301
|
db/plugins/cosmosdb/config.py
|
|
300
302
|
db/plugins/cosmosdb/plugin.py
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dblift"
|
|
7
|
-
version = "3.3.
|
|
7
|
+
version = "3.3.3"
|
|
8
8
|
description = "A database migration tool that supports multiple databases with native Python drivers"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|