SQLAlchemy-Continuum 1.6.0__tar.gz → 1.7.0__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 (140) hide show
  1. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/CHANGES.rst +14 -1
  2. {sqlalchemy_continuum-1.6.0/SQLAlchemy_Continuum.egg-info → sqlalchemy_continuum-1.7.0}/PKG-INFO +18 -31
  3. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/README.rst +10 -9
  4. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0/SQLAlchemy_Continuum.egg-info}/PKG-INFO +18 -31
  5. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/SQLAlchemy_Continuum.egg-info/SOURCES.txt +16 -18
  6. sqlalchemy_continuum-1.7.0/SQLAlchemy_Continuum.egg-info/requires.txt +10 -0
  7. sqlalchemy_continuum-1.6.0/docs/alembic.rst → sqlalchemy_continuum-1.7.0/docs/alembic.md +2 -4
  8. sqlalchemy_continuum-1.7.0/docs/api.md +27 -0
  9. sqlalchemy_continuum-1.7.0/docs/changelog.md +583 -0
  10. sqlalchemy_continuum-1.6.0/docs/configuration.rst → sqlalchemy_continuum-1.7.0/docs/configuration.md +72 -108
  11. sqlalchemy_continuum-1.7.0/docs/index.md +27 -0
  12. sqlalchemy_continuum-1.7.0/docs/intro.md +92 -0
  13. sqlalchemy_continuum-1.7.0/docs/license.md +30 -0
  14. sqlalchemy_continuum-1.6.0/docs/native_versioning.rst → sqlalchemy_continuum-1.7.0/docs/native_versioning.md +14 -19
  15. sqlalchemy_continuum-1.7.0/docs/plugins.md +61 -0
  16. sqlalchemy_continuum-1.7.0/docs/queries.md +238 -0
  17. sqlalchemy_continuum-1.7.0/docs/revert.md +91 -0
  18. sqlalchemy_continuum-1.6.0/docs/schema.rst → sqlalchemy_continuum-1.7.0/docs/schema.md +10 -20
  19. sqlalchemy_continuum-1.6.0/docs/transactions.rst → sqlalchemy_continuum-1.7.0/docs/transactions.md +29 -45
  20. sqlalchemy_continuum-1.7.0/docs/utilities.md +49 -0
  21. sqlalchemy_continuum-1.7.0/docs/version_objects.md +203 -0
  22. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/pyproject.toml +50 -31
  23. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/__init__.py +1 -1
  24. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/_compat.py +8 -15
  25. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/dialects/postgresql.py +5 -9
  26. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/fetcher.py +6 -6
  27. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/manager.py +2 -2
  28. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/model_builder.py +3 -5
  29. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/operation.py +4 -8
  30. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/plugins/activity.py +95 -125
  31. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/plugins/base.py +2 -4
  32. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/plugins/flask.py +15 -15
  33. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/plugins/transaction_changes.py +5 -20
  34. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/plugins/transaction_meta.py +27 -27
  35. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/relationship_builder.py +8 -10
  36. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/table_builder.py +1 -1
  37. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/transaction.py +8 -34
  38. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/unit_of_work.py +6 -6
  39. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/utils.py +48 -61
  40. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/version.py +29 -27
  41. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/__init__.py +1 -1
  42. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_compatibility.py +3 -1
  43. sqlalchemy_continuum-1.7.0/tests/test_user_guide_examples.py +236 -0
  44. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_validity_strategy.py +0 -1
  45. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/utils/test_changeset.py +1 -1
  46. sqlalchemy_continuum-1.6.0/SQLAlchemy_Continuum.egg-info/requires.txt +0 -28
  47. sqlalchemy_continuum-1.6.0/docs/Makefile +0 -177
  48. sqlalchemy_continuum-1.6.0/docs/api.rst +0 -50
  49. sqlalchemy_continuum-1.6.0/docs/conf.py +0 -275
  50. sqlalchemy_continuum-1.6.0/docs/index.rst +0 -22
  51. sqlalchemy_continuum-1.6.0/docs/intro.rst +0 -115
  52. sqlalchemy_continuum-1.6.0/docs/license.rst +0 -4
  53. sqlalchemy_continuum-1.6.0/docs/make.bat +0 -242
  54. sqlalchemy_continuum-1.6.0/docs/plugins.rst +0 -52
  55. sqlalchemy_continuum-1.6.0/docs/queries.rst +0 -254
  56. sqlalchemy_continuum-1.6.0/docs/revert.rst +0 -112
  57. sqlalchemy_continuum-1.6.0/docs/utilities.rst +0 -77
  58. sqlalchemy_continuum-1.6.0/docs/version_objects.rst +0 -232
  59. sqlalchemy_continuum-1.6.0/tests/.DS_Store +0 -0
  60. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/LICENSE +0 -0
  61. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/MANIFEST.in +0 -0
  62. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/SQLAlchemy_Continuum.egg-info/dependency_links.txt +0 -0
  63. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/SQLAlchemy_Continuum.egg-info/top_level.txt +0 -0
  64. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/setup.cfg +0 -0
  65. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/builder.py +1 -1
  66. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/dialects/__init__.py +0 -0
  67. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/exc.py +0 -0
  68. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/expression_reflector.py +0 -0
  69. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/factory.py +0 -0
  70. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/plugins/__init__.py +0 -0
  71. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/plugins/null_delete.py +0 -0
  72. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/plugins/property_mod_tracker.py +1 -1
  73. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/reverter.py +0 -0
  74. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/schema.py +0 -0
  75. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/builders/__init__.py +0 -0
  76. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/builders/test_model_builder.py +0 -0
  77. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/builders/test_relationship_builder.py +0 -0
  78. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/builders/test_table_builder.py +0 -0
  79. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/dialects/__init__.py +0 -0
  80. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/dialects/test_triggers.py +0 -0
  81. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/inheritance/__init__.py +0 -0
  82. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/inheritance/test_common_base_class.py +0 -0
  83. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/inheritance/test_concrete_inheritance.py +0 -0
  84. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/inheritance/test_join_table_inheritance.py +0 -0
  85. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/inheritance/test_multi_level_inheritance.py +0 -0
  86. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/inheritance/test_single_table_inheritance.py +0 -0
  87. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/plugins/__init__.py +0 -0
  88. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/plugins/test_activity.py +0 -0
  89. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/plugins/test_flask.py +0 -0
  90. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/plugins/test_null_delete.py +0 -0
  91. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/plugins/test_plugin_collection.py +0 -0
  92. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/plugins/test_property_mod_tracker.py +0 -0
  93. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/plugins/test_transaction_changes.py +0 -0
  94. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/plugins/test_transaction_meta.py +0 -0
  95. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/relationships/__init__.py +0 -0
  96. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/relationships/test_association_table_relations.py +0 -0
  97. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/relationships/test_custom_condition_relations.py +0 -0
  98. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/relationships/test_dynamic_relationships.py +0 -0
  99. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/relationships/test_many_to_many_relations.py +0 -0
  100. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/relationships/test_non_versioned_classes.py +0 -0
  101. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/relationships/test_one_to_many_relations.py +0 -0
  102. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/relationships/test_one_to_one_relations.py +0 -0
  103. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/revert/__init__.py +0 -0
  104. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/revert/test_deep_relationships.py +0 -0
  105. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/revert/test_many_to_many_relationships.py +0 -0
  106. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/revert/test_one_to_one_relationship.py +0 -0
  107. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/revert/test_one_to_one_with_secondary_table.py +0 -0
  108. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/schema/__init__.py +0 -0
  109. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/schema/test_update_end_transaction_id.py +0 -0
  110. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/schema/test_update_property_mod_flags.py +0 -0
  111. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_accessors.py +0 -0
  112. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_changeset.py +0 -0
  113. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_column_aliases.py +0 -0
  114. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_column_inclusion_and_exclusion.py +0 -0
  115. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_composite_primary_key.py +0 -0
  116. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_configuration.py +0 -0
  117. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_custom_schema.py +0 -0
  118. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_custom_version_base_class.py +0 -0
  119. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_delete.py +0 -0
  120. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_efficient_queries.py +0 -0
  121. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_exotic_listener_chaining.py +0 -0
  122. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_exotic_operation_combos.py +0 -0
  123. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_insert.py +0 -0
  124. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_mapper_args.py +0 -0
  125. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_raw_sql.py +0 -0
  126. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_revert.py +0 -0
  127. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_savepoints.py +0 -0
  128. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_sessions.py +0 -0
  129. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_transaction.py +0 -0
  130. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_update.py +0 -0
  131. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_vacuum.py +0 -0
  132. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_validity_strategy_multithreaded.py +0 -0
  133. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_versions.py +0 -0
  134. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/utils/__init__.py +0 -0
  135. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/utils/test_count_versions.py +0 -0
  136. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/utils/test_is_modified.py +0 -0
  137. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/utils/test_parent_class.py +0 -0
  138. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/utils/test_transaction_class.py +0 -0
  139. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/utils/test_tx_column_name.py +0 -0
  140. {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/utils/test_version_class.py +0 -0
@@ -5,7 +5,20 @@ Here you can see the full list of changes between each SQLAlchemy-Continuum rele
5
5
 
6
6
  Unreleased changes
7
7
  ^^^^^^^^^^^^^^^^^^
8
- - None currently
8
+ - TODO
9
+
10
+ 1.7.0 (2026-07-02)
11
+ ^^^^^^^^^^^^^^^^^^
12
+ - Drop Python 3.9 support (EOL October 2025); the minimum supported Python is now 3.10
13
+ - Modernize codebase to Python 3.10+ syntax (PEP 604 unions, built-in generics, plain dicts instead of ``OrderedDict``)
14
+ - Migrate documentation from Sphinx/reStructuredText to `Zensical <https://zensical.org>`_ (Markdown + mkdocstrings)
15
+ - Fix broken user guide examples (``session.commit(article)``, ``sync_trigger(conn, ...)``, ``Transaction.query``, ``create_session`` removed in SQLAlchemy 2.0) and add ``tests/test_user_guide_examples.py`` to keep documented examples working
16
+ - Remove a leftover ``breakpoint()`` call in ``TransactionChangesPlugin``
17
+ - Fix latent ``AttributeError`` in ``VersioningManager.append_association_operation``
18
+ - Expand ruff lint rules (E/W/F/I/B/C4/UP) and drop the separate pyupgrade pre-commit hook
19
+ - Move test/dev/docs dependencies to PEP 735 ``[dependency-groups]``; package extras are now user-facing only (``flask``, ``flask-login``, ``flask-sqlalchemy``)
20
+ - Publish to PyPI via GitHub Actions trusted publishing on GitHub releases
21
+ - Add Dependabot (GitHub Actions, uv lockfile, pre-commit hooks), issue/PR templates, CONTRIBUTING.md and SECURITY.md
9
22
 
10
23
  1.6.0 (2026-01-22)
11
24
  ^^^^^^^^^^^^^^^^^^
@@ -1,17 +1,18 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SQLAlchemy-Continuum
3
- Version: 1.6.0
3
+ Version: 1.7.0
4
4
  Summary: Versioning and auditing extension for SQLAlchemy.
5
5
  Author: Mark Steward, Jose Soto
6
6
  Author-email: Konsta Vesterinen <konsta@fastmonkeys.com>
7
7
  License-Expression: BSD-3-Clause
8
- Project-URL: Homepage, https://github.com/kvesteri/sqlalchemy-continuum
8
+ Project-URL: Homepage, https://github.com/sqlalchemy-continuum/sqlalchemy-continuum
9
+ Project-URL: Documentation, https://sqlalchemy-continuum.github.io/
10
+ Project-URL: Changelog, https://github.com/sqlalchemy-continuum/sqlalchemy-continuum/blob/main/CHANGES.rst
9
11
  Classifier: Environment :: Web Environment
10
12
  Classifier: Intended Audience :: Developers
11
13
  Classifier: Operating System :: OS Independent
12
14
  Classifier: Programming Language :: Python
13
15
  Classifier: Programming Language :: Python :: 3
14
- Classifier: Programming Language :: Python :: 3.9
15
16
  Classifier: Programming Language :: Python :: 3.10
16
17
  Classifier: Programming Language :: Python :: 3.11
17
18
  Classifier: Programming Language :: Python :: 3.12
@@ -19,31 +20,16 @@ Classifier: Programming Language :: Python :: 3.13
19
20
  Classifier: Programming Language :: Python :: 3.14
20
21
  Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
21
22
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
- Requires-Python: >=3.9
23
+ Requires-Python: >=3.10
23
24
  Description-Content-Type: text/x-rst
24
25
  License-File: LICENSE
25
26
  Requires-Dist: SQLAlchemy<2.1,>=1.4.53
26
- Provides-Extra: test
27
- Requires-Dist: pytest>=2.3.5; extra == "test"
28
- Requires-Dist: psycopg2>=2.4.6; extra == "test"
29
- Requires-Dist: PyMySQL>=0.8.0; extra == "test"
30
- Requires-Dist: Flask>=0.9; extra == "test"
31
- Requires-Dist: Flask-Login>=0.2.9; extra == "test"
32
- Requires-Dist: Flask-SQLAlchemy>=1.0; extra == "test"
33
- Requires-Dist: packaging; extra == "test"
34
27
  Provides-Extra: flask
35
- Requires-Dist: Flask>=0.9; extra == "flask"
28
+ Requires-Dist: Flask>=2.0; extra == "flask"
36
29
  Provides-Extra: flask-login
37
- Requires-Dist: Flask-Login>=0.2.9; extra == "flask-login"
30
+ Requires-Dist: Flask-Login>=0.6; extra == "flask-login"
38
31
  Provides-Extra: flask-sqlalchemy
39
- Requires-Dist: Flask-SQLAlchemy>=1.0; extra == "flask-sqlalchemy"
40
- Provides-Extra: dev
41
- Requires-Dist: ruff>=0.1.0; extra == "dev"
42
- Requires-Dist: tox>=4.0.0; extra == "dev"
43
- Requires-Dist: pre-commit>=3.0.0; extra == "dev"
44
- Provides-Extra: docs
45
- Requires-Dist: sphinx>=4.0.0; extra == "docs"
46
- Requires-Dist: furo>=2021.11.0; extra == "docs"
32
+ Requires-Dist: Flask-SQLAlchemy>=3.0; extra == "flask-sqlalchemy"
47
33
  Dynamic: license-file
48
34
 
49
35
  SQLAlchemy-Continuum
@@ -86,6 +72,7 @@ In order to make your models versioned you need two things:
86
72
  .. code-block:: python
87
73
 
88
74
 
75
+ import sqlalchemy as sa
89
76
  from sqlalchemy_continuum import make_versioned
90
77
 
91
78
 
@@ -128,7 +115,7 @@ For completeness, below is a working example.
128
115
 
129
116
  from sqlalchemy_continuum import make_versioned
130
117
  from sqlalchemy import Column, Integer, Unicode, UnicodeText, create_engine
131
- from sqlalchemy.orm import create_session, configure_mappers, declarative_base
118
+ from sqlalchemy.orm import Session, configure_mappers, declarative_base
132
119
 
133
120
  make_versioned(user_cls=None)
134
121
 
@@ -143,13 +130,13 @@ For completeness, below is a working example.
143
130
  configure_mappers()
144
131
  engine = create_engine('sqlite://')
145
132
  Base.metadata.create_all(engine)
146
- session = create_session(bind=engine, autocommit=False)
133
+ session = Session(engine)
147
134
 
148
- article = Article(name=u'Some article', content=u'Some content')
135
+ article = Article(name='Some article', content='Some content')
149
136
  session.add(article)
150
137
  session.commit()
151
138
  article.versions[0].name
152
- article.name = u'Updated name'
139
+ article.name = 'Updated name'
153
140
  session.commit()
154
141
  article.versions[1].name
155
142
  article.versions[0].revert()
@@ -158,16 +145,16 @@ For completeness, below is a working example.
158
145
  Resources
159
146
  ---------
160
147
 
161
- - `Documentation <https://sqlalchemy-continuum.readthedocs.io/>`_
162
- - `Issue Tracker <http://github.com/kvesteri/sqlalchemy-continuum/issues>`_
163
- - `Code <http://github.com/kvesteri/sqlalchemy-continuum/>`_
148
+ - `Documentation <https://sqlalchemy-continuum.github.io/>`_
149
+ - `Issue Tracker <https://github.com/sqlalchemy-continuum/sqlalchemy-continuum/issues>`_
150
+ - `Code <https://github.com/sqlalchemy-continuum/sqlalchemy-continuum>`_
164
151
 
165
152
 
166
153
  .. image:: http://i.imgur.com/UFaRx.gif
167
154
 
168
155
 
169
- .. |Build Status| image:: https://github.com/kvesteri/sqlalchemy-continuum/workflows/Test/badge.svg
170
- :target: https://github.com/kvesteri/sqlalchemy-continuum/actions?query=workflow%3ATest
156
+ .. |Build Status| image:: https://github.com/sqlalchemy-continuum/sqlalchemy-continuum/workflows/Test/badge.svg
157
+ :target: https://github.com/sqlalchemy-continuum/sqlalchemy-continuum/actions?query=workflow%3ATest
171
158
  .. |Version Status| image:: https://img.shields.io/pypi/v/SQLAlchemy-Continuum.png
172
159
  :target: https://pypi.python.org/pypi/SQLAlchemy-Continuum/
173
160
  .. |Downloads| image:: https://img.shields.io/pypi/dm/SQLAlchemy-Continuum.png
@@ -38,6 +38,7 @@ In order to make your models versioned you need two things:
38
38
  .. code-block:: python
39
39
 
40
40
 
41
+ import sqlalchemy as sa
41
42
  from sqlalchemy_continuum import make_versioned
42
43
 
43
44
 
@@ -80,7 +81,7 @@ For completeness, below is a working example.
80
81
 
81
82
  from sqlalchemy_continuum import make_versioned
82
83
  from sqlalchemy import Column, Integer, Unicode, UnicodeText, create_engine
83
- from sqlalchemy.orm import create_session, configure_mappers, declarative_base
84
+ from sqlalchemy.orm import Session, configure_mappers, declarative_base
84
85
 
85
86
  make_versioned(user_cls=None)
86
87
 
@@ -95,13 +96,13 @@ For completeness, below is a working example.
95
96
  configure_mappers()
96
97
  engine = create_engine('sqlite://')
97
98
  Base.metadata.create_all(engine)
98
- session = create_session(bind=engine, autocommit=False)
99
+ session = Session(engine)
99
100
 
100
- article = Article(name=u'Some article', content=u'Some content')
101
+ article = Article(name='Some article', content='Some content')
101
102
  session.add(article)
102
103
  session.commit()
103
104
  article.versions[0].name
104
- article.name = u'Updated name'
105
+ article.name = 'Updated name'
105
106
  session.commit()
106
107
  article.versions[1].name
107
108
  article.versions[0].revert()
@@ -110,16 +111,16 @@ For completeness, below is a working example.
110
111
  Resources
111
112
  ---------
112
113
 
113
- - `Documentation <https://sqlalchemy-continuum.readthedocs.io/>`_
114
- - `Issue Tracker <http://github.com/kvesteri/sqlalchemy-continuum/issues>`_
115
- - `Code <http://github.com/kvesteri/sqlalchemy-continuum/>`_
114
+ - `Documentation <https://sqlalchemy-continuum.github.io/>`_
115
+ - `Issue Tracker <https://github.com/sqlalchemy-continuum/sqlalchemy-continuum/issues>`_
116
+ - `Code <https://github.com/sqlalchemy-continuum/sqlalchemy-continuum>`_
116
117
 
117
118
 
118
119
  .. image:: http://i.imgur.com/UFaRx.gif
119
120
 
120
121
 
121
- .. |Build Status| image:: https://github.com/kvesteri/sqlalchemy-continuum/workflows/Test/badge.svg
122
- :target: https://github.com/kvesteri/sqlalchemy-continuum/actions?query=workflow%3ATest
122
+ .. |Build Status| image:: https://github.com/sqlalchemy-continuum/sqlalchemy-continuum/workflows/Test/badge.svg
123
+ :target: https://github.com/sqlalchemy-continuum/sqlalchemy-continuum/actions?query=workflow%3ATest
123
124
  .. |Version Status| image:: https://img.shields.io/pypi/v/SQLAlchemy-Continuum.png
124
125
  :target: https://pypi.python.org/pypi/SQLAlchemy-Continuum/
125
126
  .. |Downloads| image:: https://img.shields.io/pypi/dm/SQLAlchemy-Continuum.png
@@ -1,17 +1,18 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SQLAlchemy-Continuum
3
- Version: 1.6.0
3
+ Version: 1.7.0
4
4
  Summary: Versioning and auditing extension for SQLAlchemy.
5
5
  Author: Mark Steward, Jose Soto
6
6
  Author-email: Konsta Vesterinen <konsta@fastmonkeys.com>
7
7
  License-Expression: BSD-3-Clause
8
- Project-URL: Homepage, https://github.com/kvesteri/sqlalchemy-continuum
8
+ Project-URL: Homepage, https://github.com/sqlalchemy-continuum/sqlalchemy-continuum
9
+ Project-URL: Documentation, https://sqlalchemy-continuum.github.io/
10
+ Project-URL: Changelog, https://github.com/sqlalchemy-continuum/sqlalchemy-continuum/blob/main/CHANGES.rst
9
11
  Classifier: Environment :: Web Environment
10
12
  Classifier: Intended Audience :: Developers
11
13
  Classifier: Operating System :: OS Independent
12
14
  Classifier: Programming Language :: Python
13
15
  Classifier: Programming Language :: Python :: 3
14
- Classifier: Programming Language :: Python :: 3.9
15
16
  Classifier: Programming Language :: Python :: 3.10
16
17
  Classifier: Programming Language :: Python :: 3.11
17
18
  Classifier: Programming Language :: Python :: 3.12
@@ -19,31 +20,16 @@ Classifier: Programming Language :: Python :: 3.13
19
20
  Classifier: Programming Language :: Python :: 3.14
20
21
  Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
21
22
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
- Requires-Python: >=3.9
23
+ Requires-Python: >=3.10
23
24
  Description-Content-Type: text/x-rst
24
25
  License-File: LICENSE
25
26
  Requires-Dist: SQLAlchemy<2.1,>=1.4.53
26
- Provides-Extra: test
27
- Requires-Dist: pytest>=2.3.5; extra == "test"
28
- Requires-Dist: psycopg2>=2.4.6; extra == "test"
29
- Requires-Dist: PyMySQL>=0.8.0; extra == "test"
30
- Requires-Dist: Flask>=0.9; extra == "test"
31
- Requires-Dist: Flask-Login>=0.2.9; extra == "test"
32
- Requires-Dist: Flask-SQLAlchemy>=1.0; extra == "test"
33
- Requires-Dist: packaging; extra == "test"
34
27
  Provides-Extra: flask
35
- Requires-Dist: Flask>=0.9; extra == "flask"
28
+ Requires-Dist: Flask>=2.0; extra == "flask"
36
29
  Provides-Extra: flask-login
37
- Requires-Dist: Flask-Login>=0.2.9; extra == "flask-login"
30
+ Requires-Dist: Flask-Login>=0.6; extra == "flask-login"
38
31
  Provides-Extra: flask-sqlalchemy
39
- Requires-Dist: Flask-SQLAlchemy>=1.0; extra == "flask-sqlalchemy"
40
- Provides-Extra: dev
41
- Requires-Dist: ruff>=0.1.0; extra == "dev"
42
- Requires-Dist: tox>=4.0.0; extra == "dev"
43
- Requires-Dist: pre-commit>=3.0.0; extra == "dev"
44
- Provides-Extra: docs
45
- Requires-Dist: sphinx>=4.0.0; extra == "docs"
46
- Requires-Dist: furo>=2021.11.0; extra == "docs"
32
+ Requires-Dist: Flask-SQLAlchemy>=3.0; extra == "flask-sqlalchemy"
47
33
  Dynamic: license-file
48
34
 
49
35
  SQLAlchemy-Continuum
@@ -86,6 +72,7 @@ In order to make your models versioned you need two things:
86
72
  .. code-block:: python
87
73
 
88
74
 
75
+ import sqlalchemy as sa
89
76
  from sqlalchemy_continuum import make_versioned
90
77
 
91
78
 
@@ -128,7 +115,7 @@ For completeness, below is a working example.
128
115
 
129
116
  from sqlalchemy_continuum import make_versioned
130
117
  from sqlalchemy import Column, Integer, Unicode, UnicodeText, create_engine
131
- from sqlalchemy.orm import create_session, configure_mappers, declarative_base
118
+ from sqlalchemy.orm import Session, configure_mappers, declarative_base
132
119
 
133
120
  make_versioned(user_cls=None)
134
121
 
@@ -143,13 +130,13 @@ For completeness, below is a working example.
143
130
  configure_mappers()
144
131
  engine = create_engine('sqlite://')
145
132
  Base.metadata.create_all(engine)
146
- session = create_session(bind=engine, autocommit=False)
133
+ session = Session(engine)
147
134
 
148
- article = Article(name=u'Some article', content=u'Some content')
135
+ article = Article(name='Some article', content='Some content')
149
136
  session.add(article)
150
137
  session.commit()
151
138
  article.versions[0].name
152
- article.name = u'Updated name'
139
+ article.name = 'Updated name'
153
140
  session.commit()
154
141
  article.versions[1].name
155
142
  article.versions[0].revert()
@@ -158,16 +145,16 @@ For completeness, below is a working example.
158
145
  Resources
159
146
  ---------
160
147
 
161
- - `Documentation <https://sqlalchemy-continuum.readthedocs.io/>`_
162
- - `Issue Tracker <http://github.com/kvesteri/sqlalchemy-continuum/issues>`_
163
- - `Code <http://github.com/kvesteri/sqlalchemy-continuum/>`_
148
+ - `Documentation <https://sqlalchemy-continuum.github.io/>`_
149
+ - `Issue Tracker <https://github.com/sqlalchemy-continuum/sqlalchemy-continuum/issues>`_
150
+ - `Code <https://github.com/sqlalchemy-continuum/sqlalchemy-continuum>`_
164
151
 
165
152
 
166
153
  .. image:: http://i.imgur.com/UFaRx.gif
167
154
 
168
155
 
169
- .. |Build Status| image:: https://github.com/kvesteri/sqlalchemy-continuum/workflows/Test/badge.svg
170
- :target: https://github.com/kvesteri/sqlalchemy-continuum/actions?query=workflow%3ATest
156
+ .. |Build Status| image:: https://github.com/sqlalchemy-continuum/sqlalchemy-continuum/workflows/Test/badge.svg
157
+ :target: https://github.com/sqlalchemy-continuum/sqlalchemy-continuum/actions?query=workflow%3ATest
171
158
  .. |Version Status| image:: https://img.shields.io/pypi/v/SQLAlchemy-Continuum.png
172
159
  :target: https://pypi.python.org/pypi/SQLAlchemy-Continuum/
173
160
  .. |Downloads| image:: https://img.shields.io/pypi/dm/SQLAlchemy-Continuum.png
@@ -8,23 +8,21 @@ SQLAlchemy_Continuum.egg-info/SOURCES.txt
8
8
  SQLAlchemy_Continuum.egg-info/dependency_links.txt
9
9
  SQLAlchemy_Continuum.egg-info/requires.txt
10
10
  SQLAlchemy_Continuum.egg-info/top_level.txt
11
- docs/Makefile
12
- docs/alembic.rst
13
- docs/api.rst
14
- docs/conf.py
15
- docs/configuration.rst
16
- docs/index.rst
17
- docs/intro.rst
18
- docs/license.rst
19
- docs/make.bat
20
- docs/native_versioning.rst
21
- docs/plugins.rst
22
- docs/queries.rst
23
- docs/revert.rst
24
- docs/schema.rst
25
- docs/transactions.rst
26
- docs/utilities.rst
27
- docs/version_objects.rst
11
+ docs/alembic.md
12
+ docs/api.md
13
+ docs/changelog.md
14
+ docs/configuration.md
15
+ docs/index.md
16
+ docs/intro.md
17
+ docs/license.md
18
+ docs/native_versioning.md
19
+ docs/plugins.md
20
+ docs/queries.md
21
+ docs/revert.md
22
+ docs/schema.md
23
+ docs/transactions.md
24
+ docs/utilities.md
25
+ docs/version_objects.md
28
26
  sqlalchemy_continuum/__init__.py
29
27
  sqlalchemy_continuum/_compat.py
30
28
  sqlalchemy_continuum/builder.py
@@ -53,7 +51,6 @@ sqlalchemy_continuum/plugins/null_delete.py
53
51
  sqlalchemy_continuum/plugins/property_mod_tracker.py
54
52
  sqlalchemy_continuum/plugins/transaction_changes.py
55
53
  sqlalchemy_continuum/plugins/transaction_meta.py
56
- tests/.DS_Store
57
54
  tests/__init__.py
58
55
  tests/test_accessors.py
59
56
  tests/test_changeset.py
@@ -76,6 +73,7 @@ tests/test_savepoints.py
76
73
  tests/test_sessions.py
77
74
  tests/test_transaction.py
78
75
  tests/test_update.py
76
+ tests/test_user_guide_examples.py
79
77
  tests/test_vacuum.py
80
78
  tests/test_validity_strategy.py
81
79
  tests/test_validity_strategy_multithreaded.py
@@ -0,0 +1,10 @@
1
+ SQLAlchemy<2.1,>=1.4.53
2
+
3
+ [flask]
4
+ Flask>=2.0
5
+
6
+ [flask-login]
7
+ Flask-Login>=0.6
8
+
9
+ [flask-sqlalchemy]
10
+ Flask-SQLAlchemy>=3.0
@@ -1,11 +1,9 @@
1
- Alembic migrations
2
- ==================
1
+ # Alembic migrations
3
2
 
4
3
  Each time you make changes to database structure you should also change the associated history tables. When you make changes to your models SQLAlchemy-Continuum automatically alters the history model definitions, hence you can use `alembic revision --autogenerate` just like before. You just need to make sure `make_versioned` function gets called before alembic gathers all your models and `configure_mappers` is called afterwards.
5
4
 
6
5
  Pay close attention when dropping or moving data from parent tables and reflecting these changes to history tables.
7
6
 
8
- Troubleshooting
9
- ###############
7
+ ## Troubleshooting
10
8
 
11
9
  If alembic didn't detect any changes or generates reversed migration (tries to remove `*_version` tables from database instead of creating), make sure that `configure_mappers` was called by alembic command.
@@ -0,0 +1,27 @@
1
+ # API reference
2
+
3
+ ::: sqlalchemy_continuum.make_versioned
4
+
5
+ ## Versioning Manager
6
+
7
+ ::: sqlalchemy_continuum.manager.VersioningManager
8
+
9
+ ## Builders
10
+
11
+ ::: sqlalchemy_continuum.table_builder.TableBuilder
12
+
13
+ ::: sqlalchemy_continuum.model_builder.ModelBuilder
14
+
15
+ ::: sqlalchemy_continuum.relationship_builder.RelationshipBuilder
16
+
17
+ ## UnitOfWork
18
+
19
+ ::: sqlalchemy_continuum.unit_of_work.UnitOfWork
20
+
21
+ ## History class
22
+
23
+ ::: sqlalchemy_continuum.version.VersionClassBase
24
+
25
+ ## Changelog
26
+
27
+ See the [changelog](changelog.md) for a full list of changes in each release.