macrostrat.database 4.0.1__tar.gz → 4.0.2__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 (18) hide show
  1. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/PKG-INFO +1 -1
  2. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/macrostrat/database/postgresql.py +13 -5
  3. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/pyproject.toml +1 -1
  4. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/macrostrat/.DS_Store +0 -0
  5. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/macrostrat/database/__init__.py +0 -0
  6. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/macrostrat/database/compat.py +0 -0
  7. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/macrostrat/database/mapper/__init__.py +0 -0
  8. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/macrostrat/database/mapper/base.py +0 -0
  9. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/macrostrat/database/mapper/cache.py +0 -0
  10. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/macrostrat/database/mapper/utils.py +0 -0
  11. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/macrostrat/database/query.py +0 -0
  12. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/macrostrat/database/transfer/__init__.py +0 -0
  13. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/macrostrat/database/transfer/dump_database.py +0 -0
  14. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/macrostrat/database/transfer/move_tables.py +0 -0
  15. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/macrostrat/database/transfer/restore_database.py +0 -0
  16. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/macrostrat/database/transfer/stream_utils.py +0 -0
  17. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/macrostrat/database/transfer/utils.py +0 -0
  18. {macrostrat_database-4.0.1 → macrostrat_database-4.0.2}/macrostrat/database/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: macrostrat.database
3
- Version: 4.0.1
3
+ Version: 4.0.2
4
4
  Summary: A SQLAlchemy-based database toolkit.
5
5
  Author: Daven Quinn
6
6
  Author-email: Daven Quinn <dev@davenquinn.com>
@@ -72,25 +72,33 @@ def prefix_inserts(insert, compiler, **kw):
72
72
  def upsert(
73
73
  table,
74
74
  values: dict[str, Any],
75
- index_elements: Sequence[str],
76
75
  *,
77
- on_conflict: OnConflictAction = "do-update",
76
+ index_elements: Sequence[str] | None = None,
77
+ on_conflict: OnConflictAction = OnConflictAction.DO_UPDATE,
78
78
  ):
79
+ _index = index_elements
79
80
  stmt = postgresql.insert(table).values(values)
80
81
  if on_conflict == "restrict":
81
82
  return stmt
82
83
 
83
84
  if on_conflict == "do-nothing":
84
- return stmt.on_conflict_do_nothing(index_elements=list(index_elements))
85
+ return stmt.on_conflict_do_nothing(index_elements=_index)
86
+
87
+ if _index is None:
88
+ _index = table.primary_key.columns.keys()
89
+ _index = list(_index)
85
90
 
86
91
  update_values = {
87
92
  column.name: getattr(stmt.excluded, column.name)
88
93
  for column in table.columns
89
- if column.name in values and column.name not in index_elements
94
+ if column.name not in _index
90
95
  }
91
96
 
97
+ if len(update_values) == 0:
98
+ return stmt
99
+
92
100
  return stmt.on_conflict_do_update(
93
- index_elements=list(index_elements),
101
+ index_elements=_index,
94
102
  set_=update_values,
95
103
  )
96
104
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "macrostrat.database"
3
- version = "4.0.1"
3
+ version = "4.0.2"
4
4
  description = "A SQLAlchemy-based database toolkit."
5
5
  authors = [{ name = "Daven Quinn", email = "dev@davenquinn.com" }]
6
6
  requires-python = ">=3.10,<4"