Skip to content

Commit fbeae68

Browse files
authored
Merge branch 'main' into fix-django-unicode-error
2 parents 8fd6bbe + 35834f8 commit fbeae68

File tree

7 files changed

+106
-22
lines changed

7 files changed

+106
-22
lines changed

.github/workflows/test.yml

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
fail-fast: false
1515
max-parallel: 5
1616
matrix:
17-
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
17+
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
1818

1919
services:
2020
mariadb:
@@ -73,29 +73,37 @@ jobs:
7373
fail-fast: false
7474
max-parallel: 5
7575
matrix:
76-
# Skip 3.13 here, it needs the psycopg3 / postgis3 database
77-
python-version: ['3.9', '3.10', '3.11', '3.12']
78-
database: [postgresql, postgis]
79-
# Add psycopg3 to our matrix for modern python versions
80-
include:
81-
- python-version: '3.10'
82-
database: psycopg3
83-
- python-version: '3.11'
84-
database: psycopg3
85-
- python-version: '3.12'
76+
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
77+
database: [postgresql, postgis, psycopg3]
78+
exclude:
79+
- python-version: '3.9'
8680
database: psycopg3
8781
- python-version: '3.13'
88-
database: psycopg3
82+
database: postgis
83+
- python-version: '3.13'
84+
database: postgresql
85+
- python-version: '3.14'
86+
database: postgis
87+
- python-version: '3.14'
88+
database: postgresql
89+
# Add postgis3 to our matrix for modern Python versions
90+
include:
8991
- python-version: '3.13'
9092
database: postgis3
9193
- python-version: '3.13'
9294
database: psycopg3
9395
env:
9496
DJANGO_SELENIUM_TESTS=true
97+
- python-version: '3.14'
98+
database: postgis3
99+
- python-version: '3.14'
100+
database: psycopg3
101+
env:
102+
DJANGO_SELENIUM_TESTS=true
95103

96104
services:
97105
postgres:
98-
image: postgis/postgis:14-3.1
106+
image: postgis/postgis:17-3.5
99107
env:
100108
POSTGRES_DB: debug_toolbar
101109
POSTGRES_USER: debug_toolbar
@@ -155,7 +163,7 @@ jobs:
155163
fail-fast: false
156164
max-parallel: 5
157165
matrix:
158-
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
166+
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
159167

160168
steps:
161169
- uses: actions/checkout@v5

.pre-commit-config.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ repos:
1414
hooks:
1515
- id: doc8
1616
- repo: https://github.com/adamchainz/django-upgrade
17-
rev: 1.28.0
17+
rev: 1.29.0
1818
hooks:
1919
- id: django-upgrade
2020
args: [--target-version, "4.2"]
@@ -29,18 +29,18 @@ repos:
2929
- id: rst-backticks
3030
- id: rst-directive-colons
3131
- repo: https://github.com/biomejs/pre-commit
32-
rev: v2.2.4
32+
rev: v2.2.5
3333
hooks:
3434
- id: biome-check
3535
verbose: true
3636
- repo: https://github.com/astral-sh/ruff-pre-commit
37-
rev: 'v0.13.1'
37+
rev: 'v0.14.0'
3838
hooks:
3939
- id: ruff
4040
args: [--fix, --exit-non-zero-on-fix]
4141
- id: ruff-format
4242
- repo: https://github.com/tox-dev/pyproject-fmt
43-
rev: v2.6.0
43+
rev: v2.10.0
4444
hooks:
4545
- id: pyproject-fmt
4646
- repo: https://github.com/abravalheri/validate-pyproject

docs/changes.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ Pending
1515
* Added ``CommunityPanel`` containing links to documentation and resources.
1616
* Fixed force_str to catch error and give out default string if value is not
1717
serializable.
18+
* Upgraded CI ``postgis`` version to 17-3.5.
19+
* Added how to generate the documentation locally to the contributing
20+
documentation.
1821

1922
6.0.0 (2025-07-22)
2023
------------------

docs/contributing.rst

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ You can report bugs and request features in the `bug tracker
1212

1313
Please search the existing database for duplicates before filing an issue.
1414

15+
.. _code:
16+
1517
Code
1618
----
1719

@@ -207,3 +209,69 @@ The release itself requires the following steps:
207209
#. **After the publishing completed** edit the automatically created GitHub
208210
release to include the release notes (you may use GitHub's "Generate release
209211
notes" button for this).
212+
213+
214+
Building the documentation locally
215+
----------------------------------
216+
217+
The project's documentation is built using `Sphinx <https://www.sphinx-doc.org>`_.
218+
You can generate it locally to preview your changes before submitting a pull
219+
request.
220+
221+
222+
Prerequisites
223+
--------------
224+
225+
Before building the documentation, ensure that all dependencies are installed
226+
as described in :ref:`the setup instructions <code>`.
227+
228+
Additionally, to build the documentation with proper spell checking,
229+
you need to install:
230+
231+
- **Enchant Library** - This is required by the sphinxcontrib-spelling
232+
extension via the pyenchant package. For detailed installation
233+
instructions, see the
234+
`pyenchant installation documentation <https://pyenchant.github.io/pyenchant/install.html#installing-the-enchant-c-library>`_.
235+
236+
237+
238+
239+
Using Tox (Cross-Platform)
240+
------------------------------------
241+
242+
To build the documentation using Tox, run from the project root:
243+
244+
.. code-block:: bash
245+
246+
tox -e docs -- html
247+
248+
This will generate the HTML files in ``docs/_build/html/``.
249+
250+
You can then open the documentation in your browser:
251+
252+
- **Linux:** ``xdg-open docs/_build/html/index.html``
253+
- **macOS:** ``open docs/_build/html/index.html``
254+
- **Windows:** ``start docs\_build\html\index.html``
255+
256+
*Tox automatically installs the necessary dependencies, so you don’t need
257+
to activate a virtual environment manually.*
258+
259+
260+
Troubleshooting
261+
----------------
262+
263+
264+
If you encounter an error about a missing dependency such as
265+
``sphinx-build: command not found``, ensure that your virtual environment is
266+
activated and all dependencies are installed:
267+
268+
.. code-block:: bash
269+
270+
pip install -r requirements_dev.txt
271+
272+
Alternatively, you can build the documentation using Tox, which automatically
273+
handles dependencies and environment setup:
274+
275+
.. code-block:: bash
276+
277+
tox -e docs -- html

docs/spelling_wordlist.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ pre
4848
profiler
4949
psycopg
5050
py
51+
pyenchant
5152
pyflame
5253
pylibmc
5354
pytest
@@ -58,6 +59,7 @@ reinitializing
5859
resizing
5960
runserver
6061
spellchecking
62+
sphinxcontrib
6163
spooler
6264
stacktrace
6365
stacktraces

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ classifiers = [
3131
"Programming Language :: Python :: 3.11",
3232
"Programming Language :: Python :: 3.12",
3333
"Programming Language :: Python :: 3.13",
34+
"Programming Language :: Python :: 3.14",
3435
"Topic :: Software Development :: Libraries :: Python Modules",
3536
]
3637
dynamic = [

tox.ini

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ envlist =
66
py{39,310,311,312}-dj{42}-{sqlite,postgresql,postgis,mysql}
77
py{310,311,312}-dj{42,50,51,52}-{sqlite,postgresql,psycopg3,postgis,mysql}
88
py{313}-dj{51,52,main}-{sqlite,psycopg3,postgis3,mysql}
9+
py{314}-dj{52,main}-{sqlite,psycopg3,postgis3,mysql}
910

1011
[testenv]
1112
deps =
@@ -52,28 +53,28 @@ pip_pre = True
5253
commands = python -b -W always -m coverage run -m django test -v2 {posargs:tests}
5354

5455

55-
[testenv:py{39,310,311,312,313}-dj{42,50,51,52,main}-{postgresql,psycopg3}]
56+
[testenv:py{39,310,311,312,313,314}-dj{42,50,51,52,main}-{postgresql,psycopg3}]
5657
setenv =
5758
{[testenv]setenv}
5859
DB_BACKEND = postgresql
5960
DB_PORT = {env:DB_PORT:5432}
6061

6162

62-
[testenv:py{39,310,311,312,313}-dj{42,50,51,52,main}-{postgis,postgis3}]
63+
[testenv:py{39,310,311,312,313,314}-dj{42,50,51,52,main}-{postgis,postgis3}]
6364
setenv =
6465
{[testenv]setenv}
6566
DB_BACKEND = postgis
6667
DB_PORT = {env:DB_PORT:5432}
6768

6869

69-
[testenv:py{39,310,311,312,313}-dj{42,50,51,52,main}-mysql]
70+
[testenv:py{39,310,311,312,313,314}-dj{42,50,51,52,main}-mysql]
7071
setenv =
7172
{[testenv]setenv}
7273
DB_BACKEND = mysql
7374
DB_PORT = {env:DB_PORT:3306}
7475

7576

76-
[testenv:py{39,310,311,312,313}-dj{42,50,51,52,main}-sqlite]
77+
[testenv:py{39,310,311,312,313,314}-dj{42,50,51,52,main}-sqlite]
7778
setenv =
7879
{[testenv]setenv}
7980
DB_BACKEND = sqlite3
@@ -103,6 +104,7 @@ python =
103104
3.11: py311
104105
3.12: py312
105106
3.13: py313
107+
3.14: py314
106108

107109
[gh-actions:env]
108110
DB_BACKEND =

0 commit comments

Comments
 (0)