Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-httpcore for openSUSE:Factory
checked in at 2024-04-03 17:18:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-httpcore (Old)
and /work/SRC/openSUSE:Factory/.python-httpcore.new.1905 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-httpcore"
Wed Apr 3 17:18:27 2024 rev:15 rq:1164272 version:1.0.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-httpcore/python-httpcore.changes
2024-03-25 21:08:09.645100525 +0100
+++
/work/SRC/openSUSE:Factory/.python-httpcore.new.1905/python-httpcore.changes
2024-04-03 17:18:44.689801730 +0200
@@ -1,0 +2,7 @@
+Wed Apr 3 07:04:47 UTC 2024 - Dirk Müller <[email protected]>
+
+- update to 1.0.5:
+ * Handle `EndOfStream` exception for anyio backend.
+ * Allow trio `0.25.*` series in package dependancies.
+
+-------------------------------------------------------------------
Old:
----
httpcore-1.0.4.tar.gz
New:
----
httpcore-1.0.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-httpcore.spec ++++++
--- /var/tmp/diff_new_pack.uBxmW6/_old 2024-04-03 17:18:45.309824575 +0200
+++ /var/tmp/diff_new_pack.uBxmW6/_new 2024-04-03 17:18:45.309824575 +0200
@@ -27,7 +27,7 @@
%{?sle15_python_module_pythons}
Name: python-httpcore%{psuffix}
-Version: 1.0.4
+Version: 1.0.5
Release: 0
Summary: Minimal low-level Python HTTP client
License: BSD-3-Clause
++++++ httpcore-1.0.4.tar.gz -> httpcore-1.0.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore-1.0.4/CHANGELOG.md
new/httpcore-1.0.5/CHANGELOG.md
--- old/httpcore-1.0.4/CHANGELOG.md 2024-02-21 14:00:25.000000000 +0100
+++ new/httpcore-1.0.5/CHANGELOG.md 2024-03-27 19:27:03.000000000 +0100
@@ -4,6 +4,11 @@
The format is based on [Keep a
Changelog](https://keepachangelog.com/en/1.0.0/).
+## 1.0.5 (March 27th, 2024)
+
+- Handle `EndOfStream` exception for anyio backend. (#899)
+- Allow trio `0.25.*` series in package dependancies. (#903)
+
## 1.0.4 (February 21st, 2024)
- Add `target` request extension. (#888)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore-1.0.4/httpcore/__init__.py
new/httpcore-1.0.5/httpcore/__init__.py
--- old/httpcore-1.0.4/httpcore/__init__.py 2024-02-21 14:00:25.000000000
+0100
+++ new/httpcore-1.0.5/httpcore/__init__.py 2024-03-27 19:27:03.000000000
+0100
@@ -130,7 +130,7 @@
"WriteError",
]
-__version__ = "1.0.4"
+__version__ = "1.0.5"
__locals = locals()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore-1.0.4/httpcore/_async/http2.py
new/httpcore-1.0.5/httpcore/_async/http2.py
--- old/httpcore-1.0.4/httpcore/_async/http2.py 2024-02-21 14:00:25.000000000
+0100
+++ new/httpcore-1.0.5/httpcore/_async/http2.py 2024-03-27 19:27:03.000000000
+0100
@@ -75,9 +75,9 @@
# Connection terminated events are stored as state since
# we need to handle them for all streams.
- self._connection_terminated: typing.Optional[
- h2.events.ConnectionTerminated
- ] = None
+ self._connection_terminated:
typing.Optional[h2.events.ConnectionTerminated] = (
+ None
+ )
self._read_exception: typing.Optional[Exception] = None
self._write_exception: typing.Optional[Exception] = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore-1.0.4/httpcore/_backends/anyio.py
new/httpcore-1.0.5/httpcore/_backends/anyio.py
--- old/httpcore-1.0.4/httpcore/_backends/anyio.py 2024-02-21
14:00:25.000000000 +0100
+++ new/httpcore-1.0.5/httpcore/_backends/anyio.py 2024-03-27
19:27:03.000000000 +0100
@@ -27,6 +27,7 @@
TimeoutError: ReadTimeout,
anyio.BrokenResourceError: ReadError,
anyio.ClosedResourceError: ReadError,
+ anyio.EndOfStream: ReadError,
}
with map_exceptions(exc_map):
with anyio.fail_after(timeout):
@@ -62,6 +63,7 @@
exc_map = {
TimeoutError: ConnectTimeout,
anyio.BrokenResourceError: ConnectError,
+ anyio.EndOfStream: ConnectError,
}
with map_exceptions(exc_map):
try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore-1.0.4/httpcore/_models.py
new/httpcore-1.0.5/httpcore/_models.py
--- old/httpcore-1.0.4/httpcore/_models.py 2024-02-21 14:00:25.000000000
+0100
+++ new/httpcore-1.0.5/httpcore/_models.py 2024-03-27 19:27:03.000000000
+0100
@@ -339,7 +339,7 @@
url: The request URL, either as a `URL` instance, or as a string
or bytes.
For example: `"https://www.example.com".`
headers: The HTTP request headers.
- content: The content of the response body.
+ content: The content of the request body.
extensions: A dictionary of optional extra information included on
the request. Possible keys include `"timeout"`, and `"trace"`.
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore-1.0.4/httpcore/_sync/http2.py
new/httpcore-1.0.5/httpcore/_sync/http2.py
--- old/httpcore-1.0.4/httpcore/_sync/http2.py 2024-02-21 14:00:25.000000000
+0100
+++ new/httpcore-1.0.5/httpcore/_sync/http2.py 2024-03-27 19:27:03.000000000
+0100
@@ -75,9 +75,9 @@
# Connection terminated events are stored as state since
# we need to handle them for all streams.
- self._connection_terminated: typing.Optional[
- h2.events.ConnectionTerminated
- ] = None
+ self._connection_terminated:
typing.Optional[h2.events.ConnectionTerminated] = (
+ None
+ )
self._read_exception: typing.Optional[Exception] = None
self._write_exception: typing.Optional[Exception] = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore-1.0.4/pyproject.toml
new/httpcore-1.0.5/pyproject.toml
--- old/httpcore-1.0.4/pyproject.toml 2024-02-21 14:00:25.000000000 +0100
+++ new/httpcore-1.0.5/pyproject.toml 2024-03-27 19:27:03.000000000 +0100
@@ -41,7 +41,7 @@
"socksio==1.*",
]
trio = [
- "trio>=0.22.0,<0.25.0",
+ "trio>=0.22.0,<0.26.0",
]
asyncio = [
"anyio>=4.0,<5.0",
@@ -106,16 +106,12 @@
"httpcore/_sync",
"tests/_sync",
]
-line-length = 88
-select = [
- "E",
- "F",
- "W",
- "I"
-]
-[tool.ruff.pycodestyle]
+[tool.ruff.lint]
+select = ["E", "F", "W", "I"]
+
+[tool.ruff.lint.pycodestyle]
max-line-length = 120
-[tool.ruff.isort]
+[tool.ruff.lint.isort]
combine-as-imports = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore-1.0.4/requirements.txt
new/httpcore-1.0.5/requirements.txt
--- old/httpcore-1.0.4/requirements.txt 2024-02-21 14:00:25.000000000 +0100
+++ new/httpcore-1.0.5/requirements.txt 2024-03-27 19:27:03.000000000 +0100
@@ -2,23 +2,23 @@
# Docs
mkdocs==1.5.3
-mkdocs-autorefs==0.5.0
-mkdocs-material==9.5.10
+mkdocs-autorefs==1.0.1
+mkdocs-material==9.5.12
mkdocs-material-extensions==1.3.1
-mkdocstrings[python-legacy]==0.24.0
+mkdocstrings[python-legacy]==0.24.1
jinja2==3.1.3
# Packaging
-build==1.0.3
+build==1.1.1
twine
# Tests & Linting
-coverage[toml]==7.4.1
-ruff==0.2.2
+coverage[toml]==7.4.3
+ruff==0.3.0
mypy==1.8.0
trio-typing==0.10.0
types-certifi==2021.10.8.3
-pytest==8.0.1
+pytest==8.0.2
pytest-httpbin==2.0.0
pytest-trio==0.8.0
werkzeug<2.1 # See: https://github.com/postmanlabs/httpbin/issues/673
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore-1.0.4/scripts/check
new/httpcore-1.0.5/scripts/check
--- old/httpcore-1.0.4/scripts/check 2024-02-21 14:00:25.000000000 +0100
+++ new/httpcore-1.0.5/scripts/check 2024-03-27 19:27:03.000000000 +0100
@@ -8,7 +8,7 @@
set -x
-${PREFIX}ruff check --show-source $SOURCE_FILES
${PREFIX}ruff format $SOURCE_FILES --diff
${PREFIX}mypy $SOURCE_FILES
-scripts/unasync --check
+${PREFIX}ruff check $SOURCE_FILES
+${PREFIX}python scripts/unasync.py --check
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore-1.0.4/scripts/lint
new/httpcore-1.0.5/scripts/lint
--- old/httpcore-1.0.4/scripts/lint 2024-02-21 14:00:25.000000000 +0100
+++ new/httpcore-1.0.5/scripts/lint 2024-03-27 19:27:03.000000000 +0100
@@ -13,4 +13,4 @@
# Run unasync last because its `--check` mode is not aware of code formatters.
# (This means sync code isn't prettified, and that's mostly okay.)
-scripts/unasync
+${PREFIX}python scripts/unasync.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore-1.0.4/scripts/unasync
new/httpcore-1.0.5/scripts/unasync
--- old/httpcore-1.0.4/scripts/unasync 2024-02-21 14:00:25.000000000 +0100
+++ new/httpcore-1.0.5/scripts/unasync 1970-01-01 01:00:00.000000000 +0100
@@ -1,8 +0,0 @@
-#!/bin/sh -e
-
-export PREFIX=""
-if [ -d 'venv' ] ; then
- export PREFIX="venv/bin/"
-fi
-
-${PREFIX}python unasync.py ${@}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore-1.0.4/scripts/unasync.py
new/httpcore-1.0.5/scripts/unasync.py
--- old/httpcore-1.0.4/scripts/unasync.py 1970-01-01 01:00:00.000000000
+0100
+++ new/httpcore-1.0.5/scripts/unasync.py 2024-03-27 19:27:03.000000000
+0100
@@ -0,0 +1,94 @@
+#!venv/bin/python
+import os
+import re
+import sys
+from pprint import pprint
+
+SUBS = [
+ ('from .._backends.auto import AutoBackend', 'from .._backends.sync import
SyncBackend'),
+ ('import trio as concurrency', 'from tests import concurrency'),
+ ('AsyncIterator', 'Iterator'),
+ ('Async([A-Z][A-Za-z0-9_]*)', r'\2'),
+ ('async def', 'def'),
+ ('async with', 'with'),
+ ('async for', 'for'),
+ ('await ', ''),
+ ('handle_async_request', 'handle_request'),
+ ('aclose', 'close'),
+ ('aiter_stream', 'iter_stream'),
+ ('aread', 'read'),
+ ('asynccontextmanager', 'contextmanager'),
+ ('__aenter__', '__enter__'),
+ ('__aexit__', '__exit__'),
+ ('__aiter__', '__iter__'),
+ ('@pytest.mark.anyio', ''),
+ ('@pytest.mark.trio', ''),
+ ('AutoBackend', 'SyncBackend'),
+]
+COMPILED_SUBS = [
+ (re.compile(r'(^|\b)' + regex + r'($|\b)'), repl)
+ for regex, repl in SUBS
+]
+
+USED_SUBS = set()
+
+def unasync_line(line):
+ for index, (regex, repl) in enumerate(COMPILED_SUBS):
+ old_line = line
+ line = re.sub(regex, repl, line)
+ if old_line != line:
+ USED_SUBS.add(index)
+ return line
+
+
+def unasync_file(in_path, out_path):
+ with open(in_path, "r") as in_file:
+ with open(out_path, "w", newline="") as out_file:
+ for line in in_file.readlines():
+ line = unasync_line(line)
+ out_file.write(line)
+
+
+def unasync_file_check(in_path, out_path):
+ with open(in_path, "r") as in_file:
+ with open(out_path, "r") as out_file:
+ for in_line, out_line in zip(in_file.readlines(),
out_file.readlines()):
+ expected = unasync_line(in_line)
+ if out_line != expected:
+ print(f'unasync mismatch between {in_path!r} and
{out_path!r}')
+ print(f'Async code: {in_line!r}')
+ print(f'Expected sync code: {expected!r}')
+ print(f'Actual sync code: {out_line!r}')
+ sys.exit(1)
+
+
+def unasync_dir(in_dir, out_dir, check_only=False):
+ for dirpath, dirnames, filenames in os.walk(in_dir):
+ for filename in filenames:
+ if not filename.endswith('.py'):
+ continue
+ rel_dir = os.path.relpath(dirpath, in_dir)
+ in_path = os.path.normpath(os.path.join(in_dir, rel_dir, filename))
+ out_path = os.path.normpath(os.path.join(out_dir, rel_dir,
filename))
+ print(in_path, '->', out_path)
+ if check_only:
+ unasync_file_check(in_path, out_path)
+ else:
+ unasync_file(in_path, out_path)
+
+
+def main():
+ check_only = '--check' in sys.argv
+ unasync_dir("httpcore/_async", "httpcore/_sync", check_only=check_only)
+ unasync_dir("tests/_async", "tests/_sync", check_only=check_only)
+
+ if len(USED_SUBS) != len(SUBS):
+ unused_subs = [SUBS[i] for i in range(len(SUBS)) if i not in USED_SUBS]
+
+ print("These patterns were not used:")
+ pprint(unused_subs)
+ exit(1)
+
+
+if __name__ == '__main__':
+ main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore-1.0.4/tests/concurrency.py
new/httpcore-1.0.5/tests/concurrency.py
--- old/httpcore-1.0.4/tests/concurrency.py 2024-02-21 14:00:25.000000000
+0100
+++ new/httpcore-1.0.5/tests/concurrency.py 2024-03-27 19:27:03.000000000
+0100
@@ -8,6 +8,7 @@
We don't do any smarts around cancellations, or managing exceptions from
childen, because we don't need that for our use-case.
"""
+
import threading
from types import TracebackType
from typing import Any, Callable, List, Optional, Type
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/httpcore-1.0.4/unasync.py
new/httpcore-1.0.5/unasync.py
--- old/httpcore-1.0.4/unasync.py 2024-02-21 14:00:25.000000000 +0100
+++ new/httpcore-1.0.5/unasync.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,94 +0,0 @@
-#!venv/bin/python
-import os
-import re
-import sys
-from pprint import pprint
-
-SUBS = [
- ('from .._backends.auto import AutoBackend', 'from .._backends.sync import
SyncBackend'),
- ('import trio as concurrency', 'from tests import concurrency'),
- ('AsyncIterator', 'Iterator'),
- ('Async([A-Z][A-Za-z0-9_]*)', r'\2'),
- ('async def', 'def'),
- ('async with', 'with'),
- ('async for', 'for'),
- ('await ', ''),
- ('handle_async_request', 'handle_request'),
- ('aclose', 'close'),
- ('aiter_stream', 'iter_stream'),
- ('aread', 'read'),
- ('asynccontextmanager', 'contextmanager'),
- ('__aenter__', '__enter__'),
- ('__aexit__', '__exit__'),
- ('__aiter__', '__iter__'),
- ('@pytest.mark.anyio', ''),
- ('@pytest.mark.trio', ''),
- ('AutoBackend', 'SyncBackend'),
-]
-COMPILED_SUBS = [
- (re.compile(r'(^|\b)' + regex + r'($|\b)'), repl)
- for regex, repl in SUBS
-]
-
-USED_SUBS = set()
-
-def unasync_line(line):
- for index, (regex, repl) in enumerate(COMPILED_SUBS):
- old_line = line
- line = re.sub(regex, repl, line)
- if old_line != line:
- USED_SUBS.add(index)
- return line
-
-
-def unasync_file(in_path, out_path):
- with open(in_path, "r") as in_file:
- with open(out_path, "w", newline="") as out_file:
- for line in in_file.readlines():
- line = unasync_line(line)
- out_file.write(line)
-
-
-def unasync_file_check(in_path, out_path):
- with open(in_path, "r") as in_file:
- with open(out_path, "r") as out_file:
- for in_line, out_line in zip(in_file.readlines(),
out_file.readlines()):
- expected = unasync_line(in_line)
- if out_line != expected:
- print(f'unasync mismatch between {in_path!r} and
{out_path!r}')
- print(f'Async code: {in_line!r}')
- print(f'Expected sync code: {expected!r}')
- print(f'Actual sync code: {out_line!r}')
- sys.exit(1)
-
-
-def unasync_dir(in_dir, out_dir, check_only=False):
- for dirpath, dirnames, filenames in os.walk(in_dir):
- for filename in filenames:
- if not filename.endswith('.py'):
- continue
- rel_dir = os.path.relpath(dirpath, in_dir)
- in_path = os.path.normpath(os.path.join(in_dir, rel_dir, filename))
- out_path = os.path.normpath(os.path.join(out_dir, rel_dir,
filename))
- print(in_path, '->', out_path)
- if check_only:
- unasync_file_check(in_path, out_path)
- else:
- unasync_file(in_path, out_path)
-
-
-def main():
- check_only = '--check' in sys.argv
- unasync_dir("httpcore/_async", "httpcore/_sync", check_only=check_only)
- unasync_dir("tests/_async", "tests/_sync", check_only=check_only)
-
- if len(USED_SUBS) != len(SUBS):
- unused_subs = [SUBS[i] for i in range(len(SUBS)) if i not in USED_SUBS]
-
- print("These patterns were not used:")
- pprint(unused_subs)
- exit(1)
-
-
-if __name__ == '__main__':
- main()