xdjango-postgres-extra 2.1.0__tar.gz → 2.1.1__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.
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/PKG-INFO +11 -7
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/README.md +3 -3
- xdjango_postgres_extra-2.1.1/psqlextra/_version.py +1 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/setup.py +7 -3
- xdjango_postgres_extra-2.1.1/tests/test_django_6_compatibility.py +33 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/xdjango_postgres_extra.egg-info/PKG-INFO +11 -7
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/xdjango_postgres_extra.egg-info/SOURCES.txt +1 -6
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/xdjango_postgres_extra.egg-info/requires.txt +3 -3
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/xdjango_postgres_extra.egg-info/top_level.txt +0 -1
- xdjango_postgres_extra-2.1.0/psqlextra/_version.py +0 -1
- xdjango_postgres_extra-2.1.0/tests/benchmarks/__init__.py +0 -0
- xdjango_postgres_extra-2.1.0/tests/benchmarks/test_insert_nothing.py +0 -51
- xdjango_postgres_extra-2.1.0/tests/benchmarks/test_upsert.py +0 -51
- xdjango_postgres_extra-2.1.0/tests/benchmarks/test_upsert_bulk.py +0 -68
- xdjango_postgres_extra-2.1.0/tests/psqlextra_test_backend/__init__.py +0 -0
- xdjango_postgres_extra-2.1.0/tests/psqlextra_test_backend/base.py +0 -23
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/LICENSE +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/__init__.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/apps.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/__init__.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/base.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/base_impl.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/introspection.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/__init__.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/__init__.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/add_default_partition.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/add_hash_partition.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/add_list_partition.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/add_range_partition.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/apply_state.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/create_materialized_view_model.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/create_partitioned_model.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/create_view_model.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/delete_default_partition.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/delete_hash_partition.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/delete_list_partition.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/delete_materialized_view_model.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/delete_partition.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/delete_partitioned_model.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/delete_range_partition.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/delete_view_model.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/operations/partition.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/patched_autodetector.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/patched_migrations.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/patched_project_state.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/state/__init__.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/state/materialized_view.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/state/model.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/state/partitioning.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/migrations/state/view.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/operations.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/schema.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/side_effects/__init__.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/side_effects/hstore_required.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/side_effects/hstore_unique.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/compiler.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/contrib/__init__.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/contrib/expressions.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/contrib/model_data_migrator.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/contrib/static_row.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/contrib/transaction.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/error.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/expressions.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/fields/__init__.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/fields/hstore_field.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/indexes/__init__.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/indexes/case_insensitive_unique_index.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/indexes/conditional_unique_index.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/indexes/unique_index.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/introspect/__init__.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/introspect/fields.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/introspect/models.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/locking.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/lookups.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/management/__init__.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/management/commands/__init__.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/management/commands/pgmakemigrations.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/management/commands/pgpartition.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/management/commands/pgrefreshmv.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/manager/__init__.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/manager/manager.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/models/__init__.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/models/base.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/models/options.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/models/partitioned.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/models/view.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/__init__.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/config.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/constants.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/current_time_strategy.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/error.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/manager.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/partition.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/plan.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/range_partition.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/range_strategy.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/shorthands.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/strategy.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/time_partition.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/time_partition_size.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/time_strategy.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/py.typed +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/query.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/schema.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/settings.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/sql.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/type_assertions.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/types.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/util.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/pyproject.toml +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/setup.cfg +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_append_caller_to_sql.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_case_insensitive_unique_index.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_conditional_unique_index.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_db_backend.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_hstore_autodetect.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_hstore_field.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_hstore_required.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_hstore_unique.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_insert.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_introspect.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_locking.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_lookups.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_make_migrations.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_management_command_partition.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_manager.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_manager_context.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_materialized_view_model.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_migration_operations.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_on_conflict.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_on_conflict_nothing.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_on_conflict_update.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_partitioned_model.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_partitioned_model_state.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_partitioning_manager.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_partitioning_time.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_query.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_query_values.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_schema.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_schema_editor_alter_schema.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_schema_editor_clone_model_to_schema.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_schema_editor_partitioning.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_schema_editor_storage_settings.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_schema_editor_vacuum.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_schema_editor_view.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_settings.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_unique_index.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_upsert.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_view_models.py +0 -0
- {xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/xdjango_postgres_extra.egg-info/dependency_links.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: xdjango-postgres-extra
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.1
|
|
4
4
|
Summary: Bringing all of PostgreSQL's awesomeness to Django.
|
|
5
5
|
Home-page: https://github.com/SectorLabs/django-postgres-extra
|
|
6
6
|
Author: Sector Labs
|
|
@@ -9,6 +9,7 @@ License: MIT License
|
|
|
9
9
|
Keywords: django,postgres,extra,hstore,upsert,partioning,materialized,view
|
|
10
10
|
Classifier: Environment :: Web Environment
|
|
11
11
|
Classifier: Framework :: Django
|
|
12
|
+
Classifier: Framework :: Django :: 6.0
|
|
12
13
|
Classifier: Intended Audience :: Developers
|
|
13
14
|
Classifier: License :: OSI Approved :: MIT License
|
|
14
15
|
Classifier: Operating System :: OS Independent
|
|
@@ -19,12 +20,15 @@ Classifier: Programming Language :: Python :: 3.8
|
|
|
19
20
|
Classifier: Programming Language :: Python :: 3.9
|
|
20
21
|
Classifier: Programming Language :: Python :: 3.10
|
|
21
22
|
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
22
26
|
Classifier: Topic :: Internet :: WWW/HTTP
|
|
23
27
|
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
|
24
28
|
Requires-Python: >=3.6
|
|
25
29
|
Description-Content-Type: text/markdown
|
|
26
30
|
License-File: LICENSE
|
|
27
|
-
Requires-Dist: Django
|
|
31
|
+
Requires-Dist: Django<7.0,>=2.0
|
|
28
32
|
Requires-Dist: python-dateutil<=3.0.0,>=2.8.0
|
|
29
33
|
Requires-Dist: dataclasses; python_version <= "3.6"
|
|
30
34
|
Provides-Extra: dev
|
|
@@ -75,8 +79,8 @@ Requires-Dist: sphinx-rtd-theme==3.0.2; extra == "docs"
|
|
|
75
79
|
Requires-Dist: docutils==0.21.2; extra == "docs"
|
|
76
80
|
Requires-Dist: Jinja2==3.1.6; extra == "docs"
|
|
77
81
|
Provides-Extra: publish
|
|
78
|
-
Requires-Dist: build
|
|
79
|
-
Requires-Dist: twine
|
|
82
|
+
Requires-Dist: build<2.0.0,>=1.2.0; extra == "publish"
|
|
83
|
+
Requires-Dist: twine<7.0.0,>=6.0.0; extra == "publish"
|
|
80
84
|
Dynamic: author
|
|
81
85
|
Dynamic: author-email
|
|
82
86
|
Dynamic: classifier
|
|
@@ -96,10 +100,10 @@ Dynamic: summary
|
|
|
96
100
|
|--------------------|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
97
101
|
| :white_check_mark: | **Tests** | [](https://circleci.com/gh/SectorLabs/django-postgres-extra/tree/master) |
|
|
98
102
|
| :memo: | **License** | [](http://doge.mit-license.org) |
|
|
99
|
-
| :package: | **PyPi** | [](https://pypi.org/project/xdjango-postgres-extra/) |
|
|
100
104
|
| :four_leaf_clover: | **Code coverage** | [](https://coveralls.io/github/SectorLabs/django-postgres-extra?branch=master) |
|
|
101
|
-
| <img src="https://cdn.iconscout.com/icon/free/png-256/django-1-282754.png" width="22px" height="22px" align="center" /> | **Django Versions** | 2.0
|
|
102
|
-
| <img src="https://cdn3.iconfinder.com/data/icons/logos-and-brands-adobe/512/267_Python-512.png" width="22px" height="22px" align="center" /> | **Python Versions** | 3.6
|
|
105
|
+
| <img src="https://cdn.iconscout.com/icon/free/png-256/django-1-282754.png" width="22px" height="22px" align="center" /> | **Django Versions** | 2.0 through 6.x |
|
|
106
|
+
| <img src="https://cdn3.iconfinder.com/data/icons/logos-and-brands-adobe/512/267_Python-512.png" width="22px" height="22px" align="center" /> | **Python Versions** | 3.6 through 3.14 |
|
|
103
107
|
| <img src="https://pbs.twimg.com/profile_images/1152122059/psycopg-100_400x400.png" width="22px" height="22px" align="center" /> | **Psycopg Versions** | 2, 3 |
|
|
104
108
|
| :book: | **Documentation** | [Read The Docs](https://django-postgres-extra.readthedocs.io/en/master/) |
|
|
105
109
|
| :warning: | **Upgrade** | [Upgrade from v1.x](https://django-postgres-extra.readthedocs.io/en/master/major_releases.html#new-features)
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
|--------------------|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
7
7
|
| :white_check_mark: | **Tests** | [](https://circleci.com/gh/SectorLabs/django-postgres-extra/tree/master) |
|
|
8
8
|
| :memo: | **License** | [](http://doge.mit-license.org) |
|
|
9
|
-
| :package: | **PyPi** | [](https://pypi.org/project/xdjango-postgres-extra/) |
|
|
10
10
|
| :four_leaf_clover: | **Code coverage** | [](https://coveralls.io/github/SectorLabs/django-postgres-extra?branch=master) |
|
|
11
|
-
| <img src="https://cdn.iconscout.com/icon/free/png-256/django-1-282754.png" width="22px" height="22px" align="center" /> | **Django Versions** | 2.0
|
|
12
|
-
| <img src="https://cdn3.iconfinder.com/data/icons/logos-and-brands-adobe/512/267_Python-512.png" width="22px" height="22px" align="center" /> | **Python Versions** | 3.6
|
|
11
|
+
| <img src="https://cdn.iconscout.com/icon/free/png-256/django-1-282754.png" width="22px" height="22px" align="center" /> | **Django Versions** | 2.0 through 6.x |
|
|
12
|
+
| <img src="https://cdn3.iconfinder.com/data/icons/logos-and-brands-adobe/512/267_Python-512.png" width="22px" height="22px" align="center" /> | **Python Versions** | 3.6 through 3.14 |
|
|
13
13
|
| <img src="https://pbs.twimg.com/profile_images/1152122059/psycopg-100_400x400.png" width="22px" height="22px" align="center" /> | **Psycopg Versions** | 2, 3 |
|
|
14
14
|
| :book: | **Documentation** | [Read The Docs](https://django-postgres-extra.readthedocs.io/en/master/) |
|
|
15
15
|
| :warning: | **Upgrade** | [Upgrade from v1.x](https://django-postgres-extra.readthedocs.io/en/master/major_releases.html#new-features)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.1.1"
|
|
@@ -36,6 +36,7 @@ setup(
|
|
|
36
36
|
classifiers=[
|
|
37
37
|
"Environment :: Web Environment",
|
|
38
38
|
"Framework :: Django",
|
|
39
|
+
"Framework :: Django :: 6.0",
|
|
39
40
|
"Intended Audience :: Developers",
|
|
40
41
|
"License :: OSI Approved :: MIT License",
|
|
41
42
|
"Operating System :: OS Independent",
|
|
@@ -46,12 +47,15 @@ setup(
|
|
|
46
47
|
"Programming Language :: Python :: 3.9",
|
|
47
48
|
"Programming Language :: Python :: 3.10",
|
|
48
49
|
"Programming Language :: Python :: 3.11",
|
|
50
|
+
"Programming Language :: Python :: 3.12",
|
|
51
|
+
"Programming Language :: Python :: 3.13",
|
|
52
|
+
"Programming Language :: Python :: 3.14",
|
|
49
53
|
"Topic :: Internet :: WWW/HTTP",
|
|
50
54
|
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
|
51
55
|
],
|
|
52
56
|
python_requires=">=3.6",
|
|
53
57
|
install_requires=[
|
|
54
|
-
"Django>=2.0
|
|
58
|
+
"Django>=2.0,<7.0",
|
|
55
59
|
"python-dateutil>=2.8.0,<=3.0.0",
|
|
56
60
|
],
|
|
57
61
|
extras_require={
|
|
@@ -109,8 +113,8 @@ setup(
|
|
|
109
113
|
"Jinja2==3.1.6",
|
|
110
114
|
],
|
|
111
115
|
"publish": [
|
|
112
|
-
"build
|
|
113
|
-
"twine
|
|
116
|
+
"build>=1.2.0,<2.0.0",
|
|
117
|
+
"twine>=6.0.0,<7.0.0",
|
|
114
118
|
],
|
|
115
119
|
},
|
|
116
120
|
)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from psqlextra.expressions import HStoreValue
|
|
2
|
+
from psqlextra.lookups import InValuesLookupMixin
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class CompilableValue:
|
|
6
|
+
def as_sql(self, compiler, connection):
|
|
7
|
+
return "UPPER(%s)", ("value",)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class InValuesLookup(InValuesLookupMixin):
|
|
11
|
+
def rhs_is_direct_value(self):
|
|
12
|
+
return True
|
|
13
|
+
|
|
14
|
+
def process_lhs(self, compiler, connection):
|
|
15
|
+
return '"field"', ("lhs",)
|
|
16
|
+
|
|
17
|
+
def process_rhs(self, compiler, connection):
|
|
18
|
+
return "%s, %s", ("one", "two")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def test_hstore_value_returns_tuple_params():
|
|
22
|
+
_, params = HStoreValue(
|
|
23
|
+
{"expression": CompilableValue(), "plain": "value", "null": None}
|
|
24
|
+
).as_sql(None, None)
|
|
25
|
+
|
|
26
|
+
assert params == ("expression", "value", "plain", "value", "null")
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def test_invalues_lookup_returns_tuple_params():
|
|
30
|
+
sql, params = InValuesLookup().as_sql(None, None)
|
|
31
|
+
|
|
32
|
+
assert sql == '"field" IN (VALUES (%s),(%s))'
|
|
33
|
+
assert params == ("lhs", "one", "two")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: xdjango-postgres-extra
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.1
|
|
4
4
|
Summary: Bringing all of PostgreSQL's awesomeness to Django.
|
|
5
5
|
Home-page: https://github.com/SectorLabs/django-postgres-extra
|
|
6
6
|
Author: Sector Labs
|
|
@@ -9,6 +9,7 @@ License: MIT License
|
|
|
9
9
|
Keywords: django,postgres,extra,hstore,upsert,partioning,materialized,view
|
|
10
10
|
Classifier: Environment :: Web Environment
|
|
11
11
|
Classifier: Framework :: Django
|
|
12
|
+
Classifier: Framework :: Django :: 6.0
|
|
12
13
|
Classifier: Intended Audience :: Developers
|
|
13
14
|
Classifier: License :: OSI Approved :: MIT License
|
|
14
15
|
Classifier: Operating System :: OS Independent
|
|
@@ -19,12 +20,15 @@ Classifier: Programming Language :: Python :: 3.8
|
|
|
19
20
|
Classifier: Programming Language :: Python :: 3.9
|
|
20
21
|
Classifier: Programming Language :: Python :: 3.10
|
|
21
22
|
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
22
26
|
Classifier: Topic :: Internet :: WWW/HTTP
|
|
23
27
|
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
|
24
28
|
Requires-Python: >=3.6
|
|
25
29
|
Description-Content-Type: text/markdown
|
|
26
30
|
License-File: LICENSE
|
|
27
|
-
Requires-Dist: Django
|
|
31
|
+
Requires-Dist: Django<7.0,>=2.0
|
|
28
32
|
Requires-Dist: python-dateutil<=3.0.0,>=2.8.0
|
|
29
33
|
Requires-Dist: dataclasses; python_version <= "3.6"
|
|
30
34
|
Provides-Extra: dev
|
|
@@ -75,8 +79,8 @@ Requires-Dist: sphinx-rtd-theme==3.0.2; extra == "docs"
|
|
|
75
79
|
Requires-Dist: docutils==0.21.2; extra == "docs"
|
|
76
80
|
Requires-Dist: Jinja2==3.1.6; extra == "docs"
|
|
77
81
|
Provides-Extra: publish
|
|
78
|
-
Requires-Dist: build
|
|
79
|
-
Requires-Dist: twine
|
|
82
|
+
Requires-Dist: build<2.0.0,>=1.2.0; extra == "publish"
|
|
83
|
+
Requires-Dist: twine<7.0.0,>=6.0.0; extra == "publish"
|
|
80
84
|
Dynamic: author
|
|
81
85
|
Dynamic: author-email
|
|
82
86
|
Dynamic: classifier
|
|
@@ -96,10 +100,10 @@ Dynamic: summary
|
|
|
96
100
|
|--------------------|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
97
101
|
| :white_check_mark: | **Tests** | [](https://circleci.com/gh/SectorLabs/django-postgres-extra/tree/master) |
|
|
98
102
|
| :memo: | **License** | [](http://doge.mit-license.org) |
|
|
99
|
-
| :package: | **PyPi** | [](https://pypi.org/project/xdjango-postgres-extra/) |
|
|
100
104
|
| :four_leaf_clover: | **Code coverage** | [](https://coveralls.io/github/SectorLabs/django-postgres-extra?branch=master) |
|
|
101
|
-
| <img src="https://cdn.iconscout.com/icon/free/png-256/django-1-282754.png" width="22px" height="22px" align="center" /> | **Django Versions** | 2.0
|
|
102
|
-
| <img src="https://cdn3.iconfinder.com/data/icons/logos-and-brands-adobe/512/267_Python-512.png" width="22px" height="22px" align="center" /> | **Python Versions** | 3.6
|
|
105
|
+
| <img src="https://cdn.iconscout.com/icon/free/png-256/django-1-282754.png" width="22px" height="22px" align="center" /> | **Django Versions** | 2.0 through 6.x |
|
|
106
|
+
| <img src="https://cdn3.iconfinder.com/data/icons/logos-and-brands-adobe/512/267_Python-512.png" width="22px" height="22px" align="center" /> | **Python Versions** | 3.6 through 3.14 |
|
|
103
107
|
| <img src="https://pbs.twimg.com/profile_images/1152122059/psycopg-100_400x400.png" width="22px" height="22px" align="center" /> | **Psycopg Versions** | 2, 3 |
|
|
104
108
|
| :book: | **Documentation** | [Read The Docs](https://django-postgres-extra.readthedocs.io/en/master/) |
|
|
105
109
|
| :warning: | **Upgrade** | [Upgrade from v1.x](https://django-postgres-extra.readthedocs.io/en/master/major_releases.html#new-features)
|
|
@@ -100,6 +100,7 @@ tests/test_append_caller_to_sql.py
|
|
|
100
100
|
tests/test_case_insensitive_unique_index.py
|
|
101
101
|
tests/test_conditional_unique_index.py
|
|
102
102
|
tests/test_db_backend.py
|
|
103
|
+
tests/test_django_6_compatibility.py
|
|
103
104
|
tests/test_hstore_autodetect.py
|
|
104
105
|
tests/test_hstore_field.py
|
|
105
106
|
tests/test_hstore_required.py
|
|
@@ -134,12 +135,6 @@ tests/test_settings.py
|
|
|
134
135
|
tests/test_unique_index.py
|
|
135
136
|
tests/test_upsert.py
|
|
136
137
|
tests/test_view_models.py
|
|
137
|
-
tests/benchmarks/__init__.py
|
|
138
|
-
tests/benchmarks/test_insert_nothing.py
|
|
139
|
-
tests/benchmarks/test_upsert.py
|
|
140
|
-
tests/benchmarks/test_upsert_bulk.py
|
|
141
|
-
tests/psqlextra_test_backend/__init__.py
|
|
142
|
-
tests/psqlextra_test_backend/base.py
|
|
143
138
|
xdjango_postgres_extra.egg-info/PKG-INFO
|
|
144
139
|
xdjango_postgres_extra.egg-info/SOURCES.txt
|
|
145
140
|
xdjango_postgres_extra.egg-info/dependency_links.txt
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Django
|
|
1
|
+
Django<7.0,>=2.0
|
|
2
2
|
python-dateutil<=3.0.0,>=2.8.0
|
|
3
3
|
|
|
4
4
|
[:python_version <= "3.6"]
|
|
@@ -38,8 +38,8 @@ docutils==0.21.2
|
|
|
38
38
|
Jinja2==3.1.6
|
|
39
39
|
|
|
40
40
|
[publish]
|
|
41
|
-
build
|
|
42
|
-
twine
|
|
41
|
+
build<2.0.0,>=1.2.0
|
|
42
|
+
twine<7.0.0,>=6.0.0
|
|
43
43
|
|
|
44
44
|
[test]
|
|
45
45
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2.1.0"
|
|
File without changes
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import uuid
|
|
2
|
-
|
|
3
|
-
import pytest
|
|
4
|
-
|
|
5
|
-
from django.db import models, transaction
|
|
6
|
-
from django.db.utils import IntegrityError
|
|
7
|
-
|
|
8
|
-
from psqlextra.query import ConflictAction
|
|
9
|
-
|
|
10
|
-
from ..fake_model import get_fake_model
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
@pytest.mark.benchmark()
|
|
14
|
-
def test_insert_nothing_traditional(benchmark):
|
|
15
|
-
model = get_fake_model(
|
|
16
|
-
{"field": models.CharField(max_length=255, unique=True)}
|
|
17
|
-
)
|
|
18
|
-
|
|
19
|
-
random_value = str(uuid.uuid4())[:8]
|
|
20
|
-
model.objects.create(field=random_value)
|
|
21
|
-
|
|
22
|
-
def _traditional_insert(model, random_value):
|
|
23
|
-
"""Performs a concurrency safe insert the traditional way."""
|
|
24
|
-
|
|
25
|
-
try:
|
|
26
|
-
with transaction.atomic():
|
|
27
|
-
return model.objects.create(field=random_value)
|
|
28
|
-
except IntegrityError:
|
|
29
|
-
return model.objects.filter(field=random_value).first()
|
|
30
|
-
|
|
31
|
-
benchmark(_traditional_insert, model, random_value)
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
@pytest.mark.benchmark()
|
|
35
|
-
def test_insert_nothing_native(benchmark):
|
|
36
|
-
model = get_fake_model(
|
|
37
|
-
{"field": models.CharField(max_length=255, unique=True)}
|
|
38
|
-
)
|
|
39
|
-
|
|
40
|
-
random_value = str(uuid.uuid4())[:8]
|
|
41
|
-
model.objects.create(field=random_value)
|
|
42
|
-
|
|
43
|
-
def _native_insert(model, random_value):
|
|
44
|
-
"""Performs a concurrency safeinsert using the native PostgreSQL
|
|
45
|
-
conflict resolution."""
|
|
46
|
-
|
|
47
|
-
return model.objects.on_conflict(
|
|
48
|
-
["field"], ConflictAction.NOTHING
|
|
49
|
-
).insert_and_get(field=random_value)
|
|
50
|
-
|
|
51
|
-
benchmark(_native_insert, model, random_value)
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import uuid
|
|
2
|
-
|
|
3
|
-
import pytest
|
|
4
|
-
|
|
5
|
-
from django.db import models, transaction
|
|
6
|
-
from django.db.utils import IntegrityError
|
|
7
|
-
|
|
8
|
-
from ..fake_model import get_fake_model
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
@pytest.mark.benchmark()
|
|
12
|
-
def test_upsert_traditional(benchmark):
|
|
13
|
-
model = get_fake_model(
|
|
14
|
-
{"field": models.CharField(max_length=255, unique=True)}
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
random_value = str(uuid.uuid4())[:8]
|
|
18
|
-
model.objects.create(field=random_value)
|
|
19
|
-
|
|
20
|
-
def _traditional_upsert(model, random_value):
|
|
21
|
-
"""Performs a concurrency safe upsert the traditional way."""
|
|
22
|
-
|
|
23
|
-
try:
|
|
24
|
-
|
|
25
|
-
with transaction.atomic():
|
|
26
|
-
return model.objects.create(field=random_value)
|
|
27
|
-
except IntegrityError:
|
|
28
|
-
model.objects.update(field=random_value)
|
|
29
|
-
return model.objects.get(field=random_value)
|
|
30
|
-
|
|
31
|
-
benchmark(_traditional_upsert, model, random_value)
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
@pytest.mark.benchmark()
|
|
35
|
-
def test_upsert_native(benchmark):
|
|
36
|
-
model = get_fake_model(
|
|
37
|
-
{"field": models.CharField(max_length=255, unique=True)}
|
|
38
|
-
)
|
|
39
|
-
|
|
40
|
-
random_value = str(uuid.uuid4())[:8]
|
|
41
|
-
model.objects.create(field=random_value)
|
|
42
|
-
|
|
43
|
-
def _native_upsert(model, random_value):
|
|
44
|
-
"""Performs a concurrency safe upsert using the native PostgreSQL
|
|
45
|
-
upsert."""
|
|
46
|
-
|
|
47
|
-
return model.objects.upsert_and_get(
|
|
48
|
-
conflict_target=["field"], fields=dict(field=random_value)
|
|
49
|
-
)
|
|
50
|
-
|
|
51
|
-
benchmark(_native_upsert, model, random_value)
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import uuid
|
|
2
|
-
|
|
3
|
-
import pytest
|
|
4
|
-
|
|
5
|
-
from django.db import models
|
|
6
|
-
|
|
7
|
-
from psqlextra.query import ConflictAction
|
|
8
|
-
|
|
9
|
-
from ..fake_model import get_fake_model
|
|
10
|
-
|
|
11
|
-
ROW_COUNT = 10000
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
@pytest.mark.benchmark()
|
|
15
|
-
def test_upsert_bulk_naive(benchmark):
|
|
16
|
-
model = get_fake_model(
|
|
17
|
-
{"field": models.CharField(max_length=255, unique=True)}
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
rows = []
|
|
21
|
-
random_values = []
|
|
22
|
-
for i in range(0, ROW_COUNT):
|
|
23
|
-
random_value = str(uuid.uuid4())
|
|
24
|
-
random_values.append(random_value)
|
|
25
|
-
rows.append(model(field=random_value))
|
|
26
|
-
|
|
27
|
-
model.objects.bulk_create(rows)
|
|
28
|
-
|
|
29
|
-
def _native_upsert(model, random_values):
|
|
30
|
-
"""Performs a concurrency safe upsert using the native PostgreSQL
|
|
31
|
-
upsert."""
|
|
32
|
-
|
|
33
|
-
rows = [dict(field=random_value) for random_value in random_values]
|
|
34
|
-
|
|
35
|
-
for row in rows:
|
|
36
|
-
model.objects.on_conflict(["field"], ConflictAction.UPDATE).insert(
|
|
37
|
-
**row
|
|
38
|
-
)
|
|
39
|
-
|
|
40
|
-
benchmark(_native_upsert, model, random_values)
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
@pytest.mark.benchmark()
|
|
44
|
-
def test_upsert_bulk_native(benchmark):
|
|
45
|
-
model = get_fake_model(
|
|
46
|
-
{"field": models.CharField(max_length=255, unique=True)}
|
|
47
|
-
)
|
|
48
|
-
|
|
49
|
-
rows = []
|
|
50
|
-
random_values = []
|
|
51
|
-
for i in range(0, ROW_COUNT):
|
|
52
|
-
random_value = str(uuid.uuid4())
|
|
53
|
-
random_values.append(random_value)
|
|
54
|
-
rows.append(model(field=random_value))
|
|
55
|
-
|
|
56
|
-
model.objects.bulk_create(rows)
|
|
57
|
-
|
|
58
|
-
def _native_upsert(model, random_values):
|
|
59
|
-
"""Performs a concurrency safe upsert using the native PostgreSQL
|
|
60
|
-
upsert."""
|
|
61
|
-
|
|
62
|
-
rows = [dict(field=random_value) for random_value in random_values]
|
|
63
|
-
|
|
64
|
-
model.objects.on_conflict(["field"], ConflictAction.UPDATE).bulk_insert(
|
|
65
|
-
rows
|
|
66
|
-
)
|
|
67
|
-
|
|
68
|
-
benchmark(_native_upsert, model, random_values)
|
|
File without changes
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
from datetime import timezone
|
|
2
|
-
|
|
3
|
-
import django
|
|
4
|
-
|
|
5
|
-
from django.conf import settings
|
|
6
|
-
|
|
7
|
-
from psqlextra.backend.base import DatabaseWrapper as PSQLExtraDatabaseWrapper
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class DatabaseWrapper(PSQLExtraDatabaseWrapper):
|
|
11
|
-
# Works around the compatibility issue of Django <3.0 and psycopg2.9
|
|
12
|
-
# in combination with USE_TZ
|
|
13
|
-
#
|
|
14
|
-
# See: https://github.com/psycopg/psycopg2/issues/1293#issuecomment-862835147
|
|
15
|
-
if django.VERSION < (3, 1):
|
|
16
|
-
|
|
17
|
-
def create_cursor(self, name=None):
|
|
18
|
-
cursor = super().create_cursor(name)
|
|
19
|
-
cursor.tzinfo_factory = (
|
|
20
|
-
lambda offset: timezone.utc if settings.USE_TZ else None
|
|
21
|
-
)
|
|
22
|
-
|
|
23
|
-
return cursor
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/base_impl.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/introspection.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/backend/operations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/contrib/expressions.py
RENAMED
|
File without changes
|
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/contrib/static_row.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/contrib/transaction.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/fields/hstore_field.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/indexes/unique_index.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/introspect/__init__.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/introspect/fields.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/introspect/models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/management/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/models/partitioned.py
RENAMED
|
File without changes
|
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/__init__.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/config.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/constants.py
RENAMED
|
File without changes
|
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/error.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/manager.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/partition.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/plan.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/shorthands.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/psqlextra/partitioning/strategy.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_append_caller_to_sql.py
RENAMED
|
File without changes
|
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_conditional_unique_index.py
RENAMED
|
File without changes
|
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_hstore_autodetect.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_materialized_view_model.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_migration_operations.py
RENAMED
|
File without changes
|
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_on_conflict_nothing.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_on_conflict_update.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_partitioned_model.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_partitioned_model_state.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_partitioning_manager.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_partitioning_time.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_schema_editor_vacuum.py
RENAMED
|
File without changes
|
{xdjango_postgres_extra-2.1.0 → xdjango_postgres_extra-2.1.1}/tests/test_schema_editor_view.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|