django-letsencrypt 4.1.0__tar.gz → 6.0.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.
Files changed (23) hide show
  1. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0}/CHANGELOG.md +50 -0
  2. {django-letsencrypt-4.1.0/django_letsencrypt.egg-info → django_letsencrypt-6.0.0}/PKG-INFO +50 -30
  3. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0}/README.md +25 -14
  4. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0/django_letsencrypt.egg-info}/PKG-INFO +50 -30
  5. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0}/django_letsencrypt.egg-info/SOURCES.txt +1 -2
  6. django_letsencrypt-6.0.0/django_letsencrypt.egg-info/requires.txt +2 -0
  7. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0}/letsencrypt/__init__.py +2 -2
  8. django_letsencrypt-6.0.0/pyproject.toml +85 -0
  9. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0}/setup.cfg +0 -3
  10. django-letsencrypt-4.1.0/django_letsencrypt.egg-info/requires.txt +0 -2
  11. django-letsencrypt-4.1.0/setup.py +0 -64
  12. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0}/LICENSE +0 -0
  13. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0}/MANIFEST.in +0 -0
  14. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0}/django_letsencrypt.egg-info/dependency_links.txt +0 -0
  15. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0}/django_letsencrypt.egg-info/top_level.txt +0 -0
  16. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0}/letsencrypt/admin.py +0 -0
  17. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0}/letsencrypt/apps.py +0 -0
  18. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0}/letsencrypt/migrations/0001_squashed_0004_squash_for_mysql_support.py +0 -0
  19. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0}/letsencrypt/migrations/__init__.py +0 -0
  20. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0}/letsencrypt/models.py +0 -0
  21. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0}/letsencrypt/tests.py +0 -0
  22. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0}/letsencrypt/urls.py +0 -0
  23. {django-letsencrypt-4.1.0 → django_letsencrypt-6.0.0}/letsencrypt/views.py +0 -0
@@ -1,5 +1,55 @@
1
1
  # django-letsencrypt CHANGELOG
2
2
 
3
+ ## v6.0.0
4
+
5
+ This release aligns with recent Django releases and Python releases.
6
+
7
+ - Breaking Changes:
8
+ - Dropped support for Python `3.8` and `3.9`.
9
+ - Dropped support for Django `5.0` and `5.1`.
10
+ - New Support:
11
+ - Added support for Django `6.0` (minimum version `6.0.1`).
12
+ - Added support for Django `5.2 LTS` (minimum version `5.2.10`).
13
+ - Updated Django `4.2 LTS` minimum version to `4.2.27`.
14
+ - Added support for Python `3.13` and `3.14`.
15
+ - Internal Updates:
16
+ - Migrated the project to use `uv` throughout.
17
+ - Replaced `setup.py`, `setup.cfg`, and `requirements.txt` with `pyproject.toml`.
18
+ - Removed `.python-version` file.
19
+ - Added `uv.lock` for pinned dependency resolution.
20
+ - Removed legacy `requirements.txt` files from the root and `example_project`.
21
+ - Updated the `example_project` Makefile and local integration script to use `uv`.
22
+ - Added `.githooks/pre-commit` to run `make test`.
23
+ - Build system now uses `uv build` instead of `python setup.py`.
24
+ - Updated `actions/checkout@v2` references to `actions/checkout@v6`.
25
+ - Renamed GitHub Actions workflows to match supported Django versions (`testing-42.yaml`, `testing-52.yaml`, `testing-60.yaml`).
26
+ - Updated `tox.ini` to test against Django `4.2`, `5.2`, and `6.0`.
27
+ - General `Makefile` refactoring.
28
+ - Added `scripts/testpypi_integration.sh` for testing deployed Test PyPI packages.
29
+ - Added Test PyPI integration test matrix to `tox.ini` with parallel execution support.
30
+ - Migrated unit tests to `pytest` with `pytest-django` and `pytest-cov`.
31
+ - Added Codecov test results integration via JUnit XML output.
32
+ - Fixed Codecov coverage upload by generating `coverage.xml` during test runs.
33
+ - General Updates:
34
+ - Added `Development` section to `README` with `uv` setup instructions.
35
+ - Updated `pyproject.toml` to include missing classifiers.
36
+ - Updated link in `README` to point to actual [RFC 8555](https://datatracker.ietf.org/doc/html/rfc8555).
37
+
38
+ ## v5.1.0
39
+
40
+ There are no major project changes or code updates. This release aligns with
41
+ recent Django releases and Python releases.
42
+
43
+ - Internal Updates:
44
+ - Brought `tox` up-to-date with the current supported Django+Python versions.
45
+ - Brought GitHub actions up-to-date with the current supported Django+Python versions.
46
+ - This project will no longer use the "sign" feature of PyPi.
47
+ - See also: https://blog.pypi.org/posts/2023-05-23-removing-pgp/
48
+ - Dependency Updates:
49
+ - `pytz` version `2025.2` or greater now required.
50
+ - General Updates:
51
+ - Updated `README` with supported version information.
52
+
3
53
  ## v4.1.0
4
54
 
5
55
  There are no major project changes or code updates. This release aligns with
@@ -1,40 +1,51 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: django-letsencrypt
3
- Version: 4.1.0
3
+ Version: 6.0.0
4
4
  Summary: A simple Django app to handle Let's Encrypt ACME challenges.
5
- Home-page: https://github.com/urda/django-letsencrypt
6
- Author: Peter Urda
7
- Author-email: foss@urda.engineering
8
- License: Apache License, Version 2.0
9
- Platform: UNKNOWN
10
- Classifier: Development Status :: 5 - Production/Stable
5
+ Author-email: Peter Urda <foss@urda.engineering>
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/urda/django-letsencrypt
8
+ Classifier: Development Status :: 6 - Mature
11
9
  Classifier: Environment :: Web Environment
12
10
  Classifier: Framework :: Django
13
- Classifier: Framework :: Django :: 2.2
14
- Classifier: Framework :: Django :: 3.2
15
- Classifier: Framework :: Django :: 4.0
11
+ Classifier: Framework :: Django :: 4
12
+ Classifier: Framework :: Django :: 4.2
13
+ Classifier: Framework :: Django :: 5
14
+ Classifier: Framework :: Django :: 5.2
15
+ Classifier: Framework :: Django :: 6
16
+ Classifier: Framework :: Django :: 6.0
17
+ Classifier: Framework :: Flake8
18
+ Classifier: Framework :: Pytest
19
+ Classifier: Framework :: tox
16
20
  Classifier: Intended Audience :: Developers
17
- Classifier: License :: OSI Approved :: Apache Software License
21
+ Classifier: Intended Audience :: Information Technology
22
+ Classifier: Intended Audience :: System Administrators
18
23
  Classifier: Natural Language :: English
19
24
  Classifier: Operating System :: OS Independent
20
25
  Classifier: Programming Language :: Python
21
26
  Classifier: Programming Language :: Python :: 3
22
- Classifier: Programming Language :: Python :: 3.7
23
- Classifier: Programming Language :: Python :: 3.8
24
- Classifier: Programming Language :: Python :: 3.9
25
27
  Classifier: Programming Language :: Python :: 3.10
28
+ Classifier: Programming Language :: Python :: 3.11
29
+ Classifier: Programming Language :: Python :: 3.12
30
+ Classifier: Programming Language :: Python :: 3.13
31
+ Classifier: Programming Language :: Python :: 3.14
26
32
  Classifier: Programming Language :: Python :: 3 :: Only
27
33
  Classifier: Topic :: Internet
28
34
  Classifier: Topic :: Internet :: WWW/HTTP
29
35
  Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
30
- Requires-Python: >=3.7, <4
36
+ Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
37
+ Classifier: Topic :: Security
38
+ Requires-Python: <4,>=3.10
31
39
  Description-Content-Type: text/markdown
32
40
  License-File: LICENSE
41
+ Requires-Dist: Django>=4.2.27
42
+ Requires-Dist: pytz>=2025.2
43
+ Dynamic: license-file
33
44
 
34
45
  # Let's Encrypt App for Django
35
46
 
36
47
  `django-letsencrypt` will allow you to add, remove, and update any
37
- [ACME challenge](https://github.com/ietf-wg-acme/acme/) objects you may
48
+ [ACME challenge](https://datatracker.ietf.org/doc/html/rfc8555) objects you may
38
49
  need through your Django admin interface. Simply add the `ACME challenge`
39
50
  and `response` for your app to serve up the necessary information for
40
51
  [Let's Encrypt](https://letsencrypt.org/how-it-works/) validation.
@@ -46,33 +57,35 @@ versions of Django supported, even multiple databases too!
46
57
  And of course all wrapped up and published to
47
58
  [PyPI](https://pypi.org/project/django-letsencrypt/) for standard installation!
48
59
 
49
- # Supported Configurations
60
+ ## Supported Configurations
50
61
 
51
62
  `django-letsencrypt` is tested across a number of configurations, here's what's
52
63
  supported so far:
53
64
 
54
65
  - Python Versions Supported:
55
- - `3.10` (Django `4.0` and `3.2` only)
56
- - `3.8`
57
- - `3.7` (Django `3.2` and `2.2` only)
66
+ - `3.14` (with Django `6.0`, `5.2`)
67
+ - `3.13` (with Django `6.0`, `5.2`)
68
+ - `3.12` (with Django `6.0`, `5.2`, `4.2`)
69
+ - `3.11` (with Django `5.2`, `4.2`)
70
+ - `3.10` (with Django `5.2`, `4.2`)
58
71
  - Django Versions Supported:
59
- - `4.0` minimum version `4.0`
60
- - `3.2` minimum version `3.2.10`
61
- - `2.2` minimum version `2.2.25`
72
+ - `6.0` minimum version `6.0.1`
73
+ - `5.2 LTS` minimum version `5.2.10`
74
+ - `4.2 LTS` minimum version `4.2.27`
62
75
  - Databases Supported:
63
76
  - `mysql`
64
77
  - `postgres`
65
78
  - `sqlite`
66
79
 
67
- # Recent Build Status Badges
80
+ ## Recent Build Status Badges
68
81
 
69
82
  - [![Linting - Master](https://github.com/urda/django-letsencrypt/actions/workflows/linting.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/linting.yaml)
70
- - [![Testing Django 2.2 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-22.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-22.yaml)
71
- - [![Testing Django 3.2 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-32.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-32.yaml)
72
- - [![Testing Django 4.0 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-40.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-40.yaml)
83
+ - [![Testing Django 4.2 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-42.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-42.yaml)
84
+ - [![Testing Django 5.2 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-52.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-52.yaml)
85
+ - [![Testing Django 6.0 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-60.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-60.yaml)
73
86
  - [![Codecov - Master](https://codecov.io/gh/urda/django-letsencrypt/branch/master/graph/badge.svg?token=yn64lBfwZr)](https://codecov.io/gh/urda/django-letsencrypt)
74
87
 
75
- # Installation & Configuration
88
+ ## Installation & Configuration
76
89
 
77
90
  1. `pip install django-letsencrypt`
78
91
 
@@ -107,7 +120,7 @@ re_path(r'^\.well-known/', include('letsencrypt.urls'))
107
120
 
108
121
  7. Enjoy your easy to manage `ACME Challenges` inside your Django project!
109
122
 
110
- # Example Project
123
+ ## Example Project
111
124
 
112
125
  If you would like a demo of how to use this application simply clone this project's
113
126
  `git` repository from [GitHub](https://github.com/urda/django-letsencrypt),
@@ -116,4 +129,11 @@ take a moment to read the `README.md` file within the
116
129
  directory, and follow the directions. That will spin up a small sample django
117
130
  application already configured for you to try out.
118
131
 
132
+ ## Development
119
133
 
134
+ 1. Make sure you have installed [uv](https://docs.astral.sh/uv/) in your environment.
135
+ 2. Clone the repo to your development machine.
136
+ 3. Configure your `git` hooks with `git config core.hooksPath .githooks` for the project.
137
+ 4. Run `uv sync` to create the virtual environment and install required dependencies.
138
+ 5. Run `make test` for a singular test run.
139
+ 6. Run `make run-tox` to run the entire `tox` suite.
@@ -1,7 +1,7 @@
1
1
  # Let's Encrypt App for Django
2
2
 
3
3
  `django-letsencrypt` will allow you to add, remove, and update any
4
- [ACME challenge](https://github.com/ietf-wg-acme/acme/) objects you may
4
+ [ACME challenge](https://datatracker.ietf.org/doc/html/rfc8555) objects you may
5
5
  need through your Django admin interface. Simply add the `ACME challenge`
6
6
  and `response` for your app to serve up the necessary information for
7
7
  [Let's Encrypt](https://letsencrypt.org/how-it-works/) validation.
@@ -13,33 +13,35 @@ versions of Django supported, even multiple databases too!
13
13
  And of course all wrapped up and published to
14
14
  [PyPI](https://pypi.org/project/django-letsencrypt/) for standard installation!
15
15
 
16
- # Supported Configurations
16
+ ## Supported Configurations
17
17
 
18
18
  `django-letsencrypt` is tested across a number of configurations, here's what's
19
19
  supported so far:
20
20
 
21
21
  - Python Versions Supported:
22
- - `3.10` (Django `4.0` and `3.2` only)
23
- - `3.8`
24
- - `3.7` (Django `3.2` and `2.2` only)
22
+ - `3.14` (with Django `6.0`, `5.2`)
23
+ - `3.13` (with Django `6.0`, `5.2`)
24
+ - `3.12` (with Django `6.0`, `5.2`, `4.2`)
25
+ - `3.11` (with Django `5.2`, `4.2`)
26
+ - `3.10` (with Django `5.2`, `4.2`)
25
27
  - Django Versions Supported:
26
- - `4.0` minimum version `4.0`
27
- - `3.2` minimum version `3.2.10`
28
- - `2.2` minimum version `2.2.25`
28
+ - `6.0` minimum version `6.0.1`
29
+ - `5.2 LTS` minimum version `5.2.10`
30
+ - `4.2 LTS` minimum version `4.2.27`
29
31
  - Databases Supported:
30
32
  - `mysql`
31
33
  - `postgres`
32
34
  - `sqlite`
33
35
 
34
- # Recent Build Status Badges
36
+ ## Recent Build Status Badges
35
37
 
36
38
  - [![Linting - Master](https://github.com/urda/django-letsencrypt/actions/workflows/linting.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/linting.yaml)
37
- - [![Testing Django 2.2 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-22.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-22.yaml)
38
- - [![Testing Django 3.2 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-32.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-32.yaml)
39
- - [![Testing Django 4.0 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-40.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-40.yaml)
39
+ - [![Testing Django 4.2 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-42.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-42.yaml)
40
+ - [![Testing Django 5.2 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-52.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-52.yaml)
41
+ - [![Testing Django 6.0 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-60.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-60.yaml)
40
42
  - [![Codecov - Master](https://codecov.io/gh/urda/django-letsencrypt/branch/master/graph/badge.svg?token=yn64lBfwZr)](https://codecov.io/gh/urda/django-letsencrypt)
41
43
 
42
- # Installation & Configuration
44
+ ## Installation & Configuration
43
45
 
44
46
  1. `pip install django-letsencrypt`
45
47
 
@@ -74,7 +76,7 @@ re_path(r'^\.well-known/', include('letsencrypt.urls'))
74
76
 
75
77
  7. Enjoy your easy to manage `ACME Challenges` inside your Django project!
76
78
 
77
- # Example Project
79
+ ## Example Project
78
80
 
79
81
  If you would like a demo of how to use this application simply clone this project's
80
82
  `git` repository from [GitHub](https://github.com/urda/django-letsencrypt),
@@ -82,3 +84,12 @@ take a moment to read the `README.md` file within the
82
84
  [`example_project`](https://github.com/urda/django-letsencrypt/tree/master/example_project)
83
85
  directory, and follow the directions. That will spin up a small sample django
84
86
  application already configured for you to try out.
87
+
88
+ ## Development
89
+
90
+ 1. Make sure you have installed [uv](https://docs.astral.sh/uv/) in your environment.
91
+ 2. Clone the repo to your development machine.
92
+ 3. Configure your `git` hooks with `git config core.hooksPath .githooks` for the project.
93
+ 4. Run `uv sync` to create the virtual environment and install required dependencies.
94
+ 5. Run `make test` for a singular test run.
95
+ 6. Run `make run-tox` to run the entire `tox` suite.
@@ -1,40 +1,51 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: django-letsencrypt
3
- Version: 4.1.0
3
+ Version: 6.0.0
4
4
  Summary: A simple Django app to handle Let's Encrypt ACME challenges.
5
- Home-page: https://github.com/urda/django-letsencrypt
6
- Author: Peter Urda
7
- Author-email: foss@urda.engineering
8
- License: Apache License, Version 2.0
9
- Platform: UNKNOWN
10
- Classifier: Development Status :: 5 - Production/Stable
5
+ Author-email: Peter Urda <foss@urda.engineering>
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/urda/django-letsencrypt
8
+ Classifier: Development Status :: 6 - Mature
11
9
  Classifier: Environment :: Web Environment
12
10
  Classifier: Framework :: Django
13
- Classifier: Framework :: Django :: 2.2
14
- Classifier: Framework :: Django :: 3.2
15
- Classifier: Framework :: Django :: 4.0
11
+ Classifier: Framework :: Django :: 4
12
+ Classifier: Framework :: Django :: 4.2
13
+ Classifier: Framework :: Django :: 5
14
+ Classifier: Framework :: Django :: 5.2
15
+ Classifier: Framework :: Django :: 6
16
+ Classifier: Framework :: Django :: 6.0
17
+ Classifier: Framework :: Flake8
18
+ Classifier: Framework :: Pytest
19
+ Classifier: Framework :: tox
16
20
  Classifier: Intended Audience :: Developers
17
- Classifier: License :: OSI Approved :: Apache Software License
21
+ Classifier: Intended Audience :: Information Technology
22
+ Classifier: Intended Audience :: System Administrators
18
23
  Classifier: Natural Language :: English
19
24
  Classifier: Operating System :: OS Independent
20
25
  Classifier: Programming Language :: Python
21
26
  Classifier: Programming Language :: Python :: 3
22
- Classifier: Programming Language :: Python :: 3.7
23
- Classifier: Programming Language :: Python :: 3.8
24
- Classifier: Programming Language :: Python :: 3.9
25
27
  Classifier: Programming Language :: Python :: 3.10
28
+ Classifier: Programming Language :: Python :: 3.11
29
+ Classifier: Programming Language :: Python :: 3.12
30
+ Classifier: Programming Language :: Python :: 3.13
31
+ Classifier: Programming Language :: Python :: 3.14
26
32
  Classifier: Programming Language :: Python :: 3 :: Only
27
33
  Classifier: Topic :: Internet
28
34
  Classifier: Topic :: Internet :: WWW/HTTP
29
35
  Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
30
- Requires-Python: >=3.7, <4
36
+ Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
37
+ Classifier: Topic :: Security
38
+ Requires-Python: <4,>=3.10
31
39
  Description-Content-Type: text/markdown
32
40
  License-File: LICENSE
41
+ Requires-Dist: Django>=4.2.27
42
+ Requires-Dist: pytz>=2025.2
43
+ Dynamic: license-file
33
44
 
34
45
  # Let's Encrypt App for Django
35
46
 
36
47
  `django-letsencrypt` will allow you to add, remove, and update any
37
- [ACME challenge](https://github.com/ietf-wg-acme/acme/) objects you may
48
+ [ACME challenge](https://datatracker.ietf.org/doc/html/rfc8555) objects you may
38
49
  need through your Django admin interface. Simply add the `ACME challenge`
39
50
  and `response` for your app to serve up the necessary information for
40
51
  [Let's Encrypt](https://letsencrypt.org/how-it-works/) validation.
@@ -46,33 +57,35 @@ versions of Django supported, even multiple databases too!
46
57
  And of course all wrapped up and published to
47
58
  [PyPI](https://pypi.org/project/django-letsencrypt/) for standard installation!
48
59
 
49
- # Supported Configurations
60
+ ## Supported Configurations
50
61
 
51
62
  `django-letsencrypt` is tested across a number of configurations, here's what's
52
63
  supported so far:
53
64
 
54
65
  - Python Versions Supported:
55
- - `3.10` (Django `4.0` and `3.2` only)
56
- - `3.8`
57
- - `3.7` (Django `3.2` and `2.2` only)
66
+ - `3.14` (with Django `6.0`, `5.2`)
67
+ - `3.13` (with Django `6.0`, `5.2`)
68
+ - `3.12` (with Django `6.0`, `5.2`, `4.2`)
69
+ - `3.11` (with Django `5.2`, `4.2`)
70
+ - `3.10` (with Django `5.2`, `4.2`)
58
71
  - Django Versions Supported:
59
- - `4.0` minimum version `4.0`
60
- - `3.2` minimum version `3.2.10`
61
- - `2.2` minimum version `2.2.25`
72
+ - `6.0` minimum version `6.0.1`
73
+ - `5.2 LTS` minimum version `5.2.10`
74
+ - `4.2 LTS` minimum version `4.2.27`
62
75
  - Databases Supported:
63
76
  - `mysql`
64
77
  - `postgres`
65
78
  - `sqlite`
66
79
 
67
- # Recent Build Status Badges
80
+ ## Recent Build Status Badges
68
81
 
69
82
  - [![Linting - Master](https://github.com/urda/django-letsencrypt/actions/workflows/linting.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/linting.yaml)
70
- - [![Testing Django 2.2 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-22.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-22.yaml)
71
- - [![Testing Django 3.2 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-32.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-32.yaml)
72
- - [![Testing Django 4.0 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-40.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-40.yaml)
83
+ - [![Testing Django 4.2 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-42.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-42.yaml)
84
+ - [![Testing Django 5.2 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-52.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-52.yaml)
85
+ - [![Testing Django 6.0 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-60.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-60.yaml)
73
86
  - [![Codecov - Master](https://codecov.io/gh/urda/django-letsencrypt/branch/master/graph/badge.svg?token=yn64lBfwZr)](https://codecov.io/gh/urda/django-letsencrypt)
74
87
 
75
- # Installation & Configuration
88
+ ## Installation & Configuration
76
89
 
77
90
  1. `pip install django-letsencrypt`
78
91
 
@@ -107,7 +120,7 @@ re_path(r'^\.well-known/', include('letsencrypt.urls'))
107
120
 
108
121
  7. Enjoy your easy to manage `ACME Challenges` inside your Django project!
109
122
 
110
- # Example Project
123
+ ## Example Project
111
124
 
112
125
  If you would like a demo of how to use this application simply clone this project's
113
126
  `git` repository from [GitHub](https://github.com/urda/django-letsencrypt),
@@ -116,4 +129,11 @@ take a moment to read the `README.md` file within the
116
129
  directory, and follow the directions. That will spin up a small sample django
117
130
  application already configured for you to try out.
118
131
 
132
+ ## Development
119
133
 
134
+ 1. Make sure you have installed [uv](https://docs.astral.sh/uv/) in your environment.
135
+ 2. Clone the repo to your development machine.
136
+ 3. Configure your `git` hooks with `git config core.hooksPath .githooks` for the project.
137
+ 4. Run `uv sync` to create the virtual environment and install required dependencies.
138
+ 5. Run `make test` for a singular test run.
139
+ 6. Run `make run-tox` to run the entire `tox` suite.
@@ -2,8 +2,7 @@ CHANGELOG.md
2
2
  LICENSE
3
3
  MANIFEST.in
4
4
  README.md
5
- setup.cfg
6
- setup.py
5
+ pyproject.toml
7
6
  django_letsencrypt.egg-info/PKG-INFO
8
7
  django_letsencrypt.egg-info/SOURCES.txt
9
8
  django_letsencrypt.egg-info/dependency_links.txt
@@ -0,0 +1,2 @@
1
+ Django>=4.2.27
2
+ pytz>=2025.2
@@ -1,5 +1,5 @@
1
1
  """
2
- Copyright 2016-2021 Peter Urda
2
+ Copyright 2016-2026 Peter Urda
3
3
 
4
4
  Licensed under the Apache License, Version 2.0 (the "License");
5
5
  you may not use this file except in compliance with the License.
@@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
14
14
  limitations under the License.
15
15
  """
16
16
 
17
- __version__ = '4.1.0'
17
+ __version__ = '6.0.0'
18
18
 
19
19
  default_app_config = 'letsencrypt.apps.LetsEncryptConfig'
@@ -0,0 +1,85 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name='django-letsencrypt'
7
+ version='6.0.0'
8
+ description="A simple Django app to handle Let's Encrypt ACME challenges."
9
+ readme = 'README.md'
10
+ license = 'Apache-2.0'
11
+ license-files = ['LICENSE']
12
+ requires-python = '>=3.10,<4'
13
+ authors = [{ name = 'Peter Urda', email = 'foss@urda.engineering' }]
14
+ classifiers = [
15
+ 'Development Status :: 6 - Mature',
16
+ 'Environment :: Web Environment',
17
+ 'Framework :: Django',
18
+ 'Framework :: Django :: 4',
19
+ 'Framework :: Django :: 4.2',
20
+ 'Framework :: Django :: 5',
21
+ 'Framework :: Django :: 5.2',
22
+ 'Framework :: Django :: 6',
23
+ 'Framework :: Django :: 6.0',
24
+ 'Framework :: Flake8',
25
+ 'Framework :: Pytest',
26
+ 'Framework :: tox',
27
+ 'Intended Audience :: Developers',
28
+ 'Intended Audience :: Information Technology',
29
+ 'Intended Audience :: System Administrators',
30
+ 'Natural Language :: English',
31
+ 'Operating System :: OS Independent',
32
+ 'Programming Language :: Python',
33
+ 'Programming Language :: Python :: 3',
34
+ 'Programming Language :: Python :: 3.10',
35
+ 'Programming Language :: Python :: 3.11',
36
+ 'Programming Language :: Python :: 3.12',
37
+ 'Programming Language :: Python :: 3.13',
38
+ 'Programming Language :: Python :: 3.14',
39
+ 'Programming Language :: Python :: 3 :: Only',
40
+ 'Topic :: Internet',
41
+ 'Topic :: Internet :: WWW/HTTP',
42
+ 'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
43
+ 'Topic :: Internet :: WWW/HTTP :: Site Management',
44
+ 'Topic :: Security',
45
+ ]
46
+ dependencies = [
47
+ 'Django>=4.2.27',
48
+ 'pytz>=2025.2',
49
+ ]
50
+
51
+ [project.urls]
52
+ Homepage = 'https://github.com/urda/django-letsencrypt'
53
+
54
+ [dependency-groups]
55
+ dev = [
56
+ 'coverage',
57
+ 'flake8',
58
+ 'pytest',
59
+ 'pytest-cov',
60
+ 'pytest-django',
61
+ 'setuptools',
62
+ 'tox',
63
+ 'tox-uv',
64
+ 'twine',
65
+ ]
66
+
67
+ [tool.pytest.ini_options]
68
+ DJANGO_SETTINGS_MODULE = "example_project.settings_test"
69
+ pythonpath = [".", "example_project"]
70
+ python_files = ["tests.py", "test_*.py", "*_test.py"]
71
+ testpaths = ["letsencrypt", "tests"]
72
+ addopts = "-v"
73
+
74
+ [tool.coverage.run]
75
+ source = ["letsencrypt"]
76
+ omit = [
77
+ "letsencrypt/migrations/*",
78
+ "letsencrypt/admin.py",
79
+ "letsencrypt/apps.py",
80
+ "letsencrypt/tests.py",
81
+ "letsencrypt/urls.py",
82
+ ]
83
+
84
+ [tool.setuptools.packages.find]
85
+ include = ['letsencrypt*']
@@ -1,6 +1,3 @@
1
- [bdist_wheel]
2
- universal = 0
3
-
4
1
  [egg_info]
5
2
  tag_build =
6
3
  tag_date = 0
@@ -1,2 +0,0 @@
1
- Django>=2.2.25
2
- pytz>=2021.3
@@ -1,64 +0,0 @@
1
- """
2
- Copyright 2016-2021 Peter Urda
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
- """
16
-
17
- import os
18
- from setuptools import setup
19
-
20
- with open(os.path.join(os.path.dirname(__file__), 'README.md')) as readme:
21
- README = readme.read()
22
-
23
- os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))
24
-
25
- setup(
26
- name='django-letsencrypt',
27
- version='4.1.0',
28
- python_requires=">=3.7, <4",
29
- packages=['letsencrypt'],
30
- include_package_data=True,
31
- license='Apache License, Version 2.0',
32
- description="A simple Django app to handle Let's Encrypt ACME challenges.",
33
- long_description=README,
34
- long_description_content_type='text/markdown',
35
- url='https://github.com/urda/django-letsencrypt',
36
- author='Peter Urda',
37
- author_email='foss@urda.engineering',
38
- install_requires=[
39
- "Django>=2.2.25",
40
- "pytz>=2021.3",
41
- ],
42
- classifiers=[
43
- 'Development Status :: 5 - Production/Stable',
44
- 'Environment :: Web Environment',
45
- 'Framework :: Django',
46
- 'Framework :: Django :: 2.2',
47
- 'Framework :: Django :: 3.2',
48
- 'Framework :: Django :: 4.0',
49
- 'Intended Audience :: Developers',
50
- 'License :: OSI Approved :: Apache Software License',
51
- 'Natural Language :: English',
52
- 'Operating System :: OS Independent',
53
- 'Programming Language :: Python',
54
- 'Programming Language :: Python :: 3',
55
- 'Programming Language :: Python :: 3.7',
56
- 'Programming Language :: Python :: 3.8',
57
- 'Programming Language :: Python :: 3.9',
58
- 'Programming Language :: Python :: 3.10',
59
- 'Programming Language :: Python :: 3 :: Only',
60
- 'Topic :: Internet',
61
- 'Topic :: Internet :: WWW/HTTP',
62
- 'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
63
- ],
64
- )