Skip to content

Commit a64d7fe

Browse files
authored
Release 25.3 (#3050)
1 parent 6bde690 commit a64d7fe

6 files changed

Lines changed: 159 additions & 79 deletions

File tree

guide/config/en/sidebar.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,10 @@ root:
145145
path: plugins/sanic-testing/clients.html
146146
- label: Release Notes
147147
items:
148+
- label: "2025"
149+
items:
150+
- label: Sanic 25.3
151+
path: release-notes/2025/v25.3.html
148152
- label: "2024"
149153
items:
150154
- label: Sanic 24.12
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
---
2+
title: Version 25.3
3+
---
4+
5+
# Version 25.3
6+
7+
.. toc::
8+
9+
10+
## Introduction
11+
12+
This is the first release of the version 25 [release cycle](../../organization/policies.md#release-schedule). The release cadence for v24 may be slightly altered from years past. Make sure to stay up to date in the Discord server for latest updates. If you run into any issues, please raise a concern on [GitHub](https://github.com/sanic-org/sanic/issues/new/choose).
13+
14+
## What to know
15+
16+
More details in the [Changelog](../changelog.html). Notable new or breaking features, and what to upgrade:
17+
18+
### REPL Context
19+
20+
In [v23.12](../2023/v23.12.md#-embetaem-welcome-to-the-sanic-interactive-console) we introduced the [Development REPL](/en/guide/running/development.html#development-repl). The goal was to allow you to enter into an enhanced Python REPL from inside your running Sanic application. One of its features is several built-ins to allow you to easily interact with your app and with Sanic.
21+
22+
You now can add your own custom objects to the REPL
23+
24+
```python
25+
import os
26+
27+
def foo():
28+
"""This docstring will show in the REPL"""
29+
30+
app.repl_ctx.foo = foo
31+
app.repl_ctx.os = os
32+
```
33+
34+
There is also a lower-level API that you can use if (for example) you want to control the help test displayed in the REPL for your objects:
35+
36+
```python
37+
app.repl_ctx.add(foo)
38+
app.repl_ctx.add(os, desc="Standard os module.")
39+
```
40+
41+
42+
## Thank you
43+
44+
Thank you to everyone that participated in this release: :clap:
45+
46+
[@ahopkins](https://github.com/ahopkins)
47+
[@erhuabushuo](https://github.com/erhuabushuo)
48+
[@eric-spitler](https://github.com/eric-spitler)
49+
[@goodki-d](https://github.com/goodki-d)
50+
[@SaidBySolo](https://github.com/SaidBySolo)
51+
52+
53+
---
54+
55+
If you enjoy the project, please consider contributing. Of course we love code contributions, but we also love contributions in any form. Consider writing some documentation, showing off use cases, joining conversations and making your voice known, and if you are able: [financial contributions](https://opencollective.com/sanic-org/).

guide/content/en/release-notes/changelog.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,30 @@ content_class: changelog
77
🔶 Current release
88
🔷 In support LTS release
99

10-
## Version 24.12.0 🔶🔷
10+
## Version 25.3.0 🔶
1111

1212
_Current version_
1313

14+
### Features
15+
- [#3030](https://github.com/sanic-org/sanic/pull/3030) Improve `websockets` import ordering
16+
- [#3042](https://github.com/sanic-org/sanic/pull/3042) Add REPL context
17+
- [#3046](https://github.com/sanic-org/sanic/pull/3046) Support latest v14 `websockets`
18+
- [#3049](https://github.com/sanic-org/sanic/pull/3049) Subclassing `HTTPMethodView` to allow generics
19+
20+
### Bugfixes
21+
- [#3047](https://github.com/sanic-org/sanic/pull/3047) Add default to `response.cookies`
22+
- [#3048](https://github.com/sanic-org/sanic/pull/3048) Add exception logging on connection auto close
23+
24+
25+
### Developer infrastructure
26+
- [#3023](https://github.com/sanic-org/sanic/pull/3023) Cleanup from Python 3.8 removal
27+
- [#3024](https://github.com/sanic-org/sanic/pull/3024) Improve type hinting
28+
- [#3028](https://github.com/sanic-org/sanic/pull/3028) Add missing tests
29+
- [#3041](https://github.com/sanic-org/sanic/pull/3041) Improve GitHub Actions checks
30+
31+
32+
## Version 24.12.0 🔷
33+
1434
### Features
1535
- [#3019](https://github.com/sanic-org/sanic/pull/3019) Add custom commands to `sanic` CLI
1636

guide/public/assets/code.css

Lines changed: 76 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -4,80 +4,81 @@ span.linenos { color: inherit; background-color: transparent; padding-left: 5px;
44
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
55
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
66
.hll { background-color: #ffffcc }
7-
.c { color: #a2a2a2; font-style: italic } /* Comment */
8-
.err { color: #777777 } /* Error */
9-
.esc { color: #777777 } /* Escape */
10-
.g { color: #777777 } /* Generic */
11-
.k { color: #ff0d68 } /* Keyword */
12-
.l { color: #777777 } /* Literal */
13-
.n { color: #333333 } /* Name */
14-
.o { color: #777777 } /* Operator */
15-
.x { color: #777777 } /* Other */
16-
.p { color: #777777 } /* Punctuation */
17-
.ch { color: #a2a2a2; font-style: italic } /* Comment.Hashbang */
18-
.cm { color: #a2a2a2; font-style: italic } /* Comment.Multiline */
19-
.cp { color: #a2a2a2; font-style: italic } /* Comment.Preproc */
20-
.cpf { color: #a2a2a2; font-style: italic } /* Comment.PreprocFile */
21-
.c1 { color: #a2a2a2; font-style: italic } /* Comment.Single */
22-
.cs { color: #a2a2a2; font-style: italic } /* Comment.Special */
23-
.gd { color: #777777 } /* Generic.Deleted */
24-
.ge { color: #777777 } /* Generic.Emph */
25-
.gr { color: #777777 } /* Generic.Error */
26-
.gh { color: #777777 } /* Generic.Heading */
27-
.gi { color: #777777 } /* Generic.Inserted */
28-
.go { color: #777777 } /* Generic.Output */
29-
.gp { color: #777777 } /* Generic.Prompt */
30-
.gs { color: #777777 } /* Generic.Strong */
31-
.gu { color: #777777 } /* Generic.Subheading */
32-
.gt { color: #777777 } /* Generic.Traceback */
33-
.kc { color: #ff0d68 } /* Keyword.Constant */
34-
.kd { color: #ff0d68 } /* Keyword.Declaration */
35-
.kn { color: #ff0d68 } /* Keyword.Namespace */
36-
.kp { color: #ff0d68 } /* Keyword.Pseudo */
37-
.kr { color: #ff0d68 } /* Keyword.Reserved */
38-
.kt { color: #ff0d68 } /* Keyword.Type */
39-
.ld { color: #777777 } /* Literal.Date */
40-
.m { color: #777777 } /* Literal.Number */
41-
.s { color: #833FE3; background-color: #eeeeee } /* Literal.String */
42-
.na { color: #333333 } /* Name.Attribute */
43-
.nb { color: #333333 } /* Name.Builtin */
44-
.nc { color: #37ae6f; font-weight: bold } /* Name.Class */
45-
.no { color: #333333 } /* Name.Constant */
46-
.nd { color: #333333 } /* Name.Decorator */
47-
.ni { color: #333333 } /* Name.Entity */
48-
.ne { color: #333333 } /* Name.Exception */
7+
.c { color: #A2A2A2; font-style: italic } /* Comment */
8+
.err { color: #777 } /* Error */
9+
.esc { color: #777 } /* Escape */
10+
.g { color: #777 } /* Generic */
11+
.k { color: #FF0D68 } /* Keyword */
12+
.l { color: #777 } /* Literal */
13+
.n { color: #333 } /* Name */
14+
.o { color: #777 } /* Operator */
15+
.x { color: #777 } /* Other */
16+
.p { color: #777 } /* Punctuation */
17+
.ch { color: #A2A2A2; font-style: italic } /* Comment.Hashbang */
18+
.cm { color: #A2A2A2; font-style: italic } /* Comment.Multiline */
19+
.cp { color: #A2A2A2; font-style: italic } /* Comment.Preproc */
20+
.cpf { color: #A2A2A2; font-style: italic } /* Comment.PreprocFile */
21+
.c1 { color: #A2A2A2; font-style: italic } /* Comment.Single */
22+
.cs { color: #A2A2A2; font-style: italic } /* Comment.Special */
23+
.gd { color: #777 } /* Generic.Deleted */
24+
.ge { color: #777 } /* Generic.Emph */
25+
.ges { color: #777 } /* Generic.EmphStrong */
26+
.gr { color: #777 } /* Generic.Error */
27+
.gh { color: #777 } /* Generic.Heading */
28+
.gi { color: #777 } /* Generic.Inserted */
29+
.go { color: #777 } /* Generic.Output */
30+
.gp { color: #777 } /* Generic.Prompt */
31+
.gs { color: #777 } /* Generic.Strong */
32+
.gu { color: #777 } /* Generic.Subheading */
33+
.gt { color: #777 } /* Generic.Traceback */
34+
.kc { color: #FF0D68 } /* Keyword.Constant */
35+
.kd { color: #FF0D68 } /* Keyword.Declaration */
36+
.kn { color: #FF0D68 } /* Keyword.Namespace */
37+
.kp { color: #FF0D68 } /* Keyword.Pseudo */
38+
.kr { color: #FF0D68 } /* Keyword.Reserved */
39+
.kt { color: #FF0D68 } /* Keyword.Type */
40+
.ld { color: #777 } /* Literal.Date */
41+
.m { color: #777 } /* Literal.Number */
42+
.s { color: #833FE3; background-color: #EEE } /* Literal.String */
43+
.na { color: #333 } /* Name.Attribute */
44+
.nb { color: #333 } /* Name.Builtin */
45+
.nc { color: #37AE6F; font-weight: bold } /* Name.Class */
46+
.no { color: #333 } /* Name.Constant */
47+
.nd { color: #333 } /* Name.Decorator */
48+
.ni { color: #333 } /* Name.Entity */
49+
.ne { color: #333 } /* Name.Exception */
4950
.nf { color: #0092FF } /* Name.Function */
50-
.nl { color: #333333 } /* Name.Label */
51-
.nn { color: #333333 } /* Name.Namespace */
52-
.nx { color: #333333 } /* Name.Other */
53-
.py { color: #333333 } /* Name.Property */
54-
.nt { color: #333333 } /* Name.Tag */
55-
.nv { color: #333333 } /* Name.Variable */
56-
.ow { color: #777777 } /* Operator.Word */
57-
.pm { color: #777777 } /* Punctuation.Marker */
58-
.w { color: #777777 } /* Text.Whitespace */
59-
.mb { color: #777777 } /* Literal.Number.Bin */
60-
.mf { color: #777777 } /* Literal.Number.Float */
61-
.mh { color: #777777 } /* Literal.Number.Hex */
62-
.mi { color: #777777 } /* Literal.Number.Integer */
63-
.mo { color: #777777 } /* Literal.Number.Oct */
64-
.sa { color: #833FE3; background-color: #eeeeee } /* Literal.String.Affix */
65-
.sb { color: #833FE3; background-color: #eeeeee } /* Literal.String.Backtick */
66-
.sc { color: #833FE3; background-color: #eeeeee } /* Literal.String.Char */
67-
.dl { color: #833FE3; background-color: #eeeeee } /* Literal.String.Delimiter */
68-
.sd { color: #833FE3; background-color: #eeeeee } /* Literal.String.Doc */
69-
.s2 { color: #833FE3; background-color: #eeeeee } /* Literal.String.Double */
70-
.se { color: #833FE3; background-color: #eeeeee } /* Literal.String.Escape */
71-
.sh { color: #833FE3; background-color: #eeeeee } /* Literal.String.Heredoc */
72-
.si { color: #833FE3; background-color: #eeeeee } /* Literal.String.Interpol */
73-
.sx { color: #833FE3; background-color: #eeeeee } /* Literal.String.Other */
74-
.sr { color: #833FE3; background-color: #eeeeee } /* Literal.String.Regex */
75-
.s1 { color: #833FE3; background-color: #eeeeee } /* Literal.String.Single */
76-
.ss { color: #833FE3; background-color: #eeeeee } /* Literal.String.Symbol */
77-
.bp { color: #333333 } /* Name.Builtin.Pseudo */
51+
.nl { color: #333 } /* Name.Label */
52+
.nn { color: #333 } /* Name.Namespace */
53+
.nx { color: #333 } /* Name.Other */
54+
.py { color: #333 } /* Name.Property */
55+
.nt { color: #333 } /* Name.Tag */
56+
.nv { color: #333 } /* Name.Variable */
57+
.ow { color: #777 } /* Operator.Word */
58+
.pm { color: #777 } /* Punctuation.Marker */
59+
.w { color: #777 } /* Text.Whitespace */
60+
.mb { color: #777 } /* Literal.Number.Bin */
61+
.mf { color: #777 } /* Literal.Number.Float */
62+
.mh { color: #777 } /* Literal.Number.Hex */
63+
.mi { color: #777 } /* Literal.Number.Integer */
64+
.mo { color: #777 } /* Literal.Number.Oct */
65+
.sa { color: #833FE3; background-color: #EEE } /* Literal.String.Affix */
66+
.sb { color: #833FE3; background-color: #EEE } /* Literal.String.Backtick */
67+
.sc { color: #833FE3; background-color: #EEE } /* Literal.String.Char */
68+
.dl { color: #833FE3; background-color: #EEE } /* Literal.String.Delimiter */
69+
.sd { color: #833FE3; background-color: #EEE } /* Literal.String.Doc */
70+
.s2 { color: #833FE3; background-color: #EEE } /* Literal.String.Double */
71+
.se { color: #833FE3; background-color: #EEE } /* Literal.String.Escape */
72+
.sh { color: #833FE3; background-color: #EEE } /* Literal.String.Heredoc */
73+
.si { color: #833FE3; background-color: #EEE } /* Literal.String.Interpol */
74+
.sx { color: #833FE3; background-color: #EEE } /* Literal.String.Other */
75+
.sr { color: #833FE3; background-color: #EEE } /* Literal.String.Regex */
76+
.s1 { color: #833FE3; background-color: #EEE } /* Literal.String.Single */
77+
.ss { color: #833FE3; background-color: #EEE } /* Literal.String.Symbol */
78+
.bp { color: #333 } /* Name.Builtin.Pseudo */
7879
.fm { color: #0092FF } /* Name.Function.Magic */
79-
.vc { color: #333333 } /* Name.Variable.Class */
80-
.vg { color: #333333 } /* Name.Variable.Global */
81-
.vi { color: #333333 } /* Name.Variable.Instance */
82-
.vm { color: #333333 } /* Name.Variable.Magic */
83-
.il { color: #777777 } /* Literal.Number.Integer.Long */
80+
.vc { color: #333 } /* Name.Variable.Class */
81+
.vg { color: #333 } /* Name.Variable.Global */
82+
.vi { color: #333 } /* Name.Variable.Instance */
83+
.vm { color: #333 } /* Name.Variable.Magic */
84+
.il { color: #777 } /* Literal.Number.Integer.Long */

guide/requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
sanic>=23.12.*
2-
sanic-ext>=23.12.*
1+
sanic>=23.12
2+
sanic-ext>=23.12
33
msgspec
44
python-frontmatter
55
pygments

sanic/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "24.12.0"
1+
__version__ = "25.3.0"

0 commit comments

Comments
 (0)