Skip to content

Commit 3d5256b

Browse files
committed
Drop marshmallow 3
1 parent 7361a9f commit 3d5256b

4 files changed

Lines changed: 2320 additions & 37 deletions

File tree

CHANGELOG.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Features:
1212

1313
Other changes:
1414

15+
1516
* *Backwards-incompatible*: The ``AsyncParser`` class has been removed, since
1617
``Parser`` now provides async functionality.
1718
Users should use ``await parser.async_parse()`` to access the async features
@@ -21,7 +22,7 @@ Other changes:
2122
changed their default `empty_value` from the empty string (`""`) to `missing`.
2223
This allows nested fields with a `load_default` to be used to better customize
2324
behavior.
24-
25+
* Drop support for marshmallow 3, which is EOL.
2526
* Drop support for Python 3.9, which is EOL (:pr:`1019`).
2627
* Drop support for Bottle < 0.13 (:pr:`1019`).
2728
* Drop support for Flask < 3.1.0 (:pr:`1023`).

pyproject.toml

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,16 @@ name = "webargs"
33
version = "8.7.1"
44
description = "Declarative parsing and validation of HTTP request objects, with built-in support for popular web frameworks, including Flask, Django, Bottle, Tornado, Pyramid, Falcon, and aiohttp."
55
readme = "README.rst"
6-
license = { file = "LICENSE" }
7-
authors = [{ name = "Steven Loria", email = "sloria1@gmail.com" }]
6+
license = "MIT"
7+
authors = [{ name = "Steven Loria", email = "oss@stevenloria.com" }]
88
maintainers = [
9-
{ name = "Steven Loria", email = "sloria1@gmail.com" },
9+
{ name = "Steven Loria", email = "oss@stevenloria.com" },
1010
{ name = "Jérôme Lafréchoux", email = "jerome@jolimont.fr" },
1111
{ name = "Stephen Rosen", email = "sirosen0@gmail.com" },
1212
]
1313
classifiers = [
1414
"Development Status :: 5 - Production/Stable",
1515
"Intended Audience :: Developers",
16-
"License :: OSI Approved :: MIT License",
1716
"Natural Language :: English",
1817
"Programming Language :: Python :: 3",
1918
"Programming Language :: Python :: 3.10",
@@ -42,10 +41,10 @@ keywords = [
4241
]
4342
requires-python = ">=3.10"
4443
dependencies = [
45-
"marshmallow>=4.0.0,<5.0.0",
46-
"packaging>=17.0",
47-
# depend on typing-extensions conditionally for annotations
48-
'typing_extensions>=4.0; python_version<"3.10"',
44+
"marshmallow>=4.0.0,<5.0.0",
45+
"packaging>=17.0",
46+
# depend on typing-extensions conditionally for annotations
47+
'typing_extensions>=4.0; python_version<"3.10"',
4948
]
5049

5150
[project.urls]
@@ -60,13 +59,7 @@ requires = ["flit_core<4"]
6059
build-backend = "flit_core.buildapi"
6160

6261
[dependency-groups]
63-
docs = [
64-
"webargs",
65-
"Sphinx==9.1.0",
66-
"sphinx-issues==6.0.0",
67-
"furo==2025.12.19",
68-
]
69-
62+
docs = ["webargs", "Sphinx", "sphinx-issues", "furo"]
7063
tests = [
7164
"pytest",
7265
"pytest-asyncio",
@@ -75,34 +68,35 @@ tests = [
7568
"pytest-aiohttp>=0.3.0",
7669
"packaging>=17.0",
7770
]
78-
test-flask = ["Flask>=3.1.0", {include-group = "tests"}]
79-
test-django = ["Django>=5.2.0", {include-group = "tests"}]
80-
test-bottle = ["bottle>=0.13.0", {include-group = "tests"}]
81-
test-tornado = ["tornado>=6.5.0", {include-group = "tests"}]
71+
test-flask = ["Flask>=3.1.0", { include-group = "tests" }]
72+
test-django = ["Django>=5.2.0", { include-group = "tests" }]
73+
test-bottle = ["bottle>=0.13.0", { include-group = "tests" }]
74+
test-tornado = ["tornado>=6.5.0", { include-group = "tests" }]
8275
test-pyramid = [
83-
"pyramid>=2.0.2", {include-group = "tests"},
84-
# temporary pin: hold back `setuptools` so that `pyramid` testing works
85-
# pyramid uses pkg_resources, which has been long deprecated and finally removed
86-
#
87-
# see https://github.com/Pylons/pyramid/issues/3731 for discussion within pyramid
88-
"setuptools <82.0"
76+
"pyramid>=2.0.2",
77+
{ include-group = "tests" },
78+
# temporary pin: hold back `setuptools` so that `pyramid` testing works
79+
# pyramid uses pkg_resources, which has been long deprecated and finally removed
80+
#
81+
# see https://github.com/Pylons/pyramid/issues/3731 for discussion within pyramid
82+
"setuptools <82.0",
8983
]
90-
test-falcon = ["falcon>=4.1.0", {include-group = "tests"}]
91-
test-aiohttp = ["aiohttp>=3.13.0", {include-group = "tests"}]
84+
test-falcon = ["falcon>=4.1.0", { include-group = "tests" }]
85+
test-aiohttp = ["aiohttp>=3.13.0", { include-group = "tests" }]
9286
# for efficiency of testing, we define this group and test all frameworks at once, because it works
9387
# however, each is declared separately in case we ever encounter conflicts and need to break one off
9488
# from the rest of the group
9589
test-all-frameworks = [
96-
{include-group = "test-flask"},
97-
{include-group = "test-django"},
98-
{include-group = "test-bottle"},
99-
{include-group = "test-tornado"},
100-
{include-group = "test-pyramid"},
101-
{include-group = "test-falcon"},
102-
{include-group = "test-aiohttp"},
90+
{ include-group = "test-flask" },
91+
{ include-group = "test-django" },
92+
{ include-group = "test-bottle" },
93+
{ include-group = "test-tornado" },
94+
{ include-group = "test-pyramid" },
95+
{ include-group = "test-falcon" },
96+
{ include-group = "test-aiohttp" },
10397
]
10498

105-
dev = ["tox", "pre-commit>=3.5,<5.0", {include-group = "tests"}]
99+
dev = ["tox", "pre-commit>=3.5,<5.0", { include-group = "tests" }]
106100

107101
[tool.flit.sdist]
108102
include = [

tox.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ deps =
1818
lowest: pyramid==2.0.2
1919
lowest: falcon==4.1.0
2020
lowest: aiohttp==3.13.0
21-
lowest: marshmallow==3.13.0
21+
lowest: marshmallow==4.0.0
2222
commands = pytest {posargs}
2323

2424
[testenv:lint]

0 commit comments

Comments
 (0)