Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-dj-database-url for
openSUSE:Factory checked in at 2026-05-10 16:48:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-dj-database-url (Old)
and /work/SRC/openSUSE:Factory/.python-dj-database-url.new.1966 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-dj-database-url"
Sun May 10 16:48:18 2026 rev:13 rq:1352257 version:3.1.2
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-dj-database-url/python-dj-database-url.changes
2025-07-14 10:57:58.336226937 +0200
+++
/work/SRC/openSUSE:Factory/.python-dj-database-url.new.1966/python-dj-database-url.changes
2026-05-10 16:48:57.942354190 +0200
@@ -1,0 +2,19 @@
+Sun May 10 09:56:40 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 3.1.2:
+ * Bump cryptography from 46.0.3 to 46.0.5
+ * Bump django from 5.2.9 to 5.2.11
+ * Bump urllib3 from 2.6.2 to 2.6.3
+ * Bump wheel from 0.45.1 to 0.46.2
+- update to 3.1.1:
+ * Add tests directory to source distribution
+ * Switch linting and formatting from flake8+isort+black to
+ ruff; add typos to pre-commit; fix typos
+ * Add project URLs to pyproject.toml
+ * Update .pre-commit-config.yaml to use pinned version numbers.
+- update to 3.1.0:
+ * Update license to BSD-3-Clause in setup.py
+ * CI: run typechecks only once, not for each Django/Python
+ version
+
+-------------------------------------------------------------------
Old:
----
dj_database_url-3.0.1.tar.gz
New:
----
dj_database_url-3.1.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-dj-database-url.spec ++++++
--- /var/tmp/diff_new_pack.S7dxON/_old 2026-05-10 16:48:59.426414925 +0200
+++ /var/tmp/diff_new_pack.S7dxON/_new 2026-05-10 16:48:59.434415253 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-dj-database-url
#
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,22 +18,21 @@
%{?sle15_python_module_pythons}
Name: python-dj-database-url
-Version: 3.0.1
+Version: 3.1.2
Release: 0
Summary: Utility to use database URLs in Django applications
License: BSD-3-Clause
Group: Development/Languages/Python
URL: https://github.com/jazzband/dj-database-url
Source:
https://files.pythonhosted.org/packages/source/d/dj-database-url/dj_database_url-%{version}.tar.gz
-BuildRequires: %{python_module Django > 4.2}
-BuildRequires: %{python_module devel >= 3.9}
+BuildRequires: %{python_module Django >= 4.2}
+BuildRequires: %{python_module devel >= 3.10}
BuildRequires: %{python_module packaging}
BuildRequires: %{python_module pip}
-BuildRequires: %{python_module setuptools}
-BuildRequires: %{python_module wheel}
+BuildRequires: %{python_module uv-build >= 0.9.17}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: python-Django > 4.2
+Requires: python-Django >= 4.2
BuildArch: noarch
%python_subpackages
++++++ dj_database_url-3.0.1.tar.gz -> dj_database_url-3.1.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dj_database_url-3.0.1/PKG-INFO
new/dj_database_url-3.1.2/PKG-INFO
--- old/dj_database_url-3.0.1/PKG-INFO 2025-07-02 11:29:20.456748700 +0200
+++ new/dj_database_url-3.1.2/PKG-INFO 1970-01-01 01:00:00.000000000 +0100
@@ -1,19 +1,15 @@
Metadata-Version: 2.4
Name: dj-database-url
-Version: 3.0.1
+Version: 3.1.2
Summary: Use Database URLs in your Django Application.
-Home-page: https://github.com/jazzband/dj-database-url
-Author: Original Author: Kenneth Reitz, Maintained by: JazzBand Community
-License: BSD
-Project-URL: GitHub, https://github.com/jazzband/dj-database-url/
-Project-URL: Release log,
https://github.com/jazzband/dj-database-url/blob/master/CHANGELOG.md
-Platform: any
+Author: Jazzband community
+License-Expression: BSD-3-Clause
+License-File: LICENSE
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 4.2
-Classifier: Framework :: Django :: 5.0
-Classifier: Framework :: Django :: 5.1
Classifier: Framework :: Django :: 5.2
+Classifier: Framework :: Django :: 6
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
@@ -27,20 +23,13 @@
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
+Requires-Dist: django>=4.2
+Requires-Python: >=3.10
+Project-URL: Homepage, https://jazzband.co/projects/dj-database-url
+Project-URL: Changelog,
https://github.com/jazzband/dj-database-url/blob/master/CHANGELOG.md
+Project-URL: Funding,
https://psfmember.org/civicrm/contribute/transact/?reset=1&id=34
+Project-URL: Bug, https://github.com/jazzband/dj-database-url/issues
Description-Content-Type: text/x-rst
-License-File: LICENSE
-Requires-Dist: Django>=4.2
-Dynamic: author
-Dynamic: classifier
-Dynamic: description
-Dynamic: description-content-type
-Dynamic: home-page
-Dynamic: license
-Dynamic: license-file
-Dynamic: platform
-Dynamic: project-url
-Dynamic: requires-dist
-Dynamic: summary
DJ-Database-URL
~~~~~~~~~~~~~~~
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dj_database_url-3.0.1/dj_database_url/__init__.py
new/dj_database_url-3.1.2/dj_database_url/__init__.py
--- old/dj_database_url-3.0.1/dj_database_url/__init__.py 2025-07-02
11:29:13.000000000 +0200
+++ new/dj_database_url-3.1.2/dj_database_url/__init__.py 1970-01-01
01:00:00.000000000 +0100
@@ -1,32 +1,33 @@
import logging
import os
import urllib.parse as urlparse
-from typing import Any, Callable, Dict, List, Optional, TypedDict, Union
+from collections.abc import Callable
+from typing import Any, TypedDict
DEFAULT_ENV = "DATABASE_URL"
-ENGINE_SCHEMES: Dict[str, "Engine"] = {}
+ENGINE_SCHEMES: dict[str, "Engine"] = {}
# From https://docs.djangoproject.com/en/stable/ref/settings/#databases
class DBConfig(TypedDict, total=False):
ATOMIC_REQUESTS: bool
AUTOCOMMIT: bool
- CONN_MAX_AGE: Optional[int]
+ CONN_MAX_AGE: int | None
CONN_HEALTH_CHECKS: bool
DISABLE_SERVER_SIDE_CURSORS: bool
ENGINE: str
HOST: str
NAME: str
- OPTIONS: Dict[str, Any]
+ OPTIONS: dict[str, Any]
PASSWORD: str
- PORT: Union[str, int]
- TEST: Dict[str, Any]
+ PORT: str | int
+ TEST: dict[str, Any]
TIME_ZONE: str
USER: str
PostprocessCallable = Callable[[DBConfig], None]
-OptionType = Union[int, str, bool]
+OptionType = int | str | bool
class ParseError(ValueError):
@@ -38,7 +39,7 @@
class UnknownSchemeError(ValueError):
- def __init__(self, scheme: str) -> None:
+ def __init__(self, scheme: str):
self.scheme = scheme
def __str__(self) -> str:
@@ -59,7 +60,7 @@
self,
backend: str,
postprocess: PostprocessCallable = default_postprocess,
- ) -> None:
+ ):
self.backend = backend
self.postprocess = postprocess
@@ -125,13 +126,13 @@
def config(
env: str = DEFAULT_ENV,
- default: Optional[str] = None,
- engine: Optional[str] = None,
- conn_max_age: int = 0,
+ default: str | None = None,
+ engine: str | None = None,
+ conn_max_age: int | None = 0,
conn_health_checks: bool = False,
disable_server_side_cursors: bool = False,
ssl_require: bool = False,
- test_options: Optional[Dict[str, Any]] = None,
+ test_options: dict[str, Any] | None = None,
) -> DBConfig:
"""Returns configured DATABASE dictionary from DATABASE_URL."""
s = os.environ.get(env, default)
@@ -157,12 +158,12 @@
def parse(
url: str,
- engine: Optional[str] = None,
- conn_max_age: int = 0,
+ engine: str | None = None,
+ conn_max_age: int | None = 0,
conn_health_checks: bool = False,
disable_server_side_cursors: bool = False,
ssl_require: bool = False,
- test_options: Optional[Dict[str, Any]] = None,
+ test_options: dict[str, Any] | None = None,
) -> DBConfig:
"""Parses a database URL and returns configured DATABASE dictionary."""
settings = _convert_to_settings(
@@ -216,7 +217,7 @@
return parsed_config
-def _parse_option_values(values: List[str]) -> Union[OptionType,
List[OptionType]]:
+def _parse_option_values(values: list[str]) -> OptionType | list[OptionType]:
parsed_values = [_parse_value(v) for v in values]
return parsed_values[0] if len(parsed_values) == 1 else parsed_values
@@ -230,12 +231,12 @@
def _convert_to_settings(
- engine: Optional[str],
- conn_max_age: int,
+ engine: str | None,
+ conn_max_age: int | None,
conn_health_checks: bool,
disable_server_side_cursors: bool,
ssl_require: bool,
- test_options: Optional[dict[str, Any]],
+ test_options: dict[str, Any] | None,
) -> DBConfig:
settings: DBConfig = {
"CONN_MAX_AGE": conn_max_age,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/dj_database_url-3.0.1/dj_database_url.egg-info/PKG-INFO
new/dj_database_url-3.1.2/dj_database_url.egg-info/PKG-INFO
--- old/dj_database_url-3.0.1/dj_database_url.egg-info/PKG-INFO 2025-07-02
11:29:20.000000000 +0200
+++ new/dj_database_url-3.1.2/dj_database_url.egg-info/PKG-INFO 1970-01-01
01:00:00.000000000 +0100
@@ -1,321 +0,0 @@
-Metadata-Version: 2.4
-Name: dj-database-url
-Version: 3.0.1
-Summary: Use Database URLs in your Django Application.
-Home-page: https://github.com/jazzband/dj-database-url
-Author: Original Author: Kenneth Reitz, Maintained by: JazzBand Community
-License: BSD
-Project-URL: GitHub, https://github.com/jazzband/dj-database-url/
-Project-URL: Release log,
https://github.com/jazzband/dj-database-url/blob/master/CHANGELOG.md
-Platform: any
-Classifier: Environment :: Web Environment
-Classifier: Framework :: Django
-Classifier: Framework :: Django :: 4.2
-Classifier: Framework :: Django :: 5.0
-Classifier: Framework :: Django :: 5.1
-Classifier: Framework :: Django :: 5.2
-Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: BSD License
-Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python
-Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.10
-Classifier: Programming Language :: Python :: 3.11
-Classifier: Programming Language :: Python :: 3.12
-Classifier: Programming Language :: Python :: 3.13
-Classifier: Programming Language :: Python :: 3.14
-Description-Content-Type: text/x-rst
-License-File: LICENSE
-Requires-Dist: Django>=4.2
-Dynamic: author
-Dynamic: classifier
-Dynamic: description
-Dynamic: description-content-type
-Dynamic: home-page
-Dynamic: license
-Dynamic: license-file
-Dynamic: platform
-Dynamic: project-url
-Dynamic: requires-dist
-Dynamic: summary
-
-DJ-Database-URL
-~~~~~~~~~~~~~~~
-
-.. image:: https://jazzband.co/static/img/badge.png
- :target: https://jazzband.co/
- :alt: Jazzband
-
-.. image::
https://github.com/jazzband/dj-database-url/actions/workflows/test.yml/badge.svg
- :target:
https://github.com/jazzband/dj-database-url/actions/workflows/test.yml
-
-.. image::
https://codecov.io/gh/jazzband/dj-database-url/branch/master/graph/badge.svg?token=7srBUpszOa
- :target: https://codecov.io/gh/jazzband/dj-database-url
-
-This simple Django utility allows you to utilize the
-`12factor <http://www.12factor.net/backing-services>`_ inspired
-``DATABASE_URL`` environment variable to configure your Django application.
-
-The ``dj_database_url.config`` method returns a Django database connection
-dictionary, populated with all the data specified in your URL. There is
-also a `conn_max_age` argument to easily enable Django's connection pool.
-
-If you'd rather not use an environment variable, you can pass a URL in directly
-instead to ``dj_database_url.parse``.
-
-Installation
-------------
-
-Installation is simple:
-
-.. code-block:: console
-
- $ pip install dj-database-url
-
-Usage
------
-
-1. If ``DATABASES`` is already defined:
-
-- Configure your database in ``settings.py`` from ``DATABASE_URL``:
-
- .. code-block:: python
-
- import dj_database_url
-
- DATABASES['default'] = dj_database_url.config(
- conn_max_age=600,
- conn_health_checks=True,
- )
-
-- Provide a default:
-
- .. code-block:: python
-
- DATABASES['default'] = dj_database_url.config(
- default='postgres://...',
- conn_max_age=600,
- conn_health_checks=True,
- )
-
-- Parse an arbitrary Database URL:
-
- .. code-block:: python
-
- DATABASES['default'] = dj_database_url.parse(
- 'postgres://...',
- conn_max_age=600,
- conn_health_checks=True,
- )
-
-2. If ``DATABASES`` is not defined:
-
-- Configure your database in ``settings.py`` from ``DATABASE_URL``:
-
- .. code-block:: python
-
- import dj_database_url
-
- DATABASES = {
- 'default': dj_database_url.config(
- conn_max_age=600,
- conn_health_checks=True,
- ),
- }
-
-- You can provide a default, used if the ``DATABASE_URL`` setting is not
defined:
-
- .. code-block:: python
-
- DATABASES = {
- 'default': dj_database_url.config(
- default='postgres://...',
- conn_max_age=600,
- conn_health_checks=True,
- )
- }
-
-- Parse an arbitrary Database URL:
-
- .. code-block:: python
-
- DATABASES = {
- 'default': dj_database_url.parse(
- 'postgres://...',
- conn_max_age=600,
- conn_health_checks=True,
- )
- }
-
-``conn_max_age`` sets the |CONN_MAX_AGE setting|__, which tells Django to
-persist database connections between requests, up to the given lifetime in
-seconds. If you do not provide a value, it will follow Django’s default of
-``0``. Setting it is recommended for performance.
-
-.. |CONN_MAX_AGE setting| replace:: ``CONN_MAX_AGE`` setting
-__ https://docs.djangoproject.com/en/stable/ref/settings/#conn-max-age
-
-``conn_health_checks`` sets the |CONN_HEALTH_CHECKS setting|__ (new in Django
-4.1), which tells Django to check a persisted connection still works at the
-start of each request. If you do not provide a value, it will follow Django’s
-default of ``False``. Enabling it is recommended if you set a non-zero
-``conn_max_age``.
-
-.. |CONN_HEALTH_CHECKS setting| replace:: ``CONN_HEALTH_CHECKS`` setting
-__ https://docs.djangoproject.com/en/stable/ref/settings/#conn-health-checks
-
-Strings passed to `dj_database_url` must be valid URLs; in
-particular, special characters must be url-encoded. The following url will
raise
-a `ValueError`:
-
-.. code-block:: plaintext
-
- postgres://user:p#ssword!@localhost/foobar
-
-and should instead be passed as:
-
-.. code-block:: plaintext
-
- postgres://user:p%23ssword!@localhost/foobar
-
-`TEST <https://docs.djangoproject.com/en/stable/ref/settings/#test>`_ settings
can be configured using the ``test_options`` attribute::
-
- DATABASES['default'] = dj_database_url.config(default='postgres://...',
test_options={'NAME': 'mytestdatabase'})
-
-
-Supported Databases
--------------------
-
-Support currently exists for PostgreSQL, PostGIS, MySQL, MySQL (GIS),
-Oracle, Oracle (GIS), Redshift, CockroachDB, Timescale, Timescale (GIS) and
SQLite.
-
-If you want to use
-some non-default backends, you need to register them first:
-
-.. code-block:: python
-
- import dj_database_url
-
- # registration should be performed only once
- dj_database_url.register("mysql-connector", "mysql.connector.django")
-
- assert
dj_database_url.parse("mysql-connector://user:password@host:port/db-name") == {
- "ENGINE": "mysql.connector.django",
- # ...other connection params
- }
-
-Some backends need further config adjustments (e.g. oracle and mssql
-expect ``PORT`` to be a string). For such cases you can provide a
-post-processing function to ``register()`` (note that ``register()`` is
-used as a **decorator(!)** in this case):
-
-.. code-block:: python
-
- import dj_database_url
-
- @dj_database_url.register("mssql", "sql_server.pyodbc")
- def stringify_port(config):
- config["PORT"] = str(config["PORT"])
-
- @dj_database_url.register("redshift", "django_redshift_backend")
- def apply_current_schema(config):
- options = config["OPTIONS"]
- schema = options.pop("currentSchema", None)
- if schema:
- options["options"] = f"-c search_path={schema}"
-
- @dj_database_url.register("snowflake", "django_snowflake")
- def adjust_snowflake_config(config):
- config.pop("PORT", None)
- config["ACCOUNT"] = config.pop("HOST")
- name, _, schema = config["NAME"].partition("/")
- if schema:
- config["SCHEMA"] = schema
- config["NAME"] = name
- options = config.get("OPTIONS", {})
- warehouse = options.pop("warehouse", None)
- if warehouse:
- config["WAREHOUSE"] = warehouse
- role = options.pop("role", None)
- if role:
- config["ROLE"] = role
-
-URL schema
-----------
-
-+----------------------+-----------------------------------------------+--------------------------------------------------+
-| Engine | Django Backend | URL
|
-+======================+===============================================+==================================================+
-| PostgreSQL | ``django.db.backends.postgresql`` [1]_ |
``postgres://USER:PASSWORD@HOST:PORT/NAME`` [2]_ |
-| | |
``postgresql://USER:PASSWORD@HOST:PORT/NAME`` |
-+----------------------+-----------------------------------------------+--------------------------------------------------+
-| PostGIS | ``django.contrib.gis.db.backends.postgis`` |
``postgis://USER:PASSWORD@HOST:PORT/NAME`` |
-+----------------------+-----------------------------------------------+--------------------------------------------------+
-| MSSQL | ``sql_server.pyodbc`` |
``mssql://USER:PASSWORD@HOST:PORT/NAME`` |
-+----------------------+-----------------------------------------------+--------------------------------------------------+
-| MSSQL [5]_ | ``mssql`` |
``mssqlms://USER:PASSWORD@HOST:PORT/NAME`` |
-+----------------------+-----------------------------------------------+--------------------------------------------------+
-| MySQL | ``django.db.backends.mysql`` |
``mysql://USER:PASSWORD@HOST:PORT/NAME`` [2]_ |
-+----------------------+-----------------------------------------------+--------------------------------------------------+
-| MySQL (GIS) | ``django.contrib.gis.db.backends.mysql`` |
``mysqlgis://USER:PASSWORD@HOST:PORT/NAME`` |
-+----------------------+-----------------------------------------------+--------------------------------------------------+
-| SQLite | ``django.db.backends.sqlite3`` |
``sqlite:///PATH`` [3]_ |
-+----------------------+-----------------------------------------------+--------------------------------------------------+
-| SpatiaLite | ``django.contrib.gis.db.backends.spatialite`` |
``spatialite:///PATH`` [3]_ |
-+----------------------+-----------------------------------------------+--------------------------------------------------+
-| Oracle | ``django.db.backends.oracle`` |
``oracle://USER:PASSWORD@HOST:PORT/NAME`` [4]_ |
-+----------------------+-----------------------------------------------+--------------------------------------------------+
-| Oracle (GIS) | ``django.contrib.gis.db.backends.oracle`` |
``oraclegis://USER:PASSWORD@HOST:PORT/NAME`` |
-+----------------------+-----------------------------------------------+--------------------------------------------------+
-| Redshift | ``django_redshift_backend`` |
``redshift://USER:PASSWORD@HOST:PORT/NAME`` |
-+----------------------+-----------------------------------------------+--------------------------------------------------+
-| CockroachDB | ``django_cockroachdb`` |
``cockroach://USER:PASSWORD@HOST:PORT/NAME`` |
-+----------------------+-----------------------------------------------+--------------------------------------------------+
-| Timescale [6]_ | ``timescale.db.backends.postgresql`` |
``timescale://USER:PASSWORD@HOST:PORT/NAME`` |
-+----------------------+-----------------------------------------------+--------------------------------------------------+
-| Timescale (GIS) [6]_ | ``timescale.db.backend.postgis`` |
``timescalegis://USER:PASSWORD@HOST:PORT/NAME`` |
-+----------------------+-----------------------------------------------+--------------------------------------------------+
-
-.. [1] The django.db.backends.postgresql backend is named
django.db.backends.postgresql_psycopg2 in older releases. For
- backwards compatibility, the old name still works in newer versions.
(The new name does not work in older versions).
-.. [2] With PostgreSQL or CloudSQL, you can also use unix domain socket paths
with
- `percent encoding
<http://www.postgresql.org/docs/9.2/interactive/libpq-connect.html#AEN38162>`_:
- ``postgres://%2Fvar%2Flib%2Fpostgresql/dbname``
-
``mysql://uf07k1i6d8ia0v@%2fcloudsql%2fproject%3alocation%3ainstance/dbname``
-.. [3] SQLite connects to file based databases. The same URL format is used,
omitting
- the hostname, and using the "file" portion as the filename of the
database.
- This has the effect of four slashes being present for an absolute file
path:
- ``sqlite:////full/path/to/your/database/file.sqlite``.
-.. [4] Note that when connecting to Oracle the URL isn't in the form you may
know
- from using other Oracle tools (like SQLPlus) i.e. user and password are
separated
- by ``:`` not by ``/``. Also you can omit ``HOST`` and ``PORT``
- and provide a full DSN string or TNS name in ``NAME`` part.
-.. [5] Microsoft official `mssql-django
<https://github.com/microsoft/mssql-django>`_ adapter.
-.. [6] Using the django-timescaledb Package which must be installed.
-
-
-Contributing
-------------
-
-We welcome contributions to this project. Projects can take two forms:
-
-1. Raising issues or helping others through the github issue tracker.
-2. Contributing code.
-
-Raising Issues or helping others:
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-When submitting an issue or helping other remember you are talking to humans
who have feelings, jobs and lives of their
-own. Be nice, be kind, be polite. Remember english may not be someone first
language, if you do not understand or
-something is not clear be polite and re-ask/ re-word.
-
-Contributing code:
-^^^^^^^^^^^^^^^^^^
-
-* Before writing code be sure to check existing PR's and issues in the tracker.
-* Write code to the pylint spec.
-* Large or wide sweeping changes will take longer, and may face more scrutiny
than smaller confined changes.
-* Code should be pass `black` and `flake8` validation.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/dj_database_url-3.0.1/dj_database_url.egg-info/SOURCES.txt
new/dj_database_url-3.1.2/dj_database_url.egg-info/SOURCES.txt
--- old/dj_database_url-3.0.1/dj_database_url.egg-info/SOURCES.txt
2025-07-02 11:29:20.000000000 +0200
+++ new/dj_database_url-3.1.2/dj_database_url.egg-info/SOURCES.txt
1970-01-01 01:00:00.000000000 +0100
@@ -1,12 +0,0 @@
-LICENSE
-README.rst
-pyproject.toml
-setup.py
-dj_database_url/__init__.py
-dj_database_url/py.typed
-dj_database_url.egg-info/PKG-INFO
-dj_database_url.egg-info/SOURCES.txt
-dj_database_url.egg-info/dependency_links.txt
-dj_database_url.egg-info/requires.txt
-dj_database_url.egg-info/top_level.txt
-tests/test_dj_database_url.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/dj_database_url-3.0.1/dj_database_url.egg-info/dependency_links.txt
new/dj_database_url-3.1.2/dj_database_url.egg-info/dependency_links.txt
--- old/dj_database_url-3.0.1/dj_database_url.egg-info/dependency_links.txt
2025-07-02 11:29:20.000000000 +0200
+++ new/dj_database_url-3.1.2/dj_database_url.egg-info/dependency_links.txt
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/dj_database_url-3.0.1/dj_database_url.egg-info/requires.txt
new/dj_database_url-3.1.2/dj_database_url.egg-info/requires.txt
--- old/dj_database_url-3.0.1/dj_database_url.egg-info/requires.txt
2025-07-02 11:29:20.000000000 +0200
+++ new/dj_database_url-3.1.2/dj_database_url.egg-info/requires.txt
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-Django>=4.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/dj_database_url-3.0.1/dj_database_url.egg-info/top_level.txt
new/dj_database_url-3.1.2/dj_database_url.egg-info/top_level.txt
--- old/dj_database_url-3.0.1/dj_database_url.egg-info/top_level.txt
2025-07-02 11:29:20.000000000 +0200
+++ new/dj_database_url-3.1.2/dj_database_url.egg-info/top_level.txt
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-dj_database_url
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dj_database_url-3.0.1/pyproject.toml
new/dj_database_url-3.1.2/pyproject.toml
--- old/dj_database_url-3.0.1/pyproject.toml 2025-07-02 11:29:13.000000000
+0200
+++ new/dj_database_url-3.1.2/pyproject.toml 1970-01-01 01:00:00.000000000
+0100
@@ -1,5 +1,61 @@
-[tool.black]
-skip-string-normalization = 1
+[project]
+name = "dj-database-url"
+version = "3.1.2"
+description = "Use Database URLs in your Django Application."
+authors = [
+ { name = "Jazzband community" }
+]
+readme = "README.rst"
+requires-python = ">=3.10"
+license = "BSD-3-Clause"
+license-files = ["LICENSE"]
+dependencies = [
+ "django>=4.2",
+]
+classifiers = [
+ "Environment :: Web Environment",
+ "Framework :: Django",
+ "Framework :: Django :: 4.2",
+ "Framework :: Django :: 5.2",
+ "Framework :: Django :: 6",
+ "Intended Audience :: Developers",
+ "License :: OSI Approved :: BSD License",
+ "Operating System :: OS Independent",
+ "Programming Language :: Python",
+ "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
+ "Topic :: Software Development :: Libraries :: Python Modules",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3.12",
+ "Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.14",
+]
+
+[project.urls]
+Homepage = "https://jazzband.co/projects/dj-database-url"
+Changelog =
"https://github.com/jazzband/dj-database-url/blob/master/CHANGELOG.md"
+Funding = "https://psfmember.org/civicrm/contribute/transact/?reset=1&id=34"
+Bug = "https://github.com/jazzband/dj-database-url/issues"
+
+[build-system]
+requires = ["uv_build>=0.9.17,<0.10.0"]
+build-backend = "uv_build"
+
+[tool.uv.build-backend]
+module-name = "dj_database_url"
+module-root = ""
+source-include = ["dj_database_url/py.typed", "tests/**"]
+
+[tool.ruff]
+line-length = 88
+
+[tool.ruff.lint]
+extend-select = ["B", "I"]
+
+[tool.ruff.format]
+quote-style = "preserve"
[tool.mypy]
show_error_codes=true
@@ -9,3 +65,15 @@
[tool.pyright]
typeCheckingMode = "strict"
+
+[dependency-groups]
+dev = [
+ "coverage>=7.13.0",
+ "mypy>=1.19.1",
+ "pyright>=1.1.407",
+ "pytest>=9.0.2",
+ "ruff>=0.14.10",
+ "setuptools>=80.9.0",
+ "twine>=6.2.0",
+ "wheel>=0.45.1",
+]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dj_database_url-3.0.1/setup.cfg
new/dj_database_url-3.1.2/setup.cfg
--- old/dj_database_url-3.0.1/setup.cfg 2025-07-02 11:29:20.456748700 +0200
+++ new/dj_database_url-3.1.2/setup.cfg 1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-[egg_info]
-tag_build =
-tag_date = 0
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dj_database_url-3.0.1/setup.py
new/dj_database_url-3.1.2/setup.py
--- old/dj_database_url-3.0.1/setup.py 2025-07-02 11:29:13.000000000 +0200
+++ new/dj_database_url-3.1.2/setup.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,50 +0,0 @@
-from pathlib import Path
-
-from setuptools import setup # pyright: ignore[reportUnknownVariableType]
-
-readme = Path("README.rst").read_text()
-
-setup(
- name="dj-database-url",
- version="3.0.1",
- url="https://github.com/jazzband/dj-database-url",
- license="BSD",
- author="Original Author: Kenneth Reitz, Maintained by: JazzBand Community",
- description="Use Database URLs in your Django Application.",
- long_description=readme,
- long_description_content_type="text/x-rst",
- packages=["dj_database_url"],
- install_requires=["Django>=4.2"],
- include_package_data=True,
- package_data={
- "dj_database_url": ["py.typed"],
- },
- platforms="any",
- project_urls={
- "GitHub": "https://github.com/jazzband/dj-database-url/",
- "Release log": (
-
"https://github.com/jazzband/dj-database-url/blob/master/CHANGELOG.md"
- ),
- },
- classifiers=[
- "Environment :: Web Environment",
- "Framework :: Django",
- "Framework :: Django :: 4.2",
- "Framework :: Django :: 5.0",
- "Framework :: Django :: 5.1",
- "Framework :: Django :: 5.2",
- "Intended Audience :: Developers",
- "License :: OSI Approved :: BSD License",
- "Operating System :: OS Independent",
- "Programming Language :: Python",
- "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
- "Topic :: Software Development :: Libraries :: Python Modules",
- "Programming Language :: Python",
- "Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3.10",
- "Programming Language :: Python :: 3.11",
- "Programming Language :: Python :: 3.12",
- "Programming Language :: Python :: 3.13",
- "Programming Language :: Python :: 3.14",
- ],
-)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dj_database_url-3.0.1/tests/test_dj_database_url.py
new/dj_database_url-3.1.2/tests/test_dj_database_url.py
--- old/dj_database_url-3.0.1/tests/test_dj_database_url.py 2025-07-02
11:29:13.000000000 +0200
+++ new/dj_database_url-3.1.2/tests/test_dj_database_url.py 1970-01-01
01:00:00.000000000 +0100
@@ -266,8 +266,8 @@
assert url["CONN_MAX_AGE"] == conn_max_age
- def test_config_conn_max_age_setting(self) -> None:
- conn_max_age = 600
+ def test_config_conn_max_age_setting_none(self) -> None:
+ conn_max_age = None
with mock.patch.dict(
os.environ,
{
@@ -680,9 +680,9 @@
def test_options_int_values(self) -> None:
"""Ensure that options with integer values are parsed correctly."""
url = dj_database_url.parse(
- "mysql://user:[email protected]:15036/db?connect_timout=3"
+ "mysql://user:[email protected]:15036/db?connect_timeout=3"
)
- assert url["OPTIONS"] == {'connect_timout': 3}
+ assert url["OPTIONS"] == {'connect_timeout': 3}
@mock.patch.dict(
os.environ,