From d6c7c197bcdfe56de33da11be498375a26bd4c68 Mon Sep 17 00:00:00 2001 From: Griatch Date: Sat, 14 Feb 2026 17:41:50 +0100 Subject: [PATCH] Update to Django 6.0.2 --- .github/actions/run-tests/action.yml | 4 ++-- .github/workflows/github_action_test_suite.yml | 8 ++++---- CHANGELOG.md | 8 ++++---- evennia/VERSION_REQS.txt | 4 ++-- evennia/server/portal/telnet.py | 15 +++++++-------- pyproject.toml | 2 +- 6 files changed, 20 insertions(+), 21 deletions(-) diff --git a/.github/actions/run-tests/action.yml b/.github/actions/run-tests/action.yml index a841a2facb..beffa0003b 100644 --- a/.github/actions/run-tests/action.yml +++ b/.github/actions/run-tests/action.yml @@ -23,7 +23,7 @@ inputs: required: false default: "false" needs-postgres-package: - description: "Whether to install psycopg2-binary package (true/false)." + description: "Whether to install psycopg package (true/false)." required: false default: "false" coveralls-token: @@ -48,7 +48,7 @@ runs: python -m pip install --upgrade pip pip install wheel if [ "${{ inputs.needs-postgres-package }}" == "true" ]; then - pip install psycopg2-binary==2.9.5 # req by postgresql + pip install "psycopg[binary]>=3.1.0" # req by postgresql fi if [ "${{ inputs.needs-mysql-package }}" == "true" ]; then pip install mysqlclient diff --git a/.github/workflows/github_action_test_suite.yml b/.github/workflows/github_action_test_suite.yml index b6a943c3f7..d0b20eaff6 100644 --- a/.github/workflows/github_action_test_suite.yml +++ b/.github/workflows/github_action_test_suite.yml @@ -19,9 +19,9 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.11", "3.12", "3.13"] + python-version: ["3.12", "3.13", "3.14"] include: - - python-version: "3.11" + - python-version: "3.12" coverage-test: true timeout-minutes: 30 @@ -52,7 +52,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.11", "3.12", "3.13"] + python-version: ["3.12", "3.13", "3.14"] timeout-minutes: 35 @@ -95,7 +95,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.11", "3.12", "3.13"] + python-version: ["3.12", "3.13", "3.14"] timeout-minutes: 35 diff --git a/CHANGELOG.md b/CHANGELOG.md index 1399d39282..840db6c7cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,10 +2,10 @@ ## Main branch -- Dependency changes: Python 3.12, 3.13, 3.14 (dropping support for Python 3.11) -- Security dependency updates: Django >5.2.8 (<5.3), Django RestFramework 3.16 -- Update: XYZGrid contrib using scipy 1.15->1.17. Pathfinding may pick different - shortest routes from before, due to underlying scipy Dijkstra pathfinding changes (Griatch) +- Feat (backwards incompatble): Drop Python 3.11 support (supported: Python 3.12, 3.13, 3.14 (req)). (Griatch) +- Security: Django >=6.0.2 (<6.1), Django RestFramework 3.16 (Griatch) +- Update: `XYZGrid` contrib now requires scipy 1.15->1.17. Note: Pathfinding may pick different + shortest routes from before, due to private changes in scipy Dijkstra algorithm (Griatch) - [Feat][pull3599]: Make `at_pre_cmd` testable in unit tests (blongden) - [Fix]: API /openapi/setattribute endpoints were both POST and PUT, causing schema errors; now changed to PUT only. (Griatch) diff --git a/evennia/VERSION_REQS.txt b/evennia/VERSION_REQS.txt index 21844575c1..e066e764f7 100644 --- a/evennia/VERSION_REQS.txt +++ b/evennia/VERSION_REQS.txt @@ -6,5 +6,5 @@ PYTHON_MIN = 3.12 PYTHON_MAX_TESTED = 3.14.100 TWISTED_MIN = 24.11 -DJANGO_MIN = 5.2.8 -DJANGO_MAX_TESTED = 5.2.100 +DJANGO_MIN = 6.0.2 +DJANGO_MAX_TESTED = 6.0.100 diff --git a/evennia/server/portal/telnet.py b/evennia/server/portal/telnet.py index e561953f18..fc16ca6ac6 100644 --- a/evennia/server/portal/telnet.py +++ b/evennia/server/portal/telnet.py @@ -10,6 +10,12 @@ sessions etc. import re from django.conf import settings +from evennia.server.portal import mssp, naws, suppress_ga, telnet_oob, ttype +from evennia.server.portal.mccp import MCCP, Mccp, mccp_compress +from evennia.server.portal.mxp import Mxp, mxp_parse +from evennia.server.portal.naws import NAWS +from evennia.utils import ansi +from evennia.utils.utils import class_from_module, to_bytes from twisted.conch.telnet import ( ECHO, GA, @@ -28,13 +34,6 @@ from twisted.conch.telnet import ( from twisted.internet import protocol from twisted.internet.task import LoopingCall -from evennia.server.portal import mssp, naws, suppress_ga, telnet_oob, ttype -from evennia.server.portal.mccp import MCCP, Mccp, mccp_compress -from evennia.server.portal.mxp import Mxp, mxp_parse -from evennia.server.portal.naws import NAWS -from evennia.utils import ansi -from evennia.utils.utils import class_from_module, to_bytes - _RE_N = re.compile(r"\|n$") _RE_LEND = re.compile(rb"\n$|\r$|\r\n$|\r\x00$|", re.MULTILINE) _RE_LINEBREAK = re.compile(rb"\n\r|\r\n|\n|\r", re.DOTALL + re.MULTILINE) @@ -45,7 +44,7 @@ _IDLE_COMMAND = str.encode(settings.IDLE_COMMAND + "\n") # identify HTTP indata _HTTP_REGEX = re.compile( - b"(GET|HEAD|POST|PUT|DELETE|TRACE|OPTIONS|CONNECT|PATCH) (.*? HTTP/[0-9]\.[0-9])", re.I + r"(GET|HEAD|POST|PUT|DELETE|TRACE|OPTIONS|CONNECT|PATCH) (.*? HTTP/[0-9]\.[0-9])", re.I ) _HTTP_WARNING = bytes( diff --git a/pyproject.toml b/pyproject.toml index 77ce607e30..056092d897 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,7 +65,7 @@ classifiers = [ dependencies = [ # core dependencies "legacy-cgi;python_version >= '3.13'", - "django >= 5.2.8, < 5.3", + "django >= 6.0.2, < 6.1", "twisted >= 24.11.0, < 25", "pytz >= 2022.6", "djangorestframework >= 3.16, < 3.17",