Skip to content

Commit 68d30c0

Browse files
authored
Merge pull request #190 from sandiegopython/davidfischer/upgrade-python314
Upgrade to Python 3.14
2 parents 927ba81 + 03658ea commit 68d30c0

File tree

11 files changed

+47
-42
lines changed

11 files changed

+47
-42
lines changed

.coveragerc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
[run]
2-
branch: True
2+
branch = True
3+
# Currently, Python3.14 defaults to sysmon which is incompatible with coverage plugins
4+
# https://coverage.readthedocs.io/en/7.11.0/config.html#run-core
5+
# https://github.com/nedbat/coveragepy/issues/1790
6+
# https://github.com/nedbat/django_coverage_plugin/issues/102
7+
core = ctrace
38
source =
49
config
510
pythonsd

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
- uses: actions/checkout@v3
1919
- uses: actions/setup-python@v4
2020
with:
21-
python-version: "3.10"
21+
python-version: "3.14"
2222

2323
- name: Run CI
2424
run: |

.pre-commit-config.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
repos:
22
- repo: https://github.com/pre-commit/pre-commit-hooks
3-
rev: v4.3.0
3+
rev: v6.0.0
44
hooks:
55
- id: check-yaml
66
- id: end-of-file-fixer
77
- id: trailing-whitespace
88
- repo: https://github.com/psf/black-pre-commit-mirror
9-
rev: 24.4.2
9+
rev: 25.9.0
1010
hooks:
1111
- id: black
1212
# Since the pre-commit runs on a file by file basis rather than a whole project,
1313
# The excludes in pyproject.toml are ignored
1414
exclude: migrations
15-
language_version: python3.10
15+
language_version: python3.14

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# https://www.debian.org/releases/stable/
22
# https://hub.docker.com/_/python/
3-
ARG PYTHON_VERSION=3.13-slim-bookworm
3+
ARG PYTHON_VERSION=3.14-slim-trixie
44

55
FROM python:${PYTHON_VERSION}
66

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ This is the repository for the San Diego Python website at [sandiegopython.org](
77

88
### Prerequisites
99

10-
* Python v3.10
10+
* Python v3.14
1111
* Node v20
1212

1313
### Getting started

config/settings/base.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
Django settings for pythonsd project.
33
44
For more information on this file, see
5-
https://docs.djangoproject.com/en/4.2/topics/settings/
5+
https://docs.djangoproject.com/en/dev/topics/settings/
66
77
For the full list of settings and their values, see
8-
https://docs.djangoproject.com/en/4.2/ref/settings/
8+
https://docs.djangoproject.com/en/dev/ref/settings/
99
"""
1010

1111
import json
@@ -20,7 +20,7 @@
2020

2121

2222
# Quick-start development settings - unsuitable for production
23-
# https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/
23+
# https://docs.djangoproject.com/en/dev/howto/deployment/checklist/
2424

2525
# SECURITY WARNING: keep the secret key used in production secret!
2626
# SECURITY WARNING: don't run with debug turned on in production!
@@ -82,14 +82,14 @@
8282

8383

8484
# Database
85-
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases
85+
# https://docs.djangoproject.com/en/dev/ref/settings/#databases
8686
# --------------------------------------------------------------------------
8787
DATABASES = {"default": dj_database_url.config(default="sqlite:///db.sqlite3")}
8888
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
8989

9090

9191
# Internationalization
92-
# https://docs.djangoproject.com/en/4.2/topics/i18n/
92+
# https://docs.djangoproject.com/en/dev/topics/i18n/
9393
# --------------------------------------------------------------------------
9494
LANGUAGE_CODE = "en-us"
9595

@@ -101,8 +101,8 @@
101101

102102

103103
# Static files (CSS, JavaScript, Images)
104-
# https://docs.djangoproject.com/en/4.2/howto/static-files/
105-
# https://docs.djangoproject.com/en/4.2/ref/settings/#std-setting-STORAGES
104+
# https://docs.djangoproject.com/en/dev/howto/static-files/
105+
# https://docs.djangoproject.com/en/dev/ref/settings/#std-setting-STORAGES
106106
# --------------------------------------------------------------------------
107107
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
108108
STATIC_URL = "/static-files/"
@@ -127,15 +127,15 @@
127127

128128

129129
# Email
130-
# https://docs.djangoproject.com/en/4.2/topics/email/
130+
# https://docs.djangoproject.com/en/dev/topics/email/
131131
# --------------------------------------------------------------------------
132132
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
133133
DEFAULT_FROM_EMAIL = "[email protected]"
134134
SERVER_EMAIL = DEFAULT_FROM_EMAIL
135135

136136

137137
# Caching
138-
# https://docs.djangoproject.com/en/4.2/ref/settings/#caches
138+
# https://docs.djangoproject.com/en/dev/ref/settings/#caches
139139
# --------------------------------------------------------------------------
140140
CACHES = {
141141
"default": {
@@ -148,8 +148,8 @@
148148
# A sample logging configuration. The only tangible logging
149149
# performed by this configuration is to send an email to
150150
# the site admins on every HTTP 500 error when DEBUG=False.
151-
# http://docs.djangoproject.com/en/4.2/topics/logging
152-
# https://docs.djangoproject.com/en/4.2/ref/settings/#logging
151+
# http://docs.djangoproject.com/en/dev/topics/logging
152+
# https://docs.djangoproject.com/en/dev/ref/settings/#logging
153153
# --------------------------------------------------------------------------
154154
LOGGING = {
155155
"version": 1,

config/settings/prod.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from .base import * # noqa
1313

1414

15-
# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/
15+
# See https://docs.djangoproject.com/en/dev/howto/deployment/checklist/
1616

1717
DEBUG = False
1818
SECRET_KEY = os.environ["SECRET_KEY"]
@@ -51,15 +51,15 @@
5151

5252

5353
# Database
54-
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases
54+
# https://docs.djangoproject.com/en/dev/ref/settings/#databases
5555
# --------------------------------------------------------------------------
5656
DATABASES = {"default": dj_database_url.config()}
5757
DATABASES["default"]["ATOMIC_REQUESTS"] = True
5858
DATABASES["default"]["CONN_MAX_AGE"] = 600
5959

6060

6161
# Security
62-
# https://docs.djangoproject.com/en/4.2/topics/security/
62+
# https://docs.djangoproject.com/en/dev/topics/security/
6363
# --------------------------------------------------------------------------
6464
if "SECURE_SSL_HOST" in os.environ:
6565
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
@@ -82,14 +82,14 @@
8282

8383

8484
# Sessions
85-
# https://docs.djangoproject.com/en/4.2/topics/http/sessions/
85+
# https://docs.djangoproject.com/en/dev/topics/http/sessions/
8686
# Don't put sessions in the database
8787

8888
SESSION_ENGINE = "django.contrib.sessions.backends.signed_cookies"
8989

9090

9191
# Email
92-
# https://docs.djangoproject.com/en/4.2/topics/email/
92+
# https://docs.djangoproject.com/en/dev/topics/email/
9393
# https://anymail.readthedocs.io/en/stable/
9494
# --------------------------------------------------------------------------
9595
if "SENDGRID_API_KEY" in os.environ:
@@ -99,7 +99,7 @@
9999

100100

101101
# Logging
102-
# http://docs.djangoproject.com/en/4.2/topics/logging
102+
# http://docs.djangoproject.com/en/dev/topics/logging
103103
# --------------------------------------------------------------------------
104104
LOGGING["loggers"][""]["level"] = "INFO"
105105
LOGGING["loggers"]["pythonsd"]["level"] = "INFO"

config/wsgi.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
It exposes the WSGI callable as a module-level variable named ``application``.
55
66
For more information on this file, see
7-
https://docs.djangoproject.com/en/4.2/howto/deployment/wsgi/
7+
https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/
88
"""
99

1010
import os

requirements/common.txt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
# Helper for transforming a database URL envvar
22
# to a Django connection string
3-
dj-database-url==2.2.0
3+
dj-database-url==3.0.1
44

55
# This is a Django app
6-
Django==4.2.25
6+
Django==5.2.7
77

88
# A zero dependency WSGI server
99
gunicorn==23.0.0
1010

1111
# For connecting to various APIs (eg. Meetup.com)
12-
requests==2.32.4
12+
requests==2.32.5
1313

1414
# For serving static assets from the WSGI server
15-
whitenoise==6.5.0
15+
whitenoise==6.11.0
1616

1717
# Redirects requests to other hosts to this one
1818
django-enforce-host==1.1.0
@@ -21,4 +21,4 @@ django-enforce-host==1.1.0
2121
defusedxml==0.7.1
2222

2323
# Used for image field handling
24-
pillow==11.3.0
24+
pillow==12.0.0

requirements/deployment.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
# Database server
44
# https://www.psycopg.org/docs/install.html#install-from-source
5-
psycopg2==2.9.10
5+
psycopg[binary]==3.2.12
66

77
# Email
8-
django-anymail==10.3
8+
django-anymail==13.1
99

1010
# Cloud storage for media storage (S3, R2, etc.)
11-
django-storages[s3]==1.14.3
11+
django-storages[s3]==1.14.6

0 commit comments

Comments
 (0)