diff mbox series

[meta-python,22/24] python3-txws: drop the six dependency

Message ID 20260921115500.53770-22-f_l_k@t-online.de
State Under Review
Headers show
Series [meta-python,01/24] nvmetcli: drop the six dependency | expand

Commit Message

Markus Volk Sept. 21, 2026, 11:54 a.m. UTC
Patch txWS to use bytes literals, str and bytes instead of six.b and the
six type aliases, and remove the six.PY2 ord() fixups since indexing a
bytes object already yields an int.

Built for intel-corei7-64.

AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
---
 .../0001-drop-the-six-dependency.patch        | 191 ++++++++++++++++++
 .../python-txws/python3-txws_0.9.1.bb         |   4 +-
 2 files changed, 193 insertions(+), 2 deletions(-)
 create mode 100644 meta-python/recipes-connectivity/python-txws/python3-txws/0001-drop-the-six-dependency.patch
diff mbox series

Patch

diff --git a/meta-python/recipes-connectivity/python-txws/python3-txws/0001-drop-the-six-dependency.patch b/meta-python/recipes-connectivity/python-txws/python3-txws/0001-drop-the-six-dependency.patch
new file mode 100644
index 0000000000..8718d28b02
--- /dev/null
+++ b/meta-python/recipes-connectivity/python-txws/python3-txws/0001-drop-the-six-dependency.patch
@@ -0,0 +1,191 @@ 
+From 9f33d0d87503cd6215e92b204f7d89d7caac82c2 Mon Sep 17 00:00:00 2001
+From: Markus Volk <f_l_k@t-online.de>
+Date: Mon, 21 Sep 2026 13:25:17 +0200
+Subject: [PATCH] drop the six dependency
+
+six is a Python 2 compatibility shim and txWS does not need it on
+Python 3: six.b is a bytes literal or a latin-1 encode, text_type,
+binary_type and string_types are str and bytes, and indexing a bytes
+object already yields an int so the six.PY2 ord() fixups can go.
+
+Upstream-Status: Pending
+
+AI-Generated: Uses Claude Code (Claude Opus 5)
+---
+ setup.py | 2 +-
+ txws.py  | 40 ++++++++++++++++------------------------
+ 2 files changed, 17 insertions(+), 25 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index e4b3372..1564f1f 100755
+--- a/setup.py
++++ b/setup.py
+@@ -5,7 +5,7 @@ from setuptools import setup
+ setup(
+     name="txWS",
+     py_modules=["txws"],
+-    setup_requires=["vcversioner", "six"],
++    setup_requires=["vcversioner"],
+     vcversioner={},
+     author="Corbin Simpson",
+     author_email="simpsoco@osuosl.org",
+diff --git a/txws.py b/txws.py
+index 7de92a4..1da7cba 100644
+--- a/txws.py
++++ b/txws.py
+@@ -27,8 +27,6 @@ from __future__ import division
+ 
+ __version__ = "0.7.1"
+ 
+-import six
+-
+ import array
+ 
+ from base64 import b64encode, b64decode
+@@ -139,7 +137,7 @@ def complete_hybi00(headers, challenge):
+     first = int("".join(i for i in key1 if i in digits)) // key1.count(" ")
+     second = int("".join(i for i in key2 if i in digits)) // key2.count(" ")
+ 
+-    nonce = pack(">II8s", first, second, six.b(challenge))
++    nonce = pack(">II8s", first, second, challenge.encode("latin-1"))
+ 
+     return md5(nonce).digest()
+ 
+@@ -169,10 +167,10 @@ def make_hybi00_frame(buf):
+     and valid text without any 0xff bytes.
+     """
+ 
+-    if isinstance(buf, six.text_type):
++    if isinstance(buf, str):
+         buf = buf.encode('utf-8')
+ 
+-    return six.b("\x00") + buf + six.b("\xff")
++    return b"\x00" + buf + b"\xff"
+ 
+ def parse_hybi00_frames(buf):
+     """
+@@ -182,12 +180,12 @@ def parse_hybi00_frames(buf):
+     and will actively ignore it.
+     """
+ 
+-    start = buf.find(six.b("\x00"))
++    start = buf.find(b"\x00")
+     tail = 0
+     frames = []
+ 
+     while start != -1:
+-        end = buf.find(six.b("\xff"), start + 1)
++        end = buf.find(b"\xff", start + 1)
+         if end == -1:
+             # Incomplete frame, try again later.
+             break
+@@ -196,7 +194,7 @@ def parse_hybi00_frames(buf):
+             frame = buf[start + 1:end]
+             frames.append((NORMAL, frame))
+             tail = end + 1
+-        start = buf.find(six.b("\x00"), end + 1)
++        start = buf.find(b"\x00", end + 1)
+ 
+     # Adjust the buffer and return.
+     buf = buf[tail:]
+@@ -231,12 +229,12 @@ def make_hybi07_frame(buf, opcode=0x1):
+     else:
+         length = chr(len(buf))
+ 
+-    if isinstance(buf, six.text_type):
++    if isinstance(buf, str):
+         buf = buf.encode('utf-8')
+ 
+     # Always make a normal packet.
+     header = chr(0x80 | opcode)
+-    return six.b(header + length) + buf
++    return (header + length).encode("latin-1") + buf
+ 
+ def make_hybi07_frame_dwim(buf):
+     """
+@@ -244,9 +242,9 @@ def make_hybi07_frame_dwim(buf):
+     """
+ 
+     # TODO: eliminate magic numbers.
+-    if isinstance(buf, six.binary_type):
++    if isinstance(buf, bytes):
+         return make_hybi07_frame(buf, opcode=0x2)
+-    elif isinstance(buf, six.text_type):
++    elif isinstance(buf, str):
+         return make_hybi07_frame(buf.encode("utf-8"), opcode=0x1)
+     else:
+         raise TypeError("In binary support mode, frame data must be either str or unicode")
+@@ -268,9 +266,6 @@ def parse_hybi07_frames(buf):
+         # about, and an opcode which nobody cares about.
+         header = buf[start]
+ 
+-        if six.PY2:
+-            header = ord(header)
+-
+         if header & 0x70:
+             # At least one of the reserved flags is set. Pork chop sandwiches!
+             raise WSException("Reserved flag in HyBi-07 frame (%d)" % header)
+@@ -289,9 +284,6 @@ def parse_hybi07_frames(buf):
+         # extra length.
+         length = buf[start + 1]
+ 
+-        if six.PY2:
+-            length = ord(length)
+-
+         masked = length & 0x80
+         length &= 0x7f
+ 
+@@ -342,7 +334,7 @@ def parse_hybi07_frames(buf):
+                 data = unpack(">H", data[:2])[0], data[2:]
+             else:
+                 # No reason given; use generic data.
+-                data = 1000, six.b("No reason given")
++                data = 1000, b"No reason given"
+ 
+         frames.append((opcode, data))
+         start += offset + length
+@@ -355,7 +347,7 @@ class WebSocketProtocol(ProtocolWrapper):
+     layer.
+     """
+ 
+-    buf = six.b("")
++    buf = b""
+     codec = None
+     location = "/"
+     host = "example.com"
+@@ -385,7 +377,7 @@ class WebSocketProtocol(ProtocolWrapper):
+         return ISSLTransport(self.transport, None) is not None
+ 
+     def writeEncoded(self, data):
+-        if isinstance(data, six.text_type):
++        if isinstance(data, str):
+             data = data.encode('utf-8')
+         self.transport.write(data)
+ 
+@@ -528,7 +520,7 @@ class WebSocketProtocol(ProtocolWrapper):
+         elif "Sec-WebSocket-Protocol" in self.headers:
+             protocols = self.headers["Sec-WebSocket-Protocol"]
+ 
+-        if isinstance(protocols, six.string_types):
++        if isinstance(protocols, str):
+             protocols = [p.strip() for p in protocols.split(',')]
+ 
+             for protocol in protocols:
+@@ -587,7 +579,7 @@ class WebSocketProtocol(ProtocolWrapper):
+             # These lines look like:
+             # GET /some/path/to/a/websocket/resource HTTP/1.1
+             if self.state == REQUEST:
+-                separator = six.b("\r\n")
++                separator = b"\r\n"
+                 if separator in self.buf:
+                     request, chaff, self.buf = self.buf.partition(separator)
+                     request = request.decode('utf-8')
+@@ -601,7 +593,7 @@ class WebSocketProtocol(ProtocolWrapper):
+ 
+             elif self.state == NEGOTIATING:
+                 # Check to see if we've got a complete set of headers yet.
+-                separator = six.b("\r\n\r\n")
++                separator = b"\r\n\r\n"
+                 if separator in self.buf:
+                     head, chaff, self.buf = self.buf.partition(separator)
+                     head = head.decode('utf-8')
diff --git a/meta-python/recipes-connectivity/python-txws/python3-txws_0.9.1.bb b/meta-python/recipes-connectivity/python-txws/python3-txws_0.9.1.bb
index 9299539cef..11ce8610fd 100644
--- a/meta-python/recipes-connectivity/python-txws/python3-txws_0.9.1.bb
+++ b/meta-python/recipes-connectivity/python-txws/python3-txws_0.9.1.bb
@@ -4,10 +4,9 @@  HOMEPAGE = "https://github.com/MostAwesomeDude/txWS"
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=76699830db7fa9e897f6a1ad05f98ec8"
 
-DEPENDS = "python3-twisted python3-six python3-vcversioner python3-six-native python3-vcversioner-native"
+DEPENDS = "python3-twisted python3-vcversioner python3-vcversioner-native"
 
 RDEPENDS:${PN} += " \
-    python3-six \
     python3-twisted \
 "
 
@@ -15,4 +14,5 @@  inherit setuptools3 pypi
 
 PYPI_PACKAGE = "txWS"
 
+SRC_URI += "file://0001-drop-the-six-dependency.patch"
 SRC_URI[sha256sum] = "cb93086095d04a5d70f53a75053f7df478ff37e972c3637fb55ca4a9e6b94679"