diff --git a/dejacode/settings.py b/dejacode/settings.py index 4ccb29df..c9bc11d9 100644 --- a/dejacode/settings.py +++ b/dejacode/settings.py @@ -473,6 +473,11 @@ def gettext_noop(s): "SSL": env.bool("DEJACODE_RQ_REDIS_SSL", default=False), }, } +# COMMIT_MODE "on_db_commit" enqueues jobs through transaction.on_commit(), +# so a job is only picked up by a worker once its transaction is committed. +RQ = { + "COMMIT_MODE": "on_db_commit", +} # Cron jobs (scheduler) daily_at_3am = "0 3 * * *" @@ -503,6 +508,11 @@ def get_fake_redis_connection(config, use_strict_redis): connection_utils.get_redis_connection = get_fake_redis_connection + # Default COMMIT_MODE is "on_db_commit": jobs are enqueued through + # transaction.on_commit(), which never fires inside a TestCase since its + # wrapping transaction is always rolled back. "auto" enqueues immediately. + RQ["COMMIT_MODE"] = "auto" + DEJACODE_ASYNC = env.bool("DEJACODE_ASYNC", default=False) if not DEJACODE_ASYNC or IS_TESTS: diff --git a/pyproject.toml b/pyproject.toml index 1ea026ba..75c02445 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ dependencies = [ # Django "django==6.1.1", "asgiref==3.12.1", - "typing_extensions==4.15.0", + "typing-extensions==4.16.0", "sqlparse==0.6.0", # Django apps "django-crispy-forms==2.7", @@ -69,7 +69,7 @@ dependencies = [ "qrcode==8.2", "pypng==0.20220715.0", # Database - "psycopg==3.3.4", + "psycopg==3.3.5", # Cache "redis==8.1.0", # Antivirus @@ -77,10 +77,10 @@ dependencies = [ # Testing "model_bakery==1.23.3", # Task queue - "rq==2.9.0", + "rq==2.12.0", "croniter==6.2.4", - "django-rq==3.2.2", - "fakeredis==2.36.2", + "django-rq==4.2.0", + "fakeredis==2.38.0", # Libs "certifi==2026.7.22", "urllib3==2.7.0", @@ -100,7 +100,7 @@ dependencies = [ "markdown==3.10.2", "bleach==6.4.0", "bleach_allowlist==1.0.3", - "webencodings==0.5.1", + "webencodings==0.6.1", # Authentication "oauthlib==3.3.1", "python3-openid==3.2.0", @@ -138,22 +138,22 @@ dependencies = [ "rpds-py==0.30.0", "attrs==25.4.0", # CycloneDX - "cyclonedx-python-lib==11.6.0", + "cyclonedx-python-lib==11.12.0", "sortedcontainers==2.4.0", "py-serializable==2.1.0", # CSAF "pydantic==2.12.5", "pydantic-core==2.41.5", - "typing-inspection==0.4.2", + "typing-inspection==0.4.4", "maturin==1.11.5", "setuptools-rust==1.12.0", "annotated-types==0.7.0", "semantic-version==2.10.0", # OpenVEX - "msgspec==0.20.0", + "msgspec==0.21.1", # OpenDocument Format "odfdo==3.22.0", - "lxml==6.1.1", + "lxml==6.1.3", ] [project.optional-dependencies] diff --git a/thirdparty/dist/click-8.4.2-py3-none-any.whl b/thirdparty/dist/click-8.4.2-py3-none-any.whl deleted file mode 100644 index aaeffdb3..00000000 Binary files a/thirdparty/dist/click-8.4.2-py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/crispy_bootstrap5-2026.3-py3-none-any.whl b/thirdparty/dist/crispy_bootstrap5-2026.3-py3-none-any.whl deleted file mode 100644 index 7f271b15..00000000 Binary files a/thirdparty/dist/crispy_bootstrap5-2026.3-py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/crispy_bootstrap5-2026.3-py3-none-any.whl.ABOUT b/thirdparty/dist/crispy_bootstrap5-2026.3-py3-none-any.whl.ABOUT deleted file mode 100644 index 821b6635..00000000 --- a/thirdparty/dist/crispy_bootstrap5-2026.3-py3-none-any.whl.ABOUT +++ /dev/null @@ -1,17 +0,0 @@ -about_resource: crispy_bootstrap5-2026.3-py3-none-any.whl -name: crispy-bootstrap5 -version: '2026.3' -download_url: https://files.pythonhosted.org/packages/9d/2d/93f78072f203aa28d961add6a130b929b47f7aa3fef6905898b4bb9a637d/crispy_bootstrap5-2026.3-py3-none-any.whl -package_url: pkg:pypi/crispy-bootstrap5@2026.3 -license_expression: mit AND unknown-license-reference -copyright: Copyright crispy-bootstrap5 project contributors -attribute: yes -checksum_md5: cfb86388b260ba60735c2d156ee26dcc -checksum_sha1: 065b9b385fdfad76a4c499771affa9328ff14370 -licenses: - - key: mit - name: MIT License - file: mit.LICENSE - - key: unknown-license-reference - name: Unknown License file reference - file: unknown-license-reference.LICENSE diff --git a/thirdparty/dist/cyclonedx_python_lib-11.12.0-py3-none-any.whl b/thirdparty/dist/cyclonedx_python_lib-11.12.0-py3-none-any.whl new file mode 100644 index 00000000..f2ba5ed0 Binary files /dev/null and b/thirdparty/dist/cyclonedx_python_lib-11.12.0-py3-none-any.whl differ diff --git a/thirdparty/dist/cyclonedx_python_lib-11.6.0-py3-none-any.whl b/thirdparty/dist/cyclonedx_python_lib-11.6.0-py3-none-any.whl deleted file mode 100644 index 49ec9b27..00000000 Binary files a/thirdparty/dist/cyclonedx_python_lib-11.6.0-py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/cyclonedx_python_lib-11.6.0-py3-none-any.whl.ABOUT b/thirdparty/dist/cyclonedx_python_lib-11.6.0-py3-none-any.whl.ABOUT deleted file mode 100644 index 8c4fc73f..00000000 --- a/thirdparty/dist/cyclonedx_python_lib-11.6.0-py3-none-any.whl.ABOUT +++ /dev/null @@ -1,15 +0,0 @@ -about_resource: cyclonedx_python_lib-11.6.0-py3-none-any.whl -name: cyclonedx-python-lib -version: 11.6.0 -download_url: https://files.pythonhosted.org/packages/c7/1b/534ad8a5e0f9470522811a8e5a9bc5d328fb7738ba29faf357467a4ef6d0/cyclonedx_python_lib-11.6.0-py3-none-any.whl -package_url: pkg:pypi/cyclonedx-python-lib@11.6.0 -license_expression: apache-2.0 -copyright: Copyright OWASP Foundation -attribute: yes -track_changes: yes -checksum_md5: 1f8a970a5307c851ff4ab8f2836db736 -checksum_sha1: 2272f348d83800d8450edbc7ce52974386e7f229 -licenses: - - key: apache-2.0 - name: Apache License 2.0 - file: apache-2.0.LICENSE diff --git a/thirdparty/dist/django-6.0.8-py3-none-any.whl b/thirdparty/dist/django-6.0.8-py3-none-any.whl deleted file mode 100644 index 3fbd9c58..00000000 Binary files a/thirdparty/dist/django-6.0.8-py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/django_crispy_forms-2.6-py3-none-any.whl b/thirdparty/dist/django_crispy_forms-2.6-py3-none-any.whl deleted file mode 100644 index 582dfd8b..00000000 Binary files a/thirdparty/dist/django_crispy_forms-2.6-py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/django_crispy_forms-2.6-py3-none-any.whl.ABOUT b/thirdparty/dist/django_crispy_forms-2.6-py3-none-any.whl.ABOUT deleted file mode 100644 index a9997c72..00000000 --- a/thirdparty/dist/django_crispy_forms-2.6-py3-none-any.whl.ABOUT +++ /dev/null @@ -1,13 +0,0 @@ -about_resource: django_crispy_forms-2.6-py3-none-any.whl -name: django-crispy-forms -version: '2.6' -download_url: https://files.pythonhosted.org/packages/96/e3/4c5915a732d6ab54da8871400852b67529518eedfb6b78ecf10bbccfcabb/django_crispy_forms-2.6-py3-none-any.whl -package_url: pkg:pypi/django-crispy-forms@2.6 -license_expression: unknown-license-reference -copyright: Copyright django-crispy-forms project contributors -checksum_md5: 6c45e06bdef246a29905cf96d1300036 -checksum_sha1: 2d5827887f31a44c0309278ca5fa2e7821063801 -licenses: - - key: unknown-license-reference - name: Unknown License file reference - file: unknown-license-reference.LICENSE diff --git a/thirdparty/dist/django_debug_toolbar-7.1.1-py3-none-any.whl b/thirdparty/dist/django_debug_toolbar-7.1.1-py3-none-any.whl deleted file mode 100644 index 342264a6..00000000 Binary files a/thirdparty/dist/django_debug_toolbar-7.1.1-py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/django_filter-25.2-py3-none-any.whl b/thirdparty/dist/django_filter-25.2-py3-none-any.whl deleted file mode 100644 index 40875a3d..00000000 Binary files a/thirdparty/dist/django_filter-25.2-py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/django_filter-25.2-py3-none-any.whl.ABOUT b/thirdparty/dist/django_filter-25.2-py3-none-any.whl.ABOUT deleted file mode 100644 index edf6261a..00000000 --- a/thirdparty/dist/django_filter-25.2-py3-none-any.whl.ABOUT +++ /dev/null @@ -1,14 +0,0 @@ -about_resource: django_filter-25.2-py3-none-any.whl -name: django-filter -version: '25.2' -download_url: https://files.pythonhosted.org/packages/c1/40/6a02495c5658beb1f31eb09952d8aa12ef3c2a66342331ce3a35f7132439/django_filter-25.2-py3-none-any.whl -package_url: pkg:pypi/django-filter@25.2 -license_expression: bsd-new -copyright: Copyright django-filter project contributors -attribute: yes -checksum_md5: c45048f113d2281c952c3b9b253e05ae -checksum_sha1: 3c7b6ad1ef39070b64ce15f6a35bc59dd5fda858 -licenses: - - key: bsd-new - name: BSD-3-Clause - file: bsd-new.LICENSE diff --git a/thirdparty/dist/django_guardian-3.3.2-py3-none-any.whl b/thirdparty/dist/django_guardian-3.3.2-py3-none-any.whl deleted file mode 100644 index 3686787f..00000000 Binary files a/thirdparty/dist/django_guardian-3.3.2-py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/django_otp-1.7.0-py3-none-any.whl b/thirdparty/dist/django_otp-1.7.0-py3-none-any.whl deleted file mode 100644 index 0118f0da..00000000 Binary files a/thirdparty/dist/django_otp-1.7.0-py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/django_otp-1.7.0-py3-none-any.whl.ABOUT b/thirdparty/dist/django_otp-1.7.0-py3-none-any.whl.ABOUT deleted file mode 100644 index f3c482f7..00000000 --- a/thirdparty/dist/django_otp-1.7.0-py3-none-any.whl.ABOUT +++ /dev/null @@ -1,13 +0,0 @@ -about_resource: django_otp-1.7.0-py3-none-any.whl -name: django-otp -version: 1.7.0 -download_url: https://files.pythonhosted.org/packages/9c/f0/75ee6cdcf916b7c67dffa87aecdd173e4d68e456839dd53b9313e9cc9201/django_otp-1.7.0-py3-none-any.whl -package_url: pkg:pypi/django-otp@1.7.0 -license_expression: unlicense -copyright: Copyright django-otp project contributors -checksum_md5: dc77d137ff8501a161a02b3710f7b9c4 -checksum_sha1: dd03964929aaf7bc89a2b9f8a3410e96c66cd958 -licenses: - - key: unlicense - name: Unlicense - file: unlicense.LICENSE diff --git a/thirdparty/dist/django_rq-3.2.2-py3-none-any.whl b/thirdparty/dist/django_rq-3.2.2-py3-none-any.whl deleted file mode 100644 index 1ee73a15..00000000 Binary files a/thirdparty/dist/django_rq-3.2.2-py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/django_rq-3.2.2-py3-none-any.whl.ABOUT b/thirdparty/dist/django_rq-3.2.2-py3-none-any.whl.ABOUT deleted file mode 100644 index 80db80c3..00000000 --- a/thirdparty/dist/django_rq-3.2.2-py3-none-any.whl.ABOUT +++ /dev/null @@ -1,17 +0,0 @@ -about_resource: django_rq-3.2.2-py3-none-any.whl -name: django-rq -version: 3.2.2 -download_url: https://files.pythonhosted.org/packages/e8/dc/c6c9b193b8d66b252206e77d6cfdf93724e48ebe5e86e6d70542de9064d5/django_rq-3.2.2-py3-none-any.whl -package_url: pkg:pypi/django-rq@3.2.2 -license_expression: mit AND unknown-license-reference -copyright: Copyright django-rq project contributors -attribute: yes -checksum_md5: d7f95462e65e3d06d6434ef2601002be -checksum_sha1: 8444fa3da4151ed48765630b1f857948ae221b8a -licenses: - - key: mit - name: MIT License - file: mit.LICENSE - - key: unknown-license-reference - name: Unknown License file reference - file: unknown-license-reference.LICENSE diff --git a/thirdparty/dist/django_rq-4.2.0-py3-none-any.whl b/thirdparty/dist/django_rq-4.2.0-py3-none-any.whl new file mode 100644 index 00000000..9d7777a6 Binary files /dev/null and b/thirdparty/dist/django_rq-4.2.0-py3-none-any.whl differ diff --git a/thirdparty/dist/fakeredis-2.36.2-py3-none-any.whl b/thirdparty/dist/fakeredis-2.36.2-py3-none-any.whl deleted file mode 100644 index 35d7a637..00000000 Binary files a/thirdparty/dist/fakeredis-2.36.2-py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/fakeredis-2.38.0-py3-none-any.whl b/thirdparty/dist/fakeredis-2.38.0-py3-none-any.whl new file mode 100644 index 00000000..b71d4646 Binary files /dev/null and b/thirdparty/dist/fakeredis-2.38.0-py3-none-any.whl differ diff --git a/thirdparty/dist/lxml-6.1.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl b/thirdparty/dist/lxml-6.1.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl deleted file mode 100644 index 8b37c5cd..00000000 Binary files a/thirdparty/dist/lxml-6.1.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl and /dev/null differ diff --git a/thirdparty/dist/lxml-6.1.1-cp314-cp314-macosx_10_15_universal2.whl b/thirdparty/dist/lxml-6.1.3-cp314-cp314-macosx_10_15_universal2.whl similarity index 53% rename from thirdparty/dist/lxml-6.1.1-cp314-cp314-macosx_10_15_universal2.whl rename to thirdparty/dist/lxml-6.1.3-cp314-cp314-macosx_10_15_universal2.whl index 60a575c8..0cd3f07e 100644 Binary files a/thirdparty/dist/lxml-6.1.1-cp314-cp314-macosx_10_15_universal2.whl and b/thirdparty/dist/lxml-6.1.3-cp314-cp314-macosx_10_15_universal2.whl differ diff --git a/thirdparty/dist/lxml-6.1.3-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl b/thirdparty/dist/lxml-6.1.3-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl new file mode 100644 index 00000000..4593b21b Binary files /dev/null and b/thirdparty/dist/lxml-6.1.3-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl differ diff --git a/thirdparty/dist/msgspec-0.20.0.tar.gz b/thirdparty/dist/msgspec-0.20.0.tar.gz deleted file mode 100644 index 884d5155..00000000 Binary files a/thirdparty/dist/msgspec-0.20.0.tar.gz and /dev/null differ diff --git a/thirdparty/dist/msgspec-0.20.0.tar.gz.ABOUT b/thirdparty/dist/msgspec-0.20.0.tar.gz.ABOUT deleted file mode 100644 index b8c32f8d..00000000 --- a/thirdparty/dist/msgspec-0.20.0.tar.gz.ABOUT +++ /dev/null @@ -1,127 +0,0 @@ -about_resource: msgspec-0.20.0.tar.gz -name: msgspec -version: 0.20.0 -download_url: https://files.pythonhosted.org/packages/ea/9c/bfbd12955a49180cbd234c5d29ec6f74fe641698f0cd9df154a854fc8a15/msgspec-0.20.0.tar.gz -description: | - A fast serialization and validation library, with builtin support for JSON, MessagePack, YAML, and TOML. -

- - msgspec - -

- -
- - [![CI](https://github.com/jcrist/msgspec/actions/workflows/ci.yml/badge.svg)](https://github.com/jcrist/msgspec/actions/workflows/ci.yml) - [![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://jcristharif.com/msgspec/) - [![License](https://img.shields.io/github/license/jcrist/msgspec.svg)](https://github.com/jcrist/msgspec/blob/main/LICENSE) - [![PyPI Version](https://img.shields.io/pypi/v/msgspec.svg)](https://pypi.org/project/msgspec/) - [![Conda Version](https://img.shields.io/conda/vn/conda-forge/msgspec.svg)](https://anaconda.org/conda-forge/msgspec) - [![Code Coverage](https://codecov.io/gh/jcrist/msgspec/branch/main/graph/badge.svg)](https://app.codecov.io/gh/jcrist/msgspec) - -
- - `msgspec` is a *fast* serialization and validation library, with builtin - support for [JSON](https://json.org), [MessagePack](https://msgpack.org), - [YAML](https://yaml.org), and [TOML](https://toml.io/en/). It features: - - - 🚀 **High performance encoders/decoders** for common protocols. The JSON and - MessagePack implementations regularly - [benchmark](https://jcristharif.com/msgspec/benchmarks.html) as the fastest - options for Python. - - - 🎉 **Support for a wide variety of Python types**. Additional types may be - supported through - [extensions](https://jcristharif.com/msgspec/extending.html). - - - 🔍 **Zero-cost schema validation** using familiar Python type annotations. In - [benchmarks](https://jcristharif.com/msgspec/benchmarks.html) `msgspec` - decodes *and* validates JSON faster than - [orjson](https://github.com/ijl/orjson) can decode it alone. - - - ✨ **A speedy Struct type** for representing structured data. If you already - use [dataclasses](https://docs.python.org/3/library/dataclasses.html) or - [attrs](https://www.attrs.org/en/stable/), - [structs](https://jcristharif.com/msgspec/structs.html) should feel familiar. - However, they're - [5-60x faster](https://jcristharif.com/msgspec/benchmarks.html#structs) - for common operations. - - All of this is included in a - [lightweight library](https://jcristharif.com/msgspec/benchmarks.html#library-size) - with no required dependencies. - - --- - - `msgspec` may be used for serialization alone, as a faster JSON or - MessagePack library. For the greatest benefit though, we recommend using - `msgspec` to handle the full serialization & validation workflow: - - **Define** your message schemas using standard Python type annotations. - - ```python - >>> import msgspec - - >>> class User(msgspec.Struct): - ... """A new type describing a User""" - ... name: str - ... groups: set[str] = set() - ... email: str | None = None - ``` - - **Encode** messages as JSON, or one of the many other supported protocols. - - ```python - >>> alice = User("alice", groups={"admin", "engineering"}) - - >>> alice - User(name='alice', groups={"admin", "engineering"}, email=None) - - >>> msg = msgspec.json.encode(alice) - - >>> msg - b'{"name":"alice","groups":["admin","engineering"],"email":null}' - ``` - - **Decode** messages back into Python objects, with optional schema validation. - - ```python - >>> msgspec.json.decode(msg, type=User) - User(name='alice', groups={"admin", "engineering"}, email=None) - - >>> msgspec.json.decode(b'{"name":"bob","groups":[123]}', type=User) - Traceback (most recent call last): - File "", line 1, in - msgspec.ValidationError: Expected `str`, got `int` - at `$.groups[0]` - ``` - - `msgspec` is designed to be as performant as possible, while retaining some of - the nicities of validation libraries like - [pydantic](https://docs.pydantic.dev/latest/). For supported types, - encoding/decoding a message with `msgspec` can be - [~10-80x faster than alternative libraries](https://jcristharif.com/msgspec/benchmarks.html). - -

- - - -

- - See [the documentation](https://jcristharif.com/msgspec/) for more information. - - - ## LICENSE - - New BSD. See the - [License File](https://github.com/jcrist/msgspec/blob/main/LICENSE). -homepage_url: https://jcristharif.com/msgspec/ -package_url: pkg:pypi/msgspec@0.20.0 -license_expression: bsd-new -copyright: Copyright Jim Crist-Harif -attribute: yes -checksum_md5: cbed0fb989c48199efdbe1fc8f89e1b4 -checksum_sha1: 8a9a5a04fa077c4012231e2788a638d664641f4f -licenses: - - key: bsd-new - name: BSD-3-Clause - file: bsd-new.LICENSE diff --git a/thirdparty/dist/msgspec-0.21.1-cp314-cp314-macosx_11_0_arm64.whl b/thirdparty/dist/msgspec-0.21.1-cp314-cp314-macosx_11_0_arm64.whl new file mode 100644 index 00000000..429bec8b Binary files /dev/null and b/thirdparty/dist/msgspec-0.21.1-cp314-cp314-macosx_11_0_arm64.whl differ diff --git a/thirdparty/dist/msgspec-0.21.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl b/thirdparty/dist/msgspec-0.21.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl new file mode 100644 index 00000000..e583f350 Binary files /dev/null and b/thirdparty/dist/msgspec-0.21.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl differ diff --git a/thirdparty/dist/psycopg-3.3.4-py3-none-any.whl b/thirdparty/dist/psycopg-3.3.5-py3-none-any.whl similarity index 62% rename from thirdparty/dist/psycopg-3.3.4-py3-none-any.whl rename to thirdparty/dist/psycopg-3.3.5-py3-none-any.whl index dd7a5098..d28ded9e 100644 Binary files a/thirdparty/dist/psycopg-3.3.4-py3-none-any.whl and b/thirdparty/dist/psycopg-3.3.5-py3-none-any.whl differ diff --git a/thirdparty/dist/rq-2.10.0-py3-none-any.whl b/thirdparty/dist/rq-2.12.0-py3-none-any.whl similarity index 57% rename from thirdparty/dist/rq-2.10.0-py3-none-any.whl rename to thirdparty/dist/rq-2.12.0-py3-none-any.whl index 16ba7bab..c5c7c0c8 100644 Binary files a/thirdparty/dist/rq-2.10.0-py3-none-any.whl and b/thirdparty/dist/rq-2.12.0-py3-none-any.whl differ diff --git a/thirdparty/dist/rq-2.9.0-py3-none-any.whl b/thirdparty/dist/rq-2.9.0-py3-none-any.whl deleted file mode 100644 index e4bdd585..00000000 Binary files a/thirdparty/dist/rq-2.9.0-py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/typing_extensions-4.15.0-py3-none-any.whl b/thirdparty/dist/typing_extensions-4.15.0-py3-none-any.whl deleted file mode 100644 index 5fec9ca6..00000000 Binary files a/thirdparty/dist/typing_extensions-4.15.0-py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/typing_extensions-4.15.0-py3-none-any.whl.ABOUT b/thirdparty/dist/typing_extensions-4.15.0-py3-none-any.whl.ABOUT deleted file mode 100644 index 6198e934..00000000 --- a/thirdparty/dist/typing_extensions-4.15.0-py3-none-any.whl.ABOUT +++ /dev/null @@ -1,18 +0,0 @@ -about_resource: typing_extensions-4.15.0-py3-none-any.whl -name: typing-extensions -version: 4.15.0 -download_url: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl -package_url: pkg:pypi/typing-extensions@4.15.0 -license_expression: psf-2.0 AND unknown-license-reference -copyright: Copyright typing-extensions project contributors -attribute: yes -track_changes: yes -checksum_md5: 1394f56d85d87540f7907680572797e1 -checksum_sha1: 807e4d7ccad443949cbe10eae99937fd71c2b0c8 -licenses: - - key: psf-2.0 - name: PSF-2.0 - file: psf-2.0.LICENSE - - key: unknown-license-reference - name: Unknown License file reference - file: unknown-license-reference.LICENSE diff --git a/thirdparty/dist/typing_extensions-4.16.0-py3-none-any.whl b/thirdparty/dist/typing_extensions-4.16.0-py3-none-any.whl new file mode 100644 index 00000000..9f9aae6a Binary files /dev/null and b/thirdparty/dist/typing_extensions-4.16.0-py3-none-any.whl differ diff --git a/thirdparty/dist/typing_inspection-0.4.2-py3-none-any.whl b/thirdparty/dist/typing_inspection-0.4.2-py3-none-any.whl deleted file mode 100644 index db190df9..00000000 Binary files a/thirdparty/dist/typing_inspection-0.4.2-py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/typing_inspection-0.4.2-py3-none-any.whl.ABOUT b/thirdparty/dist/typing_inspection-0.4.2-py3-none-any.whl.ABOUT deleted file mode 100644 index 794e6edd..00000000 --- a/thirdparty/dist/typing_inspection-0.4.2-py3-none-any.whl.ABOUT +++ /dev/null @@ -1,38 +0,0 @@ -about_resource: typing_inspection-0.4.2-py3-none-any.whl -name: typing-inspection -version: 0.4.2 -download_url: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl -description: | - Runtime typing introspection tools - # typing-inspection - - [![CI](https://img.shields.io/github/actions/workflow/status/pydantic/typing-inspection/ci.yml?branch=main&logo=github&label=CI)](https://github.com/pydantic/typing-inspection/actions?query=event%3Apush+branch%3Amain+workflow%3ACI) - [![Coverage](https://coverage-badge.samuelcolvin.workers.dev/pydantic/typing-inspection.svg)](https://coverage-badge.samuelcolvin.workers.dev/redirect/pydantic/typing-inspection) - [![PyPI](https://img.shields.io/pypi/v/typing-inspection.svg)](https://pypi.org/project/typing-inspection/) - [![Versions](https://img.shields.io/pypi/pyversions/typing-inspection.svg)](https://github.com/pydantic/typing-inspection) - [![License](https://img.shields.io/github/license/pydantic/typing-inspection.svg)](https://github.com/pydantic/typing-inspection/blob/main/LICENSE) - [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) - - `typing-inspection` provides tools to inspect type annotations at runtime. - - ## Installation - - From [PyPI](https://pypi.org/project/typing-inspection/): - - ```bash - pip install typing-inspection - ``` - - The library can be imported from the `typing_inspection` module. -package_url: pkg:pypi/typing-inspection@0.4.2 -license_expression: mit AND unknown-license-reference -copyright: Copyright typing-inspection project contributors -attribute: yes -checksum_md5: 245304d58de21f4f0bdd15f7ea4b0ea8 -licenses: - - key: mit - name: MIT License - file: mit.LICENSE - - key: unknown-license-reference - name: Unknown License file reference - file: unknown-license-reference.LICENSE diff --git a/thirdparty/dist/typing_inspection-0.4.4-py3-none-any.whl b/thirdparty/dist/typing_inspection-0.4.4-py3-none-any.whl new file mode 100644 index 00000000..2a5ded83 Binary files /dev/null and b/thirdparty/dist/typing_inspection-0.4.4-py3-none-any.whl differ diff --git a/thirdparty/dist/webencodings-0.5.1-py2.py3-none-any.whl b/thirdparty/dist/webencodings-0.5.1-py2.py3-none-any.whl deleted file mode 100644 index 04b75063..00000000 Binary files a/thirdparty/dist/webencodings-0.5.1-py2.py3-none-any.whl and /dev/null differ diff --git a/thirdparty/dist/webencodings-0.5.1-py2.py3-none-any.whl.ABOUT b/thirdparty/dist/webencodings-0.5.1-py2.py3-none-any.whl.ABOUT deleted file mode 100644 index 89f8f3fc..00000000 --- a/thirdparty/dist/webencodings-0.5.1-py2.py3-none-any.whl.ABOUT +++ /dev/null @@ -1,20 +0,0 @@ -about_resource: webencodings-0.5.1-py2.py3-none-any.whl -name: webencodings -version: 0.5.1 -download_url: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl -description: Character encoding for the web. This is a Python implementation of the WHATWG Encoding - standard. -homepage_url: https://github.com/gsnedders/python-webencodings -package_url: pkg:pypi/webencodings@0.5.1 -license_expression: bsd-new -copyright: Copyright by Simon Sapin -notice_file: webencodings-0.5.1-py2.py3-none-any.whl.NOTICE -attribute: yes -owner: Geoffrey Sneddon -owner_url: https://github.com/gsnedders -checksum_md5: 36654e7c7b772611b536014fa9e6e918 -checksum_sha1: e3a9cf249ab74b68056e96e5968245291b40ca1a -licenses: - - key: bsd-new - name: BSD-3-Clause - file: bsd-new.LICENSE diff --git a/thirdparty/dist/webencodings-0.6.1-py3-none-any.whl b/thirdparty/dist/webencodings-0.6.1-py3-none-any.whl new file mode 100644 index 00000000..c1753804 Binary files /dev/null and b/thirdparty/dist/webencodings-0.6.1-py3-none-any.whl differ diff --git a/uv.lock b/uv.lock index 32a49724..355d92a9 100644 --- a/uv.lock +++ b/uv.lock @@ -136,14 +136,14 @@ wheels = [ [[package]] name = "crispy-bootstrap5" -version = "2026.3" +version = "2026.9" source = { registry = "thirdparty/dist" } dependencies = [ { name = "django" }, { name = "django-crispy-forms" }, ] wheels = [ - { path = "crispy_bootstrap5-2026.3-py3-none-any.whl" }, + { path = "crispy_bootstrap5-2026.9-py3-none-any.whl" }, ] [[package]] @@ -159,7 +159,7 @@ wheels = [ [[package]] name = "cyclonedx-python-lib" -version = "11.6.0" +version = "11.12.0" source = { registry = "thirdparty/dist" } dependencies = [ { name = "license-expression" }, @@ -168,7 +168,7 @@ dependencies = [ { name = "sortedcontainers" }, ] wheels = [ - { path = "cyclonedx_python_lib-11.6.0-py3-none-any.whl" }, + { path = "cyclonedx_python_lib-11.12.0-py3-none-any.whl" }, ] [[package]] @@ -312,29 +312,29 @@ requires-dist = [ { name = "clamd", specifier = "==1.0.2" }, { name = "click", specifier = "==8.3.3" }, { name = "confusable-homoglyphs", specifier = "==3.3.1" }, - { name = "crispy-bootstrap5", specifier = "==2026.3" }, + { name = "crispy-bootstrap5", specifier = "==2026.9" }, { name = "croniter", specifier = "==6.2.4" }, - { name = "cyclonedx-python-lib", specifier = "==11.6.0" }, + { name = "cyclonedx-python-lib", specifier = "==11.12.0" }, { name = "cython", specifier = "==3.2.4" }, { name = "defusedxml", specifier = "==0.7.1" }, - { name = "django", specifier = "==6.0.8" }, + { name = "django", specifier = "==6.1.1" }, { name = "django-altcha", specifier = "==1.0.0" }, { name = "django-auth-ldap", specifier = "==5.3.0" }, { name = "django-axes", specifier = "==8.3.1" }, - { name = "django-crispy-forms", specifier = "==2.6" }, - { name = "django-debug-toolbar", specifier = "==7.1.1" }, + { name = "django-crispy-forms", specifier = "==2.7" }, + { name = "django-debug-toolbar", specifier = "==8.0.0" }, { name = "django-environ", specifier = "==0.14.0" }, - { name = "django-filter", specifier = "==25.2" }, + { name = "django-filter", specifier = "==26.1" }, { name = "django-grappelli", specifier = "==5.0.0" }, - { name = "django-guardian", specifier = "==3.3.2" }, + { name = "django-guardian", specifier = "==3.5.0" }, { name = "django-notifications-patched", specifier = "==2.0.0" }, - { name = "django-otp", specifier = "==1.7.0" }, + { name = "django-otp", specifier = "==1.7.3" }, { name = "django-registration", specifier = "==5.2.1" }, - { name = "django-rq", specifier = "==3.2.2" }, - { name = "djangorestframework", specifier = "==3.16.1" }, + { name = "django-rq", specifier = "==4.2.0" }, + { name = "djangorestframework", specifier = "==3.18.1" }, { name = "drf-yasg", specifier = "==1.21.15" }, { name = "et-xmlfile", specifier = "==2.0.0" }, - { name = "fakeredis", specifier = "==2.36.2" }, + { name = "fakeredis", specifier = "==2.38.0" }, { name = "gunicorn", specifier = "==26.1.0" }, { name = "idna", specifier = "==3.19" }, { name = "inflection", specifier = "==0.5.1" }, @@ -343,12 +343,12 @@ requires-dist = [ { name = "jsonschema", specifier = "==4.26.0" }, { name = "jsonschema-specifications", specifier = "==2025.9.1" }, { name = "license-expression", specifier = "==30.4.4" }, - { name = "lxml", specifier = "==6.1.1" }, + { name = "lxml", specifier = "==6.1.3" }, { name = "markdown", specifier = "==3.10.2" }, { name = "markupsafe", specifier = "==3.0.3" }, { name = "maturin", specifier = "==1.11.5" }, { name = "model-bakery", specifier = "==1.23.3" }, - { name = "msgspec", specifier = "==0.20.0" }, + { name = "msgspec", specifier = "==0.21.1" }, { name = "natsort", specifier = "==8.4.0" }, { name = "oauthlib", specifier = "==3.3.1" }, { name = "odfdo", specifier = "==3.22.0" }, @@ -356,7 +356,7 @@ requires-dist = [ { name = "packageurl-python", specifier = "==0.17.6" }, { name = "packaging", specifier = "==26.2" }, { name = "pip", specifier = "==26.2.1" }, - { name = "psycopg", specifier = "==3.3.4" }, + { name = "psycopg", specifier = "==3.3.5" }, { name = "py-serializable", specifier = "==2.1.0" }, { name = "pyasn1", specifier = "==0.6.4" }, { name = "pyasn1-modules", specifier = "==0.4.2" }, @@ -376,7 +376,7 @@ requires-dist = [ { name = "requests", specifier = "==2.34.2" }, { name = "requests-oauthlib", specifier = "==2.0.0" }, { name = "rpds-py", specifier = "==0.30.0" }, - { name = "rq", specifier = "==2.9.0" }, + { name = "rq", specifier = "==2.12.0" }, { name = "ruff", marker = "extra == 'dev'", specifier = "==0.15.14" }, { name = "saneyaml", specifier = "==0.6.1" }, { name = "semantic-version", specifier = "==2.10.0" }, @@ -388,11 +388,11 @@ requires-dist = [ { name = "sqlparse", specifier = "==0.6.0" }, { name = "swapper", specifier = "==1.4.0" }, { name = "tblib", specifier = "==3.2.2" }, - { name = "typing-extensions", specifier = "==4.15.0" }, - { name = "typing-inspection", specifier = "==0.4.2" }, + { name = "typing-extensions", specifier = "==4.16.0" }, + { name = "typing-inspection", specifier = "==0.4.4" }, { name = "uritemplate", specifier = "==4.2.0" }, { name = "urllib3", specifier = "==2.7.0" }, - { name = "webencodings", specifier = "==0.5.1" }, + { name = "webencodings", specifier = "==0.6.1" }, { name = "wheel", specifier = "==0.48.0" }, { name = "xlsxwriter", specifier = "==3.2.9" }, { name = "zipp", specifier = "==4.1.0" }, @@ -401,14 +401,14 @@ provides-extras = ["dev"] [[package]] name = "django" -version = "6.0.8" +version = "6.1.1" source = { registry = "thirdparty/dist" } dependencies = [ { name = "asgiref" }, { name = "sqlparse" }, ] wheels = [ - { path = "django-6.0.8-py3-none-any.whl" }, + { path = "django-6.1.1-py3-none-any.whl" }, ] [[package]] @@ -449,25 +449,25 @@ wheels = [ [[package]] name = "django-crispy-forms" -version = "2.6" +version = "2.7" source = { registry = "thirdparty/dist" } dependencies = [ { name = "django" }, ] wheels = [ - { path = "django_crispy_forms-2.6-py3-none-any.whl" }, + { path = "django_crispy_forms-2.7-py3-none-any.whl" }, ] [[package]] name = "django-debug-toolbar" -version = "7.1.1" +version = "8.0.0" source = { registry = "thirdparty/dist" } dependencies = [ { name = "django" }, { name = "sqlparse" }, ] wheels = [ - { path = "django_debug_toolbar-7.1.1-py3-none-any.whl" }, + { path = "django_debug_toolbar-8.0.0-py3-none-any.whl" }, ] [[package]] @@ -480,13 +480,13 @@ wheels = [ [[package]] name = "django-filter" -version = "25.2" +version = "26.1" source = { registry = "thirdparty/dist" } dependencies = [ { name = "django" }, ] wheels = [ - { path = "django_filter-25.2-py3-none-any.whl" }, + { path = "django_filter-26.1-py3-none-any.whl" }, ] [[package]] @@ -499,13 +499,13 @@ wheels = [ [[package]] name = "django-guardian" -version = "3.3.2" +version = "3.5.0" source = { registry = "thirdparty/dist" } dependencies = [ { name = "django" }, ] wheels = [ - { path = "django_guardian-3.3.2-py3-none-any.whl" }, + { path = "django_guardian-3.5.0-py3-none-any.whl" }, ] [[package]] @@ -521,13 +521,13 @@ sdist = { path = "django-notifications-patched-2.0.0.tar.gz" } [[package]] name = "django-otp" -version = "1.7.0" +version = "1.7.3" source = { registry = "thirdparty/dist" } dependencies = [ { name = "django" }, ] wheels = [ - { path = "django_otp-1.7.0-py3-none-any.whl" }, + { path = "django_otp-1.7.3-py3-none-any.whl" }, ] [[package]] @@ -544,7 +544,7 @@ wheels = [ [[package]] name = "django-rq" -version = "3.2.2" +version = "4.2.0" source = { registry = "thirdparty/dist" } dependencies = [ { name = "django" }, @@ -552,18 +552,18 @@ dependencies = [ { name = "rq" }, ] wheels = [ - { path = "django_rq-3.2.2-py3-none-any.whl" }, + { path = "django_rq-4.2.0-py3-none-any.whl" }, ] [[package]] name = "djangorestframework" -version = "3.16.1" +version = "3.18.1" source = { registry = "thirdparty/dist" } dependencies = [ { name = "django" }, ] wheels = [ - { path = "djangorestframework-3.16.1-py3-none-any.whl" }, + { path = "djangorestframework-3.18.1-py3-none-any.whl" }, ] [[package]] @@ -593,14 +593,14 @@ wheels = [ [[package]] name = "fakeredis" -version = "2.36.2" +version = "2.38.0" source = { registry = "thirdparty/dist" } dependencies = [ { name = "redis" }, { name = "sortedcontainers" }, ] wheels = [ - { path = "fakeredis-2.36.2-py3-none-any.whl" }, + { path = "fakeredis-2.38.0-py3-none-any.whl" }, ] [[package]] @@ -687,11 +687,11 @@ wheels = [ [[package]] name = "lxml" -version = "6.1.1" +version = "6.1.3" source = { registry = "thirdparty/dist" } wheels = [ - { path = "lxml-6.1.1-cp314-cp314-macosx_10_15_universal2.whl" }, - { path = "lxml-6.1.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl" }, + { path = "lxml-6.1.3-cp314-cp314-macosx_10_15_universal2.whl" }, + { path = "lxml-6.1.3-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl" }, ] [[package]] @@ -735,9 +735,12 @@ wheels = [ [[package]] name = "msgspec" -version = "0.20.0" +version = "0.21.1" source = { registry = "thirdparty/dist" } -sdist = { path = "msgspec-0.20.0.tar.gz" } +wheels = [ + { path = "msgspec-0.21.1-cp314-cp314-macosx_11_0_arm64.whl" }, + { path = "msgspec-0.21.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl" }, +] [[package]] name = "natsort" @@ -803,10 +806,10 @@ wheels = [ [[package]] name = "psycopg" -version = "3.3.4" +version = "3.3.5" source = { registry = "thirdparty/dist" } wheels = [ - { path = "psycopg-3.3.4-py3-none-any.whl" }, + { path = "psycopg-3.3.5-py3-none-any.whl" }, ] [[package]] @@ -1006,7 +1009,7 @@ wheels = [ [[package]] name = "rq" -version = "2.9.0" +version = "2.12.0" source = { registry = "thirdparty/dist" } dependencies = [ { name = "click" }, @@ -1014,7 +1017,7 @@ dependencies = [ { name = "redis" }, ] wheels = [ - { path = "rq-2.9.0-py3-none-any.whl" }, + { path = "rq-2.12.0-py3-none-any.whl" }, ] [[package]] @@ -1119,21 +1122,21 @@ wheels = [ [[package]] name = "typing-extensions" -version = "4.15.0" +version = "4.16.0" source = { registry = "thirdparty/dist" } wheels = [ - { path = "typing_extensions-4.15.0-py3-none-any.whl" }, + { path = "typing_extensions-4.16.0-py3-none-any.whl" }, ] [[package]] name = "typing-inspection" -version = "0.4.2" +version = "0.4.4" source = { registry = "thirdparty/dist" } dependencies = [ { name = "typing-extensions" }, ] wheels = [ - { path = "typing_inspection-0.4.2-py3-none-any.whl" }, + { path = "typing_inspection-0.4.4-py3-none-any.whl" }, ] [[package]] @@ -1154,10 +1157,10 @@ wheels = [ [[package]] name = "webencodings" -version = "0.5.1" +version = "0.6.1" source = { registry = "thirdparty/dist" } wheels = [ - { path = "webencodings-0.5.1-py2.py3-none-any.whl" }, + { path = "webencodings-0.6.1-py3-none-any.whl" }, ] [[package]]