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.
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/CHANGES.rst +14 -1
- {sqlalchemy_continuum-1.6.0/SQLAlchemy_Continuum.egg-info → sqlalchemy_continuum-1.7.0}/PKG-INFO +18 -31
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/README.rst +10 -9
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0/SQLAlchemy_Continuum.egg-info}/PKG-INFO +18 -31
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/SQLAlchemy_Continuum.egg-info/SOURCES.txt +16 -18
- sqlalchemy_continuum-1.7.0/SQLAlchemy_Continuum.egg-info/requires.txt +10 -0
- sqlalchemy_continuum-1.6.0/docs/alembic.rst → sqlalchemy_continuum-1.7.0/docs/alembic.md +2 -4
- sqlalchemy_continuum-1.7.0/docs/api.md +27 -0
- sqlalchemy_continuum-1.7.0/docs/changelog.md +583 -0
- sqlalchemy_continuum-1.6.0/docs/configuration.rst → sqlalchemy_continuum-1.7.0/docs/configuration.md +72 -108
- sqlalchemy_continuum-1.7.0/docs/index.md +27 -0
- sqlalchemy_continuum-1.7.0/docs/intro.md +92 -0
- sqlalchemy_continuum-1.7.0/docs/license.md +30 -0
- sqlalchemy_continuum-1.6.0/docs/native_versioning.rst → sqlalchemy_continuum-1.7.0/docs/native_versioning.md +14 -19
- sqlalchemy_continuum-1.7.0/docs/plugins.md +61 -0
- sqlalchemy_continuum-1.7.0/docs/queries.md +238 -0
- sqlalchemy_continuum-1.7.0/docs/revert.md +91 -0
- sqlalchemy_continuum-1.6.0/docs/schema.rst → sqlalchemy_continuum-1.7.0/docs/schema.md +10 -20
- sqlalchemy_continuum-1.6.0/docs/transactions.rst → sqlalchemy_continuum-1.7.0/docs/transactions.md +29 -45
- sqlalchemy_continuum-1.7.0/docs/utilities.md +49 -0
- sqlalchemy_continuum-1.7.0/docs/version_objects.md +203 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/pyproject.toml +50 -31
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/__init__.py +1 -1
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/_compat.py +8 -15
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/dialects/postgresql.py +5 -9
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/fetcher.py +6 -6
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/manager.py +2 -2
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/model_builder.py +3 -5
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/operation.py +4 -8
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/plugins/activity.py +95 -125
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/plugins/base.py +2 -4
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/plugins/flask.py +15 -15
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/plugins/transaction_changes.py +5 -20
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/plugins/transaction_meta.py +27 -27
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/relationship_builder.py +8 -10
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/table_builder.py +1 -1
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/transaction.py +8 -34
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/unit_of_work.py +6 -6
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/utils.py +48 -61
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/version.py +29 -27
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/__init__.py +1 -1
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_compatibility.py +3 -1
- sqlalchemy_continuum-1.7.0/tests/test_user_guide_examples.py +236 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_validity_strategy.py +0 -1
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/utils/test_changeset.py +1 -1
- sqlalchemy_continuum-1.6.0/SQLAlchemy_Continuum.egg-info/requires.txt +0 -28
- sqlalchemy_continuum-1.6.0/docs/Makefile +0 -177
- sqlalchemy_continuum-1.6.0/docs/api.rst +0 -50
- sqlalchemy_continuum-1.6.0/docs/conf.py +0 -275
- sqlalchemy_continuum-1.6.0/docs/index.rst +0 -22
- sqlalchemy_continuum-1.6.0/docs/intro.rst +0 -115
- sqlalchemy_continuum-1.6.0/docs/license.rst +0 -4
- sqlalchemy_continuum-1.6.0/docs/make.bat +0 -242
- sqlalchemy_continuum-1.6.0/docs/plugins.rst +0 -52
- sqlalchemy_continuum-1.6.0/docs/queries.rst +0 -254
- sqlalchemy_continuum-1.6.0/docs/revert.rst +0 -112
- sqlalchemy_continuum-1.6.0/docs/utilities.rst +0 -77
- sqlalchemy_continuum-1.6.0/docs/version_objects.rst +0 -232
- sqlalchemy_continuum-1.6.0/tests/.DS_Store +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/LICENSE +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/MANIFEST.in +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/SQLAlchemy_Continuum.egg-info/dependency_links.txt +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/SQLAlchemy_Continuum.egg-info/top_level.txt +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/setup.cfg +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/builder.py +1 -1
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/dialects/__init__.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/exc.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/expression_reflector.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/factory.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/plugins/__init__.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/plugins/null_delete.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/plugins/property_mod_tracker.py +1 -1
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/reverter.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/sqlalchemy_continuum/schema.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/builders/__init__.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/builders/test_model_builder.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/builders/test_relationship_builder.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/builders/test_table_builder.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/dialects/__init__.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/dialects/test_triggers.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/inheritance/__init__.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/inheritance/test_common_base_class.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/inheritance/test_concrete_inheritance.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/inheritance/test_join_table_inheritance.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/inheritance/test_multi_level_inheritance.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/inheritance/test_single_table_inheritance.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/plugins/__init__.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/plugins/test_activity.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/plugins/test_flask.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/plugins/test_null_delete.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/plugins/test_plugin_collection.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/plugins/test_property_mod_tracker.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/plugins/test_transaction_changes.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/plugins/test_transaction_meta.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/relationships/__init__.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/relationships/test_association_table_relations.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/relationships/test_custom_condition_relations.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/relationships/test_dynamic_relationships.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/relationships/test_many_to_many_relations.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/relationships/test_non_versioned_classes.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/relationships/test_one_to_many_relations.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/relationships/test_one_to_one_relations.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/revert/__init__.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/revert/test_deep_relationships.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/revert/test_many_to_many_relationships.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/revert/test_one_to_one_relationship.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/revert/test_one_to_one_with_secondary_table.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/schema/__init__.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/schema/test_update_end_transaction_id.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/schema/test_update_property_mod_flags.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_accessors.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_changeset.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_column_aliases.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_column_inclusion_and_exclusion.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_composite_primary_key.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_configuration.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_custom_schema.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_custom_version_base_class.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_delete.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_efficient_queries.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_exotic_listener_chaining.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_exotic_operation_combos.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_insert.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_mapper_args.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_raw_sql.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_revert.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_savepoints.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_sessions.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_transaction.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_update.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_vacuum.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_validity_strategy_multithreaded.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/test_versions.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/utils/__init__.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/utils/test_count_versions.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/utils/test_is_modified.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/utils/test_parent_class.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/utils/test_transaction_class.py +0 -0
- {sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/tests/utils/test_tx_column_name.py +0 -0
- {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
|
-
-
|
|
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
|
^^^^^^^^^^^^^^^^^^
|
{sqlalchemy_continuum-1.6.0/SQLAlchemy_Continuum.egg-info → sqlalchemy_continuum-1.7.0}/PKG-INFO
RENAMED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: SQLAlchemy-Continuum
|
|
3
|
-
Version: 1.
|
|
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/
|
|
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.
|
|
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
|
|
28
|
+
Requires-Dist: Flask>=2.0; extra == "flask"
|
|
36
29
|
Provides-Extra: flask-login
|
|
37
|
-
Requires-Dist: Flask-Login>=0.
|
|
30
|
+
Requires-Dist: Flask-Login>=0.6; extra == "flask-login"
|
|
38
31
|
Provides-Extra: flask-sqlalchemy
|
|
39
|
-
Requires-Dist: 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
|
|
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 =
|
|
133
|
+
session = Session(engine)
|
|
147
134
|
|
|
148
|
-
article = Article(name=
|
|
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 =
|
|
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.
|
|
162
|
-
- `Issue Tracker <
|
|
163
|
-
- `Code <
|
|
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/
|
|
170
|
-
:target: https://github.com/
|
|
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
|
|
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 =
|
|
99
|
+
session = Session(engine)
|
|
99
100
|
|
|
100
|
-
article = Article(name=
|
|
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 =
|
|
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.
|
|
114
|
-
- `Issue Tracker <
|
|
115
|
-
- `Code <
|
|
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/
|
|
122
|
-
:target: https://github.com/
|
|
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
|
{sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0/SQLAlchemy_Continuum.egg-info}/PKG-INFO
RENAMED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: SQLAlchemy-Continuum
|
|
3
|
-
Version: 1.
|
|
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/
|
|
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.
|
|
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
|
|
28
|
+
Requires-Dist: Flask>=2.0; extra == "flask"
|
|
36
29
|
Provides-Extra: flask-login
|
|
37
|
-
Requires-Dist: Flask-Login>=0.
|
|
30
|
+
Requires-Dist: Flask-Login>=0.6; extra == "flask-login"
|
|
38
31
|
Provides-Extra: flask-sqlalchemy
|
|
39
|
-
Requires-Dist: 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
|
|
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 =
|
|
133
|
+
session = Session(engine)
|
|
147
134
|
|
|
148
|
-
article = Article(name=
|
|
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 =
|
|
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.
|
|
162
|
-
- `Issue Tracker <
|
|
163
|
-
- `Code <
|
|
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/
|
|
170
|
-
:target: https://github.com/
|
|
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
|
{sqlalchemy_continuum-1.6.0 → sqlalchemy_continuum-1.7.0}/SQLAlchemy_Continuum.egg-info/SOURCES.txt
RENAMED
|
@@ -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/
|
|
12
|
-
docs/
|
|
13
|
-
docs/
|
|
14
|
-
docs/
|
|
15
|
-
docs/
|
|
16
|
-
docs/
|
|
17
|
-
docs/
|
|
18
|
-
docs/
|
|
19
|
-
docs/
|
|
20
|
-
docs/
|
|
21
|
-
docs/
|
|
22
|
-
docs/
|
|
23
|
-
docs/
|
|
24
|
-
docs/
|
|
25
|
-
docs/
|
|
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
|
|
@@ -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.
|