]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
refactor: add revision context to AutogenerateDiffsDetected so that wrappers may...
authorLouis-Amaury Chaib <louisamaury.chaib@partoo.fr>
Sat, 1 Feb 2025 09:02:34 +0000 (04:02 -0500)
committersqla-tester <sqla-tester@sqlalchemy.org>
Sat, 1 Feb 2025 09:02:34 +0000 (04:02 -0500)
### Description
As discussed in #1597, AutogenerateDiffsDetected should hold contextual information so that command can be wrapped for another format (CI, pre-commit hook...)

### Checklist
<!-- go over following points. check them with an `x` if they do apply, (they turn into clickable checkboxes once the PR is submitted, so no need to do everything at once)

-->

This pull request is:

- [ ] A documentation / typographical error fix
- Good to go, no issue or tests are needed
- [x] A short code fix
- please include the issue number, and create an issue if none exists, which
  must include a complete example of the issue.  one line code fixes without an
  issue and demonstration will not be accepted.
- Please include: `Fixes: #<issue number>` in the commit message
- please include tests.   one line code fixes without tests will not be accepted.
- [ ] A new feature implementation
- please include the issue number, and create an issue if none exists, which must
  include a complete example of how the feature would look.
- Please include: `Fixes: #<issue number>` in the commit message
- please include tests.

**Have a nice day!**

Closes: #1598
Pull-request: https://github.com/sqlalchemy/alembic/pull/1598
Pull-request-sha: 7799320ad3c1a1bd769254d610288c97f85cb345

Change-Id: Id08bc52a0586063f177736a36a61f96232459f1c

alembic/command.py
alembic/util/exc.py
docs/build/unreleased/issue1597.rst [new file with mode: 0644]

index 89c12354a61e136d8a43f2e56f210683908f9380..0ae1d9a8f6e35efb10bf8f668b7d4727ef52e125 100644 (file)
@@ -298,7 +298,9 @@ def check(config: "Config") -> None:
 
     if diffs:
         raise util.AutogenerateDiffsDetected(
-            f"New upgrade operations detected: {diffs}"
+            f"New upgrade operations detected: {diffs}",
+            revision_context=revision_context,
+            diffs=diffs,
         )
     else:
         config.print_stdout("No new upgrade operations detected.")
index 0d0496b1e2967c5bdaca854531a9a2df339e425f..c790e18a7457516ce347d4a1db4313ad7d8a43ae 100644 (file)
@@ -1,6 +1,25 @@
+from __future__ import annotations
+
+from typing import Any
+from typing import List
+from typing import Tuple
+from typing import TYPE_CHECKING
+
+if TYPE_CHECKING:
+    from alembic.autogenerate import RevisionContext
+
+
 class CommandError(Exception):
     pass
 
 
 class AutogenerateDiffsDetected(CommandError):
-    pass
+    def __init__(
+        self,
+        message: str,
+        revision_context: RevisionContext,
+        diffs: List[Tuple[Any, ...]],
+    ) -> None:
+        super().__init__(message)
+        self.revision_context = revision_context
+        self.diffs = diffs
diff --git a/docs/build/unreleased/issue1597.rst b/docs/build/unreleased/issue1597.rst
new file mode 100644 (file)
index 0000000..b7fcb08
--- /dev/null
@@ -0,0 +1,6 @@
+ .. change::
+        :tags: check, autogenerate
+        :tickets: 1597
+
+        Add revision context to AutogenerateDiffsDetected so that command can be wrapped and diffs may be output in a different format.
+        Pull request courtesy of Louis-Amaury Chaib (@lachaib).
\ No newline at end of file