from ..autogenerate.rewriter import Rewriter
from ..runtime.migration import MigrationContext
+ from ..script.revision import _RevIdType
class MigrateOperation:
imports: Set[str] = set(),
head: Optional[str] = None,
splice: Optional[bool] = None,
- branch_label: Optional[str] = None,
+ branch_label: Optional[_RevIdType] = None,
version_path: Optional[str] = None,
- depends_on: Optional[Union[str, Sequence[str]]] = None,
+ depends_on: Optional[_RevIdType] = None,
) -> None:
self.rev_id = rev_id
self.message = message
from ..util import not_none
if TYPE_CHECKING:
+ from .revision import _RevIdType
+ from .revision import Revision
from ..config import Config
from ..config import MessagingOptions
from ..runtime.migration import RevisionStep
from ..runtime.migration import StampStep
- from ..script.revision import Revision
try:
from dateutil import tz
except ImportError:
tz = None # type: ignore[assignment]
-_RevIdType = Union[str, Sequence[str]]
-
_sourceless_rev_file = re.compile(r"(?!\.\#|__init__)(.*\.py)(c|o)?$")
_only_source_rev_file = re.compile(r"(?!\.\#|__init__)(.*\.py)$")
_legacy_rev = re.compile(r"([a-f0-9]+)\.py$")
-_mod_def_re = re.compile(r"(upgrade|downgrade)_([a-z0-9]+)")
_slug_re = re.compile(r"\w+")
_default_file_template = "%(rev)s_%(slug)s"
_split_on_space_comma = re.compile(r", *|(?: +)")
head: Optional[str] = None,
refresh: bool = False,
splice: Optional[bool] = False,
- branch_labels: Optional[str] = None,
+ branch_labels: Optional[_RevIdType] = None,
version_path: Optional[str] = None,
depends_on: Optional[_RevIdType] = None,
**kw: Any,
Create Date: ${create_date}
"""
+from typing import Sequence, Union
+
from alembic import op
import sqlalchemy as sa
${imports if imports else ""}
# revision identifiers, used by Alembic.
-revision = ${repr(up_revision)}
-down_revision = ${repr(down_revision)}
-branch_labels = ${repr(branch_labels)}
-depends_on = ${repr(depends_on)}
+revision: str = ${repr(up_revision)}
+down_revision: Union[str, None] = ${repr(down_revision)}
+branch_labels: Union[str, Sequence[str], None] = ${repr(branch_labels)}
+depends_on: Union[str, Sequence[str], None] = ${repr(depends_on)}
def upgrade() -> None:
Create Date: ${create_date}
"""
+from typing import Sequence, Union
+
from alembic import op
import sqlalchemy as sa
${imports if imports else ""}
# revision identifiers, used by Alembic.
-revision = ${repr(up_revision)}
-down_revision = ${repr(down_revision)}
-branch_labels = ${repr(branch_labels)}
-depends_on = ${repr(depends_on)}
+revision: str = ${repr(up_revision)}
+down_revision: Union[str, None] = ${repr(down_revision)}
+branch_labels: Union[str, Sequence[str], None] = ${repr(branch_labels)}
+depends_on: Union[str, Sequence[str], None] = ${repr(depends_on)}
def upgrade() -> None:
Create Date: ${create_date}
"""
+from typing import Sequence, Union
+
from alembic import op
import sqlalchemy as sa
${imports if imports else ""}
# revision identifiers, used by Alembic.
-revision = ${repr(up_revision)}
-down_revision = ${repr(down_revision)}
-branch_labels = ${repr(branch_labels)}
-depends_on = ${repr(depends_on)}
+revision: str = ${repr(up_revision)}
+down_revision: Union[str, None] = ${repr(down_revision)}
+branch_labels: Union[str, Sequence[str], None] = ${repr(branch_labels)}
+depends_on: Union[str, Sequence[str], None] = ${repr(depends_on)}
def upgrade(engine_name: str) -> None:
--- /dev/null
+.. change::
+ :tags: usecase, typing
+ :tickets: 1253
+
+ Added typing to the default script mako templates.