Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-requests for openSUSE:Factory
checked in at 2026-04-01 19:54:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-requests (Old)
and /work/SRC/openSUSE:Factory/.python-requests.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-requests"
Wed Apr 1 19:54:56 2026 rev:92 rq:1343939 version:2.33.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-requests/python-requests.changes
2026-03-28 20:15:16.494186897 +0100
+++
/work/SRC/openSUSE:Factory/.python-requests.new.21863/python-requests.changes
2026-04-01 19:55:28.889216998 +0200
@@ -1,0 +2,9 @@
+Tue Mar 31 12:46:09 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 2.33.1:
+ * Fixed test cleanup for CVE-2026-25645 to avoid leaving
+ unnecessary files in the tmp directory.
+ * Fixed Content-Type header parsing for malformed values.
+ * Improved error consistency for malformed header values.
+
+-------------------------------------------------------------------
Old:
----
requests-2.33.0.tar.gz
New:
----
requests-2.33.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-requests.spec ++++++
--- /var/tmp/diff_new_pack.mpLE3c/_old 2026-04-01 19:55:30.137268515 +0200
+++ /var/tmp/diff_new_pack.mpLE3c/_new 2026-04-01 19:55:30.161269506 +0200
@@ -26,7 +26,7 @@
%endif
%{?sle15_python_module_pythons}
Name: python-requests%{psuffix}
-Version: 2.33.0
+Version: 2.33.1
Release: 0
Summary: Python HTTP Library
License: Apache-2.0
++++++ requests-2.33.0.tar.gz -> requests-2.33.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/requests-2.33.0/HISTORY.md
new/requests-2.33.1/HISTORY.md
--- old/requests-2.33.0/HISTORY.md 2026-03-25 16:09:51.000000000 +0100
+++ new/requests-2.33.1/HISTORY.md 2026-03-30 18:08:04.000000000 +0200
@@ -6,8 +6,17 @@
- \[Short description of non-trivial change.\]
+2.33.1 (2026-03-30)
+-------------------
+
+**Bugfixes**
+- Fixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary
+ files in the tmp directory. (#7305)
+- Fixed Content-Type header parsing for malformed values. (#7309)
+- Improved error consistency for malformed header values. (#7308)
+
2.33.0 (2026-03-25)
---------------------
+-------------------
**Announcements**
- 📣 Requests is adding inline types. If you have a typed code base that
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/requests-2.33.0/PKG-INFO new/requests-2.33.1/PKG-INFO
--- old/requests-2.33.0/PKG-INFO 2026-03-25 16:09:55.191899000 +0100
+++ new/requests-2.33.1/PKG-INFO 2026-03-30 18:08:10.206858200 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: requests
-Version: 2.33.0
+Version: 2.33.1
Summary: Python HTTP for Humans.
Author-email: Kenneth Reitz <[email protected]>
Maintainer-email: Ian Stapleton Cordasco <[email protected]>, Nate
Prewitt <[email protected]>
@@ -38,13 +38,6 @@
Requires-Dist: PySocks!=1.5.7,>=1.5.6; extra == "socks"
Provides-Extra: use-chardet-on-py3
Requires-Dist: chardet<8,>=3.0.2; extra == "use-chardet-on-py3"
-Provides-Extra: test
-Requires-Dist: pytest-httpbin==2.1.0; extra == "test"
-Requires-Dist: pytest-cov; extra == "test"
-Requires-Dist: pytest-mock; extra == "test"
-Requires-Dist: pytest-xdist; extra == "test"
-Requires-Dist: PySocks!=1.5.7,>=1.5.6; extra == "test"
-Requires-Dist: pytest>=3; extra == "test"
Dynamic: license-file
# Requests
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/requests-2.33.0/pyproject.toml
new/requests-2.33.1/pyproject.toml
--- old/requests-2.33.0/pyproject.toml 2026-03-25 16:09:51.000000000 +0100
+++ new/requests-2.33.1/pyproject.toml 2026-03-30 18:08:04.000000000 +0200
@@ -52,13 +52,17 @@
security = []
socks = ["PySocks>=1.5.6, !=1.5.7"]
use_chardet_on_py3 = ["chardet>=3.0.2,<8"]
+
+[dependency-groups]
test = [
+ "requests[socks]",
"pytest-httpbin==2.1.0",
+ "httpbin~=0.10.0",
"pytest-cov",
"pytest-mock",
"pytest-xdist",
- "PySocks>=1.5.6, !=1.5.7",
- "pytest>=3"
+ "pytest>=3",
+ "trustme",
]
[tool.setuptools]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/requests-2.33.0/src/requests/__version__.py
new/requests-2.33.1/src/requests/__version__.py
--- old/requests-2.33.0/src/requests/__version__.py 2026-03-25
16:09:51.000000000 +0100
+++ new/requests-2.33.1/src/requests/__version__.py 2026-03-30
18:08:04.000000000 +0200
@@ -5,8 +5,8 @@
__title__ = "requests"
__description__ = "Python HTTP for Humans."
__url__ = "https://requests.readthedocs.io"
-__version__ = "2.33.0"
-__build__ = 0x023300
+__version__ = "2.33.1"
+__build__ = 0x023301
__author__ = "Kenneth Reitz"
__author_email__ = "[email protected]"
__license__ = "Apache-2.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/requests-2.33.0/src/requests/_internal_utils.py
new/requests-2.33.1/src/requests/_internal_utils.py
--- old/requests-2.33.0/src/requests/_internal_utils.py 2026-03-25
16:09:51.000000000 +0100
+++ new/requests-2.33.1/src/requests/_internal_utils.py 2026-03-30
18:08:04.000000000 +0200
@@ -10,10 +10,10 @@
from .compat import builtin_str
-_VALID_HEADER_NAME_RE_BYTE = re.compile(rb"^[^:\s][^:\r\n]*$")
-_VALID_HEADER_NAME_RE_STR = re.compile(r"^[^:\s][^:\r\n]*$")
-_VALID_HEADER_VALUE_RE_BYTE = re.compile(rb"^\S[^\r\n]*$|^$")
-_VALID_HEADER_VALUE_RE_STR = re.compile(r"^\S[^\r\n]*$|^$")
+_VALID_HEADER_NAME_RE_BYTE = re.compile(rb"^[^:\s][^:\r\n]*\Z")
+_VALID_HEADER_NAME_RE_STR = re.compile(r"^[^:\s][^:\r\n]*\Z")
+_VALID_HEADER_VALUE_RE_BYTE = re.compile(rb"^\S[^\r\n]*\Z|^\Z")
+_VALID_HEADER_VALUE_RE_STR = re.compile(r"^\S[^\r\n]*\Z|^\Z")
_HEADER_VALIDATORS_STR = (_VALID_HEADER_NAME_RE_STR,
_VALID_HEADER_VALUE_RE_STR)
_HEADER_VALIDATORS_BYTE = (_VALID_HEADER_NAME_RE_BYTE,
_VALID_HEADER_VALUE_RE_BYTE)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/requests-2.33.0/src/requests/utils.py
new/requests-2.33.1/src/requests/utils.py
--- old/requests-2.33.0/src/requests/utils.py 2026-03-25 16:09:51.000000000
+0100
+++ new/requests-2.33.1/src/requests/utils.py 2026-03-30 18:08:04.000000000
+0200
@@ -502,26 +502,23 @@
def _parse_content_type_header(header):
- """Returns content type and parameters from given header
+ """Returns content type and parameters from given header.
:param header: string
:return: tuple containing content type and dictionary of
- parameters
+ parameters.
"""
tokens = header.split(";")
content_type, params = tokens[0].strip(), tokens[1:]
params_dict = {}
- items_to_strip = "\"' "
+ strip_chars = "\"' "
for param in params:
param = param.strip()
- if param:
- key, value = param, True
- index_of_equals = param.find("=")
- if index_of_equals != -1:
- key = param[:index_of_equals].strip(items_to_strip)
- value = param[index_of_equals + 1 :].strip(items_to_strip)
+ if param and (idx := param.find("=")) != -1:
+ key = param[:idx].strip(strip_chars)
+ value = param[idx + 1 :].strip(strip_chars)
params_dict[key.lower()] = value
return content_type, params_dict
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/requests-2.33.0/src/requests.egg-info/PKG-INFO
new/requests-2.33.1/src/requests.egg-info/PKG-INFO
--- old/requests-2.33.0/src/requests.egg-info/PKG-INFO 2026-03-25
16:09:55.000000000 +0100
+++ new/requests-2.33.1/src/requests.egg-info/PKG-INFO 2026-03-30
18:08:10.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: requests
-Version: 2.33.0
+Version: 2.33.1
Summary: Python HTTP for Humans.
Author-email: Kenneth Reitz <[email protected]>
Maintainer-email: Ian Stapleton Cordasco <[email protected]>, Nate
Prewitt <[email protected]>
@@ -38,13 +38,6 @@
Requires-Dist: PySocks!=1.5.7,>=1.5.6; extra == "socks"
Provides-Extra: use-chardet-on-py3
Requires-Dist: chardet<8,>=3.0.2; extra == "use-chardet-on-py3"
-Provides-Extra: test
-Requires-Dist: pytest-httpbin==2.1.0; extra == "test"
-Requires-Dist: pytest-cov; extra == "test"
-Requires-Dist: pytest-mock; extra == "test"
-Requires-Dist: pytest-xdist; extra == "test"
-Requires-Dist: PySocks!=1.5.7,>=1.5.6; extra == "test"
-Requires-Dist: pytest>=3; extra == "test"
Dynamic: license-file
# Requests
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/requests-2.33.0/src/requests.egg-info/requires.txt
new/requests-2.33.1/src/requests.egg-info/requires.txt
--- old/requests-2.33.0/src/requests.egg-info/requires.txt 2026-03-25
16:09:55.000000000 +0100
+++ new/requests-2.33.1/src/requests.egg-info/requires.txt 2026-03-30
18:08:10.000000000 +0200
@@ -8,13 +8,5 @@
[socks]
PySocks!=1.5.7,>=1.5.6
-[test]
-pytest-httpbin==2.1.0
-pytest-cov
-pytest-mock
-pytest-xdist
-PySocks!=1.5.7,>=1.5.6
-pytest>=3
-
[use_chardet_on_py3]
chardet<8,>=3.0.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/requests-2.33.0/tests/test_requests.py
new/requests-2.33.1/tests/test_requests.py
--- old/requests-2.33.0/tests/test_requests.py 2026-03-25 16:09:51.000000000
+0100
+++ new/requests-2.33.1/tests/test_requests.py 2026-03-30 18:08:04.000000000
+0200
@@ -1791,6 +1791,11 @@
{"fo\r\no": "bar"},
{"fo\n\ro": "bar"},
{"fo\no": "bar"},
+ {"foo": "bar\n"},
+ {"foo\n": "bar"},
+ {"foo": "bar\r\n"},
+ {"foo": "\n"},
+ {"foo": "\r\n"},
),
)
def test_header_no_return_chars(self, httpbin, invalid_header):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/requests-2.33.0/tests/test_utils.py
new/requests-2.33.1/tests/test_utils.py
--- old/requests-2.33.0/tests/test_utils.py 2026-03-25 16:09:51.000000000
+0100
+++ new/requests-2.33.1/tests/test_utils.py 2026-03-30 18:08:04.000000000
+0200
@@ -361,9 +361,12 @@
zipped_path = os.path.join(zipped_py.strpath, name.lstrip(r"\/"))
extracted_path = extract_zipped_paths(zipped_path)
- assert extracted_path != zipped_path
- assert os.path.exists(extracted_path)
- assert filecmp.cmp(extracted_path, __file__)
+ try:
+ assert extracted_path != zipped_path
+ assert os.path.exists(extracted_path)
+ assert filecmp.cmp(extracted_path, __file__)
+ finally:
+ os.remove(extracted_path)
def test_invalid_unc_path(self):
path = r"\\localhost\invalid\location"
@@ -593,7 +596,6 @@
{
"boundary": "something",
"boundary2": "something_else",
- "no_equals": True,
},
),
),
@@ -604,7 +606,6 @@
{
"boundary": "something",
"boundary2": "something_else",
- "no_equals": True,
},
),
),
@@ -615,7 +616,6 @@
{
"boundary": "something",
"boundary2": "something_else",
- "no_equals": True,
},
),
),
@@ -626,7 +626,6 @@
{
"boundary": "something",
"boundary2": "something_else",
- "no_equals": True,
},
),
),
@@ -646,6 +645,10 @@
"utf-8",
),
(CaseInsensitiveDict({"content-type": "text/plain"}), "ISO-8859-1"),
+ (
+ CaseInsensitiveDict({"content-type": "text/html; charset"}),
+ "ISO-8859-1",
+ ),
),
)
def test_get_encoding_from_headers(value, expected):