dbconform 0.2.6__tar.gz → 0.2.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. {dbconform-0.2.6/src/dbconform.egg-info → dbconform-0.2.7}/PKG-INFO +1 -1
  2. {dbconform-0.2.6 → dbconform-0.2.7}/pyproject.toml +2 -2
  3. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/sql_dialect/postgresql.py +26 -1
  4. {dbconform-0.2.6 → dbconform-0.2.7/src/dbconform.egg-info}/PKG-INFO +1 -1
  5. {dbconform-0.2.6 → dbconform-0.2.7}/LICENSE +0 -0
  6. {dbconform-0.2.6 → dbconform-0.2.7}/README.md +0 -0
  7. {dbconform-0.2.6 → dbconform-0.2.7}/setup.cfg +0 -0
  8. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/__init__.py +0 -0
  9. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/adapters/__init__.py +0 -0
  10. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/adapters/model_schema.py +0 -0
  11. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/adapters/sa_to_neutral.py +0 -0
  12. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/cli.py +0 -0
  13. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/compare/__init__.py +0 -0
  14. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/compare/db_schema.py +0 -0
  15. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/compare/diff.py +0 -0
  16. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/conform.py +0 -0
  17. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/errors.py +0 -0
  18. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/internal/__init__.py +0 -0
  19. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/internal/objects.py +0 -0
  20. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/internal/types.py +0 -0
  21. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/plan/__init__.py +0 -0
  22. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/plan/builder.py +0 -0
  23. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/plan/steps.py +0 -0
  24. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/schema/__init__.py +0 -0
  25. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/schema/db_schema.py +0 -0
  26. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/schema/diff.py +0 -0
  27. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/schema/model_schema.py +0 -0
  28. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/schema/objects.py +0 -0
  29. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/schema/sa_to_neutral.py +0 -0
  30. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/sql_dialect/__init__.py +0 -0
  31. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/sql_dialect/base.py +0 -0
  32. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/sql_dialect/sqlite.py +0 -0
  33. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform/sql_dialect/sqlite_rebuild.py +0 -0
  34. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform.egg-info/SOURCES.txt +0 -0
  35. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform.egg-info/dependency_links.txt +0 -0
  36. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform.egg-info/entry_points.txt +0 -0
  37. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform.egg-info/requires.txt +0 -0
  38. {dbconform-0.2.6 → dbconform-0.2.7}/src/dbconform.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dbconform
3
- Version: 0.2.6
3
+ Version: 0.2.7
4
4
  Summary: Synchronize database schema to models — document-driven project.
5
5
  Author: Brian L. Pond
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "dbconform"
7
- version = "0.2.6"
7
+ version = "0.2.7"
8
8
  description = "Synchronize database schema to models — document-driven project."
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -62,7 +62,7 @@ where = ["src"]
62
62
  dbconform = "dbconform.cli:main"
63
63
 
64
64
  [tool.commitizen]
65
- version = "0.2.6"
65
+ version = "0.2.7"
66
66
  version_scheme = "semver"
67
67
  commit = true
68
68
  tag = true
@@ -221,6 +221,31 @@ class PostgreSQLDialect(Dialect):
221
221
  tbl = self.qualified_table(table_name)
222
222
  return f"CREATE {uniq}INDEX {self._quote(index.name)} ON {tbl} ({cols})"
223
223
 
224
+ def _normalize_default_expr(self, default_expr: str | None) -> str | None:
225
+ """
226
+ Normalize reflected PostgreSQL default expressions for stable comparisons.
227
+
228
+ PostgreSQL reflection often returns typed literal defaults as casts, e.g.
229
+ ``'1900-01-01'::date``. Model-side defaults from SQLModel/SQLAlchemy Python
230
+ values are represented as ``'1900-01-01'``. These are semantically equal and
231
+ should not trigger repeated ALTER DEFAULT steps on re-apply.
232
+ """
233
+ if default_expr is None:
234
+ return None
235
+ expr = default_expr.strip()
236
+ while expr.startswith("(") and expr.endswith(")"):
237
+ expr = expr[1:-1].strip()
238
+ literal_cast = re.match(
239
+ r"^('(?:[^']|'')*')::(?:date|time(?:stamp)?(?:\s+with(?:out)?\s+time\s+zone)?)$",
240
+ expr,
241
+ re.IGNORECASE,
242
+ )
243
+ if literal_cast:
244
+ return literal_cast.group(1)
245
+ if re.match(r"^(true|false)$", expr, re.IGNORECASE):
246
+ return expr.upper()
247
+ return expr
248
+
224
249
  def normalize_reflected_table(self, table_def: TableDef) -> TableDef:
225
250
  """
226
251
  Normalize reflected table so it compares equal to model-side internal schema.
@@ -266,7 +291,7 @@ class PostgreSQLDialect(Dialect):
266
291
  name=col.name,
267
292
  data_type_name=neutral_type,
268
293
  nullable=col.nullable,
269
- default=col.default,
294
+ default=self._normalize_default_expr(col.default),
270
295
  comment=col.comment,
271
296
  autoincrement=False,
272
297
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dbconform
3
- Version: 0.2.6
3
+ Version: 0.2.7
4
4
  Summary: Synchronize database schema to models — document-driven project.
5
5
  Author: Brian L. Pond
6
6
  License: MIT
File without changes
File without changes
File without changes