Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-treq for openSUSE:Factory checked in at 2026-04-13 23:18:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-treq (Old) and /work/SRC/openSUSE:Factory/.python-treq.new.21863 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-treq" Mon Apr 13 23:18:40 2026 rev:14 rq:1346276 version:25.5.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-treq/python-treq.changes 2024-10-30 17:37:01.446761172 +0100 +++ /work/SRC/openSUSE:Factory/.python-treq.new.21863/python-treq.changes 2026-04-13 23:19:23.285365395 +0200 @@ -1,0 +2,11 @@ +Sun Apr 12 21:19:41 UTC 2026 - Dirk Müller <[email protected]> + +- update to 25.5.0: + * treq is packaged with Hatchling, and consequently no longer + directly depends on setuptools. + * Update documentation to use async/await syntax + * Support for Python 3.8, which has reached end of support, is + deprecated. This is the last release with support for Python + 3.8. + +------------------------------------------------------------------- Old: ---- treq-24.9.1.tar.gz New: ---- treq-25.5.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-treq.spec ++++++ --- /var/tmp/diff_new_pack.gePwLv/_old 2026-04-13 23:19:23.777385704 +0200 +++ /var/tmp/diff_new_pack.gePwLv/_new 2026-04-13 23:19:23.785386034 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-treq # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ %{?sle15_python_module_pythons} Name: python-treq -Version: 24.9.1 +Version: 25.5.0 Release: 0 Summary: HTTP library inspired by python-requests License: MIT @@ -28,13 +28,14 @@ BuildRequires: %{python_module Twisted-tls >= 22.10.0} BuildRequires: %{python_module attrs} BuildRequires: %{python_module base >= 3.9} +BuildRequires: %{python_module hatchling} BuildRequires: %{python_module httpbin} BuildRequires: %{python_module hyperlink >= 21.0.0} -BuildRequires: %{python_module incremental} +BuildRequires: %{python_module incremental >= 24.7.2} +BuildRequires: %{python_module multipart} BuildRequires: %{python_module pip} BuildRequires: %{python_module requests >= 2.1.0} BuildRequires: %{python_module service_identity} -BuildRequires: %{python_module setuptools} BuildRequires: %{python_module typing-extensions >= 3.10.0} BuildRequires: %{python_module wheel} BuildRequires: fdupes @@ -42,7 +43,8 @@ Requires: python-Twisted-tls >= 22.10.0 Requires: python-attrs Requires: python-hyperlink >= 21.0.0 -Requires: python-incremental +Requires: python-incremental >= 24.7.2 +Requires: python-multipart Requires: python-requests >= 2.1.0 Requires: python-typing-extensions >= 3.10.0 BuildArch: noarch ++++++ treq-24.9.1.tar.gz -> treq-25.5.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/.github/dependabot.yml new/treq-25.5.0/.github/dependabot.yml --- old/treq-24.9.1/.github/dependabot.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/treq-25.5.0/.github/dependabot.yml 2020-02-02 01:00:00.000000000 +0100 @@ -0,0 +1,7 @@ +version: 2 +updates: + + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "monthly" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/.github/workflows/ci.yaml new/treq-25.5.0/.github/workflows/ci.yaml --- old/treq-24.9.1/.github/workflows/ci.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/treq-25.5.0/.github/workflows/ci.yaml 2020-02-02 01:00:00.000000000 +0100 @@ -0,0 +1,165 @@ +name: CI + +on: + push: + branches: [ trunk ] + pull_request: + branches: [ trunk ] + +jobs: + lint: + runs-on: ubuntu-24.04 + timeout-minutes: 5 + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - uses: actions/cache@v4 + with: + path: ~/.cache/pip + key: + ${{ runner.os }}-pip-lint-${{ hashFiles('pyproject.toml', 'tox.ini') }} + restore-keys: | + ${{ runner.os }}-pip-lint- + ${{ runner.os }}-pip- + + - run: python -m pip install 'tox<4' + + - run: tox -q -p all -e flake8,towncrier,twine,check-manifest,mypy + env: + TOX_PARALLEL_NO_SPINNER: 1 + + docs: + runs-on: ubuntu-24.04 + timeout-minutes: 5 + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - uses: actions/cache@v4 + with: + path: ~/.cache/pip + key: + ${{ runner.os }}-pip-docs-${{ hashFiles('pyproject.toml', 'tox.ini') }} + restore-keys: | + ${{ runner.os }}-pip-docs- + ${{ runner.os }}-pip- + + - run: python -m pip install 'tox<4' + + - run: tox -q -e docs + + + test: + name: "Test ${{ matrix.python-version }} with ${{ matrix.twisted-version }} Twisted" + runs-on: ubuntu-22.04 + timeout-minutes: 10 + continue-on-error: ${{ matrix.experimental }} + strategy: + matrix: + # Python versions common to lowest and latest + python-version: ["3.8", "3.9", "3.10", "pypy-3.9"] + twisted-version: ["lowest", "latest"] + experimental: [false] + + include: + + # Pythons too new for lowest + - python-version: "3.11" + twisted-version: "latest" + experimental: false + + - python-version: "3.12" + twisted-version: "latest" + experimental: false + + - python-version: "3.13" + twisted-version: "latest" + experimental: true + + - python-version: "pypy-3.10" + twisted-version: "latest" + experimental: false + + # Experimental trunk build + - python-version: "3.9" + twisted-version: "trunk" + experimental: true + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - uses: actions/cache@v4 + with: + path: ~/.cache/pip + key: + ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml', 'tox.ini') }} + restore-keys: | + ${{ runner.os }}-pip-${{ matrix.python-version }}- + ${{ runner.os }}-pip- + + - name: Translate Python version to Tox factor + id: pyfactor + shell: python + run: | + table = { + "3.8": "py38", + "3.9": "py39", + "3.10": "py310", + "3.11": "py311", + "3.12": "py312", + "3.13": "py313", + "pypy-3.8": "pypy3", + "pypy-3.9": "pypy3", + "pypy-3.10": "pypy3", + } + factor = table["${{ matrix.python-version }}"] + print("::set-output name=value::" + factor) + + - run: python -m pip install tox coveralls + + - run: tox -e ${{ steps.pyfactor.outputs.value }}-twisted_${{ matrix.twisted-version }} + + - run: coveralls + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + COVERALLS_REPO_TOKEN: 4nctuKHTnVtbdmty2FgdO3iiWm1nb7xc4 + COVERALLS_FLAG_NAME: python_${{ matrix.python-version }}-twisted_${{ matrix.twisted-version }} + COVERALLS_PARALLEL: true + + # Helper so that on GitHub repo settings we can configure to single job. + # Then required jobs can be updated directly form the code, + # without having to go the GitHub repo setting -> Protected branch + # and all the clicking. + treq-required: + runs-on: ubuntu-latest + timeout-minutes: 10 + if: ${{ !cancelled() }} + # Add here the jobs that should block the merge of a PR. + needs: + - lint + - docs + - test + steps: + - name: Require all successes + shell: python3 {0} + env: + RESULTS: ${{ toJSON(needs.*.result) }} + run: | + import json + import os + import sys + results = json.loads(os.environ["RESULTS"]) + sys.exit(0 if all(result == "success" for result in results) else 1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/.github/workflows/release.yaml new/treq-25.5.0/.github/workflows/release.yaml --- old/treq-24.9.1/.github/workflows/release.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/treq-25.5.0/.github/workflows/release.yaml 2020-02-02 01:00:00.000000000 +0100 @@ -0,0 +1,54 @@ +name: Release + +on: + push: + tags: [ "treq-*" ] + pull_request: + branches: [ trunk ] + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-24.04 + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - run: pip install build twine + + - run: python3 -m build + + - run: twine check dist/*.* + + - uses: actions/upload-artifact@v4 + with: + name: dist + path: dist/*.* + if-no-files-found: error + + pypi-publish: + runs-on: ubuntu-24.04 + if: startsWith(github.ref, 'refs/tags/treq-') + needs: [build] + + environment: + name: PyPI.org + url: https://pypi.org/project/treq + + permissions: + id-token: write + + steps: + + - uses: actions/download-artifact@v4 + with: + name: dist + path: dist/ + + - uses: pypa/gh-action-pypi-publish@release/v1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/.gitignore new/treq-25.5.0/.gitignore --- old/treq-24.9.1/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/treq-25.5.0/.gitignore 2020-02-02 01:00:00.000000000 +0100 @@ -0,0 +1,16 @@ +.DS_Store +*.pyc +*.pyo +*.egg-info +_build +build +dist +/docs/html +/.eggs +MANIFEST +/.coverage +/.coverage.* +coverage +htmlcov +_trial_temp* +/.tox diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/.readthedocs.yml new/treq-25.5.0/.readthedocs.yml --- old/treq-24.9.1/.readthedocs.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/treq-25.5.0/.readthedocs.yml 2020-02-02 01:00:00.000000000 +0100 @@ -0,0 +1,22 @@ +# https://docs.readthedocs.io/en/stable/config-file/v2.html +version: 2 + +sphinx: + fail_on_warning: false + configuration: docs/conf.py + +formats: + - pdf + - epub + +build: + os: ubuntu-22.04 + tools: + python: "3.12" + +python: + install: + - method: pip + path: . + extra_requirements: + - docs diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/CHANGELOG.rst new/treq-25.5.0/CHANGELOG.rst --- old/treq-24.9.1/CHANGELOG.rst 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/CHANGELOG.rst 2020-02-02 01:00:00.000000000 +0100 @@ -8,6 +8,27 @@ .. towncrier release notes start +25.5.0 (2025-05-31) +=================== + +Features +-------- + +- treq is packaged with Hatchling, and consequently no longer directly depends on setuptools. (`#388 <https://github.com/twisted/treq/issues/388>`__) + + +Improved Documentation +---------------------- + +- Update documentation to use `async`/`await` syntax (`#409 <https://github.com/twisted/treq/issues/409>`__) + + +Deprecations and Removals +------------------------- + +- Support for Python 3.8, which has reached end of support, is deprecated. This is the last release with support for Python 3.8. (`#407 <https://github.com/twisted/treq/issues/407>`__) + + 24.9.1 (2024-09-19) =================== @@ -26,7 +47,7 @@ -------- - treq now ships type annotations. (`#366 <https://github.com/twisted/treq/issues/366>`__) -- The new :mod:`treq.cookies` module provides helper functions for working with `http.cookiejar.Cookie` and `CookieJar` objects. (`#384 <https://github.com/twisted/treq/issues/384>`__) +- The new :mod:`treq.cookies` module provides helper functions for working with `http.cookiejar.Cookie` and :class:`~http.cookiejar.CookieJar` objects. (`#384 <https://github.com/twisted/treq/issues/384>`__) - Python 3.13 is now supported. (`#391 <https://github.com/twisted/treq/issues/391>`__) @@ -40,7 +61,7 @@ ------------------------- - Mixing the *json* argument with *files* or *data* now raises `TypeError`. (`#297 <https://github.com/twisted/treq/issues/297>`__) -- Passing non-string (`str` or `bytes`) values as part of a dict to the *headers* argument now results in a `TypeError`, as does passing any collection other than a `dict` or `Headers` instance. (`#302 <https://github.com/twisted/treq/issues/302>`__) +- Passing non-string (`str` or `bytes`) values as part of a dict to the *headers* argument now results in a `TypeError`, as does passing any collection other than a `dict` or :class:`~twisted.web.http.http_headers.Headers` instance. (`#302 <https://github.com/twisted/treq/issues/302>`__) - Support for Python 3.7 and PyPy 3.8, which have reached end of support, has been dropped. (`#378 <https://github.com/twisted/treq/issues/378>`__) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/MANIFEST.in new/treq-25.5.0/MANIFEST.in --- old/treq-24.9.1/MANIFEST.in 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/MANIFEST.in 1970-01-01 01:00:00.000000000 +0100 @@ -1,18 +0,0 @@ -include pyproject.toml -include *.rst -include *.md -include LICENSE -include .coveragerc -include src/treq/py.typed -recursive-include docs * -prune docs/_build -prune docs/html - -exclude tox.ini -exclude .github -exclude .readthedocs.yml - -# This directory will be empty at release time. -prune changelog.d - -global-exclude .DS_Store *.pyc *.pyo __pycache__ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/PKG-INFO new/treq-25.5.0/PKG-INFO --- old/treq-24.9.1/PKG-INFO 2024-09-20 01:02:16.323188800 +0200 +++ new/treq-25.5.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100 @@ -1,18 +1,22 @@ -Metadata-Version: 2.1 +Metadata-Version: 2.4 Name: treq -Version: 24.9.1 +Version: 25.5.0 Summary: High-level Twisted HTTP Client API -Home-page: https://github.com/twisted/treq -Author: David Reid -Author-email: [email protected] -Maintainer: Tom Most -Maintainer-email: [email protected] -License: MIT/X +Project-URL: Changelog, https://github.com/twisted/treq/blob/HEAD/CHANGELOG.rst +Project-URL: Documentation, https://treq.readthedocs.io/ +Project-URL: Issues, https://github.com/twisted/treq/issues +Project-URL: Source, https://github.com/twisted/treq +Project-URL: Funding-PSF, https://psfmember.org/civicrm/contribute/transact/?reset=1&id=44 +Project-URL: Funding-GitHub, https://github.com/sponsors/twisted +Author-email: David Reid <[email protected]> +Maintainer-email: Tom Most <[email protected]> +License-Expression: MIT +License-File: LICENSE Classifier: Development Status :: 5 - Production/Stable +Classifier: Framework :: Twisted Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent -Classifier: Framework :: Twisted Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 @@ -22,22 +26,23 @@ Classifier: Programming Language :: Python :: 3.13 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy -Requires-Python: >=3.7 -Description-Content-Type: text/x-rst -License-File: LICENSE -Requires-Dist: incremental -Requires-Dist: requests>=2.1.0 -Requires-Dist: hyperlink>=21.0.0 -Requires-Dist: Twisted[tls]>=22.10.0 +Requires-Python: >=3.8.0 Requires-Dist: attrs -Requires-Dist: typing_extensions>=3.10.0 +Requires-Dist: hyperlink>=21.0.0 +Requires-Dist: incremental>=24.7.2 +Requires-Dist: multipart +Requires-Dist: requests>=2.1.0 +Requires-Dist: twisted[tls]>=22.10.0 +Requires-Dist: typing-extensions>=3.10.0 Provides-Extra: dev -Requires-Dist: pep8; extra == "dev" -Requires-Dist: pyflakes; extra == "dev" -Requires-Dist: httpbin==0.7.0; extra == "dev" -Requires-Dist: werkzeug==2.0.3; extra == "dev" +Requires-Dist: httpbin==0.7.0; extra == 'dev' +Requires-Dist: pep8; extra == 'dev' +Requires-Dist: pyflakes; extra == 'dev' +Requires-Dist: werkzeug==2.0.3; extra == 'dev' Provides-Extra: docs -Requires-Dist: sphinx<7.0.0; extra == "docs" +Requires-Dist: sphinx; extra == 'docs' +Requires-Dist: sphinx-rtd-theme; extra == 'docs' +Description-Content-Type: text/x-rst treq: High-level Twisted HTTP Client API ======================================== @@ -65,8 +70,8 @@ ``treq`` is an HTTP library inspired by `requests <https://requests.readthedocs.io/>`_ but written on top of -`Twisted <https://www.twistedmatrix.com>`_'s -`Agents <https://twistedmatrix.com/documents/current/api/twisted.web.client.Agent.html>`_. +`Twisted <https://twisted.org/>`_'s +`Agents <https://docs.twisted.org/en/stable/api/twisted.web.client.Agent.html>`_. It provides a simple, higher level API for making HTTP requests when using Twisted. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/README.rst new/treq-25.5.0/README.rst --- old/treq-24.9.1/README.rst 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/README.rst 2020-02-02 01:00:00.000000000 +0100 @@ -24,8 +24,8 @@ ``treq`` is an HTTP library inspired by `requests <https://requests.readthedocs.io/>`_ but written on top of -`Twisted <https://www.twistedmatrix.com>`_'s -`Agents <https://twistedmatrix.com/documents/current/api/twisted.web.client.Agent.html>`_. +`Twisted <https://twisted.org/>`_'s +`Agents <https://docs.twisted.org/en/stable/api/twisted.web.client.Agent.html>`_. It provides a simple, higher level API for making HTTP requests when using Twisted. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/changelog.d/README.rst new/treq-25.5.0/changelog.d/README.rst --- old/treq-24.9.1/changelog.d/README.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/treq-25.5.0/changelog.d/README.rst 2020-02-02 01:00:00.000000000 +0100 @@ -0,0 +1,27 @@ +This directory collects "newsfragments": short files that each contain +a snippet of ReST-formatted text that will be added to the next +release notes. This should be a description of aspects of the change +(if any) that are relevant to users. (This contrasts with your commit +message and PR description, which are a description of the change as +relevant to people working on the code itself.) + +Each file should be named like ``<ISSUE>.<TYPE>.rst``, where +``<ISSUE>`` is an issue numbers, and ``<TYPE>`` is one of: + +* ``feature`` +* ``bugfix`` +* ``doc`` +* ``removal`` +* ``misc`` + +So for example: ``123.feature.rst``, ``456.bugfix.rst`` + +If your PR fixes an issue, use that number here. If there is no issue, +then after you submit the PR and get the PR number you can add a +newsfragment using that instead. + +Note that the ``towncrier`` tool will automatically +reflow your text, so don't try to do any fancy formatting. You can +install ``towncrier`` and then run ``towncrier --draft`` if you want +to get a preview of how your change will look in the final release +notes. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/docs/conf.py new/treq-25.5.0/docs/conf.py --- old/treq-24.9.1/docs/conf.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/docs/conf.py 2020-02-02 01:00:00.000000000 +0100 @@ -26,13 +26,18 @@ # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ["sphinx.ext.viewcode", "sphinx.ext.autodoc", "sphinx.ext.intersphinx"] +extensions = [ + "sphinx.ext.viewcode", + "sphinx.ext.autodoc", + "sphinx.ext.intersphinx", + "sphinx_rtd_theme", +] # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] # The suffix of source filenames. -source_suffix = ".rst" +source_suffix = {".rst": "restructuredtext"} # The encoding of source files. # source_encoding = 'utf-8-sig' @@ -92,12 +97,15 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -html_theme = "default" +html_theme = "sphinx_rtd_theme" + +# https://docs.readthedocs.com/platform/stable/intro/sphinx.html#set-the-canonical-url +html_baseurl = os.environ.get("READTHEDOCS_CANONICAL_URL", "/") # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. -# html_theme_options = {} +html_theme_options = {"flyout_display": "attached"} # Add any paths that contain custom themes here, relative to this directory. # html_theme_path = [] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/docs/examples/_utils.py new/treq-25.5.0/docs/examples/_utils.py --- old/treq-24.9.1/docs/examples/_utils.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/docs/examples/_utils.py 2020-02-02 01:00:00.000000000 +0100 @@ -1,10 +1,7 @@ -from __future__ import print_function - import treq -def print_response(response): +async def print_response(response): print(response.code, response.phrase) print(response.headers) - - return treq.text_content(response).addCallback(print) + print(await treq.text_content(response)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/docs/examples/basic_auth.py new/treq-25.5.0/docs/examples/basic_auth.py --- old/treq-24.9.1/docs/examples/basic_auth.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/docs/examples/basic_auth.py 2020-02-02 01:00:00.000000000 +0100 @@ -1,15 +1,15 @@ -from twisted.internet.task import react from _utils import print_response +from twisted.internet.task import react import treq -def main(reactor, *args): - d = treq.get( - 'https://httpbin.org/basic-auth/treq/treq', - auth=('treq', 'treq') +async def basic_auth(reactor): + resp = await treq.get( + "https://httpbin.org/basic-auth/treq/treq", + auth=("treq", "treq"), ) - d.addCallback(print_response) - return d + await print_response(resp) + -react(main, []) +react(basic_auth) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/docs/examples/basic_get.py new/treq-25.5.0/docs/examples/basic_get.py --- old/treq-24.9.1/docs/examples/basic_get.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/docs/examples/basic_get.py 2020-02-02 01:00:00.000000000 +0100 @@ -1,12 +1,13 @@ from twisted.internet.task import react -from _utils import print_response import treq -def main(reactor, *args): - d = treq.get('https://httpbin.org/get') - d.addCallback(print_response) - return d +async def basic_get(reactor): + resp = await treq.get("https://httpbin.org/get") + print(resp.code, resp.phrase) + print(resp.headers) + print(await resp.text()) -react(main, []) + +react(basic_get) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/docs/examples/basic_post.py new/treq-25.5.0/docs/examples/basic_post.py --- old/treq-24.9.1/docs/examples/basic_post.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/docs/examples/basic_post.py 2020-02-02 01:00:00.000000000 +0100 @@ -1,13 +1,15 @@ -from twisted.internet.task import react from _utils import print_response +from twisted.internet.task import react import treq -def main(reactor): - d = treq.post("https://httpbin.org/post", - data={"form": "data"}) - d.addCallback(print_response) - return d +def basic_post(reactor): + resp = await treq.post( + "https://httpbin.org/post", + data={"form": "data"}, + ) + await print_response(resp) + -react(main, []) +react(basic_post) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/docs/examples/basic_url.py new/treq-25.5.0/docs/examples/basic_url.py --- old/treq-24.9.1/docs/examples/basic_url.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/docs/examples/basic_url.py 2020-02-02 01:00:00.000000000 +0100 @@ -1,17 +1,18 @@ -# -*- encoding: utf-8 -*- +from _utils import print_response from hyperlink import DecodedURL from twisted.internet.task import react -from _utils import print_response import treq -def main(reactor): + +async def basic_url(reactor): url = ( - DecodedURL.from_text(u"https://httpbin.org") - .child(u"get") # add path /get - .add(u"foo", u"&") # add query ?foo=%26 + DecodedURL.from_text("https://httpbin.org") + .child("get") # add path /get + .add("foo", "&") # add query ?foo=%26 ) print(url.to_text()) - return treq.get(url).addCallback(print_response) + await print_response(await treq.get(url)) + -react(main, []) +react(basic_url) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/docs/examples/custom_agent.py new/treq-25.5.0/docs/examples/custom_agent.py --- old/treq-24.9.1/docs/examples/custom_agent.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/docs/examples/custom_agent.py 2020-02-02 01:00:00.000000000 +0100 @@ -1,19 +1,18 @@ -from treq.client import HTTPClient from _utils import print_response from twisted.internet.task import react from twisted.web.client import Agent -def make_custom_agent(reactor): - return Agent(reactor, connectTimeout=42) +from treq.client import HTTPClient + -def main(reactor, *args): - agent = make_custom_agent(reactor) - http_client = HTTPClient(agent) - d = http_client.get( - 'https://secure.example.net/area51', - auth=('admin', "you'll never guess!")) - d.addCallback(print_response) - return d +async def custom_agent(reactor): + my_agent = Agent(reactor, connectTimeout=42) + http_client = HTTPClient(my_agent) + resp = await http_client.get( + "https://secure.example.net/area51", + auth=("admin", "you'll never guess!"), + ) + await print_response(resp) -react(main, []) +react(custom_agent) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/docs/examples/disable_redirects.py new/treq-25.5.0/docs/examples/disable_redirects.py --- old/treq-24.9.1/docs/examples/disable_redirects.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/docs/examples/disable_redirects.py 2020-02-02 01:00:00.000000000 +0100 @@ -1,12 +1,15 @@ -from twisted.internet.task import react from _utils import print_response +from twisted.internet.task import react import treq -def main(reactor, *args): - d = treq.get('https://httpbin.org/redirect/1', allow_redirects=False) - d.addCallback(print_response) - return d +async def disable_redirects(reactor): + resp = await treq.get( + "https://httpbin.org/redirect/1", + allow_redirects=False, + ) + await print_response(resp) + -react(main, []) +react(disable_redirects) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/docs/examples/download_file.py new/treq-25.5.0/docs/examples/download_file.py --- old/treq-24.9.1/docs/examples/download_file.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/docs/examples/download_file.py 2020-02-02 01:00:00.000000000 +0100 @@ -3,11 +3,10 @@ import treq -def download_file(reactor, url, destination_filename): - destination = open(destination_filename, 'wb') - d = treq.get(url, unbuffered=True) - d.addCallback(treq.collect, destination.write) - d.addBoth(lambda _: destination.close()) - return d +async def download_file(reactor, url, destination_filename): + with open(destination_filename, "wb") as destination: + response = await treq.get(url, unbuffered=True) + await treq.collect(response, destination.write) -react(download_file, ['https://httpbin.org/get', 'download.txt']) + +react(download_file, ["https://httpbin.org/get", "download.txt"]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/docs/examples/json_post.py new/treq-25.5.0/docs/examples/json_post.py --- old/treq-24.9.1/docs/examples/json_post.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/docs/examples/json_post.py 2020-02-02 01:00:00.000000000 +0100 @@ -1,18 +1,17 @@ from pprint import pprint -from twisted.internet import defer from twisted.internet.task import react import treq [email protected] -def main(reactor): - response = yield treq.post( - 'https://httpbin.org/post', +async def json_post(reactor): + response = await treq.post( + "https://httpbin.org/post", json={"msg": "Hello!"}, ) - data = yield response.json() + data = await response.json() pprint(data) -react(main, []) + +react(json_post) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/docs/examples/query_params.py new/treq-25.5.0/docs/examples/query_params.py --- old/treq-24.9.1/docs/examples/query_params.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/docs/examples/query_params.py 2020-02-02 01:00:00.000000000 +0100 @@ -1,39 +1,37 @@ from twisted.internet.task import react -from twisted.internet.defer import inlineCallbacks import treq -@inlineCallbacks -def main(reactor): - print('List of tuples') - resp = yield treq.get('https://httpbin.org/get', - params=[('foo', 'bar'), ('baz', 'bax')]) - content = yield resp.text() - print(content) - - print('Single value dictionary') - resp = yield treq.get('https://httpbin.org/get', - params={'foo': 'bar', 'baz': 'bax'}) - content = yield resp.text() - print(content) - - print('Multi value dictionary') - resp = yield treq.get('https://httpbin.org/get', - params={b'foo': [b'bar', b'baz', b'bax']}) - content = yield resp.text() - print(content) - - print('Mixed value dictionary') - resp = yield treq.get('https://httpbin.org/get', - params={'foo': [1, 2, 3], 'bax': b'quux', b'bar': 'foo'}) - content = yield resp.text() - print(content) - - print('Preserved query parameters') - resp = yield treq.get('https://httpbin.org/get?foo=bar', - params={'baz': 'bax'}) - content = yield resp.text() - print(content) +async def query_params(reactor): + print("List of tuples") + resp = await treq.get( + "https://httpbin.org/get", params=[("foo", "bar"), ("baz", "bax")] + ) + print(await resp.text()) + + print("Single value dictionary") + resp = await treq.get( + "https://httpbin.org/get", params={"foo": "bar", "baz": "bax"} + ) + print(await resp.text()) + + print("Multi value dictionary") + resp = await treq.get( + "https://httpbin.org/get", params={b"foo": [b"bar", b"baz", b"bax"]} + ) + print(await resp.text()) + + print("Mixed value dictionary") + resp = await treq.get( + "https://httpbin.org/get", + params={"foo": [1, 2, 3], "bax": b"quux", b"bar": "foo"}, + ) + print(await resp.text()) + + print("Preserved query parameters") + resp = await treq.get("https://httpbin.org/get?foo=bar", params={"baz": "bax"}) + print(await resp.text()) -react(main, []) + +react(query_params) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/docs/examples/redirects.py new/treq-25.5.0/docs/examples/redirects.py --- old/treq-24.9.1/docs/examples/redirects.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/docs/examples/redirects.py 2020-02-02 01:00:00.000000000 +0100 @@ -1,12 +1,12 @@ -from twisted.internet.task import react from _utils import print_response +from twisted.internet.task import react import treq -def main(reactor, *args): - d = treq.get('https://httpbin.org/redirect/1') - d.addCallback(print_response) - return d +async def redirects(reactor): + resp = await treq.get("https://httpbin.org/redirect/1") + await print_response(resp) + -react(main, []) +react(redirects) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/docs/examples/response_history.py new/treq-25.5.0/docs/examples/response_history.py --- old/treq-24.9.1/docs/examples/response_history.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/docs/examples/response_history.py 2020-02-02 01:00:00.000000000 +0100 @@ -1,18 +1,14 @@ -from twisted.internet.task import react from _utils import print_response +from twisted.internet.task import react import treq -def main(reactor, *args): - d = treq.get('https://httpbin.org/redirect/1') - - def cb(response): - print('Response history:') - print(response.history()) - return print_response(response) +async def response_history(reactor): + resp = await treq.get("https://httpbin.org/redirect/1") + print("Response history:") + print(resp.history()) + await print_response(resp) - d.addCallback(cb) - return d -react(main, []) +react(response_history) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/docs/examples/testing_seq.py new/treq-25.5.0/docs/examples/testing_seq.py --- old/treq-24.9.1/docs/examples/testing_seq.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/docs/examples/testing_seq.py 2020-02-02 01:00:00.000000000 +0100 @@ -18,7 +18,7 @@ else: message = yield response.text() raise Exception("Got an error from the server: {}".format(message)) - defer.returnValue(result) + return result class MakeARequestTests(SynchronousTestCase): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/docs/examples/using_cookies.py new/treq-25.5.0/docs/examples/using_cookies.py --- old/treq-24.9.1/docs/examples/using_cookies.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/docs/examples/using_cookies.py 2020-02-02 01:00:00.000000000 +0100 @@ -1,10 +1,10 @@ -from twisted.internet.task import react from _utils import print_response +from twisted.internet.task import react import treq -async def main(reactor): +async def using_cookies(reactor): resp = await treq.get("https://httpbin.org/cookies/set?hello=world") jar = resp.cookies() @@ -16,4 +16,4 @@ ) -react(main) +react(using_cookies) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/docs/howto.rst new/treq-25.5.0/docs/howto.rst --- old/treq-24.9.1/docs/howto.rst 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/docs/howto.rst 2020-02-02 01:00:00.000000000 +0100 @@ -12,12 +12,14 @@ :py:func:`treq.collect` knows nothing about the framing of your data and will simply call your collector function with any data that is currently available. +By default, treq buffers the full response in memory. +Pass ``unbufferred=True`` to disable this behavior. + Here is an example which simply a file object's write method to :py:func:`treq.collect` to save the response body to a file. .. literalinclude:: examples/download_file.py - :linenos: - :lines: 6-11 + :pyobject: download_file Full example: :download:`download_file.py <examples/download_file.py>` @@ -34,8 +36,7 @@ Here is an example that builds a URL that contains a ``&`` character, which is automatically escaped properly. .. literalinclude:: examples/basic_url.py - :linenos: - :pyobject: main + :pyobject: basic_url Full example: :download:`basic_url.py <examples/basic_url.py>` @@ -50,17 +51,16 @@ ``(key, value)`` tuples. If it is a ``dict`` then the values in the dict may either be scalar values or a ``list`` or ``tuple`` thereof. -Scalar values means ``str``, ``bytes``, or anything else — even ``None`` — which will be coerced to ``str``. +Scalar values means `str`, `bytes`, or anything else — even ``None`` — which will be coerced to `str`. Strings are UTF-8 encoded. .. literalinclude:: examples/query_params.py - :linenos: - :lines: 7-37 + :pyobject: query_params Full example: :download:`query_params.py <examples/query_params.py>` If you prefer a strictly-typed API, try :class:`hyperlink.DecodedURL`. -Use its :meth:`~hyperlink.URL.add` and :meth:`~hyperlink.URL.set` methods to add query parameters without risk of accidental type coercion. +Its :meth:`~hyperlink.URL.add` and :meth:`~hyperlink.URL.set` methods manipulate query parameters without risk of accidental type coercion. JSON ---- @@ -73,8 +73,8 @@ It buffers the whole response and decodes it with :func:`json.loads()`. .. literalinclude:: examples/json_post.py - :linenos: - :pyobject: main + :pyobject: json_post + :emphasize-lines: 4,6 Full example: :download:`json_post.py <examples/json_post.py>` @@ -87,8 +87,8 @@ The ``auth`` argument should be a tuple of the form ``('username', 'password')``. .. literalinclude:: examples/basic_auth.py - :linenos: - :lines: 7-15 + :pyobject: basic_auth + :emphasize-lines: 4 Full example: :download:`basic_auth.py <examples/basic_auth.py>` @@ -100,8 +100,7 @@ The following will print a 200 OK response. .. literalinclude:: examples/redirects.py - :linenos: - :lines: 7-12 + :pyobject: redirects Full example: :download:`redirects.py <examples/redirects.py>` @@ -109,8 +108,8 @@ any of the request methods. .. literalinclude:: examples/disable_redirects.py - :linenos: - :lines: 7-12 + :pyobject: disable_redirects + :emphasize-lines: 4 Full example: :download:`disable_redirects.py <examples/disable_redirects.py>` @@ -118,8 +117,8 @@ the :meth:`~treq.response._Response.history()` method on the response. .. literalinclude:: examples/response_history.py - :linenos: - :lines: 7-15 + :pyobject: response_history + :emphasize-lines: 4 Full example: :download:`response_history.py <examples/response_history.py>` @@ -127,16 +126,14 @@ Cookies ------- -Cookies can be set by passing a ``dict`` or ``cookielib.CookieJar`` instance -via the ``cookies`` keyword argument. Later cookies set by the server can be -retrieved using the :py:meth:`~treq.response._Response.cookies()` method of the response. +Cookies can be set by passing a `dict` or :py:class:`http.cookiejar.CookieJar` instance via the *cookies* keyword argument. +Any cookies set by the server can be retrieved using the :py:meth:`~treq.response._Response.cookies()` response method, which returns a :py:class:`~http.cookiejar.CookieJar`. -The object returned by :py:meth:`~treq.response._Response.cookies()` supports the same key/value -access as `requests cookies <https://requests.readthedocs.io/en/latest/user/quickstart/#cookies>`_. +Use :py:func:`treq.cookies.search()` to extract cookies from the jar: .. literalinclude:: examples/using_cookies.py - :linenos: - :lines: 7-20 + :pyobject: using_cookies + :emphasize-lines: 4-5 Full example: :download:`using_cookies.py <examples/using_cookies.py>` @@ -154,7 +151,7 @@ behavior. .. literalinclude:: examples/custom_agent.py - :linenos: - :lines: 6-19 + :pyobject: custom_agent + :emphasize-lines: 2-3 Full example: :download:`custom_agent.py <examples/custom_agent.py>` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/docs/index.rst new/treq-25.5.0/docs/index.rst --- old/treq-24.9.1/docs/index.rst 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/docs/index.rst 2020-02-02 01:00:00.000000000 +0100 @@ -3,7 +3,7 @@ Release v\ |release| (:doc:`What's new? <changelog>`). -`treq <https://pypi.org/project/treq>`_ depends on a recent Twisted and functions on Python 2.7 and Python 3.3+ (including PyPy). +`treq <https://pypi.org/project/treq>`_ depends on a recent Twisted and a `supported version of CPython <https://devguide.python.org/versions/#versions>`_ or `PyPy <https://pypy.org/download.html>`_. Why? ---- @@ -13,8 +13,8 @@ treq is not of course a perfect clone of `requests`_. I have tried to stay true to the do-what-I-mean spirit of the `requests`_ API and also kept the API familiar to users of `Twisted`_ and :class:`twisted.web.client.Agent` on which treq is based. -.. _requests: https://requests.readthedocs.io/en/master/ -.. _Twisted: https://twistedmatrix.com/ +.. _requests: https://requests.readthedocs.io/en/latest/ +.. _Twisted: https://www.twistedmatrix.com Quick Start ----------- @@ -29,7 +29,7 @@ +++ .. literalinclude:: examples/basic_get.py - :pyobject: main + :pyobject: basic_get Full example: :download:`basic_get.py <examples/basic_get.py>` @@ -37,7 +37,7 @@ ++++ .. literalinclude:: examples/basic_post.py - :pyobject: main + :pyobject: basic_post Full example: :download:`basic_post.py <examples/basic_post.py>` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/pyproject.toml new/treq-25.5.0/pyproject.toml --- old/treq-24.9.1/pyproject.toml 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100 @@ -1,10 +1,72 @@ [build-system] requires = [ - "setuptools >= 35.0.2", - "wheel >= 0.29.0", - "incremental >= 21.3.0", + "hatchling", + "incremental >= 24.7.2", ] -build-backend = "setuptools.build_meta" +build-backend = "hatchling.build" + +[project] +name = "treq" +dynamic = ["version"] +description = "High-level Twisted HTTP Client API" +readme = "README.rst" +license = "MIT" +# When updating this value, make sure our CI matrix includes a matching minimum version. +requires-python = ">=3.8.0" +authors = [ + { name = "David Reid", email = "[email protected]" }, +] +maintainers = [ + { name = "Tom Most", email = "[email protected]" }, +] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Framework :: Twisted", + "Programming Language :: Python", + "Programming Language :: Python :: 3.8", + "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 :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", +] +dependencies = [ + "incremental >= 24.7.2", + "requests >= 2.1.0", + "hyperlink >= 21.0.0", + "Twisted[tls] >= 22.10.0", # For #11635 + "attrs", + "typing_extensions >= 3.10.0", + "multipart", +] + +[project.optional-dependencies] +dev = [ + "pep8", + "pyflakes", + "httpbin==0.7.0", + "werkzeug==2.0.3", +] +docs = [ + "sphinx", + "sphinx_rtd_theme", +] + +[project.urls] +Changelog = "https://github.com/twisted/treq/blob/HEAD/CHANGELOG.rst" +Documentation = "https://treq.readthedocs.io/" +Issues = "https://github.com/twisted/treq/issues" +Source = "https://github.com/twisted/treq" +Funding-PSF = "https://psfmember.org/civicrm/contribute/transact/?reset=1&id=44" +Funding-GitHub = "https://github.com/sponsors/twisted" + +[tool.hatch.version] +source = "incremental" [tool.towncrier] package = "treq" @@ -85,7 +147,7 @@ ignore_missing_imports = true [[tool.mypy.overrides]] - module = [ +module = [ "treq._multipart", - ] - disallow_untyped_defs = false +] +disallow_untyped_defs = false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/setup.cfg new/treq-25.5.0/setup.cfg --- old/treq-24.9.1/setup.cfg 2024-09-20 01:02:16.323188800 +0200 +++ new/treq-25.5.0/setup.cfg 1970-01-01 01:00:00.000000000 +0100 @@ -1,4 +0,0 @@ -[egg_info] -tag_build = -tag_date = 0 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/setup.py new/treq-25.5.0/setup.py --- old/treq-24.9.1/setup.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/setup.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,62 +0,0 @@ -from setuptools import find_packages, setup - -classifiers = [ - "Development Status :: 5 - Production/Stable", - "Intended Audience :: Developers", - "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent", - "Framework :: Twisted", - "Programming Language :: Python", - "Programming Language :: Python :: 3.8", - "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 :: Implementation :: CPython", - "Programming Language :: Python :: Implementation :: PyPy", -] - -if __name__ == "__main__": - - with open("README.rst") as f: - readme = f.read() - - setup( - name="treq", - packages=find_packages("src"), - package_dir={"": "src"}, - setup_requires=["incremental"], - use_incremental=True, - python_requires=">=3.7", - install_requires=[ - "incremental", - "requests >= 2.1.0", - "hyperlink >= 21.0.0", - "Twisted[tls] >= 22.10.0", # For #11635 - "attrs", - "typing_extensions >= 3.10.0", - ], - extras_require={ - "dev": [ - "pep8", - "pyflakes", - "httpbin==0.7.0", - "werkzeug==2.0.3", - ], - "docs": [ - "sphinx<7.0.0", # Removal of 'style' key breaks RTD. - ], - }, - package_data={"treq": ["py.typed"]}, - author="David Reid", - author_email="[email protected]", - maintainer="Tom Most", - maintainer_email="[email protected]", - classifiers=classifiers, - description="High-level Twisted HTTP Client API", - license="MIT/X", - url="https://github.com/twisted/treq", - long_description=readme, - long_description_content_type="text/x-rst", - ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/src/treq/_version.py new/treq-25.5.0/src/treq/_version.py --- old/treq-24.9.1/src/treq/_version.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/src/treq/_version.py 2020-02-02 01:00:00.000000000 +0100 @@ -7,5 +7,5 @@ from incremental import Version -__version__ = Version("treq", 24, 9, 1) +__version__ = Version("treq", 25, 5, 0) __all__ = ["__version__"] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/src/treq/testing.py new/treq-25.5.0/src/treq/testing.py --- old/treq-24.9.1/src/treq/testing.py 2024-09-20 01:02:08.000000000 +0200 +++ new/treq-25.5.0/src/treq/testing.py 2020-02-02 01:00:00.000000000 +0100 @@ -429,16 +429,6 @@ :class:`~twisted.trial.unittest.SynchronousTestCase`) will translate into a test failure. - .. note:: - - Some versions of - :class:`twisted.trial.unittest.SynchronousTestCase` report - logged errors on the wrong test: see `Twisted #9267 - <https://twistedmatrix.com/trac/ticket/9267>`_. - - .. TODO Update the above note to say what version of - SynchronousTestCase is fixed once Twisted >17.5.0 is released. - When not subclassing Trial's classes you must pass `async_failure_reporter` and implement equivalent behavior or errors will pass silently. For example:: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/src/treq.egg-info/PKG-INFO new/treq-25.5.0/src/treq.egg-info/PKG-INFO --- old/treq-24.9.1/src/treq.egg-info/PKG-INFO 2024-09-20 01:02:16.000000000 +0200 +++ new/treq-25.5.0/src/treq.egg-info/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 @@ -1,110 +0,0 @@ -Metadata-Version: 2.1 -Name: treq -Version: 24.9.1 -Summary: High-level Twisted HTTP Client API -Home-page: https://github.com/twisted/treq -Author: David Reid -Author-email: [email protected] -Maintainer: Tom Most -Maintainer-email: [email protected] -License: MIT/X -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Operating System :: OS Independent -Classifier: Framework :: Twisted -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Classifier: Programming Language :: Python :: 3.13 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Requires-Python: >=3.7 -Description-Content-Type: text/x-rst -License-File: LICENSE -Requires-Dist: incremental -Requires-Dist: requests>=2.1.0 -Requires-Dist: hyperlink>=21.0.0 -Requires-Dist: Twisted[tls]>=22.10.0 -Requires-Dist: attrs -Requires-Dist: typing_extensions>=3.10.0 -Provides-Extra: dev -Requires-Dist: pep8; extra == "dev" -Requires-Dist: pyflakes; extra == "dev" -Requires-Dist: httpbin==0.7.0; extra == "dev" -Requires-Dist: werkzeug==2.0.3; extra == "dev" -Provides-Extra: docs -Requires-Dist: sphinx<7.0.0; extra == "docs" - -treq: High-level Twisted HTTP Client API -======================================== - -.. |pypi| image:: https://img.shields.io/pypi/v/treq.svg - :alt: PyPI - :target: https://pypi.org/project/treq/ - -.. |calver| image:: https://img.shields.io/badge/calver-YY.MM.MICRO-22bfda.svg - :alt: calver: YY.MM.MICRO - :target: https://calver.org/ - -.. |coverage| image:: https://coveralls.io/repos/github/twisted/treq/badge.svg - :alt: Coverage - :target: https://coveralls.io/github/twisted/treq - -.. |documentation| image:: https://readthedocs.org/projects/treq/badge/ - :alt: Documentation - :target: https://treq.readthedocs.org - -|pypi| -|calver| -|coverage| -|documentation| - -``treq`` is an HTTP library inspired by -`requests <https://requests.readthedocs.io/>`_ but written on top of -`Twisted <https://www.twistedmatrix.com>`_'s -`Agents <https://twistedmatrix.com/documents/current/api/twisted.web.client.Agent.html>`_. - -It provides a simple, higher level API for making HTTP requests when -using Twisted. - -.. code-block:: python - - >>> import treq - - >>> async def main(reactor): - ... response = await treq.get("https://github.com") - ... print(response.code) - ... body = await response.text() - ... print("<!DOCTYPE html>" in body) - - >>> from twisted.internet.task import react - >>> react(main) - 200 - True - -For more info `read the docs <https://treq.readthedocs.org>`_. - -Contributing ------------- - -``treq`` development is hosted on `GitHub <https://github.com/twisted/treq>`_. - -We welcome contributions: feel free to fork and send contributions over. -See `CONTRIBUTING.rst <https://github.com/twisted/treq/blob/master/CONTRIBUTING.rst>`_ for more info. - -Code of Conduct ---------------- - -Refer to the `Twisted code of conduct <https://github.com/twisted/twisted/blob/trunk/code_of_conduct.md>`_. - -Copyright and License ---------------------- - -``treq`` is made available under the MIT license. -See `LICENSE <./LICENSE>`_ for legal details and copyright notices. - - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/src/treq.egg-info/SOURCES.txt new/treq-25.5.0/src/treq.egg-info/SOURCES.txt --- old/treq-24.9.1/src/treq.egg-info/SOURCES.txt 2024-09-20 01:02:16.000000000 +0200 +++ new/treq-25.5.0/src/treq.egg-info/SOURCES.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,72 +0,0 @@ -.coveragerc -CHANGELOG.rst -CONTRIBUTING.rst -LICENSE -MANIFEST.in -README.rst -SECURITY.md -pyproject.toml -setup.py -docs/Makefile -docs/api.rst -docs/changelog.rst -docs/conf.py -docs/howto.rst -docs/index.rst -docs/make.bat -docs/testing.rst -docs/_static/.keepme -docs/examples/_utils.py -docs/examples/basic_auth.py -docs/examples/basic_get.py -docs/examples/basic_post.py -docs/examples/basic_url.py -docs/examples/custom_agent.py -docs/examples/disable_redirects.py -docs/examples/download_file.py -docs/examples/iresource.py -docs/examples/json_post.py -docs/examples/query_params.py -docs/examples/redirects.py -docs/examples/response_history.py -docs/examples/testing_seq.py -docs/examples/using_cookies.py -src/treq/__init__.py -src/treq/_agentspy.py -src/treq/_multipart.py -src/treq/_types.py -src/treq/_version.py -src/treq/api.py -src/treq/auth.py -src/treq/client.py -src/treq/content.py -src/treq/cookies.py -src/treq/multipart.py -src/treq/py.typed -src/treq/response.py -src/treq/testing.py -src/treq.egg-info/PKG-INFO -src/treq.egg-info/SOURCES.txt -src/treq.egg-info/dependency_links.txt -src/treq.egg-info/requires.txt -src/treq.egg-info/top_level.txt -src/treq/test/__init__.py -src/treq/test/test_agentspy.py -src/treq/test/test_api.py -src/treq/test/test_auth.py -src/treq/test/test_client.py -src/treq/test/test_content.py -src/treq/test/test_cookies.py -src/treq/test/test_multipart.py -src/treq/test/test_response.py -src/treq/test/test_testing.py -src/treq/test/test_treq_integration.py -src/treq/test/util.py -src/treq/test/local_httpbin/__init__.py -src/treq/test/local_httpbin/child.py -src/treq/test/local_httpbin/parent.py -src/treq/test/local_httpbin/shared.py -src/treq/test/local_httpbin/test/__init__.py -src/treq/test/local_httpbin/test/test_child.py -src/treq/test/local_httpbin/test/test_parent.py -src/treq/test/local_httpbin/test/test_shared.py \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/src/treq.egg-info/dependency_links.txt new/treq-25.5.0/src/treq.egg-info/dependency_links.txt --- old/treq-24.9.1/src/treq.egg-info/dependency_links.txt 2024-09-20 01:02:16.000000000 +0200 +++ new/treq-25.5.0/src/treq.egg-info/dependency_links.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/src/treq.egg-info/requires.txt new/treq-25.5.0/src/treq.egg-info/requires.txt --- old/treq-24.9.1/src/treq.egg-info/requires.txt 2024-09-20 01:02:16.000000000 +0200 +++ new/treq-25.5.0/src/treq.egg-info/requires.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,15 +0,0 @@ -incremental -requests>=2.1.0 -hyperlink>=21.0.0 -Twisted[tls]>=22.10.0 -attrs -typing_extensions>=3.10.0 - -[dev] -pep8 -pyflakes -httpbin==0.7.0 -werkzeug==2.0.3 - -[docs] -sphinx<7.0.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/src/treq.egg-info/top_level.txt new/treq-25.5.0/src/treq.egg-info/top_level.txt --- old/treq-24.9.1/src/treq.egg-info/top_level.txt 2024-09-20 01:02:16.000000000 +0200 +++ new/treq-25.5.0/src/treq.egg-info/top_level.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -treq diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/treq-24.9.1/tox.ini new/treq-25.5.0/tox.ini --- old/treq-24.9.1/tox.ini 1970-01-01 01:00:00.000000000 +0100 +++ new/treq-25.5.0/tox.ini 2020-02-02 01:00:00.000000000 +0100 @@ -0,0 +1,84 @@ +[tox] +envlist = + py38-twisted_lowest, + {pypy3,py38,py39,py310,py311,py312,py313}-twisted_latest, + {pypy3,py38,py39,py310,py311,py312,py313}-twisted_trunk, + twine, check-manifest, flake8, docs, coverage-report +isolated_build = true + +[testenv] +extras = dev +deps = + coverage + + twisted_lowest: Twisted==22.10.0 + twisted_latest: Twisted + twisted_trunk: https://github.com/twisted/twisted/archive/trunk.zip +setenv = + # Avoid unnecessary network access when creating virtualenvs for speed. + VIRTUALENV_NO_DOWNLOAD=1 + PIP_DISABLE_PIP_VERSION_CHECK=1 +passenv = TERM # ensure colors +commands = + pip list + python -Wall \ + {envbindir}/coverage run -p \ + {envbindir}/trial --temp-directory={envtmpdir}/_trial_temp {posargs:treq} + +[testenv:mypy] +basepython = python3.12 +deps = + mypy==1.0.1 + mypy-zope==0.9.1 + types-requests +commands = + mypy \ + --cache-dir="{toxworkdir}/mypy_cache" \ + {tty:--pretty:} \ + {posargs:src} + +[testenv:flake8] +python = python3.12 +skip_install = True +deps = flake8 +commands = flake8 src/treq/ docs/examples/ + +[testenv:towncrier] +python = python3.12 +deps = + towncrier +commands = + towncrier {posargs:--draft} + +[testenv:twine] +python = python3.12 +deps = + twine +commands = + twine check {distdir}/*.* + +[testenv:check-manifest] +python = python3.12 +deps = + check-manifest +commands = + check-manifest + +[testenv:docs] +extras = docs +changedir = docs +basepython = python3.12 +commands = + sphinx-build -b html . html + +[testenv:coverage-report] +depends = pypy3,py38,py39,py310,py311,py312 +commands = + coverage combine + coverage report + +[flake8] +# This is a minimal Black-compatible config. +# See https://black.readthedocs.io/en/stable/compatible_configs.html#flake8 +max-line-length = 88 +extend-ignore = E203, W503, E266
