Skip to content

Commit 3e48ed0

Browse files
committed
match process_revision_directives typing to API
Improved typing in the :paramref:`.EnvironmentContext.configure.process_revision_directives` callable to better indicate that the passed-in type is :class:`.MigrationScript`, not the :class:`.MigrationOperation` base class, and added typing to the example at :ref:`cookbook_no_empty_migrations` to illustrate. Change-Id: Ibfb7a57a081818c290cf0964d12a72b85c2c1983 Fixes: #1325
1 parent b37d3d0 commit 3e48ed0

File tree

6 files changed

+32
-5
lines changed

6 files changed

+32
-5
lines changed

Diff for: alembic/autogenerate/api.py

+3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from typing import Callable
66
from typing import Dict
77
from typing import Iterator
8+
from typing import List
89
from typing import Optional
910
from typing import Sequence
1011
from typing import Set
@@ -508,6 +509,8 @@ class RevisionContext:
508509
"""Maintains configuration and state that's specific to a revision
509510
file generation operation."""
510511

512+
generated_revisions: List[MigrationScript]
513+
511514
def __init__(
512515
self,
513516
config: Config,

Diff for: alembic/context.pyi

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ if TYPE_CHECKING:
3030

3131
from .autogenerate.api import AutogenContext
3232
from .config import Config
33-
from .operations.ops import MigrateOperation
33+
from .operations.ops import MigrationScript
3434
from .runtime.migration import _ProxyTransaction
3535
from .runtime.migration import MigrationContext
3636
from .runtime.migration import MigrationInfo
@@ -143,7 +143,7 @@ def configure(
143143
include_schemas: bool = False,
144144
process_revision_directives: Optional[
145145
Callable[
146-
[MigrationContext, Tuple[str, str], List[MigrateOperation]], None
146+
[MigrationContext, Tuple[str, str], List[MigrationScript]], None
147147
]
148148
] = None,
149149
compare_type: Union[

Diff for: alembic/operations/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
from .base import BatchOperations
44
from .base import Operations
55
from .ops import MigrateOperation
6+
from .ops import MigrationScript
67

78

89
__all__ = [
910
"AbstractOperations",
1011
"Operations",
1112
"BatchOperations",
1213
"MigrateOperation",
14+
"MigrationScript",
1315
]

Diff for: alembic/runtime/environment.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@
3636
from ..autogenerate.api import AutogenContext
3737
from ..config import Config
3838
from ..ddl import DefaultImpl
39-
from ..operations.ops import MigrateOperation
39+
from ..operations.ops import MigrationScript
4040
from ..script.base import ScriptDirectory
4141

4242
_RevNumber = Optional[Union[str, Tuple[str, ...]]]
4343

4444
ProcessRevisionDirectiveFn = Callable[
45-
[MigrationContext, Tuple[str, str], List["MigrateOperation"]], None
45+
[MigrationContext, Tuple[str, str], List["MigrationScript"]], None
4646
]
4747

4848
RenderItemFn = Callable[

Diff for: docs/build/cookbook.rst

+13-1
Original file line numberDiff line numberDiff line change
@@ -900,14 +900,26 @@ hook in :meth:`.MigrationContext.configure` which removes the
900900
single :class:`.MigrationScript` directive if it is empty of
901901
any operations::
902902

903+
# for typing purposes
904+
from alembic.environment import MigrationContext
905+
906+
# this typing-only import requires alembic 1.12.1 or above
907+
from alembic.operations import MigrationScript
908+
903909

904910
def run_migrations_online():
905911

906912
# ...
907913

908-
def process_revision_directives(context, revision, directives):
914+
def process_revision_directives(
915+
context: MigrationContext,
916+
revision: tuple[str, str],
917+
directives: list[MigrationScript],
918+
):
919+
assert config.cmd_opts is not None
909920
if config.cmd_opts.autogenerate:
910921
script = directives[0]
922+
assert script.upgrade_ops is not None
911923
if script.upgrade_ops.is_empty():
912924
directives[:] = []
913925

Diff for: docs/build/unreleased/1325.rst

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
.. change::
2+
:tags: bug, typing
3+
:tickets: 1325
4+
5+
Improved typing in the
6+
:paramref:`.EnvironmentContext.configure.process_revision_directives`
7+
callable to better indicate that the passed-in type is
8+
:class:`.MigrationScript`, not the :class:`.MigrationOperation` base class,
9+
and added typing to the example at :ref:`cookbook_no_empty_migrations` to
10+
illustrate.

0 commit comments

Comments
 (0)