|
22 | 22 | from alembic.util.editor import open_in_editor |
23 | 23 | from alembic.runtime.migration import StampStep |
24 | 24 | from alembic.script import Script, ScriptDirectory |
25 | | -from alembic.autogenerate.api import RevisionContext |
26 | 25 | from alembic.util.langhelpers import rev_id as _rev_id |
27 | 26 | from alembic.migration import RevisionStep, MigrationContext |
| 27 | +from alembic.autogenerate.api import RevisionContext, compare_metadata |
28 | 28 | from alembic.runtime.environment import EnvironmentContext, ProcessRevisionDirectiveFn |
29 | 29 |
|
30 | 30 | from .utils import is_editable, return_progressbar |
@@ -664,17 +664,14 @@ def sync(config: Config, revision: str | None = None): |
664 | 664 | ) |
665 | 665 |
|
666 | 666 | def retrieve_migrations( |
667 | | - rev: tuple[str, ...], context: MigrationContext |
| 667 | + _, context: MigrationContext |
668 | 668 | ) -> list[RevisionStep] | tuple[()]: |
669 | | - if not revision: |
670 | | - revision_context.run_autogenerate(rev, context) |
671 | | - migration_script = revision_context.generated_revisions[-1] |
672 | | - diffs = cast(UpgradeOps, migration_script.upgrade_ops).as_diffs() |
673 | | - if not diffs: |
674 | | - return () |
| 669 | + assert context.connection |
| 670 | + |
| 671 | + if not (revision or compare_metadata(context, context.opts["target_metadata"])): |
| 672 | + return () |
675 | 673 |
|
676 | 674 | metadata = MetaData() |
677 | | - assert context.connection |
678 | 675 | metadata.reflect(context.connection) |
679 | 676 | metadata.drop_all(context.connection) |
680 | 677 |
|
|
0 commit comments