django-cte 1.3.3__tar.gz → 1.3.3.dev20250527184022__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.
- {django-cte-1.3.3 → django_cte-1.3.3.dev20250527184022}/PKG-INFO +35 -27
- django_cte-1.3.3.dev20250527184022/README.md +52 -0
- django_cte-1.3.3.dev20250527184022/django_cte/__init__.py +3 -0
- {django-cte-1.3.3 → django_cte-1.3.3.dev20250527184022}/django_cte/cte.py +29 -3
- {django-cte-1.3.3 → django_cte-1.3.3.dev20250527184022}/django_cte/join.py +0 -2
- {django-cte-1.3.3 → django_cte-1.3.3.dev20250527184022}/django_cte/meta.py +0 -3
- {django-cte-1.3.3 → django_cte-1.3.3.dev20250527184022}/django_cte/query.py +1 -4
- {django-cte-1.3.3 → django_cte-1.3.3.dev20250527184022}/django_cte/raw.py +0 -4
- django_cte-1.3.3.dev20250527184022/pyproject.toml +51 -0
- django-cte-1.3.3/README.md +0 -41
- django-cte-1.3.3/django_cte/__init__.py +0 -6
- django-cte-1.3.3/django_cte.egg-info/PKG-INFO +0 -76
- django-cte-1.3.3/django_cte.egg-info/SOURCES.txt +0 -15
- django-cte-1.3.3/django_cte.egg-info/dependency_links.txt +0 -1
- django-cte-1.3.3/django_cte.egg-info/top_level.txt +0 -1
- django-cte-1.3.3/setup.cfg +0 -13
- django-cte-1.3.3/setup.py +0 -59
- {django-cte-1.3.3 → django_cte-1.3.3.dev20250527184022}/LICENSE +0 -0
- {django-cte-1.3.3 → django_cte-1.3.3.dev20250527184022}/django_cte/expressions.py +0 -0
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: django-cte
|
|
3
|
-
Version: 1.3.3
|
|
3
|
+
Version: 1.3.3.dev20250527184022
|
|
4
4
|
Summary: Common Table Expressions (CTE) for Django
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Platform: UNKNOWN
|
|
10
|
-
Classifier: Development Status :: 3 - Alpha
|
|
5
|
+
Author-email: Daniel Miller <millerdev@gmail.com>
|
|
6
|
+
Requires-Python: >= 3.9
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
9
|
Classifier: Environment :: Web Environment
|
|
12
10
|
Classifier: Framework :: Django
|
|
13
11
|
Classifier: Intended Audience :: Developers
|
|
@@ -15,21 +13,21 @@ Classifier: License :: OSI Approved :: BSD License
|
|
|
15
13
|
Classifier: Operating System :: OS Independent
|
|
16
14
|
Classifier: Programming Language :: Python
|
|
17
15
|
Classifier: Programming Language :: Python :: 3
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
19
16
|
Classifier: Programming Language :: Python :: 3.9
|
|
20
17
|
Classifier: Programming Language :: Python :: 3.10
|
|
21
18
|
Classifier: Programming Language :: Python :: 3.11
|
|
22
19
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
21
|
Classifier: Framework :: Django
|
|
24
|
-
Classifier: Framework :: Django :: 3
|
|
25
|
-
Classifier: Framework :: Django :: 3.2
|
|
26
22
|
Classifier: Framework :: Django :: 4
|
|
27
|
-
Classifier: Framework :: Django :: 4.0
|
|
28
|
-
Classifier: Framework :: Django :: 4.1
|
|
29
23
|
Classifier: Framework :: Django :: 4.2
|
|
24
|
+
Classifier: Framework :: Django :: 5
|
|
25
|
+
Classifier: Framework :: Django :: 5.0
|
|
26
|
+
Classifier: Framework :: Django :: 5.1
|
|
30
27
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
31
|
-
Description-Content-Type: text/markdown
|
|
32
28
|
License-File: LICENSE
|
|
29
|
+
Requires-Dist: django
|
|
30
|
+
Project-URL: Home, https://github.com/dimagi/django-cte
|
|
33
31
|
|
|
34
32
|
# Common Table Expressions with Django
|
|
35
33
|
|
|
@@ -52,25 +50,35 @@ to use Common Table Expressions with the Django ORM.
|
|
|
52
50
|
|
|
53
51
|
```
|
|
54
52
|
cd django-cte
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
uv sync
|
|
54
|
+
|
|
55
|
+
pytest
|
|
56
|
+
ruff check
|
|
57
|
+
|
|
58
|
+
# To run tests against postgres
|
|
59
|
+
psql -U username -h localhost -p 5432 -c 'create database django_cte;'
|
|
60
|
+
export PG_DB_SETTINGS='{
|
|
61
|
+
"ENGINE":"django.db.backends.postgresql_psycopg2",
|
|
62
|
+
"NAME":"django_cte",
|
|
63
|
+
"USER":"username",
|
|
64
|
+
"PASSWORD":"password",
|
|
65
|
+
"HOST":"localhost",
|
|
66
|
+
"PORT":"5432"}'
|
|
67
|
+
|
|
68
|
+
# WARNING pytest will delete the test_django_cte database if it exists!
|
|
69
|
+
DB_SETTINGS="$PG_DB_SETTINGS" pytest
|
|
60
70
|
```
|
|
61
71
|
|
|
62
72
|
All feature and bug contributions are expected to be covered by tests.
|
|
63
73
|
|
|
64
74
|
|
|
65
|
-
##
|
|
75
|
+
## Publishing a new verison to PyPI
|
|
66
76
|
|
|
67
|
-
|
|
77
|
+
Push a new tag to Github using the format vX.Y.Z where X.Y.Z matches the version
|
|
78
|
+
in [`__init__.py`](django_cte/__init__.py).
|
|
68
79
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
python setup.py sdist bdist_wheel
|
|
73
|
-
twine upload dist/*
|
|
74
|
-
```
|
|
80
|
+
A new version is published to https://test.pypi.org/p/django-cte on every
|
|
81
|
+
push to the *main* branch.
|
|
75
82
|
|
|
83
|
+
Publishing is automated with [Github Actions](.github/workflows/pypi.yml).
|
|
76
84
|
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Common Table Expressions with Django
|
|
2
|
+
|
|
3
|
+
[](https://github.com/dimagi/django-cte/actions/workflows/tests.yml)
|
|
4
|
+
[](https://badge.fury.io/py/django-cte)
|
|
5
|
+
|
|
6
|
+
## Installation
|
|
7
|
+
```
|
|
8
|
+
pip install django-cte
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## Documentation
|
|
13
|
+
|
|
14
|
+
The [django-cte documentation](https://dimagi.github.io/django-cte/) shows how
|
|
15
|
+
to use Common Table Expressions with the Django ORM.
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## Running tests
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
cd django-cte
|
|
22
|
+
uv sync
|
|
23
|
+
|
|
24
|
+
pytest
|
|
25
|
+
ruff check
|
|
26
|
+
|
|
27
|
+
# To run tests against postgres
|
|
28
|
+
psql -U username -h localhost -p 5432 -c 'create database django_cte;'
|
|
29
|
+
export PG_DB_SETTINGS='{
|
|
30
|
+
"ENGINE":"django.db.backends.postgresql_psycopg2",
|
|
31
|
+
"NAME":"django_cte",
|
|
32
|
+
"USER":"username",
|
|
33
|
+
"PASSWORD":"password",
|
|
34
|
+
"HOST":"localhost",
|
|
35
|
+
"PORT":"5432"}'
|
|
36
|
+
|
|
37
|
+
# WARNING pytest will delete the test_django_cte database if it exists!
|
|
38
|
+
DB_SETTINGS="$PG_DB_SETTINGS" pytest
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
All feature and bug contributions are expected to be covered by tests.
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
## Publishing a new verison to PyPI
|
|
45
|
+
|
|
46
|
+
Push a new tag to Github using the format vX.Y.Z where X.Y.Z matches the version
|
|
47
|
+
in [`__init__.py`](django_cte/__init__.py).
|
|
48
|
+
|
|
49
|
+
A new version is published to https://test.pypi.org/p/django-cte on every
|
|
50
|
+
push to the *main* branch.
|
|
51
|
+
|
|
52
|
+
Publishing is automated with [Github Actions](.github/workflows/pypi.yml).
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
from __future__ import absolute_import
|
|
2
|
-
from __future__ import unicode_literals
|
|
3
|
-
|
|
4
1
|
from django.db.models import Manager
|
|
5
2
|
from django.db.models.query import Q, QuerySet, ValuesIterable
|
|
6
3
|
from django.db.models.sql.datastructures import BaseTable
|
|
@@ -156,6 +153,35 @@ class CTEQuerySet(QuerySet):
|
|
|
156
153
|
as_manager.queryset_only = True
|
|
157
154
|
as_manager = classmethod(as_manager)
|
|
158
155
|
|
|
156
|
+
def _combinator_query(self, *args, **kw):
|
|
157
|
+
clone = super()._combinator_query(*args, **kw)
|
|
158
|
+
if clone.query.combinator:
|
|
159
|
+
ctes = clone.query._with_ctes = []
|
|
160
|
+
seen = {}
|
|
161
|
+
for query in clone.query.combined_queries:
|
|
162
|
+
for cte in getattr(query, "_with_ctes", []):
|
|
163
|
+
if seen.get(cte.name) is cte:
|
|
164
|
+
continue
|
|
165
|
+
if cte.name in seen:
|
|
166
|
+
raise ValueError(
|
|
167
|
+
f"Found two or more CTEs named '{cte.name}'. "
|
|
168
|
+
"Hint: assign a unique name to each CTE."
|
|
169
|
+
)
|
|
170
|
+
ctes.append(cte)
|
|
171
|
+
seen[cte.name] = cte
|
|
172
|
+
if ctes:
|
|
173
|
+
def without_ctes(query):
|
|
174
|
+
if getattr(query, "_with_ctes", None):
|
|
175
|
+
query = query.clone()
|
|
176
|
+
query._with_ctes = []
|
|
177
|
+
return query
|
|
178
|
+
|
|
179
|
+
clone.query.combined_queries = [
|
|
180
|
+
without_ctes(query)
|
|
181
|
+
for query in clone.query.combined_queries
|
|
182
|
+
]
|
|
183
|
+
return clone
|
|
184
|
+
|
|
159
185
|
|
|
160
186
|
class CTEManager(Manager.from_queryset(CTEQuerySet)):
|
|
161
187
|
"""Manager for models that perform CTE queries"""
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
from __future__ import absolute_import
|
|
2
|
-
from __future__ import unicode_literals
|
|
3
|
-
|
|
4
1
|
import django
|
|
5
2
|
from django.core.exceptions import EmptyResultSet
|
|
6
3
|
from django.db import connections
|
|
@@ -71,7 +68,7 @@ class CTECompiler(object):
|
|
|
71
68
|
|
|
72
69
|
@classmethod
|
|
73
70
|
def generate_sql(cls, connection, query, as_sql):
|
|
74
|
-
if query.
|
|
71
|
+
if not query._with_ctes:
|
|
75
72
|
return as_sql()
|
|
76
73
|
|
|
77
74
|
ctes = []
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "django-cte"
|
|
3
|
+
description = "Common Table Expressions (CTE) for Django"
|
|
4
|
+
authors = [{name = "Daniel Miller", email = "millerdev@gmail.com"}]
|
|
5
|
+
license = {file = "LICENSE"}
|
|
6
|
+
readme = {file = "README.md", content-type = "text/markdown"}
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
requires-python = ">= 3.9"
|
|
9
|
+
classifiers = [
|
|
10
|
+
"Development Status :: 5 - Production/Stable",
|
|
11
|
+
'Environment :: Web Environment',
|
|
12
|
+
'Framework :: Django',
|
|
13
|
+
'Intended Audience :: Developers',
|
|
14
|
+
'License :: OSI Approved :: BSD License',
|
|
15
|
+
'Operating System :: OS Independent',
|
|
16
|
+
'Programming Language :: Python',
|
|
17
|
+
'Programming Language :: Python :: 3',
|
|
18
|
+
'Programming Language :: Python :: 3.9',
|
|
19
|
+
'Programming Language :: Python :: 3.10',
|
|
20
|
+
'Programming Language :: Python :: 3.11',
|
|
21
|
+
'Programming Language :: Python :: 3.12',
|
|
22
|
+
'Programming Language :: Python :: 3.13',
|
|
23
|
+
'Framework :: Django',
|
|
24
|
+
'Framework :: Django :: 4',
|
|
25
|
+
'Framework :: Django :: 4.2',
|
|
26
|
+
'Framework :: Django :: 5',
|
|
27
|
+
'Framework :: Django :: 5.0',
|
|
28
|
+
'Framework :: Django :: 5.1',
|
|
29
|
+
'Topic :: Software Development :: Libraries :: Python Modules',
|
|
30
|
+
]
|
|
31
|
+
dependencies = ["django"]
|
|
32
|
+
|
|
33
|
+
[dependency-groups]
|
|
34
|
+
dev = [
|
|
35
|
+
"psycopg2-binary",
|
|
36
|
+
"pytest-unmagic",
|
|
37
|
+
"ruff",
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
[project.urls]
|
|
41
|
+
Home = "https://github.com/dimagi/django-cte"
|
|
42
|
+
|
|
43
|
+
[build-system]
|
|
44
|
+
requires = ["flit_core >=3.2,<4"]
|
|
45
|
+
build-backend = "flit_core.buildapi"
|
|
46
|
+
|
|
47
|
+
[tool.flit.module]
|
|
48
|
+
name = "django_cte"
|
|
49
|
+
|
|
50
|
+
[tool.distutils.bdist_wheel]
|
|
51
|
+
universal = true
|
django-cte-1.3.3/README.md
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# Common Table Expressions with Django
|
|
2
|
-
|
|
3
|
-
[](https://github.com/dimagi/django-cte/actions/workflows/tests.yml)
|
|
4
|
-
[](https://badge.fury.io/py/django-cte)
|
|
5
|
-
|
|
6
|
-
## Installation
|
|
7
|
-
```
|
|
8
|
-
pip install django-cte
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
## Documentation
|
|
13
|
-
|
|
14
|
-
The [django-cte documentation](https://dimagi.github.io/django-cte/) shows how
|
|
15
|
-
to use Common Table Expressions with the Django ORM.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
## Running tests
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
cd django-cte
|
|
22
|
-
mkvirtualenv cte # or however you choose to setup your environment
|
|
23
|
-
pip install django pynose flake8
|
|
24
|
-
|
|
25
|
-
nosetests
|
|
26
|
-
flake8 --config=setup.cfg
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
All feature and bug contributions are expected to be covered by tests.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
## Uploading to PyPI
|
|
33
|
-
|
|
34
|
-
Package and upload the generated files.
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
pip install -r pkg-requires.txt
|
|
38
|
-
|
|
39
|
-
python setup.py sdist bdist_wheel
|
|
40
|
-
twine upload dist/*
|
|
41
|
-
```
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: django-cte
|
|
3
|
-
Version: 1.3.3
|
|
4
|
-
Summary: Common Table Expressions (CTE) for Django
|
|
5
|
-
Home-page: https://github.com/dimagi/django-cte
|
|
6
|
-
Maintainer: Daniel Miller
|
|
7
|
-
Maintainer-email: millerdev@gmail.com
|
|
8
|
-
License: BSD License
|
|
9
|
-
Platform: UNKNOWN
|
|
10
|
-
Classifier: Development Status :: 3 - Alpha
|
|
11
|
-
Classifier: Environment :: Web Environment
|
|
12
|
-
Classifier: Framework :: Django
|
|
13
|
-
Classifier: Intended Audience :: Developers
|
|
14
|
-
Classifier: License :: OSI Approved :: BSD License
|
|
15
|
-
Classifier: Operating System :: OS Independent
|
|
16
|
-
Classifier: Programming Language :: Python
|
|
17
|
-
Classifier: Programming Language :: Python :: 3
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
-
Classifier: Framework :: Django
|
|
24
|
-
Classifier: Framework :: Django :: 3
|
|
25
|
-
Classifier: Framework :: Django :: 3.2
|
|
26
|
-
Classifier: Framework :: Django :: 4
|
|
27
|
-
Classifier: Framework :: Django :: 4.0
|
|
28
|
-
Classifier: Framework :: Django :: 4.1
|
|
29
|
-
Classifier: Framework :: Django :: 4.2
|
|
30
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
31
|
-
Description-Content-Type: text/markdown
|
|
32
|
-
License-File: LICENSE
|
|
33
|
-
|
|
34
|
-
# Common Table Expressions with Django
|
|
35
|
-
|
|
36
|
-
[](https://github.com/dimagi/django-cte/actions/workflows/tests.yml)
|
|
37
|
-
[](https://badge.fury.io/py/django-cte)
|
|
38
|
-
|
|
39
|
-
## Installation
|
|
40
|
-
```
|
|
41
|
-
pip install django-cte
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
## Documentation
|
|
46
|
-
|
|
47
|
-
The [django-cte documentation](https://dimagi.github.io/django-cte/) shows how
|
|
48
|
-
to use Common Table Expressions with the Django ORM.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
## Running tests
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
cd django-cte
|
|
55
|
-
mkvirtualenv cte # or however you choose to setup your environment
|
|
56
|
-
pip install django pynose flake8
|
|
57
|
-
|
|
58
|
-
nosetests
|
|
59
|
-
flake8 --config=setup.cfg
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
All feature and bug contributions are expected to be covered by tests.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
## Uploading to PyPI
|
|
66
|
-
|
|
67
|
-
Package and upload the generated files.
|
|
68
|
-
|
|
69
|
-
```
|
|
70
|
-
pip install -r pkg-requires.txt
|
|
71
|
-
|
|
72
|
-
python setup.py sdist bdist_wheel
|
|
73
|
-
twine upload dist/*
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
LICENSE
|
|
2
|
-
README.md
|
|
3
|
-
setup.cfg
|
|
4
|
-
setup.py
|
|
5
|
-
django_cte/__init__.py
|
|
6
|
-
django_cte/cte.py
|
|
7
|
-
django_cte/expressions.py
|
|
8
|
-
django_cte/join.py
|
|
9
|
-
django_cte/meta.py
|
|
10
|
-
django_cte/query.py
|
|
11
|
-
django_cte/raw.py
|
|
12
|
-
django_cte.egg-info/PKG-INFO
|
|
13
|
-
django_cte.egg-info/SOURCES.txt
|
|
14
|
-
django_cte.egg-info/dependency_links.txt
|
|
15
|
-
django_cte.egg-info/top_level.txt
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
django_cte
|
django-cte-1.3.3/setup.cfg
DELETED
django-cte-1.3.3/setup.py
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
from __future__ import absolute_import
|
|
2
|
-
from __future__ import unicode_literals
|
|
3
|
-
|
|
4
|
-
import os
|
|
5
|
-
import re
|
|
6
|
-
from io import open
|
|
7
|
-
|
|
8
|
-
from setuptools import find_packages, setup
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def get_version(filename):
|
|
12
|
-
path = os.path.join(os.path.dirname(__file__), filename)
|
|
13
|
-
with open(path, encoding="utf-8") as handle:
|
|
14
|
-
content = handle.read()
|
|
15
|
-
return re.search(r'__version__ = "([^"]+)"', content).group(1)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def read_md(filename):
|
|
19
|
-
path = os.path.join(os.path.dirname(__file__), filename)
|
|
20
|
-
with open(path, encoding='utf-8') as handle:
|
|
21
|
-
return handle.read()
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
setup(
|
|
25
|
-
name='django-cte',
|
|
26
|
-
version=get_version('django_cte/__init__.py'),
|
|
27
|
-
description='Common Table Expressions (CTE) for Django',
|
|
28
|
-
long_description=read_md('README.md'),
|
|
29
|
-
long_description_content_type='text/markdown',
|
|
30
|
-
maintainer='Daniel Miller',
|
|
31
|
-
maintainer_email='millerdev@gmail.com',
|
|
32
|
-
url='https://github.com/dimagi/django-cte',
|
|
33
|
-
license='BSD License',
|
|
34
|
-
packages=find_packages(exclude=['tests']),
|
|
35
|
-
include_package_data=True,
|
|
36
|
-
classifiers=[
|
|
37
|
-
'Development Status :: 3 - Alpha',
|
|
38
|
-
'Environment :: Web Environment',
|
|
39
|
-
'Framework :: Django',
|
|
40
|
-
'Intended Audience :: Developers',
|
|
41
|
-
'License :: OSI Approved :: BSD License',
|
|
42
|
-
'Operating System :: OS Independent',
|
|
43
|
-
'Programming Language :: Python',
|
|
44
|
-
'Programming Language :: Python :: 3',
|
|
45
|
-
'Programming Language :: Python :: 3.8',
|
|
46
|
-
'Programming Language :: Python :: 3.9',
|
|
47
|
-
'Programming Language :: Python :: 3.10',
|
|
48
|
-
'Programming Language :: Python :: 3.11',
|
|
49
|
-
'Programming Language :: Python :: 3.12',
|
|
50
|
-
'Framework :: Django',
|
|
51
|
-
'Framework :: Django :: 3',
|
|
52
|
-
'Framework :: Django :: 3.2',
|
|
53
|
-
'Framework :: Django :: 4',
|
|
54
|
-
'Framework :: Django :: 4.0',
|
|
55
|
-
'Framework :: Django :: 4.1',
|
|
56
|
-
'Framework :: Django :: 4.2',
|
|
57
|
-
'Topic :: Software Development :: Libraries :: Python Modules',
|
|
58
|
-
],
|
|
59
|
-
)
|
|
File without changes
|
|
File without changes
|