### 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
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.")
+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
--- /dev/null
+ .. 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