diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 819ef4d..16481ed 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: 3.9 + python-version: '3.10' - name: Install dependencies run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 23e73f9..1bb14c9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -6,14 +6,20 @@ jobs: strategy: matrix: python-version: ["3.7", "3.8", "3.9", "3.10"] - django-version: ["3.2", "4.0"] + django-version: ["3.2", "4.0", "4.1"] exclude: # Python 3.6 is not compatible with 4.0 - - python-version: 3.6 - django-version: 4.0 + - python-version: "3.6" + django-version: "4.0" + # Python 3.6 is not compatible with 4.1 + - python-version: "3.6" + django-version: "4.1" # Python 3.7 is not compatible with 4.0 - - python-version: 3.7 - django-version: 4.0 + - python-version: "3.7" + django-version: "4.0" + # Python 3.7 is not compatible with 4.1 + - python-version: "3.7" + django-version: "4.1" fail-fast: false steps: - uses: actions/checkout@v3 diff --git a/dj_database_url.py b/dj_database_url.py index 59e8506..cfcb7cb 100644 --- a/dj_database_url.py +++ b/dj_database_url.py @@ -1,14 +1,6 @@ -# -*- coding: utf-8 -*- - import os import urllib.parse as urlparse -try: - from django import VERSION as DJANGO_VERSION -except ImportError: - DJANGO_VERSION = None - - # Register database schemes in URLs. urlparse.uses_netloc.append("postgres") urlparse.uses_netloc.append("postgresql") @@ -32,6 +24,9 @@ urlparse.uses_netloc.append("timescalegis") DEFAULT_ENV = "DATABASE_URL" SCHEMES = { + "postgres": "django.db.backends.postgresql", + "postgresql": "django.db.backends.postgresql", + "pgsql": "django.db.backends.postgresql", "postgis": "django.contrib.gis.db.backends.postgis", "mysql": "django.db.backends.mysql", "mysql2": "django.db.backends.mysql", @@ -49,16 +44,6 @@ SCHEMES = { "timescalegis": "timescale.db.backends.postgis", } -# https://docs.djangoproject.com/en/2.0/releases/2.0/#id1 -if DJANGO_VERSION and DJANGO_VERSION < (2, 0): - SCHEMES["postgres"] = "django.db.backends.postgresql_psycopg2" - SCHEMES["postgresql"] = "django.db.backends.postgresql_psycopg2" - SCHEMES["pgsql"] = "django.db.backends.postgresql_psycopg2" -else: - SCHEMES["postgres"] = "django.db.backends.postgresql" - SCHEMES["postgresql"] = "django.db.backends.postgresql" - SCHEMES["pgsql"] = "django.db.backends.postgresql" - def config( env=DEFAULT_ENV, default=None, engine=None, conn_max_age=0, ssl_require=False diff --git a/setup.py b/setup.py index 65335f4..6db32dc 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- from setuptools import setup with open("README.rst") as readme_rst: @@ -14,7 +13,7 @@ setup( long_description=readme, long_description_content_type="text/x-rst", py_modules=["dj_database_url"], - install_requires=["Django>3.2"], + install_requires=["Django>=3.2"], zip_safe=False, include_package_data=True, platforms="any", @@ -29,6 +28,7 @@ setup( "Framework :: Django", "Framework :: Django :: 3.2", "Framework :: Django :: 4.0", + "Framework :: Django :: 4.1", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", diff --git a/test_dj_database_url.py b/test_dj_database_url.py index 09918da..109159e 100644 --- a/test_dj_database_url.py +++ b/test_dj_database_url.py @@ -1,28 +1,17 @@ import os import unittest -try: - from django import VERSION as DJANGO_VERSION -except ImportError: - DJANGO_VERSION = None - import dj_database_url POSTGIS_URL = "postgis://uf07k1i6d8ia0v:wegauwhgeuioweg@ec2-107-21-253-135.compute-1.amazonaws.com:5431/d8r82722r2kuvn" -# Django deprecated the `django.db.backends.postgresql_psycopg2` in 2.0. -# https://docs.djangoproject.com/en/2.0/releases/2.0/#id1 -EXPECTED_POSTGRES_ENGINE = "django.db.backends.postgresql" -if DJANGO_VERSION and DJANGO_VERSION < (2, 0): - EXPECTED_POSTGRES_ENGINE = "django.db.backends.postgresql_psycopg2" - class DatabaseTestSuite(unittest.TestCase): def test_postgres_parsing(self): url = "postgres://uf07k1i6d8ia0v:wegauwhgeuioweg@ec2-107-21-253-135.compute-1.amazonaws.com:5431/d8r82722r2kuvn" url = dj_database_url.parse(url) - assert url["ENGINE"] == EXPECTED_POSTGRES_ENGINE + assert url["ENGINE"] == "django.db.backends.postgresql" assert url["NAME"] == "d8r82722r2kuvn" assert url["HOST"] == "ec2-107-21-253-135.compute-1.amazonaws.com" assert url["USER"] == "uf07k1i6d8ia0v" @@ -33,7 +22,7 @@ class DatabaseTestSuite(unittest.TestCase): url = "postgres://%2Fvar%2Frun%2Fpostgresql/d8r82722r2kuvn" url = dj_database_url.parse(url) - assert url["ENGINE"] == EXPECTED_POSTGRES_ENGINE + assert url["ENGINE"] == "django.db.backends.postgresql" assert url["NAME"] == "d8r82722r2kuvn" assert url["HOST"] == "/var/run/postgresql" assert url["USER"] == "" @@ -43,7 +32,7 @@ class DatabaseTestSuite(unittest.TestCase): url = "postgres://%2FUsers%2Fpostgres%2FRuN/d8r82722r2kuvn" url = dj_database_url.parse(url) - assert url["ENGINE"] == EXPECTED_POSTGRES_ENGINE + assert url["ENGINE"] == "django.db.backends.postgresql" assert url["HOST"] == "/Users/postgres/RuN" assert url["USER"] == "" assert url["PASSWORD"] == "" @@ -53,7 +42,7 @@ class DatabaseTestSuite(unittest.TestCase): url = "postgres://ieRaekei9wilaim7:wegauwhgeuioweg@[2001:db8:1234::1234:5678:90af]:5431/d8r82722r2kuvn" url = dj_database_url.parse(url) - assert url["ENGINE"] == EXPECTED_POSTGRES_ENGINE + assert url["ENGINE"] == "django.db.backends.postgresql" assert url["NAME"] == "d8r82722r2kuvn" assert url["HOST"] == "2001:db8:1234::1234:5678:90af" assert url["USER"] == "ieRaekei9wilaim7" @@ -63,7 +52,7 @@ class DatabaseTestSuite(unittest.TestCase): def test_postgres_search_path_parsing(self): url = "postgres://uf07k1i6d8ia0v:wegauwhgeuioweg@ec2-107-21-253-135.compute-1.amazonaws.com:5431/d8r82722r2kuvn?currentSchema=otherschema" url = dj_database_url.parse(url) - assert url["ENGINE"] == EXPECTED_POSTGRES_ENGINE + assert url["ENGINE"] == "django.db.backends.postgresql" assert url["NAME"] == "d8r82722r2kuvn" assert url["HOST"] == "ec2-107-21-253-135.compute-1.amazonaws.com" assert url["USER"] == "uf07k1i6d8ia0v" @@ -76,7 +65,7 @@ class DatabaseTestSuite(unittest.TestCase): url = "postgres://%23user:%23password@ec2-107-21-253-135.compute-1.amazonaws.com:5431/%23database" url = dj_database_url.parse(url) - assert url["ENGINE"] == EXPECTED_POSTGRES_ENGINE + assert url["ENGINE"] == "django.db.backends.postgresql" assert url["NAME"] == "#database" assert url["HOST"] == "ec2-107-21-253-135.compute-1.amazonaws.com" assert url["USER"] == "#user" @@ -150,7 +139,7 @@ class DatabaseTestSuite(unittest.TestCase): url = dj_database_url.config() - assert url["ENGINE"] == EXPECTED_POSTGRES_ENGINE + assert url["ENGINE"] == "django.db.backends.postgresql" assert url["NAME"] == "d8r82722r2kuvn" assert url["HOST"] == "ec2-107-21-253-135.compute-1.amazonaws.com" assert url["USER"] == "uf07k1i6d8ia0v" @@ -210,7 +199,7 @@ class DatabaseTestSuite(unittest.TestCase): ] = "postgres://uf07k1i6d8ia0v:wegauwhgeuioweg@ec2-107-21-253-135.compute-1.amazonaws.com:5431/d8r82722r2kuvn?sslrootcert=rds-combined-ca-bundle.pem&sslmode=verify-full" url = dj_database_url.config() - assert url["ENGINE"] == EXPECTED_POSTGRES_ENGINE + assert url["ENGINE"] == "django.db.backends.postgresql" assert url["NAME"] == "d8r82722r2kuvn" assert url["HOST"] == "ec2-107-21-253-135.compute-1.amazonaws.com" assert url["USER"] == "uf07k1i6d8ia0v"