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-03-28 20:13:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-requests (Old)
 and      /work/SRC/openSUSE:Factory/.python-requests.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-requests"

Sat Mar 28 20:13:44 2026 rev:91 rq:1343119 version:2.33.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-requests/python-requests.changes  
2026-03-17 19:03:56.735299261 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-requests.new.8177/python-requests.changes    
    2026-03-28 20:15:16.494186897 +0100
@@ -1,0 +2,23 @@
+Fri Mar 27 07:05:22 UTC 2026 - Daniel Garcia <[email protected]>
+
+- Update to 2.33.0 (bsc#1260589, CVE-2026-25645):
+  - Announcements - Requests is adding inline types. If you have a
+    typed code base that uses Requests, please take a look at #7271.
+    Give it a try, and report any gaps or feedback you may have in the
+    issue.
+  - Security - CVE-2026-25645 requests.utils.extract_zipped_paths now
+    extracts
+    * contents to a non-deterministic location to prevent malicious file
+      replacement. This does not affect default usage of Requests, only
+      applications calling the utility function directly.
+  - Improvements - Migrated to a PEP 517 build system using
+    setuptools.  (#7012)
+  - Bugfixes - Fixed an issue where an empty netrc entry could cause
+    * malformed authentication to be applied to Requests on Python
+      3.11+. (#7205)
+  - Deprecations - Dropped support for Python 3.9 following its end of
+    support. (#7196)
+  - Documentation - Various typo fixes and doc improvements.
+- Drop uneeded patch fix-chardet-RequestsDependencyWarning.patch
+
+-------------------------------------------------------------------

Old:
----
  fix-chardet-RequestsDependencyWarning.patch
  requests-2.32.5.tar.gz

New:
----
  requests-2.33.0.tar.gz

----------(Old B)----------
  Old:  - Documentation - Various typo fixes and doc improvements.
- Drop uneeded patch fix-chardet-RequestsDependencyWarning.patch
----------(Old E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-requests.spec ++++++
--- /var/tmp/diff_new_pack.SZFTif/_old  2026-03-28 20:15:17.094211661 +0100
+++ /var/tmp/diff_new_pack.SZFTif/_new  2026-03-28 20:15:17.098211826 +0100
@@ -26,14 +26,12 @@
 %endif
 %{?sle15_python_module_pythons}
 Name:           python-requests%{psuffix}
-Version:        2.32.5
+Version:        2.33.0
 Release:        0
 Summary:        Python HTTP Library
 License:        Apache-2.0
 URL:            https://docs.python-requests.org/
 Source:         
https://files.pythonhosted.org/packages/source/r/requests/requests-%{version}.tar.gz
-# PATCH-FIX-OPENSUSE fix-chardet-RequestsDependencyWarning.patch 
[email protected] -- based on PR 7239
-Patch0:         fix-chardet-RequestsDependencyWarning.patch
 BuildRequires:  %{python_module base >= 3.9}
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module setuptools}

++++++ requests-2.32.5.tar.gz -> requests-2.33.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/HISTORY.md 
new/requests-2.33.0/HISTORY.md
--- old/requests-2.32.5/HISTORY.md      2025-08-18 23:42:33.000000000 +0200
+++ new/requests-2.33.0/HISTORY.md      2026-03-25 16:09:51.000000000 +0100
@@ -6,6 +6,35 @@
 
 - \[Short description of non-trivial change.\]
 
+2.33.0 (2026-03-25)
+--------------------
+
+**Announcements**
+- 📣 Requests is adding inline types. If you have a typed code base that
+uses Requests, please take a look at #7271. Give it a try, and report
+any gaps or feedback you may have in the issue. 📣
+
+**Security**
+- CVE-2026-25645 ``requests.utils.extract_zipped_paths`` now extracts
+  contents to a non-deterministic location to prevent malicious file
+  replacement. This does not affect default usage of Requests, only
+  applications calling the utility function directly.
+
+**Improvements**
+- Migrated to a PEP 517 build system using setuptools. (#7012)
+
+**Bugfixes**
+- Fixed an issue where an empty netrc entry could cause
+  malformed authentication to be applied to Requests on
+  Python 3.11+. (#7205)
+
+**Deprecations**
+- Dropped support for Python 3.9 following its end of support. (#7196)
+
+**Documentation**
+- Various typo fixes and doc improvements.
+
+
 2.32.5 (2025-08-18)
 -------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/PKG-INFO new/requests-2.33.0/PKG-INFO
--- old/requests-2.32.5/PKG-INFO        2025-08-18 23:43:30.277673000 +0200
+++ new/requests-2.33.0/PKG-INFO        2026-03-25 16:09:55.191899000 +0100
@@ -1,10 +1,9 @@
 Metadata-Version: 2.4
 Name: requests
-Version: 2.32.5
+Version: 2.33.0
 Summary: Python HTTP for Humans.
-Home-page: https://requests.readthedocs.io
-Author: Kenneth Reitz
-Author-email: [email protected]
+Author-email: Kenneth Reitz <[email protected]>
+Maintainer-email: Ian Stapleton Cordasco <[email protected]>, Nate 
Prewitt <[email protected]>
 License: Apache-2.0
 Project-URL: Documentation, https://requests.readthedocs.io
 Project-URL: Source, https://github.com/psf/requests
@@ -16,7 +15,6 @@
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
@@ -27,34 +25,35 @@
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Internet :: WWW/HTTP
 Classifier: Topic :: Software Development :: Libraries
-Requires-Python: >=3.9
+Requires-Python: >=3.10
 Description-Content-Type: text/markdown
 License-File: LICENSE
+License-File: NOTICE
 Requires-Dist: charset_normalizer<4,>=2
 Requires-Dist: idna<4,>=2.5
-Requires-Dist: urllib3<3,>=1.21.1
-Requires-Dist: certifi>=2017.4.17
+Requires-Dist: urllib3<3,>=1.26
+Requires-Dist: certifi>=2023.5.7
 Provides-Extra: security
 Provides-Extra: socks
 Requires-Dist: PySocks!=1.5.7,>=1.5.6; extra == "socks"
 Provides-Extra: use-chardet-on-py3
-Requires-Dist: chardet<6,>=3.0.2; extra == "use-chardet-on-py3"
-Dynamic: author
-Dynamic: author-email
-Dynamic: classifier
-Dynamic: description
-Dynamic: description-content-type
-Dynamic: home-page
-Dynamic: license
+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
-Dynamic: project-url
-Dynamic: provides-extra
-Dynamic: requires-dist
-Dynamic: requires-python
-Dynamic: summary
 
 # Requests
 
+[![Version](https://img.shields.io/pypi/v/requests.svg?maxAge=86400)](https://pypi.org/project/requests/)
+[![Supported 
Versions](https://img.shields.io/pypi/pyversions/requests.svg)](https://pypi.org/project/requests)
+[![Downloads](https://static.pepy.tech/badge/requests/month)](https://pepy.tech/project/requests)
+[![Contributors](https://img.shields.io/github/contributors/psf/requests.svg)](https://github.com/psf/requests/graphs/contributors)
+
 **Requests** is a simple, yet elegant, HTTP library.
 
 ```python
@@ -76,10 +75,6 @@
 
 Requests is one of the most downloaded Python packages today, pulling in 
around `30M downloads / week`— according to GitHub, Requests is currently 
[depended 
upon](https://github.com/psf/requests/network/dependents?package_id=UGFja2FnZS01NzA4OTExNg%3D%3D)
 by `1,000,000+` repositories. You may certainly put your trust in this code.
 
-[![Downloads](https://static.pepy.tech/badge/requests/month)](https://pepy.tech/project/requests)
-[![Supported 
Versions](https://img.shields.io/pypi/pyversions/requests.svg)](https://pypi.org/project/requests)
-[![Contributors](https://img.shields.io/github/contributors/psf/requests.svg)](https://github.com/psf/requests/graphs/contributors)
-
 ## Installing Requests and Supported Versions
 
 Requests is available on PyPI:
@@ -88,7 +83,7 @@
 $ python -m pip install requests
 ```
 
-Requests officially supports Python 3.9+.
+Requests officially supports Python 3.10+.
 
 ## Supported Features & Best–Practices
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/README.md 
new/requests-2.33.0/README.md
--- old/requests-2.32.5/README.md       2025-08-17 18:56:23.000000000 +0200
+++ new/requests-2.33.0/README.md       2026-03-25 16:09:51.000000000 +0100
@@ -1,5 +1,10 @@
 # Requests
 
+[![Version](https://img.shields.io/pypi/v/requests.svg?maxAge=86400)](https://pypi.org/project/requests/)
+[![Supported 
Versions](https://img.shields.io/pypi/pyversions/requests.svg)](https://pypi.org/project/requests)
+[![Downloads](https://static.pepy.tech/badge/requests/month)](https://pepy.tech/project/requests)
+[![Contributors](https://img.shields.io/github/contributors/psf/requests.svg)](https://github.com/psf/requests/graphs/contributors)
+
 **Requests** is a simple, yet elegant, HTTP library.
 
 ```python
@@ -21,10 +26,6 @@
 
 Requests is one of the most downloaded Python packages today, pulling in 
around `30M downloads / week`— according to GitHub, Requests is currently 
[depended 
upon](https://github.com/psf/requests/network/dependents?package_id=UGFja2FnZS01NzA4OTExNg%3D%3D)
 by `1,000,000+` repositories. You may certainly put your trust in this code.
 
-[![Downloads](https://static.pepy.tech/badge/requests/month)](https://pepy.tech/project/requests)
-[![Supported 
Versions](https://img.shields.io/pypi/pyversions/requests.svg)](https://pypi.org/project/requests)
-[![Contributors](https://img.shields.io/github/contributors/psf/requests.svg)](https://github.com/psf/requests/graphs/contributors)
-
 ## Installing Requests and Supported Versions
 
 Requests is available on PyPI:
@@ -33,7 +34,7 @@
 $ python -m pip install requests
 ```
 
-Requests officially supports Python 3.9+.
+Requests officially supports Python 3.10+.
 
 ## Supported Features & Best–Practices
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/pyproject.toml 
new/requests-2.33.0/pyproject.toml
--- old/requests-2.32.5/pyproject.toml  2025-08-17 22:09:20.000000000 +0200
+++ new/requests-2.33.0/pyproject.toml  2026-03-25 16:09:51.000000000 +0100
@@ -1,7 +1,99 @@
-[tool.isort]
-profile = "black"
-src_paths = ["src/requests", "test"]
-honor_noqa = true
+[build-system]
+requires = ["setuptools>=61.0"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "requests"
+description = "Python HTTP for Humans."
+readme = "README.md"
+license = {text = "Apache-2.0"}
+authors = [
+    { name = "Kenneth Reitz", email = "[email protected]" },
+]
+maintainers = [
+    {name = "Ian Stapleton Cordasco", email="[email protected]"},
+    {name = "Nate Prewitt", email="[email protected]"}
+]
+requires-python = ">=3.10"
+dependencies = [
+    "charset_normalizer>=2,<4",
+    "idna>=2.5,<4",
+    "urllib3>=1.26,<3",
+    "certifi>=2023.5.7"
+]
+dynamic = ["version"]
+
+classifiers = [
+    "Development Status :: 5 - Production/Stable",
+    "Environment :: Web Environment",
+    "Intended Audience :: Developers",
+    "License :: OSI Approved :: Apache Software License",
+    "Natural Language :: English",
+    "Operating System :: OS Independent",
+    "Programming Language :: Python",
+    "Programming Language :: Python :: 3",
+    "Programming Language :: Python :: 3.10",
+    "Programming Language :: Python :: 3.11",
+    "Programming Language :: Python :: 3.12",
+    "Programming Language :: Python :: 3.13",
+    "Programming Language :: Python :: 3.14",
+    "Programming Language :: Python :: 3 :: Only",
+    "Programming Language :: Python :: Implementation :: CPython",
+    "Programming Language :: Python :: Implementation :: PyPy",
+    "Topic :: Internet :: WWW/HTTP",
+    "Topic :: Software Development :: Libraries"
+]
+
+[project.urls]
+Documentation = "https://requests.readthedocs.io";
+Source = "https://github.com/psf/requests";
+
+[project.optional-dependencies]
+security = []
+socks = ["PySocks>=1.5.6, !=1.5.7"]
+use_chardet_on_py3 = ["chardet>=3.0.2,<8"]
+test = [
+    "pytest-httpbin==2.1.0",
+    "pytest-cov",
+    "pytest-mock",
+    "pytest-xdist",
+    "PySocks>=1.5.6, !=1.5.7",
+    "pytest>=3"
+]
+
+[tool.setuptools]
+license-files = ["LICENSE", "NOTICE"]
+
+[tool.setuptools.dynamic]
+version = {attr = "requests.__version__.__version__"}
+
+[tool.setuptools.packages.find]
+where = ["src"]
+
+[tool.ruff]
+target-version = "py310"
+src = ["src/requests", "tests"]
+exclude = ["docs/", "ext/"]
+
+[tool.ruff.lint]
+select = [
+    "E",      # pycodestyle errors
+    "W",      # pycodestyle warnings
+    "F",      # pyflakes
+    "I",      # isort
+    "UP",     # pyupgrade
+    "T10",    # flake8-debugger (replaces debug-statements hook)
+]
+ignore = ["E203", "E501", "UP038", "UP031"]
+per-file-ignores = {"src/requests/__init__.py" = ["E402", "F401"], 
"src/requests/compat.py" = ["E402", "F401"], "tests/compat.py" = ["F401"]}
+
+[tool.ruff.lint.isort]
+known-first-party = ["requests"]
+
+[tool.ruff.format]
+# Use black-compatible formatting
+quote-style = "double"
+indent-style = "space"
 
 [tool.pytest.ini_options]
 addopts = "--doctest-modules"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/setup.cfg 
new/requests-2.33.0/setup.cfg
--- old/requests-2.32.5/setup.cfg       2025-08-18 23:43:30.278064000 +0200
+++ new/requests-2.33.0/setup.cfg       2026-03-25 16:09:55.192899000 +0100
@@ -1,21 +1,3 @@
-[metadata]
-license_file = LICENSE
-provides-extra = 
-       socks
-       use_chardet_on_py3
-requires-dist = 
-       certifi>=2017.4.17
-       charset_normalizer>=2,<4
-       idna>=2.5,<4
-       urllib3>=1.21.1,<3
-
-[flake8]
-ignore = E203, E501, W503
-per-file-ignores = 
-       src/requests/__init__.py:E402, F401
-       src/requests/compat.py:E402, F401
-       tests/compat.py:F401
-
 [egg_info]
 tag_build = 
 tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/setup.py new/requests-2.33.0/setup.py
--- old/requests-2.32.5/setup.py        2025-08-17 22:09:20.000000000 +0200
+++ new/requests-2.33.0/setup.py        2026-03-25 16:09:51.000000000 +0100
@@ -1,107 +1,9 @@
-#!/usr/bin/env python
-import os
 import sys
-from codecs import open
 
-from setuptools import setup
-
-CURRENT_PYTHON = sys.version_info[:2]
-REQUIRED_PYTHON = (3, 9)
-
-if CURRENT_PYTHON < REQUIRED_PYTHON:
-    sys.stderr.write(
-        """
-==========================
-Unsupported Python version
-==========================
-This version of Requests requires at least Python {}.{}, but
-you're trying to install it on Python {}.{}. To resolve this,
-consider upgrading to a supported Python version.
-
-If you can't upgrade your Python version, you'll need to
-pin to an older version of Requests (<2.32.0).
-""".format(
-            *(REQUIRED_PYTHON + CURRENT_PYTHON)
-        )
-    )
+if sys.version_info < (3, 10):  # noqa: UP036
+    sys.stderr.write("Requests requires Python 3.10 or later.\n")
     sys.exit(1)
 
+from setuptools import setup
 
-# 'setup.py publish' shortcut.
-if sys.argv[-1] == "publish":
-    os.system("python setup.py sdist bdist_wheel")
-    os.system("twine upload dist/*")
-    sys.exit()
-
-requires = [
-    "charset_normalizer>=2,<4",
-    "idna>=2.5,<4",
-    "urllib3>=1.21.1,<3",
-    "certifi>=2017.4.17",
-]
-test_requirements = [
-    "pytest-httpbin==2.1.0",
-    "pytest-cov",
-    "pytest-mock",
-    "pytest-xdist",
-    "PySocks>=1.5.6, !=1.5.7",
-    "pytest>=3",
-]
-
-about = {}
-here = os.path.abspath(os.path.dirname(__file__))
-with open(os.path.join(here, "src", "requests", "__version__.py"), "r", 
"utf-8") as f:
-    exec(f.read(), about)
-
-with open("README.md", "r", "utf-8") as f:
-    readme = f.read()
-
-setup(
-    name=about["__title__"],
-    version=about["__version__"],
-    description=about["__description__"],
-    long_description=readme,
-    long_description_content_type="text/markdown",
-    author=about["__author__"],
-    author_email=about["__author_email__"],
-    url=about["__url__"],
-    packages=["requests"],
-    package_data={"": ["LICENSE", "NOTICE"]},
-    package_dir={"": "src"},
-    include_package_data=True,
-    python_requires=">=3.9",
-    install_requires=requires,
-    license=about["__license__"],
-    zip_safe=False,
-    classifiers=[
-        "Development Status :: 5 - Production/Stable",
-        "Environment :: Web Environment",
-        "Intended Audience :: Developers",
-        "License :: OSI Approved :: Apache Software License",
-        "Natural Language :: English",
-        "Operating System :: OS Independent",
-        "Programming Language :: Python",
-        "Programming Language :: Python :: 3",
-        "Programming Language :: Python :: 3.9",
-        "Programming Language :: Python :: 3.10",
-        "Programming Language :: Python :: 3.11",
-        "Programming Language :: Python :: 3.12",
-        "Programming Language :: Python :: 3.13",
-        "Programming Language :: Python :: 3.14",
-        "Programming Language :: Python :: 3 :: Only",
-        "Programming Language :: Python :: Implementation :: CPython",
-        "Programming Language :: Python :: Implementation :: PyPy",
-        "Topic :: Internet :: WWW/HTTP",
-        "Topic :: Software Development :: Libraries",
-    ],
-    tests_require=test_requirements,
-    extras_require={
-        "security": [],
-        "socks": ["PySocks>=1.5.6, !=1.5.7"],
-        "use_chardet_on_py3": ["chardet>=3.0.2,<6"],
-    },
-    project_urls={
-        "Documentation": "https://requests.readthedocs.io";,
-        "Source": "https://github.com/psf/requests";,
-    },
-)
+setup()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/src/requests/__init__.py 
new/requests-2.33.0/src/requests/__init__.py
--- old/requests-2.32.5/src/requests/__init__.py        2024-05-20 
15:47:22.000000000 +0200
+++ new/requests-2.33.0/src/requests/__init__.py        2026-03-25 
16:09:51.000000000 +0100
@@ -75,8 +75,8 @@
     if chardet_version:
         major, minor, patch = chardet_version.split(".")[:3]
         major, minor, patch = int(major), int(minor), int(patch)
-        # chardet_version >= 3.0.2, < 6.0.0
-        assert (3, 0, 2) <= (major, minor, patch) < (6, 0, 0)
+        # chardet_version >= 3.0.2, < 8.0.0
+        assert (3, 0, 2) <= (major, minor, patch) < (8, 0, 0)
     elif charset_normalizer_version:
         major, minor, patch = charset_normalizer_version.split(".")[:3]
         major, minor, patch = int(major), int(minor), int(patch)
@@ -98,8 +98,8 @@
         return
 
     if cryptography_version < [1, 3, 4]:
-        warning = "Old version of cryptography ({}) may cause 
slowdown.".format(
-            cryptography_version
+        warning = (
+            f"Old version of cryptography ({cryptography_version}) may cause 
slowdown."
         )
         warnings.warn(warning, RequestsDependencyWarning)
 
@@ -111,10 +111,9 @@
     )
 except (AssertionError, ValueError):
     warnings.warn(
-        "urllib3 ({}) or chardet ({})/charset_normalizer ({}) doesn't match a 
supported "
-        "version!".format(
-            urllib3.__version__, chardet_version, charset_normalizer_version
-        ),
+        f"urllib3 ({urllib3.__version__}) or chardet "
+        f"({chardet_version})/charset_normalizer 
({charset_normalizer_version}) "
+        "doesn't match a supported version!",
         RequestsDependencyWarning,
     )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/src/requests/__version__.py 
new/requests-2.33.0/src/requests/__version__.py
--- old/requests-2.32.5/src/requests/__version__.py     2025-08-18 
23:42:33.000000000 +0200
+++ new/requests-2.33.0/src/requests/__version__.py     2026-03-25 
16:09:51.000000000 +0100
@@ -5,8 +5,8 @@
 __title__ = "requests"
 __description__ = "Python HTTP for Humans."
 __url__ = "https://requests.readthedocs.io";
-__version__ = "2.32.5"
-__build__ = 0x023205
+__version__ = "2.33.0"
+__build__ = 0x023300
 __author__ = "Kenneth Reitz"
 __author_email__ = "[email protected]"
 __license__ = "Apache-2.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/src/requests/_internal_utils.py 
new/requests-2.33.0/src/requests/_internal_utils.py
--- old/requests-2.32.5/src/requests/_internal_utils.py 2024-05-20 
15:47:22.000000000 +0200
+++ new/requests-2.33.0/src/requests/_internal_utils.py 2026-03-25 
16:09:51.000000000 +0100
@@ -5,6 +5,7 @@
 Provides utility functions that are consumed internally by Requests
 which depend on extremely few external helpers (such as compat)
 """
+
 import re
 
 from .compat import builtin_str
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/src/requests/adapters.py 
new/requests-2.33.0/src/requests/adapters.py
--- old/requests-2.32.5/src/requests/adapters.py        2025-07-25 
00:14:11.000000000 +0200
+++ new/requests-2.33.0/src/requests/adapters.py        2026-03-25 
16:09:51.000000000 +0100
@@ -11,17 +11,19 @@
 import typing
 import warnings
 
-from urllib3.exceptions import ClosedPoolError, ConnectTimeoutError
-from urllib3.exceptions import HTTPError as _HTTPError
-from urllib3.exceptions import InvalidHeader as _InvalidHeader
 from urllib3.exceptions import (
+    ClosedPoolError,
+    ConnectTimeoutError,
     LocationValueError,
     MaxRetryError,
     NewConnectionError,
     ProtocolError,
+    ReadTimeoutError,
+    ResponseError,
 )
+from urllib3.exceptions import HTTPError as _HTTPError
+from urllib3.exceptions import InvalidHeader as _InvalidHeader
 from urllib3.exceptions import ProxyError as _ProxyError
-from urllib3.exceptions import ReadTimeoutError, ResponseError
 from urllib3.exceptions import SSLError as _SSLError
 from urllib3.poolmanager import PoolManager, proxy_from_url
 from urllib3.util import Timeout as TimeoutSauce
@@ -47,7 +49,6 @@
 from .structures import CaseInsensitiveDict
 from .utils import (
     DEFAULT_CA_BUNDLE_PATH,
-    extract_zipped_paths,
     get_auth_from_url,
     get_encoding_from_headers,
     prepend_scheme_if_needed,
@@ -76,9 +77,9 @@
 def _urllib3_request_context(
     request: "PreparedRequest",
     verify: "bool | str | None",
-    client_cert: "typing.Tuple[str, str] | str | None",
+    client_cert: "tuple[str, str] | str | None",
     poolmanager: "PoolManager",
-) -> "(typing.Dict[str, typing.Any], typing.Dict[str, typing.Any])":
+) -> "(dict[str, typing.Any], dict[str, typing.Any])":
     host_params = {}
     pool_kwargs = {}
     parsed_request_url = urlparse(request.url)
@@ -297,7 +298,7 @@
                 cert_loc = verify
 
             if not cert_loc:
-                cert_loc = extract_zipped_paths(DEFAULT_CA_BUNDLE_PATH)
+                cert_loc = DEFAULT_CA_BUNDLE_PATH
 
             if not cert_loc or not os.path.exists(cert_loc):
                 raise OSError(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/src/requests/auth.py 
new/requests-2.33.0/src/requests/auth.py
--- old/requests-2.32.5/src/requests/auth.py    2024-05-20 15:47:22.000000000 
+0200
+++ new/requests-2.33.0/src/requests/auth.py    2026-03-25 16:09:51.000000000 
+0100
@@ -35,9 +35,9 @@
     if not isinstance(username, basestring):
         warnings.warn(
             "Non-string usernames will no longer be supported in Requests "
-            "3.0.0. Please convert the object you've passed in ({!r}) to "
+            f"3.0.0. Please convert the object you've passed in ({username!r}) 
to "
             "a string or bytes object in the near future to avoid "
-            "problems.".format(username),
+            "problems.",
             category=DeprecationWarning,
         )
         username = str(username)
@@ -45,9 +45,9 @@
     if not isinstance(password, basestring):
         warnings.warn(
             "Non-string passwords will no longer be supported in Requests "
-            "3.0.0. Please convert the object you've passed in ({!r}) to "
+            f"3.0.0. Please convert the object you've passed in 
({type(password)!r}) to "
             "a string or bytes object in the near future to avoid "
-            "problems.".format(type(password)),
+            "problems.",
             category=DeprecationWarning,
         )
         password = str(password)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/src/requests/certs.py 
new/requests-2.33.0/src/requests/certs.py
--- old/requests-2.32.5/src/requests/certs.py   2024-05-20 15:47:22.000000000 
+0200
+++ new/requests-2.33.0/src/requests/certs.py   2026-03-25 16:09:51.000000000 
+0100
@@ -11,6 +11,7 @@
 environment, you can change the definition of where() to return a separately
 packaged CA bundle.
 """
+
 from certifi import where
 
 if __name__ == "__main__":
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/src/requests/exceptions.py 
new/requests-2.33.0/src/requests/exceptions.py
--- old/requests-2.32.5/src/requests/exceptions.py      2024-05-20 
15:47:22.000000000 +0200
+++ new/requests-2.33.0/src/requests/exceptions.py      2026-03-25 
16:09:51.000000000 +0100
@@ -4,6 +4,7 @@
 
 This module contains the set of Requests' exceptions.
 """
+
 from urllib3.exceptions import HTTPError as BaseHTTPError
 
 from .compat import JSONDecodeError as CompatJSONDecodeError
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/src/requests/help.py 
new/requests-2.33.0/src/requests/help.py
--- old/requests-2.32.5/src/requests/help.py    2024-05-20 15:47:22.000000000 
+0200
+++ new/requests-2.33.0/src/requests/help.py    2026-03-25 16:09:51.000000000 
+0100
@@ -47,11 +47,8 @@
     if implementation == "CPython":
         implementation_version = platform.python_version()
     elif implementation == "PyPy":
-        implementation_version = "{}.{}.{}".format(
-            sys.pypy_version_info.major,
-            sys.pypy_version_info.minor,
-            sys.pypy_version_info.micro,
-        )
+        pypy = sys.pypy_version_info
+        implementation_version = f"{pypy.major}.{pypy.minor}.{pypy.micro}"
         if sys.pypy_version_info.releaselevel != "final":
             implementation_version = "".join(
                 [implementation_version, sys.pypy_version_info.releaselevel]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/src/requests/hooks.py 
new/requests-2.33.0/src/requests/hooks.py
--- old/requests-2.32.5/src/requests/hooks.py   2024-05-20 15:47:22.000000000 
+0200
+++ new/requests-2.33.0/src/requests/hooks.py   2026-03-25 16:09:51.000000000 
+0100
@@ -9,6 +9,7 @@
 ``response``:
     The response generated from a Request.
 """
+
 HOOKS = ["response"]
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/src/requests/models.py 
new/requests-2.33.0/src/requests/models.py
--- old/requests-2.32.5/src/requests/models.py  2025-03-31 19:37:24.000000000 
+0200
+++ new/requests-2.33.0/src/requests/models.py  2026-03-25 16:09:51.000000000 
+0100
@@ -34,9 +34,11 @@
     builtin_str,
     chardet,
     cookielib,
+    urlencode,
+    urlsplit,
+    urlunparse,
 )
 from .compat import json as complexjson
-from .compat import urlencode, urlsplit, urlunparse
 from .cookies import _copy_cookie_jar, cookiejar_from_dict, get_cookie_header
 from .exceptions import (
     ChunkedEncodingError,
@@ -45,11 +47,11 @@
     HTTPError,
     InvalidJSONError,
     InvalidURL,
+    MissingSchema,
+    StreamConsumedError,
 )
 from .exceptions import JSONDecodeError as RequestsJSONDecodeError
-from .exceptions import MissingSchema
 from .exceptions import SSLError as RequestsSSLError
-from .exceptions import StreamConsumedError
 from .hooks import default_hooks
 from .status_codes import codes
 from .structures import CaseInsensitiveDict
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/src/requests/sessions.py 
new/requests-2.33.0/src/requests/sessions.py
--- old/requests-2.32.5/src/requests/sessions.py        2025-07-25 
00:14:11.000000000 +0200
+++ new/requests-2.33.0/src/requests/sessions.py        2026-03-25 
16:09:51.000000000 +0100
@@ -5,6 +5,7 @@
 This module provides a Session object to manage and persist settings across
 requests (cookies, auth, proxies).
 """
+
 import os
 import sys
 import time
@@ -421,6 +422,8 @@
         #: expired certificates, which will make your application vulnerable to
         #: man-in-the-middle (MitM) attacks.
         #: Only set this to `False` for testing.
+        #: If verify is set to a string, it must be the path to a CA bundle 
file
+        #: that will be used to verify the TLS certificate.
         self.verify = True
 
         #: SSL client certificate default, if String, path to ssl client
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/src/requests/utils.py 
new/requests-2.33.0/src/requests/utils.py
--- old/requests-2.32.5/src/requests/utils.py   2025-07-25 00:14:11.000000000 
+0200
+++ new/requests-2.33.0/src/requests/utils.py   2026-03-25 16:09:51.000000000 
+0100
@@ -39,9 +39,6 @@
     getproxies_environment,
     integer_types,
     is_urllib3_1,
-)
-from .compat import parse_http_list as _parse_list_header
-from .compat import (
     proxy_bypass,
     proxy_bypass_environment,
     quote,
@@ -50,6 +47,7 @@
     urlparse,
     urlunparse,
 )
+from .compat import parse_http_list as _parse_list_header
 from .cookies import cookiejar_from_dict
 from .exceptions import (
     FileModeWarning,
@@ -61,6 +59,7 @@
 
 NETRC_FILES = (".netrc", "_netrc")
 
+# Certificate is extracted by certifi when needed.
 DEFAULT_CA_BUNDLE_PATH = certs.where()
 
 DEFAULT_PORTS = {"http": 80, "https": 443}
@@ -233,7 +232,7 @@
 
         try:
             _netrc = netrc(netrc_path).authenticators(host)
-            if _netrc:
+            if _netrc and any(_netrc):
                 # Return with login / password
                 login_i = 0 if _netrc[0] else 1
                 return (_netrc[login_i], _netrc[2])
@@ -283,12 +282,13 @@
         return path
 
     # we have a valid zip archive and a valid member of that archive
-    tmp = tempfile.gettempdir()
-    extracted_path = os.path.join(tmp, member.split("/")[-1])
-    if not os.path.exists(extracted_path):
-        # use read + write to avoid the creating nested folders, we only want 
the file, avoids mkdir racing condition
-        with atomic_open(extracted_path) as file_handler:
-            file_handler.write(zip_file.read(member))
+    suffix = os.path.splitext(member.split("/")[-1])[-1]
+    fd, extracted_path = tempfile.mkstemp(suffix=suffix)
+    try:
+        os.write(fd, zip_file.read(member))
+    finally:
+        os.close(fd)
+
     return extracted_path
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/src/requests.egg-info/PKG-INFO 
new/requests-2.33.0/src/requests.egg-info/PKG-INFO
--- old/requests-2.32.5/src/requests.egg-info/PKG-INFO  2025-08-18 
23:43:30.000000000 +0200
+++ new/requests-2.33.0/src/requests.egg-info/PKG-INFO  2026-03-25 
16:09:55.000000000 +0100
@@ -1,10 +1,9 @@
 Metadata-Version: 2.4
 Name: requests
-Version: 2.32.5
+Version: 2.33.0
 Summary: Python HTTP for Humans.
-Home-page: https://requests.readthedocs.io
-Author: Kenneth Reitz
-Author-email: [email protected]
+Author-email: Kenneth Reitz <[email protected]>
+Maintainer-email: Ian Stapleton Cordasco <[email protected]>, Nate 
Prewitt <[email protected]>
 License: Apache-2.0
 Project-URL: Documentation, https://requests.readthedocs.io
 Project-URL: Source, https://github.com/psf/requests
@@ -16,7 +15,6 @@
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
@@ -27,34 +25,35 @@
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Internet :: WWW/HTTP
 Classifier: Topic :: Software Development :: Libraries
-Requires-Python: >=3.9
+Requires-Python: >=3.10
 Description-Content-Type: text/markdown
 License-File: LICENSE
+License-File: NOTICE
 Requires-Dist: charset_normalizer<4,>=2
 Requires-Dist: idna<4,>=2.5
-Requires-Dist: urllib3<3,>=1.21.1
-Requires-Dist: certifi>=2017.4.17
+Requires-Dist: urllib3<3,>=1.26
+Requires-Dist: certifi>=2023.5.7
 Provides-Extra: security
 Provides-Extra: socks
 Requires-Dist: PySocks!=1.5.7,>=1.5.6; extra == "socks"
 Provides-Extra: use-chardet-on-py3
-Requires-Dist: chardet<6,>=3.0.2; extra == "use-chardet-on-py3"
-Dynamic: author
-Dynamic: author-email
-Dynamic: classifier
-Dynamic: description
-Dynamic: description-content-type
-Dynamic: home-page
-Dynamic: license
+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
-Dynamic: project-url
-Dynamic: provides-extra
-Dynamic: requires-dist
-Dynamic: requires-python
-Dynamic: summary
 
 # Requests
 
+[![Version](https://img.shields.io/pypi/v/requests.svg?maxAge=86400)](https://pypi.org/project/requests/)
+[![Supported 
Versions](https://img.shields.io/pypi/pyversions/requests.svg)](https://pypi.org/project/requests)
+[![Downloads](https://static.pepy.tech/badge/requests/month)](https://pepy.tech/project/requests)
+[![Contributors](https://img.shields.io/github/contributors/psf/requests.svg)](https://github.com/psf/requests/graphs/contributors)
+
 **Requests** is a simple, yet elegant, HTTP library.
 
 ```python
@@ -76,10 +75,6 @@
 
 Requests is one of the most downloaded Python packages today, pulling in 
around `30M downloads / week`— according to GitHub, Requests is currently 
[depended 
upon](https://github.com/psf/requests/network/dependents?package_id=UGFja2FnZS01NzA4OTExNg%3D%3D)
 by `1,000,000+` repositories. You may certainly put your trust in this code.
 
-[![Downloads](https://static.pepy.tech/badge/requests/month)](https://pepy.tech/project/requests)
-[![Supported 
Versions](https://img.shields.io/pypi/pyversions/requests.svg)](https://pypi.org/project/requests)
-[![Contributors](https://img.shields.io/github/contributors/psf/requests.svg)](https://github.com/psf/requests/graphs/contributors)
-
 ## Installing Requests and Supported Versions
 
 Requests is available on PyPI:
@@ -88,7 +83,7 @@
 $ python -m pip install requests
 ```
 
-Requests officially supports Python 3.9+.
+Requests officially supports Python 3.10+.
 
 ## Supported Features & Best–Practices
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/src/requests.egg-info/SOURCES.txt 
new/requests-2.33.0/src/requests.egg-info/SOURCES.txt
--- old/requests-2.32.5/src/requests.egg-info/SOURCES.txt       2025-08-18 
23:43:30.000000000 +0200
+++ new/requests-2.33.0/src/requests.egg-info/SOURCES.txt       2026-03-25 
16:09:55.000000000 +0100
@@ -5,7 +5,6 @@
 README.md
 pyproject.toml
 requirements-dev.txt
-setup.cfg
 setup.py
 src/requests/__init__.py
 src/requests/__version__.py
@@ -28,7 +27,6 @@
 src/requests.egg-info/PKG-INFO
 src/requests.egg-info/SOURCES.txt
 src/requests.egg-info/dependency_links.txt
-src/requests.egg-info/not-zip-safe
 src/requests.egg-info/requires.txt
 src/requests.egg-info/top_level.txt
 tests/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/src/requests.egg-info/not-zip-safe 
new/requests-2.33.0/src/requests.egg-info/not-zip-safe
--- old/requests-2.32.5/src/requests.egg-info/not-zip-safe      2025-08-18 
23:43:30.000000000 +0200
+++ new/requests-2.33.0/src/requests.egg-info/not-zip-safe      1970-01-01 
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/src/requests.egg-info/requires.txt 
new/requests-2.33.0/src/requests.egg-info/requires.txt
--- old/requests-2.32.5/src/requests.egg-info/requires.txt      2025-08-18 
23:43:30.000000000 +0200
+++ new/requests-2.33.0/src/requests.egg-info/requires.txt      2026-03-25 
16:09:55.000000000 +0100
@@ -1,12 +1,20 @@
 charset_normalizer<4,>=2
 idna<4,>=2.5
-urllib3<3,>=1.21.1
-certifi>=2017.4.17
+urllib3<3,>=1.26
+certifi>=2023.5.7
 
 [security]
 
 [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<6,>=3.0.2
+chardet<8,>=3.0.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/tests/test_lowlevel.py 
new/requests-2.33.0/tests/test_lowlevel.py
--- old/requests-2.32.5/tests/test_lowlevel.py  2024-05-14 23:19:57.000000000 
+0200
+++ new/requests-2.33.0/tests/test_lowlevel.py  2026-03-25 16:09:51.000000000 
+0100
@@ -1,10 +1,10 @@
 import threading
 
 import pytest
-from tests.testserver.server import Server, consume_socket_content
 
 import requests
 from requests.compat import JSONDecodeError
+from tests.testserver.server import Server, consume_socket_content
 
 from .utils import override_environ
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/tests/test_requests.py 
new/requests-2.33.0/tests/test_requests.py
--- old/requests-2.32.5/tests/test_requests.py  2025-07-25 00:14:11.000000000 
+0200
+++ new/requests-2.33.0/tests/test_requests.py  2026-03-25 16:09:51.000000000 
+0100
@@ -44,9 +44,11 @@
     ReadTimeout,
     RequestException,
     RetryError,
+    Timeout,
+    TooManyRedirects,
+    UnrewindableBodyError,
 )
 from requests.exceptions import SSLError as RequestsSSLError
-from requests.exceptions import Timeout, TooManyRedirects, 
UnrewindableBodyError
 from requests.hooks import default_hooks
 from requests.models import PreparedRequest, urlencode
 from requests.sessions import SessionRedirectMixin
@@ -960,20 +962,18 @@
         INVALID_PATH = "/garbage"
         with pytest.raises(IOError) as e:
             requests.get(httpbin_secure(), verify=INVALID_PATH)
-        assert str(
-            e.value
-        ) == "Could not find a suitable TLS CA certificate bundle, invalid 
path: {}".format(
-            INVALID_PATH
+        assert (
+            str(e.value)
+            == f"Could not find a suitable TLS CA certificate bundle, invalid 
path: {INVALID_PATH}"
         )
 
     def test_invalid_ssl_certificate_files(self, httpbin_secure):
         INVALID_PATH = "/garbage"
         with pytest.raises(IOError) as e:
             requests.get(httpbin_secure(), cert=INVALID_PATH)
-        assert str(
-            e.value
-        ) == "Could not find the TLS certificate file, invalid path: 
{}".format(
-            INVALID_PATH
+        assert (
+            str(e.value)
+            == f"Could not find the TLS certificate file, invalid path: 
{INVALID_PATH}"
         )
 
         with pytest.raises(IOError) as e:
@@ -2460,7 +2460,6 @@
 
 
 class TestMorselToCookieMaxAge:
-
     """Tests for morsel_to_cookie when morsel contains max-age."""
 
     def test_max_age_valid_int(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/tests/test_testserver.py 
new/requests-2.33.0/tests/test_testserver.py
--- old/requests-2.32.5/tests/test_testserver.py        2024-03-01 
21:55:12.000000000 +0100
+++ new/requests-2.33.0/tests/test_testserver.py        2026-03-25 
16:09:51.000000000 +0100
@@ -3,9 +3,9 @@
 import time
 
 import pytest
-from tests.testserver.server import Server
 
 import requests
+from tests.testserver.server import Server
 
 
 class TestTestServer:
@@ -42,7 +42,7 @@
     def test_text_response(self):
         """the text_response_server sends the given text"""
         server = Server.text_response_server(
-            "HTTP/1.1 200 OK\r\n" "Content-Length: 6\r\n" "\r\nroflol"
+            "HTTP/1.1 200 OK\r\nContent-Length: 6\r\n\r\nroflol"
         )
 
         with server as (host, port):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requests-2.32.5/tests/test_utils.py 
new/requests-2.33.0/tests/test_utils.py
--- old/requests-2.32.5/tests/test_utils.py     2025-07-25 00:14:11.000000000 
+0200
+++ new/requests-2.33.0/tests/test_utils.py     2026-03-25 16:09:51.000000000 
+0100
@@ -170,6 +170,16 @@
         auth = get_netrc_auth("http://example.com:@evil.com/&apos;";)
         assert auth is None
 
+    def test_empty_default_credentials_ignored(self, tmp_path, monkeypatch):
+        """Empty default credentials should not be returned."""
+        netrc_path = tmp_path / ".netrc"
+        monkeypatch.setenv("NETRC", str(netrc_path))
+        with open(netrc_path, "w") as f:
+            f.write("machine example.com login user password pass\ndefault\n")
+
+        auth = get_netrc_auth("http://httpbin.org/";)
+        assert auth is None
+
 
 class TestToKeyValList:
     @pytest.mark.parametrize(

Reply via email to