django-letsencrypt 5.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-5.1.0 → django_letsencrypt-6.0.0}/CHANGELOG.md +35 -0
  2. {django_letsencrypt-5.1.0/django_letsencrypt.egg-info → django_letsencrypt-6.0.0}/PKG-INFO +47 -41
  3. {django_letsencrypt-5.1.0 → django_letsencrypt-6.0.0}/README.md +25 -17
  4. {django_letsencrypt-5.1.0 → django_letsencrypt-6.0.0/django_letsencrypt.egg-info}/PKG-INFO +47 -41
  5. {django_letsencrypt-5.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-5.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-5.1.0 → django_letsencrypt-6.0.0}/setup.cfg +0 -3
  10. django_letsencrypt-5.1.0/django_letsencrypt.egg-info/requires.txt +0 -2
  11. django_letsencrypt-5.1.0/setup.py +0 -65
  12. {django_letsencrypt-5.1.0 → django_letsencrypt-6.0.0}/LICENSE +0 -0
  13. {django_letsencrypt-5.1.0 → django_letsencrypt-6.0.0}/MANIFEST.in +0 -0
  14. {django_letsencrypt-5.1.0 → django_letsencrypt-6.0.0}/django_letsencrypt.egg-info/dependency_links.txt +0 -0
  15. {django_letsencrypt-5.1.0 → django_letsencrypt-6.0.0}/django_letsencrypt.egg-info/top_level.txt +0 -0
  16. {django_letsencrypt-5.1.0 → django_letsencrypt-6.0.0}/letsencrypt/admin.py +0 -0
  17. {django_letsencrypt-5.1.0 → django_letsencrypt-6.0.0}/letsencrypt/apps.py +0 -0
  18. {django_letsencrypt-5.1.0 → django_letsencrypt-6.0.0}/letsencrypt/migrations/0001_squashed_0004_squash_for_mysql_support.py +0 -0
  19. {django_letsencrypt-5.1.0 → django_letsencrypt-6.0.0}/letsencrypt/migrations/__init__.py +0 -0
  20. {django_letsencrypt-5.1.0 → django_letsencrypt-6.0.0}/letsencrypt/models.py +0 -0
  21. {django_letsencrypt-5.1.0 → django_letsencrypt-6.0.0}/letsencrypt/tests.py +0 -0
  22. {django_letsencrypt-5.1.0 → django_letsencrypt-6.0.0}/letsencrypt/urls.py +0 -0
  23. {django_letsencrypt-5.1.0 → django_letsencrypt-6.0.0}/letsencrypt/views.py +0 -0
@@ -1,5 +1,40 @@
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
+
3
38
  ## v5.1.0
4
39
 
5
40
  There are no major project changes or code updates. This release aligns with
@@ -1,53 +1,51 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-letsencrypt
3
- Version: 5.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
- 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
10
9
  Classifier: Environment :: Web Environment
11
10
  Classifier: Framework :: Django
12
- Classifier: Framework :: Django :: 4.0
13
- Classifier: Framework :: Django :: 5.0
14
- Classifier: Framework :: Django :: 5.1
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
15
20
  Classifier: Intended Audience :: Developers
16
- Classifier: License :: OSI Approved :: Apache Software License
21
+ Classifier: Intended Audience :: Information Technology
22
+ Classifier: Intended Audience :: System Administrators
17
23
  Classifier: Natural Language :: English
18
24
  Classifier: Operating System :: OS Independent
19
25
  Classifier: Programming Language :: Python
20
26
  Classifier: Programming Language :: Python :: 3
21
- Classifier: Programming Language :: Python :: 3.8
22
- Classifier: Programming Language :: Python :: 3.9
23
27
  Classifier: Programming Language :: Python :: 3.10
24
28
  Classifier: Programming Language :: Python :: 3.11
25
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.8, <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
33
- Requires-Dist: Django>=4.2.20
41
+ Requires-Dist: Django>=4.2.27
34
42
  Requires-Dist: pytz>=2025.2
35
- Dynamic: author
36
- Dynamic: author-email
37
- Dynamic: classifier
38
- Dynamic: description
39
- Dynamic: description-content-type
40
- Dynamic: home-page
41
- Dynamic: license
42
43
  Dynamic: license-file
43
- Dynamic: requires-dist
44
- Dynamic: requires-python
45
- Dynamic: summary
46
44
 
47
45
  # Let's Encrypt App for Django
48
46
 
49
47
  `django-letsencrypt` will allow you to add, remove, and update any
50
- [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
51
49
  need through your Django admin interface. Simply add the `ACME challenge`
52
50
  and `response` for your app to serve up the necessary information for
53
51
  [Let's Encrypt](https://letsencrypt.org/how-it-works/) validation.
@@ -59,36 +57,35 @@ versions of Django supported, even multiple databases too!
59
57
  And of course all wrapped up and published to
60
58
  [PyPI](https://pypi.org/project/django-letsencrypt/) for standard installation!
61
59
 
62
- # Supported Configurations
60
+ ## Supported Configurations
63
61
 
64
62
  `django-letsencrypt` is tested across a number of configurations, here's what's
65
63
  supported so far:
66
64
 
67
65
  - Python Versions Supported:
68
- - `3.13` (with Django `5.1`)
69
- - `3.12` (with Django `5.1`, `5.0`, `4.2`)
70
- - `3.11` (with Django `5.1`, `5.0`, `4.2`)
71
- - `3.10` (with Django `5.1`, `5.0`, `4.2`)
72
- - `3.9` (with Django `4.2`)
73
- - `3.8` (with Django `4.2`)
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`)
74
71
  - Django Versions Supported:
75
- - `5.1` minimum version `5.1.7`
76
- - `5.0` minimum version `5.0.13`
77
- - `4.2 LTS` minimum version `4.2.20`
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`
78
75
  - Databases Supported:
79
76
  - `mysql`
80
77
  - `postgres`
81
78
  - `sqlite`
82
79
 
83
- # Recent Build Status Badges
80
+ ## Recent Build Status Badges
84
81
 
85
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)
86
- - [![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)
87
- - [![Testing Django 5.0 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-50.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-50.yaml)
88
- - [![Testing Django 5.1 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-51.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-51.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)
89
86
  - [![Codecov - Master](https://codecov.io/gh/urda/django-letsencrypt/branch/master/graph/badge.svg?token=yn64lBfwZr)](https://codecov.io/gh/urda/django-letsencrypt)
90
87
 
91
- # Installation & Configuration
88
+ ## Installation & Configuration
92
89
 
93
90
  1. `pip install django-letsencrypt`
94
91
 
@@ -123,7 +120,7 @@ re_path(r'^\.well-known/', include('letsencrypt.urls'))
123
120
 
124
121
  7. Enjoy your easy to manage `ACME Challenges` inside your Django project!
125
122
 
126
- # Example Project
123
+ ## Example Project
127
124
 
128
125
  If you would like a demo of how to use this application simply clone this project's
129
126
  `git` repository from [GitHub](https://github.com/urda/django-letsencrypt),
@@ -131,3 +128,12 @@ take a moment to read the `README.md` file within the
131
128
  [`example_project`](https://github.com/urda/django-letsencrypt/tree/master/example_project)
132
129
  directory, and follow the directions. That will spin up a small sample django
133
130
  application already configured for you to try out.
131
+
132
+ ## Development
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,36 +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.13` (with Django `5.1`)
23
- - `3.12` (with Django `5.1`, `5.0`, `4.2`)
24
- - `3.11` (with Django `5.1`, `5.0`, `4.2`)
25
- - `3.10` (with Django `5.1`, `5.0`, `4.2`)
26
- - `3.9` (with Django `4.2`)
27
- - `3.8` (with Django `4.2`)
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`)
28
27
  - Django Versions Supported:
29
- - `5.1` minimum version `5.1.7`
30
- - `5.0` minimum version `5.0.13`
31
- - `4.2 LTS` minimum version `4.2.20`
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`
32
31
  - Databases Supported:
33
32
  - `mysql`
34
33
  - `postgres`
35
34
  - `sqlite`
36
35
 
37
- # Recent Build Status Badges
36
+ ## Recent Build Status Badges
38
37
 
39
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)
40
- - [![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)
41
- - [![Testing Django 5.0 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-50.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-50.yaml)
42
- - [![Testing Django 5.1 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-51.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-51.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)
43
42
  - [![Codecov - Master](https://codecov.io/gh/urda/django-letsencrypt/branch/master/graph/badge.svg?token=yn64lBfwZr)](https://codecov.io/gh/urda/django-letsencrypt)
44
43
 
45
- # Installation & Configuration
44
+ ## Installation & Configuration
46
45
 
47
46
  1. `pip install django-letsencrypt`
48
47
 
@@ -77,7 +76,7 @@ re_path(r'^\.well-known/', include('letsencrypt.urls'))
77
76
 
78
77
  7. Enjoy your easy to manage `ACME Challenges` inside your Django project!
79
78
 
80
- # Example Project
79
+ ## Example Project
81
80
 
82
81
  If you would like a demo of how to use this application simply clone this project's
83
82
  `git` repository from [GitHub](https://github.com/urda/django-letsencrypt),
@@ -85,3 +84,12 @@ take a moment to read the `README.md` file within the
85
84
  [`example_project`](https://github.com/urda/django-letsencrypt/tree/master/example_project)
86
85
  directory, and follow the directions. That will spin up a small sample django
87
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,53 +1,51 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-letsencrypt
3
- Version: 5.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
- 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
10
9
  Classifier: Environment :: Web Environment
11
10
  Classifier: Framework :: Django
12
- Classifier: Framework :: Django :: 4.0
13
- Classifier: Framework :: Django :: 5.0
14
- Classifier: Framework :: Django :: 5.1
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
15
20
  Classifier: Intended Audience :: Developers
16
- Classifier: License :: OSI Approved :: Apache Software License
21
+ Classifier: Intended Audience :: Information Technology
22
+ Classifier: Intended Audience :: System Administrators
17
23
  Classifier: Natural Language :: English
18
24
  Classifier: Operating System :: OS Independent
19
25
  Classifier: Programming Language :: Python
20
26
  Classifier: Programming Language :: Python :: 3
21
- Classifier: Programming Language :: Python :: 3.8
22
- Classifier: Programming Language :: Python :: 3.9
23
27
  Classifier: Programming Language :: Python :: 3.10
24
28
  Classifier: Programming Language :: Python :: 3.11
25
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.8, <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
33
- Requires-Dist: Django>=4.2.20
41
+ Requires-Dist: Django>=4.2.27
34
42
  Requires-Dist: pytz>=2025.2
35
- Dynamic: author
36
- Dynamic: author-email
37
- Dynamic: classifier
38
- Dynamic: description
39
- Dynamic: description-content-type
40
- Dynamic: home-page
41
- Dynamic: license
42
43
  Dynamic: license-file
43
- Dynamic: requires-dist
44
- Dynamic: requires-python
45
- Dynamic: summary
46
44
 
47
45
  # Let's Encrypt App for Django
48
46
 
49
47
  `django-letsencrypt` will allow you to add, remove, and update any
50
- [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
51
49
  need through your Django admin interface. Simply add the `ACME challenge`
52
50
  and `response` for your app to serve up the necessary information for
53
51
  [Let's Encrypt](https://letsencrypt.org/how-it-works/) validation.
@@ -59,36 +57,35 @@ versions of Django supported, even multiple databases too!
59
57
  And of course all wrapped up and published to
60
58
  [PyPI](https://pypi.org/project/django-letsencrypt/) for standard installation!
61
59
 
62
- # Supported Configurations
60
+ ## Supported Configurations
63
61
 
64
62
  `django-letsencrypt` is tested across a number of configurations, here's what's
65
63
  supported so far:
66
64
 
67
65
  - Python Versions Supported:
68
- - `3.13` (with Django `5.1`)
69
- - `3.12` (with Django `5.1`, `5.0`, `4.2`)
70
- - `3.11` (with Django `5.1`, `5.0`, `4.2`)
71
- - `3.10` (with Django `5.1`, `5.0`, `4.2`)
72
- - `3.9` (with Django `4.2`)
73
- - `3.8` (with Django `4.2`)
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`)
74
71
  - Django Versions Supported:
75
- - `5.1` minimum version `5.1.7`
76
- - `5.0` minimum version `5.0.13`
77
- - `4.2 LTS` minimum version `4.2.20`
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`
78
75
  - Databases Supported:
79
76
  - `mysql`
80
77
  - `postgres`
81
78
  - `sqlite`
82
79
 
83
- # Recent Build Status Badges
80
+ ## Recent Build Status Badges
84
81
 
85
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)
86
- - [![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)
87
- - [![Testing Django 5.0 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-50.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-50.yaml)
88
- - [![Testing Django 5.1 - Master](https://github.com/urda/django-letsencrypt/actions/workflows/testing-51.yaml/badge.svg?branch=master)](https://github.com/urda/django-letsencrypt/actions/workflows/testing-51.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)
89
86
  - [![Codecov - Master](https://codecov.io/gh/urda/django-letsencrypt/branch/master/graph/badge.svg?token=yn64lBfwZr)](https://codecov.io/gh/urda/django-letsencrypt)
90
87
 
91
- # Installation & Configuration
88
+ ## Installation & Configuration
92
89
 
93
90
  1. `pip install django-letsencrypt`
94
91
 
@@ -123,7 +120,7 @@ re_path(r'^\.well-known/', include('letsencrypt.urls'))
123
120
 
124
121
  7. Enjoy your easy to manage `ACME Challenges` inside your Django project!
125
122
 
126
- # Example Project
123
+ ## Example Project
127
124
 
128
125
  If you would like a demo of how to use this application simply clone this project's
129
126
  `git` repository from [GitHub](https://github.com/urda/django-letsencrypt),
@@ -131,3 +128,12 @@ take a moment to read the `README.md` file within the
131
128
  [`example_project`](https://github.com/urda/django-letsencrypt/tree/master/example_project)
132
129
  directory, and follow the directions. That will spin up a small sample django
133
130
  application already configured for you to try out.
131
+
132
+ ## Development
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-2025 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__ = '5.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>=4.2.20
2
- pytz>=2025.2
@@ -1,65 +0,0 @@
1
- """
2
- Copyright 2016-2025 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='5.1.0',
28
- python_requires=">=3.8, <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>=4.2.20",
40
- "pytz>=2025.2",
41
- ],
42
- classifiers=[
43
- 'Development Status :: 5 - Production/Stable',
44
- 'Environment :: Web Environment',
45
- 'Framework :: Django',
46
- 'Framework :: Django :: 4.0',
47
- 'Framework :: Django :: 5.0',
48
- 'Framework :: Django :: 5.1',
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.8',
56
- 'Programming Language :: Python :: 3.9',
57
- 'Programming Language :: Python :: 3.10',
58
- 'Programming Language :: Python :: 3.11',
59
- 'Programming Language :: Python :: 3.12',
60
- 'Programming Language :: Python :: 3 :: Only',
61
- 'Topic :: Internet',
62
- 'Topic :: Internet :: WWW/HTTP',
63
- 'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
64
- ],
65
- )