Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-h11 for openSUSE:Factory checked in at 2022-10-14 15:40:25 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-h11 (Old) and /work/SRC/openSUSE:Factory/.python-h11.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-h11" Fri Oct 14 15:40:25 2022 rev:10 rq:1010139 version:0.14.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-h11/python-h11.changes 2022-02-18 23:02:36.353414422 +0100 +++ /work/SRC/openSUSE:Factory/.python-h11.new.2275/python-h11.changes 2022-10-14 15:40:41.959734052 +0200 @@ -1,0 +2,6 @@ +Wed Oct 12 03:33:53 UTC 2022 - Yogalakshmi Arunachalam <yarunacha...@suse.com> + +- Update to 0.14.0 + No upstream changelog + +------------------------------------------------------------------- Old: ---- h11-0.13.0.tar.gz New: ---- h11-0.14.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-h11.spec ++++++ --- /var/tmp/diff_new_pack.AqaN5v/_old 2022-10-14 15:40:42.463734893 +0200 +++ /var/tmp/diff_new_pack.AqaN5v/_new 2022-10-14 15:40:42.471734907 +0200 @@ -19,7 +19,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define skip_python2 1 Name: python-h11 -Version: 0.13.0 +Version: 0.14.0 Release: 0 Summary: A pure-Python, bring-your-own-I/O implementation of HTTP/11 License: MIT ++++++ h11-0.13.0.tar.gz -> h11-0.14.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/h11-0.13.0/PKG-INFO new/h11-0.14.0/PKG-INFO --- old/h11-0.13.0/PKG-INFO 2022-01-19 21:45:19.294474100 +0100 +++ new/h11-0.14.0/PKG-INFO 2022-09-25 17:39:41.622613200 +0200 @@ -1,12 +1,11 @@ Metadata-Version: 2.1 Name: h11 -Version: 0.13.0 +Version: 0.14.0 Summary: A pure-Python, bring-your-own-I/O implementation of HTTP/1.1 Home-page: https://github.com/python-hyper/h11 Author: Nathaniel J. Smith Author-email: n...@pobox.com License: MIT -Platform: UNKNOWN Classifier: Development Status :: 3 - Alpha Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License @@ -14,13 +13,13 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 Classifier: Topic :: Internet :: WWW/HTTP Classifier: Topic :: System :: Networking -Requires-Python: >=3.6 +Requires-Python: >=3.7 License-File: LICENSE.txt h11 @@ -137,7 +136,7 @@ It has a test suite with 100.0% coverage for both statements and branches. -Currently it supports Python 3 (testing on 3.6-3.9) and PyPy 3. +Currently it supports Python 3 (testing on 3.7-3.10) and PyPy 3. The last Python 2-compatible version was h11 0.11.x. (Originally it had a Cython wrapper for `http-parser <https://github.com/nodejs/http-parser>`_ and a beautiful nested state @@ -191,5 +190,3 @@ Contributors are requested to follow our `code of conduct <https://github.com/python-hyper/h11/blob/master/CODE_OF_CONDUCT.md>`_ in all project spaces. - - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/h11-0.13.0/README.rst new/h11-0.14.0/README.rst --- old/h11-0.13.0/README.rst 2022-01-19 21:44:16.000000000 +0100 +++ new/h11-0.14.0/README.rst 2022-09-25 17:39:04.000000000 +0200 @@ -112,7 +112,7 @@ It has a test suite with 100.0% coverage for both statements and branches. -Currently it supports Python 3 (testing on 3.6-3.9) and PyPy 3. +Currently it supports Python 3 (testing on 3.7-3.10) and PyPy 3. The last Python 2-compatible version was h11 0.11.x. (Originally it had a Cython wrapper for `http-parser <https://github.com/nodejs/http-parser>`_ and a beautiful nested state diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/h11-0.13.0/docs/source/changes.rst new/h11-0.14.0/docs/source/changes.rst --- old/h11-0.13.0/docs/source/changes.rst 2022-01-19 21:44:16.000000000 +0100 +++ new/h11-0.14.0/docs/source/changes.rst 2022-09-25 17:39:04.000000000 +0200 @@ -5,6 +5,29 @@ .. towncrier release notes start +H11 0.14.0 (2022-09-25) +----------------------- + +Features +~~~~~~~~ + +- Allow additional trailing whitespace in chunk headers for additional + compatibility with existing servers. (`#133 + <https://github.com/python-hyper/h11/issues/133>`__) +- Improve the type hints for Sentinel types, which should make it + easier to type hint h11 usage. (`#151 + <https://github.com/python-hyper/h11/pull/151>`__ & `#144 + <https://github.com/python-hyper/h11/pull/144>`__)) + +Deprecations and Removals +~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Python 3.6 support is removed. h11 now requires Python>=3.7 + including PyPy 3. Users running `pip install h11` on Python 2 will + automatically get the last Python 2-compatible version. (`#138 + <https://github.com/python-hyper/h11/issues/138>`__) + + v0.13.0 (2022-01-19) -------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/h11-0.13.0/docs/source/index.rst new/h11-0.14.0/docs/source/index.rst --- old/h11-0.13.0/docs/source/index.rst 2022-01-19 21:44:16.000000000 +0100 +++ new/h11-0.14.0/docs/source/index.rst 2022-09-25 17:39:04.000000000 +0200 @@ -44,7 +44,7 @@ Vital statistics ---------------- -* Requirements: Python 3.6+ (PyPy works great) +* Requirements: Python 3.7+ (PyPy works great) The last Python 2-compatible version was h11 0.11.x. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/h11-0.13.0/h11/_abnf.py new/h11-0.14.0/h11/_abnf.py --- old/h11-0.13.0/h11/_abnf.py 2020-08-13 11:49:16.000000000 +0200 +++ new/h11-0.14.0/h11/_abnf.py 2022-09-25 17:39:04.000000000 +0200 @@ -125,5 +125,8 @@ chunk_header = ( r"(?P<chunk_size>{chunk_size})" r"(?P<chunk_ext>{chunk_ext})?" - r"\r\n".format(**globals()) + r"{OWS}\r\n".format( + **globals() + ) # Even though the specification does not allow for extra whitespaces, + # we are lenient with trailing whitespaces because some servers on the wild use it. ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/h11-0.13.0/h11/_connection.py new/h11-0.14.0/h11/_connection.py --- old/h11-0.13.0/h11/_connection.py 2022-01-19 21:44:16.000000000 +0100 +++ new/h11-0.14.0/h11/_connection.py 2022-09-25 17:39:04.000000000 +0200 @@ -323,7 +323,7 @@ else: # General case: the io_dict just has the appropriate reader/writer # for this state - return io_dict.get((role, state)) # type: ignore + return io_dict.get((role, state)) # type: ignore[return-value] # This must be called after any action that might have caused # self._cstate.states to change. @@ -395,7 +395,9 @@ else: self._receive_buffer_closed = True - def _extract_next_receive_event(self) -> Union[Event, Type[Sentinel]]: + def _extract_next_receive_event( + self, + ) -> Union[Event, Type[NEED_DATA], Type[PAUSED]]: state = self.their_state # We don't pause immediately when they enter DONE, because even in # DONE state we can still process a ConnectionClosed() event. But @@ -421,7 +423,7 @@ event = NEED_DATA return event # type: ignore[no-any-return] - def next_event(self) -> Union[Event, Type[Sentinel]]: + def next_event(self) -> Union[Event, Type[NEED_DATA], Type[PAUSED]]: """Parse the next event out of our receive buffer, update our internal state, and return it. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/h11-0.13.0/h11/_headers.py new/h11-0.14.0/h11/_headers.py --- old/h11-0.13.0/h11/_headers.py 2022-01-19 21:44:16.000000000 +0100 +++ new/h11-0.14.0/h11/_headers.py 2022-09-25 17:39:04.000000000 +0200 @@ -67,7 +67,7 @@ # # Maybe a dict-of-lists would be better? -_content_length_re = re.compile(br"[0-9]+") +_content_length_re = re.compile(rb"[0-9]+") _field_name_re = re.compile(field_name.encode("ascii")) _field_value_re = re.compile(field_value.encode("ascii")) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/h11-0.13.0/h11/_readers.py new/h11-0.14.0/h11/_readers.py --- old/h11-0.13.0/h11/_readers.py 2022-01-19 21:44:16.000000000 +0100 +++ new/h11-0.14.0/h11/_readers.py 2022-09-25 17:39:04.000000000 +0200 @@ -37,10 +37,7 @@ __all__ = ["READERS"] header_field_re = re.compile(header_field.encode("ascii")) - -# Remember that this has to run in O(n) time -- so e.g. the bytearray cast is -# critical. -obs_fold_re = re.compile(br"[ \t]+") +obs_fold_re = re.compile(rb"[ \t]+") def _obsolete_line_fold(lines: Iterable[bytes]) -> Iterable[bytes]: @@ -52,6 +49,7 @@ if last is None: raise LocalProtocolError("continuation line at start of headers") if not isinstance(last, bytearray): + # Cast to a mutable type, avoiding copy on append to ensure O(n) time last = bytearray(last) last += b" " last += line[match.end() :] @@ -227,7 +225,7 @@ ReadersType = Dict[ - Union[Sentinel, Tuple[Sentinel, Sentinel]], + Union[Type[Sentinel], Tuple[Type[Sentinel], Type[Sentinel]]], Union[Callable[..., Any], Dict[str, Callable[..., Any]]], ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/h11-0.13.0/h11/_state.py new/h11-0.14.0/h11/_state.py --- old/h11-0.13.0/h11/_state.py 2022-01-19 21:44:16.000000000 +0100 +++ new/h11-0.14.0/h11/_state.py 2022-09-25 17:39:04.000000000 +0200 @@ -226,9 +226,13 @@ }, } +StateTransitionType = Dict[ + Tuple[Type[Sentinel], Type[Sentinel]], Dict[Type[Sentinel], Type[Sentinel]] +] + # NB: there are also some special-case state-triggered transitions hard-coded # into _fire_state_triggered_transitions below. -STATE_TRIGGERED_TRANSITIONS = { +STATE_TRIGGERED_TRANSITIONS: StateTransitionType = { # (Client state, Server state) -> new states # Protocol negotiation (MIGHT_SWITCH_PROTOCOL, SWITCHED_PROTOCOL): {CLIENT: SWITCHED_PROTOCOL}, @@ -345,7 +349,7 @@ # Tabular state-triggered transitions joint_state = (self.states[CLIENT], self.states[SERVER]) changes = STATE_TRIGGERED_TRANSITIONS.get(joint_state, {}) - self.states.update(changes) # type: ignore + self.states.update(changes) if self.states == start_states: # Fixed point reached diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/h11-0.13.0/h11/_version.py new/h11-0.14.0/h11/_version.py --- old/h11-0.13.0/h11/_version.py 2022-01-19 21:44:34.000000000 +0100 +++ new/h11-0.14.0/h11/_version.py 2022-09-25 17:39:06.000000000 +0200 @@ -13,4 +13,4 @@ # want. (Contrast with the special suffix 1.0.0.dev, which sorts *before* # 1.0.0.) -__version__ = "0.13.0" +__version__ = "0.14.0" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/h11-0.13.0/h11/_writers.py new/h11-0.14.0/h11/_writers.py --- old/h11-0.13.0/h11/_writers.py 2022-01-19 21:44:16.000000000 +0100 +++ new/h11-0.14.0/h11/_writers.py 2022-09-25 17:39:04.000000000 +0200 @@ -125,7 +125,7 @@ WritersType = Dict[ - Union[Tuple[Sentinel, Sentinel], Sentinel], + Union[Tuple[Type[Sentinel], Type[Sentinel]], Type[Sentinel]], Union[ Dict[str, Type[BodyWriter]], Callable[[Union[InformationalResponse, Response], Writer], None], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/h11-0.13.0/h11/tests/test_io.py new/h11-0.14.0/h11/tests/test_io.py --- old/h11-0.13.0/h11/tests/test_io.py 2022-01-19 21:44:16.000000000 +0100 +++ new/h11-0.14.0/h11/tests/test_io.py 2022-09-25 17:39:04.000000000 +0200 @@ -455,6 +455,12 @@ [Data(data=b"xxxxx"), EndOfMessage()], ) + t_body_reader( + ChunkedReader, + b"5 \r\n01234\r\n" + b"0\r\n\r\n", + [Data(data=b"01234"), EndOfMessage()], + ) + def test_ContentLengthWriter() -> None: w = ContentLengthWriter(5) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/h11-0.13.0/h11/tests/test_util.py new/h11-0.14.0/h11/tests/test_util.py --- old/h11-0.13.0/h11/tests/test_util.py 2022-01-19 21:44:16.000000000 +0100 +++ new/h11-0.14.0/h11/tests/test_util.py 2022-09-25 17:39:04.000000000 +0200 @@ -51,7 +51,7 @@ def test_validate() -> None: - my_re = re.compile(br"(?P<group1>[0-9]+)\.(?P<group2>[0-9]+)") + my_re = re.compile(rb"(?P<group1>[0-9]+)\.(?P<group2>[0-9]+)") with pytest.raises(LocalProtocolError): validate(my_re, b"0.") @@ -66,7 +66,7 @@ def test_validate_formatting() -> None: - my_re = re.compile(br"foo") + my_re = re.compile(rb"foo") with pytest.raises(LocalProtocolError) as excinfo: validate(my_re, b"", "oops") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/h11-0.13.0/h11.egg-info/PKG-INFO new/h11-0.14.0/h11.egg-info/PKG-INFO --- old/h11-0.13.0/h11.egg-info/PKG-INFO 2022-01-19 21:45:19.000000000 +0100 +++ new/h11-0.14.0/h11.egg-info/PKG-INFO 2022-09-25 17:39:40.000000000 +0200 @@ -1,12 +1,11 @@ Metadata-Version: 2.1 Name: h11 -Version: 0.13.0 +Version: 0.14.0 Summary: A pure-Python, bring-your-own-I/O implementation of HTTP/1.1 Home-page: https://github.com/python-hyper/h11 Author: Nathaniel J. Smith Author-email: n...@pobox.com License: MIT -Platform: UNKNOWN Classifier: Development Status :: 3 - Alpha Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License @@ -14,13 +13,13 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 Classifier: Topic :: Internet :: WWW/HTTP Classifier: Topic :: System :: Networking -Requires-Python: >=3.6 +Requires-Python: >=3.7 License-File: LICENSE.txt h11 @@ -137,7 +136,7 @@ It has a test suite with 100.0% coverage for both statements and branches. -Currently it supports Python 3 (testing on 3.6-3.9) and PyPy 3. +Currently it supports Python 3 (testing on 3.7-3.10) and PyPy 3. The last Python 2-compatible version was h11 0.11.x. (Originally it had a Cython wrapper for `http-parser <https://github.com/nodejs/http-parser>`_ and a beautiful nested state @@ -191,5 +190,3 @@ Contributors are requested to follow our `code of conduct <https://github.com/python-hyper/h11/blob/master/CODE_OF_CONDUCT.md>`_ in all project spaces. - - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/h11-0.13.0/h11.egg-info/requires.txt new/h11-0.14.0/h11.egg-info/requires.txt --- old/h11-0.13.0/h11.egg-info/requires.txt 2022-01-19 21:45:19.000000000 +0100 +++ new/h11-0.14.0/h11.egg-info/requires.txt 2022-09-25 17:39:40.000000000 +0200 @@ -1,6 +1,3 @@ -[:python_version < "3.7"] -dataclasses - [:python_version < "3.8"] typing_extensions diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/h11-0.13.0/setup.py new/h11-0.14.0/setup.py --- old/h11-0.13.0/setup.py 2022-01-19 21:44:16.000000000 +0100 +++ new/h11-0.14.0/setup.py 2022-09-25 17:39:04.000000000 +0200 @@ -18,9 +18,8 @@ # This means, just install *everything* you see under h11/, even if it # doesn't look like a source file, so long as it appears in MANIFEST.in: include_package_data=True, - python_requires=">=3.6", + python_requires=">=3.7", install_requires=[ - "dataclasses; python_version < '3.7'", "typing_extensions; python_version < '3.8'", ], classifiers=[ @@ -31,10 +30,10 @@ "Programming Language :: Python :: Implementation :: PyPy", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", "Topic :: Internet :: WWW/HTTP", "Topic :: System :: Networking", ],