open-api-framework 0.10.3__tar.gz → 0.12.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.
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/CHANGELOG.rst +45 -0
- {open_api_framework-0.10.3/open_api_framework.egg-info → open_api_framework-0.12.0}/PKG-INFO +24 -14
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/README.rst +1 -1
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/conf/base.py +155 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0/open_api_framework.egg-info}/PKG-INFO +24 -14
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework.egg-info/requires.txt +32 -12
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/pyproject.toml +34 -14
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/tests/test_generate_envvar_docs.py +10 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/LICENSE +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/MANIFEST.in +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/__init__.py +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/admin.py +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/apps.py +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/conf/__init__.py +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/conf/utils.py +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/context_processors.py +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/management/__init__.py +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/management/commands/__init__.py +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/management/commands/generate_envvar_docs.py +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/py.typed +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/static/open_api_framework/css/admin.css +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/templates/open_api_framework/admin/base_site.html +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/templates/open_api_framework/components/environment.html +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/templates/open_api_framework/components/version.html +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/templates/open_api_framework/env_config.rst +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/templatetags/__init__.py +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/templatetags/doc_tags.py +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/templatetags/open_api_framework.py +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/utils.py +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework.egg-info/SOURCES.txt +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework.egg-info/dependency_links.txt +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework.egg-info/top_level.txt +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/setup.cfg +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/tests/test_admin.py +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/tests/test_config_helpers.py +0 -0
- {open_api_framework-0.10.3 → open_api_framework-0.12.0}/tests/test_settings.py +0 -0
|
@@ -1,6 +1,51 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
0.12.0 (2025-07-15)
|
|
5
|
+
-------------------
|
|
6
|
+
|
|
7
|
+
**💥 Breaking changes**
|
|
8
|
+
|
|
9
|
+
* Specify optional dependency groups:
|
|
10
|
+
|
|
11
|
+
* **celery**: ``celery``, ``flower``
|
|
12
|
+
* **cors**: ``django-cors-headers``
|
|
13
|
+
* **markup**: ``django-markup``
|
|
14
|
+
* **geo**: ``djangorestframework-gis``
|
|
15
|
+
* **csp**: ``django-csp``
|
|
16
|
+
* **commonground**: ``commonground-api-common``
|
|
17
|
+
* **inclusions**: ``djangorestframework-inclusions``
|
|
18
|
+
* **sanitization**: ``bleach``
|
|
19
|
+
* **server**: ``uwsgi``
|
|
20
|
+
* **redis**: ``django-redis``
|
|
21
|
+
|
|
22
|
+
**New features**
|
|
23
|
+
|
|
24
|
+
* Add DB connection pooling envvars + configuration (with workaround to make sure it works with APM)
|
|
25
|
+
|
|
26
|
+
* ``DB_POOL_ENABLED``
|
|
27
|
+
* ``DB_POOL_MIN_SIZE``
|
|
28
|
+
* ``DB_POOL_MAX_SIZE``
|
|
29
|
+
* ``DB_POOL_TIMEOUT``
|
|
30
|
+
* ``DB_POOL_MAX_WAITING``
|
|
31
|
+
* ``DB_POOL_MAX_LIFETIME``
|
|
32
|
+
* ``DB_POOL_MAX_IDLE``
|
|
33
|
+
* ``DB_POOL_RECONNECT_TIMEOUT``
|
|
34
|
+
* ``DB_POOL_NUM_WORKERS``
|
|
35
|
+
|
|
36
|
+
* Add ``DB_CONN_MAX_AGE`` envvar (automatically set to 0 if connection pooling is enabled)
|
|
37
|
+
|
|
38
|
+
**Maintenance**
|
|
39
|
+
|
|
40
|
+
* Pin ```commonground-api-common``` to 2.7.0 or higher
|
|
41
|
+
|
|
42
|
+
0.11.0 (2025-07-03)
|
|
43
|
+
-------------------
|
|
44
|
+
|
|
45
|
+
**New features**
|
|
46
|
+
|
|
47
|
+
* Replace ``psycopg2`` with ``psycopg[binary]`` to support connection pooling
|
|
48
|
+
|
|
4
49
|
0.10.3 (2025-06-17)
|
|
5
50
|
-------------------
|
|
6
51
|
|
{open_api_framework-0.10.3/open_api_framework.egg-info → open_api_framework-0.12.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: open-api-framework
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.12.0
|
|
4
4
|
Summary: A metapackage for registration components, that bundles the dependencies shared between these components and provides generic settings
|
|
5
5
|
Author-email: Maykin Media <support@maykinmedia.nl>
|
|
6
6
|
License: Copyright © Maykin 2024
|
|
@@ -30,30 +30,19 @@ Description-Content-Type: text/x-rst
|
|
|
30
30
|
License-File: LICENSE
|
|
31
31
|
Requires-Dist: django>=5.2
|
|
32
32
|
Requires-Dist: django-axes>=6.5.1
|
|
33
|
-
Requires-Dist: django-cors-headers>=4.4.0
|
|
34
|
-
Requires-Dist: django-markup>=1.8.1
|
|
35
33
|
Requires-Dist: django-jsonform>=2.22.0
|
|
36
34
|
Requires-Dist: django-log-outgoing-requests>=0.6.1
|
|
37
35
|
Requires-Dist: django-admin-index>=3.1.0
|
|
38
|
-
Requires-Dist: django-redis>=5.4.0
|
|
39
36
|
Requires-Dist: djangorestframework>=3.15.2
|
|
40
|
-
Requires-Dist: djangorestframework-gis>=1.0
|
|
41
37
|
Requires-Dist: django-filter>=24.2
|
|
42
38
|
Requires-Dist: drf-spectacular[sidecar]>=0.27.2
|
|
43
|
-
Requires-Dist: django-csp>=3.8
|
|
44
|
-
Requires-Dist: djangorestframework-inclusions>=1.2.0
|
|
45
|
-
Requires-Dist: commonground-api-common>=2.1.2
|
|
46
39
|
Requires-Dist: mozilla-django-oidc-db>=0.19.0
|
|
47
|
-
Requires-Dist:
|
|
48
|
-
Requires-Dist: bleach>=6.1.0
|
|
40
|
+
Requires-Dist: psycopg[binary]>=3.2.9
|
|
49
41
|
Requires-Dist: python-dotenv>=1.0.0
|
|
50
42
|
Requires-Dist: python-decouple>=3.8
|
|
51
43
|
Requires-Dist: requests>=2.32.3
|
|
52
|
-
Requires-Dist: uwsgi>=2.0.23
|
|
53
44
|
Requires-Dist: sentry-sdk>=2.11.0
|
|
54
45
|
Requires-Dist: elastic-apm>=6.22.0
|
|
55
|
-
Requires-Dist: celery>=5.4.0
|
|
56
|
-
Requires-Dist: flower>=2.0.1
|
|
57
46
|
Requires-Dist: maykin-2fa>=1.0.1
|
|
58
47
|
Requires-Dist: django-setup-configuration>=0.1.0
|
|
59
48
|
Requires-Dist: django-sessionprofile>=3.0.0
|
|
@@ -75,12 +64,33 @@ Requires-Dist: sphinx-rtd-theme; extra == "docs"
|
|
|
75
64
|
Provides-Extra: release
|
|
76
65
|
Requires-Dist: bump-my-version; extra == "release"
|
|
77
66
|
Requires-Dist: twine; extra == "release"
|
|
67
|
+
Provides-Extra: celery
|
|
68
|
+
Requires-Dist: celery>=5.4.0; extra == "celery"
|
|
69
|
+
Requires-Dist: flower>=2.0.1; extra == "celery"
|
|
70
|
+
Provides-Extra: cors
|
|
71
|
+
Requires-Dist: django-cors-headers>=4.4.0; extra == "cors"
|
|
72
|
+
Provides-Extra: markup
|
|
73
|
+
Requires-Dist: django-markup>=1.8.1; extra == "markup"
|
|
74
|
+
Provides-Extra: geo
|
|
75
|
+
Requires-Dist: djangorestframework-gis>=1.0; extra == "geo"
|
|
76
|
+
Provides-Extra: csp
|
|
77
|
+
Requires-Dist: django-csp>=3.8; extra == "csp"
|
|
78
|
+
Provides-Extra: commonground
|
|
79
|
+
Requires-Dist: commonground-api-common>=2.7.0; extra == "commonground"
|
|
80
|
+
Provides-Extra: inclusions
|
|
81
|
+
Requires-Dist: djangorestframework-inclusions>=1.2.0; extra == "inclusions"
|
|
82
|
+
Provides-Extra: sanitization
|
|
83
|
+
Requires-Dist: bleach>=6.1.0; extra == "sanitization"
|
|
84
|
+
Provides-Extra: server
|
|
85
|
+
Requires-Dist: uwsgi>=2.0.23; extra == "server"
|
|
86
|
+
Provides-Extra: redis
|
|
87
|
+
Requires-Dist: django-redis>=5.4.0; extra == "redis"
|
|
78
88
|
Dynamic: license-file
|
|
79
89
|
|
|
80
90
|
Open API Framework
|
|
81
91
|
==================
|
|
82
92
|
|
|
83
|
-
:Version: 0.
|
|
93
|
+
:Version: 0.12.0
|
|
84
94
|
:Source: https://github.com/maykinmedia/open-api-framework
|
|
85
95
|
:Keywords: metapackage, dependencies
|
|
86
96
|
|
|
@@ -138,6 +138,161 @@ DATABASES = {
|
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
+
DATABASES["default"]["CONN_MAX_AGE"] = config(
|
|
142
|
+
"DB_CONN_MAX_AGE",
|
|
143
|
+
default=0,
|
|
144
|
+
# The default is set to `60` in the docker settings, so that's what is mentioned
|
|
145
|
+
# in the help text as well
|
|
146
|
+
help_text=(
|
|
147
|
+
"The lifetime of a database connection, as an integer of seconds. "
|
|
148
|
+
"Use 0 to close database connections at the end of each request — Django’s historical behavior. "
|
|
149
|
+
"This setting is ignored if connection pooling is used. Defaults to: ``60``."
|
|
150
|
+
),
|
|
151
|
+
group="Database",
|
|
152
|
+
auto_display_default=False,
|
|
153
|
+
cast=lambda x: int(x) if x != "None" else None,
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
# https://docs.djangoproject.com/en/5.2/ref/databases/#connection-pool
|
|
157
|
+
# https://www.psycopg.org/psycopg3/docs/api/pool.html#the-connectionpool-class
|
|
158
|
+
|
|
159
|
+
DB_POOL_ENABLED = config(
|
|
160
|
+
"DB_POOL_ENABLED",
|
|
161
|
+
default=False,
|
|
162
|
+
help_text=("Whether to use connection pooling."),
|
|
163
|
+
group="Database",
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
DB_POOL_MIN_SIZE = config(
|
|
167
|
+
"DB_POOL_MIN_SIZE",
|
|
168
|
+
default=4,
|
|
169
|
+
help_text=(
|
|
170
|
+
"The minimum number of connection the pool will hold. "
|
|
171
|
+
"The pool will actively try to create new connections if some are lost (closed, broken) "
|
|
172
|
+
"and will try to never go below min_size."
|
|
173
|
+
),
|
|
174
|
+
group="Database",
|
|
175
|
+
cast=int,
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
DB_POOL_MAX_SIZE = config(
|
|
179
|
+
"DB_POOL_MAX_SIZE",
|
|
180
|
+
default=None,
|
|
181
|
+
help_text=(
|
|
182
|
+
"The maximum number of connections the pool will hold. "
|
|
183
|
+
"If None, or equal to min_size, the pool will not grow or shrink. "
|
|
184
|
+
"If larger than min_size, the pool can grow if more than min_size connections "
|
|
185
|
+
"are requested at the same time and will shrink back after the extra connections "
|
|
186
|
+
"have been unused for more than max_idle seconds."
|
|
187
|
+
),
|
|
188
|
+
group="Database",
|
|
189
|
+
cast=lambda x: int(x) if x is not None else None,
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
DB_POOL_TIMEOUT = config(
|
|
193
|
+
"DB_POOL_TIMEOUT",
|
|
194
|
+
default=30,
|
|
195
|
+
help_text=(
|
|
196
|
+
"The default maximum time in seconds that a client can wait "
|
|
197
|
+
"to receive a connection from the pool (using connection() or getconn()). "
|
|
198
|
+
"Note that these methods allow to override the timeout default."
|
|
199
|
+
),
|
|
200
|
+
group="Database",
|
|
201
|
+
cast=int,
|
|
202
|
+
)
|
|
203
|
+
|
|
204
|
+
DB_POOL_MAX_WAITING = config(
|
|
205
|
+
"DB_POOL_MAX_WAITING",
|
|
206
|
+
default=0,
|
|
207
|
+
help_text=(
|
|
208
|
+
"Maximum number of requests that can be queued to the pool, "
|
|
209
|
+
"after which new requests will fail, raising TooManyRequests. 0 means no queue limit."
|
|
210
|
+
),
|
|
211
|
+
group="Database",
|
|
212
|
+
cast=int,
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
DB_POOL_MAX_LIFETIME = config(
|
|
216
|
+
"DB_POOL_MAX_LIFETIME",
|
|
217
|
+
default=60 * 60,
|
|
218
|
+
help_text=(
|
|
219
|
+
"The maximum lifetime of a connection in the pool, in seconds. "
|
|
220
|
+
"Connections used for longer get closed and replaced by a new one. "
|
|
221
|
+
"The amount is reduced by a random 10% to avoid mass eviction"
|
|
222
|
+
),
|
|
223
|
+
group="Database",
|
|
224
|
+
cast=int,
|
|
225
|
+
)
|
|
226
|
+
|
|
227
|
+
DB_POOL_MAX_IDLE = config(
|
|
228
|
+
"DB_POOL_MAX_IDLE",
|
|
229
|
+
default=10 * 60,
|
|
230
|
+
help_text=(
|
|
231
|
+
"Maximum time, in seconds, that a connection can stay unused in the pool "
|
|
232
|
+
"before being closed, and the pool shrunk. This only happens to "
|
|
233
|
+
"connections more than min_size, if max_size allowed the pool to grow."
|
|
234
|
+
),
|
|
235
|
+
group="Database",
|
|
236
|
+
cast=int,
|
|
237
|
+
)
|
|
238
|
+
|
|
239
|
+
DB_POOL_RECONNECT_TIMEOUT = config(
|
|
240
|
+
"DB_POOL_RECONNECT_TIMEOUT",
|
|
241
|
+
default=5 * 60,
|
|
242
|
+
help_text=(
|
|
243
|
+
"Maximum time, in seconds, the pool will try to create a connection. "
|
|
244
|
+
"If a connection attempt fails, the pool will try to reconnect a few times, "
|
|
245
|
+
"using an exponential backoff and some random factor to avoid mass attempts. "
|
|
246
|
+
"If repeated attempts fail, after reconnect_timeout second the connection "
|
|
247
|
+
"attempt is aborted and the reconnect_failed() callback invoked."
|
|
248
|
+
),
|
|
249
|
+
group="Database",
|
|
250
|
+
cast=int,
|
|
251
|
+
)
|
|
252
|
+
|
|
253
|
+
DB_POOL_NUM_WORKERS = config(
|
|
254
|
+
"DB_POOL_NUM_WORKERS",
|
|
255
|
+
default=3,
|
|
256
|
+
help_text=(
|
|
257
|
+
"Number of background worker threads used to maintain the pool state. "
|
|
258
|
+
"Background workers are used for example to create new connections and "
|
|
259
|
+
"to clean up connections when they are returned to the pool."
|
|
260
|
+
),
|
|
261
|
+
group="Database",
|
|
262
|
+
cast=int,
|
|
263
|
+
)
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
if DB_POOL_ENABLED:
|
|
267
|
+
# FIXME Workaround for https://github.com/elastic/apm-agent-python/issues/2094
|
|
268
|
+
# apm-agent-python does not instrument ConnectionPool yet
|
|
269
|
+
import psycopg
|
|
270
|
+
|
|
271
|
+
class WrapperConnectionClass(psycopg.Connection):
|
|
272
|
+
@classmethod
|
|
273
|
+
def connect(
|
|
274
|
+
cls,
|
|
275
|
+
conninfo: str = "",
|
|
276
|
+
**kwargs,
|
|
277
|
+
) -> "psycopg.Connection[psycopg.rows.TupleRow]":
|
|
278
|
+
return psycopg.connect(conninfo, **kwargs)
|
|
279
|
+
|
|
280
|
+
DATABASES["default"]["OPTIONS"] = {
|
|
281
|
+
"pool": {
|
|
282
|
+
"min_size": DB_POOL_MIN_SIZE,
|
|
283
|
+
"max_size": DB_POOL_MAX_SIZE,
|
|
284
|
+
"timeout": DB_POOL_TIMEOUT,
|
|
285
|
+
"max_waiting": DB_POOL_MAX_WAITING,
|
|
286
|
+
"max_lifetime": DB_POOL_MAX_LIFETIME,
|
|
287
|
+
"max_idle": DB_POOL_MAX_IDLE,
|
|
288
|
+
"reconnect_timeout": DB_POOL_RECONNECT_TIMEOUT,
|
|
289
|
+
"num_workers": DB_POOL_NUM_WORKERS,
|
|
290
|
+
"connection_class": WrapperConnectionClass,
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
# Cannot use a `CONN_MAX_AGE` other than 0 with connection pooling
|
|
294
|
+
DATABASES["default"]["CONN_MAX_AGE"] = 0
|
|
295
|
+
|
|
141
296
|
# keep the current schema for now and deal with migrating to BigAutoField later, see
|
|
142
297
|
# https://docs.djangoproject.com/en/4.0/ref/settings/#std:setting-DEFAULT_AUTO_FIELD
|
|
143
298
|
DEFAULT_AUTO_FIELD = "django.db.models.AutoField"
|
{open_api_framework-0.10.3 → open_api_framework-0.12.0/open_api_framework.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: open-api-framework
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.12.0
|
|
4
4
|
Summary: A metapackage for registration components, that bundles the dependencies shared between these components and provides generic settings
|
|
5
5
|
Author-email: Maykin Media <support@maykinmedia.nl>
|
|
6
6
|
License: Copyright © Maykin 2024
|
|
@@ -30,30 +30,19 @@ Description-Content-Type: text/x-rst
|
|
|
30
30
|
License-File: LICENSE
|
|
31
31
|
Requires-Dist: django>=5.2
|
|
32
32
|
Requires-Dist: django-axes>=6.5.1
|
|
33
|
-
Requires-Dist: django-cors-headers>=4.4.0
|
|
34
|
-
Requires-Dist: django-markup>=1.8.1
|
|
35
33
|
Requires-Dist: django-jsonform>=2.22.0
|
|
36
34
|
Requires-Dist: django-log-outgoing-requests>=0.6.1
|
|
37
35
|
Requires-Dist: django-admin-index>=3.1.0
|
|
38
|
-
Requires-Dist: django-redis>=5.4.0
|
|
39
36
|
Requires-Dist: djangorestframework>=3.15.2
|
|
40
|
-
Requires-Dist: djangorestframework-gis>=1.0
|
|
41
37
|
Requires-Dist: django-filter>=24.2
|
|
42
38
|
Requires-Dist: drf-spectacular[sidecar]>=0.27.2
|
|
43
|
-
Requires-Dist: django-csp>=3.8
|
|
44
|
-
Requires-Dist: djangorestframework-inclusions>=1.2.0
|
|
45
|
-
Requires-Dist: commonground-api-common>=2.1.2
|
|
46
39
|
Requires-Dist: mozilla-django-oidc-db>=0.19.0
|
|
47
|
-
Requires-Dist:
|
|
48
|
-
Requires-Dist: bleach>=6.1.0
|
|
40
|
+
Requires-Dist: psycopg[binary]>=3.2.9
|
|
49
41
|
Requires-Dist: python-dotenv>=1.0.0
|
|
50
42
|
Requires-Dist: python-decouple>=3.8
|
|
51
43
|
Requires-Dist: requests>=2.32.3
|
|
52
|
-
Requires-Dist: uwsgi>=2.0.23
|
|
53
44
|
Requires-Dist: sentry-sdk>=2.11.0
|
|
54
45
|
Requires-Dist: elastic-apm>=6.22.0
|
|
55
|
-
Requires-Dist: celery>=5.4.0
|
|
56
|
-
Requires-Dist: flower>=2.0.1
|
|
57
46
|
Requires-Dist: maykin-2fa>=1.0.1
|
|
58
47
|
Requires-Dist: django-setup-configuration>=0.1.0
|
|
59
48
|
Requires-Dist: django-sessionprofile>=3.0.0
|
|
@@ -75,12 +64,33 @@ Requires-Dist: sphinx-rtd-theme; extra == "docs"
|
|
|
75
64
|
Provides-Extra: release
|
|
76
65
|
Requires-Dist: bump-my-version; extra == "release"
|
|
77
66
|
Requires-Dist: twine; extra == "release"
|
|
67
|
+
Provides-Extra: celery
|
|
68
|
+
Requires-Dist: celery>=5.4.0; extra == "celery"
|
|
69
|
+
Requires-Dist: flower>=2.0.1; extra == "celery"
|
|
70
|
+
Provides-Extra: cors
|
|
71
|
+
Requires-Dist: django-cors-headers>=4.4.0; extra == "cors"
|
|
72
|
+
Provides-Extra: markup
|
|
73
|
+
Requires-Dist: django-markup>=1.8.1; extra == "markup"
|
|
74
|
+
Provides-Extra: geo
|
|
75
|
+
Requires-Dist: djangorestframework-gis>=1.0; extra == "geo"
|
|
76
|
+
Provides-Extra: csp
|
|
77
|
+
Requires-Dist: django-csp>=3.8; extra == "csp"
|
|
78
|
+
Provides-Extra: commonground
|
|
79
|
+
Requires-Dist: commonground-api-common>=2.7.0; extra == "commonground"
|
|
80
|
+
Provides-Extra: inclusions
|
|
81
|
+
Requires-Dist: djangorestframework-inclusions>=1.2.0; extra == "inclusions"
|
|
82
|
+
Provides-Extra: sanitization
|
|
83
|
+
Requires-Dist: bleach>=6.1.0; extra == "sanitization"
|
|
84
|
+
Provides-Extra: server
|
|
85
|
+
Requires-Dist: uwsgi>=2.0.23; extra == "server"
|
|
86
|
+
Provides-Extra: redis
|
|
87
|
+
Requires-Dist: django-redis>=5.4.0; extra == "redis"
|
|
78
88
|
Dynamic: license-file
|
|
79
89
|
|
|
80
90
|
Open API Framework
|
|
81
91
|
==================
|
|
82
92
|
|
|
83
|
-
:Version: 0.
|
|
93
|
+
:Version: 0.12.0
|
|
84
94
|
:Source: https://github.com/maykinmedia/open-api-framework
|
|
85
95
|
:Keywords: metapackage, dependencies
|
|
86
96
|
|
{open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework.egg-info/requires.txt
RENAMED
|
@@ -1,45 +1,65 @@
|
|
|
1
1
|
django>=5.2
|
|
2
2
|
django-axes>=6.5.1
|
|
3
|
-
django-cors-headers>=4.4.0
|
|
4
|
-
django-markup>=1.8.1
|
|
5
3
|
django-jsonform>=2.22.0
|
|
6
4
|
django-log-outgoing-requests>=0.6.1
|
|
7
5
|
django-admin-index>=3.1.0
|
|
8
|
-
django-redis>=5.4.0
|
|
9
6
|
djangorestframework>=3.15.2
|
|
10
|
-
djangorestframework-gis>=1.0
|
|
11
7
|
django-filter>=24.2
|
|
12
8
|
drf-spectacular[sidecar]>=0.27.2
|
|
13
|
-
django-csp>=3.8
|
|
14
|
-
djangorestframework-inclusions>=1.2.0
|
|
15
|
-
commonground-api-common>=2.1.2
|
|
16
9
|
mozilla-django-oidc-db>=0.19.0
|
|
17
|
-
|
|
18
|
-
bleach>=6.1.0
|
|
10
|
+
psycopg[binary]>=3.2.9
|
|
19
11
|
python-dotenv>=1.0.0
|
|
20
12
|
python-decouple>=3.8
|
|
21
13
|
requests>=2.32.3
|
|
22
|
-
uwsgi>=2.0.23
|
|
23
14
|
sentry-sdk>=2.11.0
|
|
24
15
|
elastic-apm>=6.22.0
|
|
25
|
-
celery>=5.4.0
|
|
26
|
-
flower>=2.0.1
|
|
27
16
|
maykin-2fa>=1.0.1
|
|
28
17
|
django-setup-configuration>=0.1.0
|
|
29
18
|
django-sessionprofile>=3.0.0
|
|
30
19
|
django-upgrade-check>=1.1.0
|
|
31
20
|
|
|
21
|
+
[celery]
|
|
22
|
+
celery>=5.4.0
|
|
23
|
+
flower>=2.0.1
|
|
24
|
+
|
|
25
|
+
[commonground]
|
|
26
|
+
commonground-api-common>=2.7.0
|
|
27
|
+
|
|
28
|
+
[cors]
|
|
29
|
+
django-cors-headers>=4.4.0
|
|
30
|
+
|
|
32
31
|
[coverage]
|
|
33
32
|
pytest-cov
|
|
34
33
|
|
|
34
|
+
[csp]
|
|
35
|
+
django-csp>=3.8
|
|
36
|
+
|
|
35
37
|
[docs]
|
|
36
38
|
sphinx
|
|
37
39
|
sphinx-rtd-theme
|
|
38
40
|
|
|
41
|
+
[geo]
|
|
42
|
+
djangorestframework-gis>=1.0
|
|
43
|
+
|
|
44
|
+
[inclusions]
|
|
45
|
+
djangorestframework-inclusions>=1.2.0
|
|
46
|
+
|
|
47
|
+
[markup]
|
|
48
|
+
django-markup>=1.8.1
|
|
49
|
+
|
|
50
|
+
[redis]
|
|
51
|
+
django-redis>=5.4.0
|
|
52
|
+
|
|
39
53
|
[release]
|
|
40
54
|
bump-my-version
|
|
41
55
|
twine
|
|
42
56
|
|
|
57
|
+
[sanitization]
|
|
58
|
+
bleach>=6.1.0
|
|
59
|
+
|
|
60
|
+
[server]
|
|
61
|
+
uwsgi>=2.0.23
|
|
62
|
+
|
|
43
63
|
[tests]
|
|
44
64
|
pytest
|
|
45
65
|
pytest-django
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "open-api-framework"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.12.0"
|
|
8
8
|
description = "A metapackage for registration components, that bundles the dependencies shared between these components and provides generic settings"
|
|
9
9
|
authors = [
|
|
10
10
|
{name = "Maykin Media", email = "support@maykinmedia.nl"}
|
|
@@ -27,30 +27,19 @@ requires-python = ">=3.12"
|
|
|
27
27
|
dependencies = [
|
|
28
28
|
"django>=5.2",
|
|
29
29
|
"django-axes>=6.5.1",
|
|
30
|
-
"django-cors-headers>=4.4.0",
|
|
31
|
-
"django-markup>=1.8.1",
|
|
32
30
|
"django-jsonform>=2.22.0",
|
|
33
31
|
"django-log-outgoing-requests>=0.6.1",
|
|
34
32
|
"django-admin-index>=3.1.0",
|
|
35
|
-
"django-redis>=5.4.0",
|
|
36
33
|
"djangorestframework>=3.15.2",
|
|
37
|
-
"djangorestframework-gis>=1.0",
|
|
38
34
|
"django-filter>=24.2",
|
|
39
35
|
"drf-spectacular[sidecar]>=0.27.2",
|
|
40
|
-
"django-csp>=3.8",
|
|
41
|
-
"djangorestframework-inclusions>=1.2.0",
|
|
42
|
-
"commonground-api-common>=2.1.2",
|
|
43
36
|
"mozilla-django-oidc-db>=0.19.0",
|
|
44
|
-
"
|
|
45
|
-
"bleach>=6.1.0",
|
|
37
|
+
"psycopg[binary]>=3.2.9",
|
|
46
38
|
"python-dotenv>=1.0.0",
|
|
47
39
|
"python-decouple>=3.8",
|
|
48
40
|
"requests>=2.32.3",
|
|
49
|
-
"uwsgi>=2.0.23",
|
|
50
41
|
"sentry-sdk>=2.11.0",
|
|
51
42
|
"elastic-apm>=6.22.0",
|
|
52
|
-
"celery>=5.4.0",
|
|
53
|
-
"flower>=2.0.1",
|
|
54
43
|
"maykin-2fa>=1.0.1",
|
|
55
44
|
"django-setup-configuration>=0.1.0",
|
|
56
45
|
"django-sessionprofile>=3.0.0",
|
|
@@ -85,6 +74,37 @@ release = [
|
|
|
85
74
|
"bump-my-version",
|
|
86
75
|
"twine",
|
|
87
76
|
]
|
|
77
|
+
celery = [
|
|
78
|
+
"celery>=5.4.0",
|
|
79
|
+
"flower>=2.0.1"
|
|
80
|
+
]
|
|
81
|
+
cors = [
|
|
82
|
+
"django-cors-headers>=4.4.0"
|
|
83
|
+
]
|
|
84
|
+
markup = [
|
|
85
|
+
"django-markup>=1.8.1"
|
|
86
|
+
]
|
|
87
|
+
geo = [
|
|
88
|
+
"djangorestframework-gis>=1.0"
|
|
89
|
+
]
|
|
90
|
+
csp = [
|
|
91
|
+
"django-csp>=3.8"
|
|
92
|
+
]
|
|
93
|
+
commonground = [
|
|
94
|
+
"commonground-api-common>=2.7.0"
|
|
95
|
+
]
|
|
96
|
+
inclusions = [
|
|
97
|
+
"djangorestframework-inclusions>=1.2.0"
|
|
98
|
+
]
|
|
99
|
+
sanitization = [
|
|
100
|
+
"bleach>=6.1.0"
|
|
101
|
+
]
|
|
102
|
+
server = [
|
|
103
|
+
"uwsgi>=2.0.23"
|
|
104
|
+
]
|
|
105
|
+
redis = [
|
|
106
|
+
"django-redis>=5.4.0"
|
|
107
|
+
]
|
|
88
108
|
|
|
89
109
|
[tool.setuptools.packages.find]
|
|
90
110
|
include = ["open_api_framework*"]
|
|
@@ -100,7 +120,7 @@ env = [
|
|
|
100
120
|
]
|
|
101
121
|
|
|
102
122
|
[tool.bumpversion]
|
|
103
|
-
current_version = "0.
|
|
123
|
+
current_version = "0.12.0"
|
|
104
124
|
files = [
|
|
105
125
|
{filename = "pyproject.toml"},
|
|
106
126
|
{filename = "README.rst"},
|
|
@@ -33,6 +33,16 @@ Database
|
|
|
33
33
|
* ``DB_PASSWORD``: password of the database user. Defaults to: ``testapp``.
|
|
34
34
|
* ``DB_HOST``: hostname of the PostgreSQL database. Defaults to ``db`` for the docker environment, otherwise defaults to ``localhost``.
|
|
35
35
|
* ``DB_PORT``: port number of the database. Defaults to: ``5432``.
|
|
36
|
+
* ``DB_CONN_MAX_AGE``: The lifetime of a database connection, as an integer of seconds. Use 0 to close database connections at the end of each request — Django’s historical behavior. This setting is ignored if connection pooling is used. Defaults to: ``60``.
|
|
37
|
+
* ``DB_POOL_ENABLED``: Whether to use connection pooling. Defaults to: ``False``.
|
|
38
|
+
* ``DB_POOL_MIN_SIZE``: The minimum number of connection the pool will hold. The pool will actively try to create new connections if some are lost (closed, broken) and will try to never go below min_size. Defaults to: ``4``.
|
|
39
|
+
* ``DB_POOL_MAX_SIZE``: The maximum number of connections the pool will hold. If None, or equal to min_size, the pool will not grow or shrink. If larger than min_size, the pool can grow if more than min_size connections are requested at the same time and will shrink back after the extra connections have been unused for more than max_idle seconds. Defaults to: ``None``.
|
|
40
|
+
* ``DB_POOL_TIMEOUT``: The default maximum time in seconds that a client can wait to receive a connection from the pool (using connection() or getconn()). Note that these methods allow to override the timeout default. Defaults to: ``30``.
|
|
41
|
+
* ``DB_POOL_MAX_WAITING``: Maximum number of requests that can be queued to the pool, after which new requests will fail, raising TooManyRequests. 0 means no queue limit. Defaults to: ``0``.
|
|
42
|
+
* ``DB_POOL_MAX_LIFETIME``: The maximum lifetime of a connection in the pool, in seconds. Connections used for longer get closed and replaced by a new one. The amount is reduced by a random 10% to avoid mass eviction. Defaults to: ``3600``.
|
|
43
|
+
* ``DB_POOL_MAX_IDLE``: Maximum time, in seconds, that a connection can stay unused in the pool before being closed, and the pool shrunk. This only happens to connections more than min_size, if max_size allowed the pool to grow. Defaults to: ``600``.
|
|
44
|
+
* ``DB_POOL_RECONNECT_TIMEOUT``: Maximum time, in seconds, the pool will try to create a connection. If a connection attempt fails, the pool will try to reconnect a few times, using an exponential backoff and some random factor to avoid mass attempts. If repeated attempts fail, after reconnect_timeout second the connection attempt is aborted and the reconnect_failed() callback invoked. Defaults to: ``300``.
|
|
45
|
+
* ``DB_POOL_NUM_WORKERS``: Number of background worker threads used to maintain the pool state. Background workers are used for example to create new connections and to clean up connections when they are returned to the pool. Defaults to: ``3``.
|
|
36
46
|
|
|
37
47
|
|
|
38
48
|
Logging
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/context_processors.py
RENAMED
|
File without changes
|
{open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/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
|
{open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/templatetags/__init__.py
RENAMED
|
File without changes
|
{open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework/templatetags/doc_tags.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{open_api_framework-0.10.3 → open_api_framework-0.12.0}/open_api_framework.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|