Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-wsproto for openSUSE:Factory 
checked in at 2022-02-22 21:17:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-wsproto (Old)
 and      /work/SRC/openSUSE:Factory/.python-wsproto.new.1958 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-wsproto"

Tue Feb 22 21:17:49 2022 rev:11 rq:956466 version:1.0.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-wsproto/python-wsproto.changes    
2022-02-18 23:03:08.153411938 +0100
+++ /work/SRC/openSUSE:Factory/.python-wsproto.new.1958/python-wsproto.changes  
2022-02-22 21:18:07.866285566 +0100
@@ -1,0 +2,6 @@
+Mon Feb 21 12:08:49 UTC 2022 - Dirk M??ller <dmuel...@suse.com>
+
+- add 170.patch to improve python 3.10 compatibility
+- reenable tests 
+
+-------------------------------------------------------------------

New:
----
  170.patch

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

Other differences:
------------------
++++++ python-wsproto.spec ++++++
--- /var/tmp/diff_new_pack.NNAhfD/_old  2022-02-22 21:18:08.402285665 +0100
+++ /var/tmp/diff_new_pack.NNAhfD/_new  2022-02-22 21:18:08.406285667 +0100
@@ -26,6 +26,8 @@
 Group:          Development/Languages/Python
 URL:            https://pypi.python.org/pypi/wsproto
 Source:         
https://files.pythonhosted.org/packages/source/w/wsproto/wsproto-%{version}.tar.gz
+# subset of https://github.com/python-hyper/wsproto/pull/170
+Patch1:         170.patch
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
@@ -59,7 +61,7 @@
 <https://tools.ietf.org/html/rfc7692> are fully supported.
 
 %prep
-%setup -q -n wsproto-%{version}
+%autosetup -p1 -n wsproto-%{version}
 
 %build
 %python_build
@@ -69,8 +71,7 @@
 %python_expand %fdupes %{buildroot}%{$python_sitelib}
 
 %check
-# https://github.com/python-hyper/wsproto/issues/169
-%pytest -k 'not (test_handshake or test_handshake_extra_headers)'
+%pytest
 
 %files %{python_files}
 %doc README.rst

++++++ 170.patch ++++++
>From 3e7888e59f239f66766904c6d8303ad04d8ff1a6 Mon Sep 17 00:00:00 2001
From: pgjones <philip.graham.jo...@googlemail.com>
Date: Fri, 18 Feb 2022 13:32:42 +0000
Subject: [PATCH 1/5] Fix incompatibility in tests with the latest h11

The latest h11 events are frozen dataclasses and hence the headers
can't be overwritten.
---
 test/test_server.py | 32 +++++++++++++-------------------
 1 file changed, 13 insertions(+), 19 deletions(-)

Index: wsproto-1.0.0/test/test_server.py
===================================================================
--- wsproto-1.0.0.orig/test/test_server.py
+++ wsproto-1.0.0/test/test_server.py
@@ -5,13 +5,7 @@ import pytest
 
 from wsproto import WSConnection
 from wsproto.connection import SERVER
-from wsproto.events import (
-    AcceptConnection,
-    Event,
-    RejectConnection,
-    RejectData,
-    Request,
-)
+from wsproto.events import AcceptConnection, RejectConnection, RejectData, 
Request
 from wsproto.extensions import Extension
 from wsproto.typing import Headers
 from wsproto.utilities import (
@@ -199,36 +193,30 @@ def _make_handshake(
         )
     )
     event = client.next_event()
-    return event, nonce
+    return cast(h11.InformationalResponse, event), nonce
 
 
 def test_handshake() -> None:
     response, nonce = _make_handshake([])
 
-    response.headers = sorted(response.headers)  # For test determinism
-    assert response == h11.InformationalResponse(
-        status_code=101,
-        headers=[
-            (b"connection", b"Upgrade"),
-            (b"sec-websocket-accept", generate_accept_token(nonce)),
-            (b"upgrade", b"WebSocket"),
-        ],
-    )
+    assert response.status_code == 101
+    assert sorted(response.headers) == [
+        (b"connection", b"Upgrade"),
+        (b"sec-websocket-accept", generate_accept_token(nonce)),
+        (b"upgrade", b"WebSocket"),
+    ]
 
 
 def test_handshake_extra_headers() -> None:
     response, nonce = _make_handshake([], accept_headers=[(b"X-Foo", b"bar")])
 
-    response.headers = sorted(response.headers)  # For test determinism
-    assert response == h11.InformationalResponse(
-        status_code=101,
-        headers=[
-            (b"connection", b"Upgrade"),
-            (b"sec-websocket-accept", generate_accept_token(nonce)),
-            (b"upgrade", b"WebSocket"),
-            (b"x-foo", b"bar"),
-        ],
-    )
+    assert response.status_code == 101
+    assert sorted(response.headers) == [
+        (b"connection", b"Upgrade"),
+        (b"sec-websocket-accept", generate_accept_token(nonce)),
+        (b"upgrade", b"WebSocket"),
+        (b"x-foo", b"bar"),
+    ]
 
 
 @pytest.mark.parametrize("accept_subprotocol", ["one", "two"])
@@ -298,7 +286,7 @@ def test_protocol_error() -> None:
 
 def _make_handshake_rejection(
     status_code: int, body: Optional[bytes] = None
-) -> List[Event]:
+) -> List[h11.Event]:
     client = h11.Connection(h11.CLIENT)
     server = WSConnection(SERVER)
     nonce = generate_nonce()
@@ -333,7 +321,7 @@ def _make_handshake_rejection(
     events = []
     while True:
         event = client.next_event()
-        events.append(event)
+        events.append(cast(h11.Event, event))
         if isinstance(event, h11.EndOfMessage):
             return events
 
Index: wsproto-1.0.0/src/wsproto/handshake.py
===================================================================
--- wsproto-1.0.0.orig/src/wsproto/handshake.py
+++ wsproto-1.0.0/src/wsproto/handshake.py
@@ -119,7 +119,7 @@ class H11Handshake:
 
         :param bytes data: Data received from the WebSocket peer.
         """
-        self._h11_connection.receive_data(data)
+        self._h11_connection.receive_data(data or b"")
         while True:
             try:
                 event = self._h11_connection.next_event()
@@ -141,7 +141,7 @@ class H11Handshake:
                     else:
                         self._events.append(
                             RejectConnection(
-                                headers=event.headers,
+                                headers=list(event.headers),
                                 status_code=event.status_code,
                                 has_body=False,
                             )
@@ -151,7 +151,7 @@ class H11Handshake:
                     self._state = ConnectionState.REJECTING
                     self._events.append(
                         RejectConnection(
-                            headers=event.headers,
+                            headers=list(event.headers),
                             status_code=event.status_code,
                             has_body=True,
                         )
@@ -387,7 +387,7 @@ class H11Handshake:
                 accept = value
                 continue  # Skip appending to headers
             elif name == b"sec-websocket-protocol":
-                subprotocol = value
+                subprotocol = value.decode("ascii")
                 continue  # Skip appending to headers
             elif name == b"upgrade":
                 upgrade = value
@@ -408,7 +408,6 @@ class H11Handshake:
         if accept != accept_token:
             raise RemoteProtocolError("Bad accept token", 
event_hint=RejectConnection())
         if subprotocol is not None:
-            subprotocol = subprotocol.decode("ascii")
             if subprotocol not in self._initiating_request.subprotocols:
                 raise RemoteProtocolError(
                     f"unrecognized subprotocol {subprotocol}",
Index: wsproto-1.0.0/src/wsproto/utilities.py
===================================================================
--- wsproto-1.0.0.orig/src/wsproto/utilities.py
+++ wsproto-1.0.0/src/wsproto/utilities.py
@@ -7,7 +7,9 @@ Utility functions that do not belong in
 import base64
 import hashlib
 import os
-from typing import Dict, List, Optional
+from typing import Dict, List, Optional, Union
+
+from h11._headers import Headers as H11Headers
 
 from .events import Event
 from .typing import Headers
@@ -51,7 +53,7 @@ class RemoteProtocolError(ProtocolError)
 
 
 # Some convenience utilities for working with HTTP headers
-def normed_header_dict(h11_headers: Headers) -> Dict[bytes, bytes]:
+def normed_header_dict(h11_headers: Union[Headers, H11Headers]) -> Dict[bytes, 
bytes]:
     # This mangles Set-Cookie headers. But it happens that we don't care about
     # any of those, so it's OK. For every other HTTP header, if there are
     # multiple instances then you're allowed to join them together with
Index: wsproto-1.0.0/test/test_client.py
===================================================================
--- wsproto-1.0.0.orig/test/test_client.py
+++ wsproto-1.0.0/test/test_client.py
@@ -1,4 +1,4 @@
-from typing import List, Optional
+from typing import cast, List, Optional
 
 import h11
 import pytest
@@ -27,7 +27,7 @@ def _make_connection_request(request: Re
     client = WSConnection(CLIENT)
     server = h11.Connection(h11.SERVER)
     server.receive_data(client.send(request))
-    return server.next_event()
+    return cast(h11.Request, server.next_event())
 
 
 def test_connection_request() -> None:
@@ -114,7 +114,7 @@ def test_connection_send_state() -> None
             )
         )
     )
-    headers = normed_header_dict(server.next_event().headers)
+    headers = normed_header_dict(cast(h11.Request, 
server.next_event()).headers)
     response = h11.InformationalResponse(
         status_code=101,
         headers=[
@@ -158,7 +158,7 @@ def _make_handshake(
             )
         )
     )
-    request = server.next_event()
+    request = cast(h11.Request, server.next_event())
     if auto_accept_key:
         full_request_headers = normed_header_dict(request.headers)
         response_headers.append(

Reply via email to