From 1f2579ec4ad0bba0e2e19dfe4eca174d4b17798a Mon Sep 17 00:00:00 2001 From: Nikolay Kim Date: Wed, 18 Mar 2026 19:33:59 +0100 Subject: [PATCH 1/7] Add Described mixin type --- .../azure/eventhub/_pyamqp/_decode.py | 44 ++++++++++++++++++- .../azure/eventhub/_pyamqp/described.py | 23 ++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py index afe58f311a0c..757b41f07e3a 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py @@ -22,6 +22,7 @@ from typing_extensions import Literal +import .described from .message import Message, Header, Properties if TYPE_CHECKING: @@ -280,7 +281,9 @@ def _decode_described(buffer: memoryview) -> Tuple[memoryview, object]: # descriptor without decoding descriptor value composite_type = buffer[0] buffer, descriptor = _DECODE_BY_CONSTRUCTOR[composite_type](buffer[1:]) - buffer, value = _DECODE_BY_CONSTRUCTOR[buffer[0]](buffer[1:]) + tp = buffer[0] + buffer, value = _DECODE_BY_CONSTRUCTOR[tp](buffer[1:]) + value = _DESCR_BY_CONSTRUCTOR[tp](value, descriptor) try: composite_type = cast(int, _COMPOSITES[descriptor]) return buffer, {composite_type: value} @@ -394,3 +397,42 @@ def decode_empty_frame(header: memoryview) -> Tuple[int, bytes]: _DECODE_BY_CONSTRUCTOR[209] = _decode_map_large _DECODE_BY_CONSTRUCTOR[224] = _decode_array_small _DECODE_BY_CONSTRUCTOR[240] = _decode_array_large + +_DESCR_BY_CONSTRUCTOR: List[Callable] = cast(List[Callable], [None] * 256) +_DESCR_BY_CONSTRUCTOR[0] = _decode_described +_DESCR_BY_CONSTRUCTOR[64] = _decode_null +_DESCR_BY_CONSTRUCTOR[65] = _decode_true +_DESCR_BY_CONSTRUCTOR[66] = _decode_false +_DESCR_BY_CONSTRUCTOR[67] = _decode_zero +_DESCR_BY_CONSTRUCTOR[68] = _decode_zero +_DESCR_BY_CONSTRUCTOR[69] = _decode_empty +_DESCR_BY_CONSTRUCTOR[80] = _decode_ubyte +_DESCR_BY_CONSTRUCTOR[81] = _decode_byte +_DESCR_BY_CONSTRUCTOR[82] = _decode_uint_small +_DESCR_BY_CONSTRUCTOR[83] = _decode_ulong_small +_DESCR_BY_CONSTRUCTOR[84] = _decode_int_small +_DESCR_BY_CONSTRUCTOR[85] = _decode_long_small +_DESCR_BY_CONSTRUCTOR[86] = _decode_boolean +_DESCR_BY_CONSTRUCTOR[96] = _decode_ushort +_DESCR_BY_CONSTRUCTOR[97] = _decode_short +_DESCR_BY_CONSTRUCTOR[112] = _decode_uint_large +_DESCR_BY_CONSTRUCTOR[113] = _decode_int_large +_DESCR_BY_CONSTRUCTOR[114] = _decode_float +_DESCR_BY_CONSTRUCTOR[128] = _decode_ulong_large +_DESCR_BY_CONSTRUCTOR[129] = _decode_long_large +_DESCR_BY_CONSTRUCTOR[130] = _decode_double +_DESCR_BY_CONSTRUCTOR[131] = _decode_timestamp +_DESCR_BY_CONSTRUCTOR[148] = _decode_decimal128 +_DESCR_BY_CONSTRUCTOR[152] = _decode_uuid +_DESCR_BY_CONSTRUCTOR[160] = described.DescribedBytes +_DESCR_BY_CONSTRUCTOR[161] = described.DescribedStr +_DESCR_BY_CONSTRUCTOR[163] = described.DescribedStr +_DESCR_BY_CONSTRUCTOR[176] = described.DescribedBytes +_DESCR_BY_CONSTRUCTOR[177] = described.DescribedStr +_DESCR_BY_CONSTRUCTOR[179] = described.DescribedStr +_DESCR_BY_CONSTRUCTOR[192] = described.DescribedList +_DESCR_BY_CONSTRUCTOR[193] = _decode_map_small +_DESCR_BY_CONSTRUCTOR[208] = described.DescribedList +_DESCR_BY_CONSTRUCTOR[209] = _decode_map_large +_DESCR_BY_CONSTRUCTOR[224] = described.DescribedList +_DESCR_BY_CONSTRUCTOR[240] = described.DescribedList diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py new file mode 100644 index 000000000000..c7962cd2feab --- /dev/null +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py @@ -0,0 +1,23 @@ +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +class Described: + def __new__(cls, value, descriptor=None): + obj = super().__new__(cls, value) + obj.descriptor = descriptor + return obj + + +class DescribedStr(Described, str): + pass + + +class DescribedBytes(Described, bytes): + pass + + +class DescribedList(Described, list): + pass From 4fa14376ec7a04e7661ff22986547f73a14fa7bc Mon Sep 17 00:00:00 2001 From: Nikolay Kim Date: Wed, 18 Mar 2026 20:01:26 +0100 Subject: [PATCH 2/7] wip --- .../azure/eventhub/_pyamqp/_decode.py | 18 ++++++++---------- .../azure/eventhub/_pyamqp/described.py | 12 ++++++++++++ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py index 757b41f07e3a..7587bfaebb36 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py @@ -22,7 +22,7 @@ from typing_extensions import Literal -import .described +from . import described from .message import Message, Header, Properties if TYPE_CHECKING: @@ -399,13 +399,11 @@ def decode_empty_frame(header: memoryview) -> Tuple[int, bytes]: _DECODE_BY_CONSTRUCTOR[240] = _decode_array_large _DESCR_BY_CONSTRUCTOR: List[Callable] = cast(List[Callable], [None] * 256) -_DESCR_BY_CONSTRUCTOR[0] = _decode_described -_DESCR_BY_CONSTRUCTOR[64] = _decode_null -_DESCR_BY_CONSTRUCTOR[65] = _decode_true -_DESCR_BY_CONSTRUCTOR[66] = _decode_false -_DESCR_BY_CONSTRUCTOR[67] = _decode_zero -_DESCR_BY_CONSTRUCTOR[68] = _decode_zero -_DESCR_BY_CONSTRUCTOR[69] = _decode_empty +_DESCR_BY_CONSTRUCTOR[65] = described.DescribedBool +_DESCR_BY_CONSTRUCTOR[66] = described.DescribedBool +_DESCR_BY_CONSTRUCTOR[67] = described.DescribedInt +_DESCR_BY_CONSTRUCTOR[68] = described.DescribedInt +_DESCR_BY_CONSTRUCTOR[69] = described.DescribedList _DESCR_BY_CONSTRUCTOR[80] = _decode_ubyte _DESCR_BY_CONSTRUCTOR[81] = _decode_byte _DESCR_BY_CONSTRUCTOR[82] = _decode_uint_small @@ -431,8 +429,8 @@ def decode_empty_frame(header: memoryview) -> Tuple[int, bytes]: _DESCR_BY_CONSTRUCTOR[177] = described.DescribedStr _DESCR_BY_CONSTRUCTOR[179] = described.DescribedStr _DESCR_BY_CONSTRUCTOR[192] = described.DescribedList -_DESCR_BY_CONSTRUCTOR[193] = _decode_map_small +_DESCR_BY_CONSTRUCTOR[193] = described.DescribedDict _DESCR_BY_CONSTRUCTOR[208] = described.DescribedList -_DESCR_BY_CONSTRUCTOR[209] = _decode_map_large +_DESCR_BY_CONSTRUCTOR[209] = described.DescribedDict _DESCR_BY_CONSTRUCTOR[224] = described.DescribedList _DESCR_BY_CONSTRUCTOR[240] = described.DescribedList diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py index c7962cd2feab..0d5e206e54f5 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py @@ -11,6 +11,14 @@ def __new__(cls, value, descriptor=None): return obj +class DescribedBool(Described, bool): + pass + + +class DescribedInt(Described, int): + pass + + class DescribedStr(Described, str): pass @@ -21,3 +29,7 @@ class DescribedBytes(Described, bytes): class DescribedList(Described, list): pass + + +class DescribedDict(Described, dict): + pass From 0d451baa137d463b54777b55fd5f566953d12b6d Mon Sep 17 00:00:00 2001 From: Nikolay Kim Date: Wed, 18 Mar 2026 20:37:29 +0100 Subject: [PATCH 3/7] wip --- .../azure/eventhub/_pyamqp/_decode.py | 119 +++++++++++------- .../azure/eventhub/_pyamqp/described.py | 6 +- 2 files changed, 77 insertions(+), 48 deletions(-) diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py index 7587bfaebb36..4b68efb5be4f 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py @@ -154,6 +154,7 @@ def _decode_binary_large(buffer: memoryview) -> Tuple[memoryview, bytes]: length_index = c_unsigned_long.unpack(buffer[:4])[0] + 4 return buffer[length_index:], buffer[4:length_index].tobytes() + def _decode_decimal128(buffer: memoryview) -> Tuple[memoryview, decimal.Decimal]: """ Decode a Decimal128 value from the buffer. @@ -255,11 +256,19 @@ def _decode_map_large(buffer: memoryview) -> Tuple[memoryview, Dict[Any, Any]]: def _decode_array_small(buffer: memoryview) -> Tuple[memoryview, List[Any]]: count = buffer[1] # Ignore first byte (size) and just rely on count if count: - subconstructor = buffer[2] - buffer = buffer[3:] values = [None] * count - for i in range(count): - buffer, values[i] = _DECODE_BY_CONSTRUCTOR[subconstructor](buffer) + subconstructor = buffer[2] + + if subconstructor == 0: + buffer, descriptor = _DECODE_BY_CONSTRUCTOR[0](buffer[3:]) + subconstructor = buffer[0] + buffer = buffer[1:] + for i in range(count): + buffer, values[i] = _decode_described_array(buffer, subconstructor, descriptor) + else: + buffer = buffer[3:] + for i in range(count): + buffer, values[i] = _DECODE_BY_CONSTRUCTOR[subconstructor](buffer) return buffer, values return buffer[2:], [] @@ -267,11 +276,19 @@ def _decode_array_small(buffer: memoryview) -> Tuple[memoryview, List[Any]]: def _decode_array_large(buffer: memoryview) -> Tuple[memoryview, List[Any]]: count = c_unsigned_long.unpack(buffer[4:8])[0] if count: - subconstructor = buffer[8] - buffer = buffer[9:] values = [None] * count - for i in range(count): - buffer, values[i] = _DECODE_BY_CONSTRUCTOR[subconstructor](buffer) + subconstructor = buffer[8] + + if subconstructor == 0: + buffer, descriptor = _DECODE_BY_CONSTRUCTOR[0](buffer[9:]) + subconstructor = buffer[0] + buffer = buffer[1:] + for i in range(count): + buffer, values[i] = _decode_described_array(buffer, subconstructor, descriptor) + else: + buffer = buffer[9:] + for i in range(count): + buffer, values[i] = _DECODE_BY_CONSTRUCTOR[subconstructor](buffer) return buffer, values return buffer[8:], [] @@ -283,7 +300,23 @@ def _decode_described(buffer: memoryview) -> Tuple[memoryview, object]: buffer, descriptor = _DECODE_BY_CONSTRUCTOR[composite_type](buffer[1:]) tp = buffer[0] buffer, value = _DECODE_BY_CONSTRUCTOR[tp](buffer[1:]) - value = _DESCR_BY_CONSTRUCTOR[tp](value, descriptor) + try: + value = _DESCR_BY_CONSTRUCTOR[tp](value, descriptor=descriptor) + except KeyError: + pass + try: + composite_type = cast(int, _COMPOSITES[descriptor]) + return buffer, {composite_type: value} + except KeyError: + return buffer, value + + +def _decode_described_array(buffer: memoryview, tp, descriptor) -> Tuple[memoryview, object]: + buffer, value = _DECODE_BY_CONSTRUCTOR[tp](buffer) + try: + value = _DESCR_BY_CONSTRUCTOR[tp](value, descriptor=descriptor) + except KeyError: + pass try: composite_type = cast(int, _COMPOSITES[descriptor]) return buffer, {composite_type: value} @@ -398,39 +431,35 @@ def decode_empty_frame(header: memoryview) -> Tuple[int, bytes]: _DECODE_BY_CONSTRUCTOR[224] = _decode_array_small _DECODE_BY_CONSTRUCTOR[240] = _decode_array_large -_DESCR_BY_CONSTRUCTOR: List[Callable] = cast(List[Callable], [None] * 256) -_DESCR_BY_CONSTRUCTOR[65] = described.DescribedBool -_DESCR_BY_CONSTRUCTOR[66] = described.DescribedBool -_DESCR_BY_CONSTRUCTOR[67] = described.DescribedInt -_DESCR_BY_CONSTRUCTOR[68] = described.DescribedInt -_DESCR_BY_CONSTRUCTOR[69] = described.DescribedList -_DESCR_BY_CONSTRUCTOR[80] = _decode_ubyte -_DESCR_BY_CONSTRUCTOR[81] = _decode_byte -_DESCR_BY_CONSTRUCTOR[82] = _decode_uint_small -_DESCR_BY_CONSTRUCTOR[83] = _decode_ulong_small -_DESCR_BY_CONSTRUCTOR[84] = _decode_int_small -_DESCR_BY_CONSTRUCTOR[85] = _decode_long_small -_DESCR_BY_CONSTRUCTOR[86] = _decode_boolean -_DESCR_BY_CONSTRUCTOR[96] = _decode_ushort -_DESCR_BY_CONSTRUCTOR[97] = _decode_short -_DESCR_BY_CONSTRUCTOR[112] = _decode_uint_large -_DESCR_BY_CONSTRUCTOR[113] = _decode_int_large -_DESCR_BY_CONSTRUCTOR[114] = _decode_float -_DESCR_BY_CONSTRUCTOR[128] = _decode_ulong_large -_DESCR_BY_CONSTRUCTOR[129] = _decode_long_large -_DESCR_BY_CONSTRUCTOR[130] = _decode_double -_DESCR_BY_CONSTRUCTOR[131] = _decode_timestamp -_DESCR_BY_CONSTRUCTOR[148] = _decode_decimal128 -_DESCR_BY_CONSTRUCTOR[152] = _decode_uuid -_DESCR_BY_CONSTRUCTOR[160] = described.DescribedBytes -_DESCR_BY_CONSTRUCTOR[161] = described.DescribedStr -_DESCR_BY_CONSTRUCTOR[163] = described.DescribedStr -_DESCR_BY_CONSTRUCTOR[176] = described.DescribedBytes -_DESCR_BY_CONSTRUCTOR[177] = described.DescribedStr -_DESCR_BY_CONSTRUCTOR[179] = described.DescribedStr -_DESCR_BY_CONSTRUCTOR[192] = described.DescribedList -_DESCR_BY_CONSTRUCTOR[193] = described.DescribedDict -_DESCR_BY_CONSTRUCTOR[208] = described.DescribedList -_DESCR_BY_CONSTRUCTOR[209] = described.DescribedDict -_DESCR_BY_CONSTRUCTOR[224] = described.DescribedList -_DESCR_BY_CONSTRUCTOR[240] = described.DescribedList +_DESCR_BY_CONSTRUCTOR = { + 67: described.DescribedInt, + 68: described.DescribedInt, + 69: described.DescribedList, + 80: described.DescribedInt, + 81: described.DescribedInt, + 82: described.DescribedInt, + 83: described.DescribedInt, + 84: described.DescribedInt, + 85: described.DescribedInt, + 96: described.DescribedInt, + 97: described.DescribedInt, + 112: described.DescribedInt, + 113: described.DescribedInt, + 114: described.DescribedFloat, + 128: described.DescribedInt, + 129: described.DescribedInt, + 130: described.DescribedFloat, + 131: described.DescribedInt, + 160: described.DescribedBytes, + 161: described.DescribedStr, + 163: described.DescribedStr, + 176: described.DescribedBytes, + 177: described.DescribedStr, + 179: described.DescribedStr, + 192: described.DescribedList, + 193: described.DescribedDict, + 208: described.DescribedList, + 209: described.DescribedDict, + 224: described.DescribedList, + 240: described.DescribedList, +} diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py index 0d5e206e54f5..d78640d003d4 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py @@ -11,12 +11,12 @@ def __new__(cls, value, descriptor=None): return obj -class DescribedBool(Described, bool): +class DescribedInt(Described, int): pass -class DescribedInt(Described, int): - pass +class DescribedFloat(Described, float): + pass class DescribedStr(Described, str): From 716ea70cf2a1894dbe69cc62ba54b45b686fdb00 Mon Sep 17 00:00:00 2001 From: Nikolay Kim Date: Wed, 18 Mar 2026 20:57:27 +0100 Subject: [PATCH 4/7] wip --- .../azure-eventhub/azure/eventhub/_pyamqp/_decode.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py index 4b68efb5be4f..df2364187eeb 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py @@ -260,7 +260,8 @@ def _decode_array_small(buffer: memoryview) -> Tuple[memoryview, List[Any]]: subconstructor = buffer[2] if subconstructor == 0: - buffer, descriptor = _DECODE_BY_CONSTRUCTOR[0](buffer[3:]) + composite_type = buffer[3] + buffer, descriptor = _DECODE_BY_CONSTRUCTOR[composite_type](buffer[4:]) subconstructor = buffer[0] buffer = buffer[1:] for i in range(count): @@ -280,7 +281,8 @@ def _decode_array_large(buffer: memoryview) -> Tuple[memoryview, List[Any]]: subconstructor = buffer[8] if subconstructor == 0: - buffer, descriptor = _DECODE_BY_CONSTRUCTOR[0](buffer[9:]) + composite_type = buffer[9] + buffer, descriptor = _DECODE_BY_CONSTRUCTOR[composite_type](buffer[9:]) subconstructor = buffer[0] buffer = buffer[1:] for i in range(count): From 04333a130bccf9d1d08fbb0c8592f2646f8d9dc4 Mon Sep 17 00:00:00 2001 From: Nikolay Kim Date: Tue, 24 Mar 2026 17:22:34 +0100 Subject: [PATCH 5/7] Add tests --- .../azure/eventhub/_pyamqp/_decode.py | 2 +- .../pyamqp_tests/unittest/test_decode.py | 30 ++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py index df2364187eeb..80bedf9f505a 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py @@ -282,7 +282,7 @@ def _decode_array_large(buffer: memoryview) -> Tuple[memoryview, List[Any]]: if subconstructor == 0: composite_type = buffer[9] - buffer, descriptor = _DECODE_BY_CONSTRUCTOR[composite_type](buffer[9:]) + buffer, descriptor = _DECODE_BY_CONSTRUCTOR[composite_type](buffer[10:]) subconstructor = buffer[0] buffer = buffer[1:] for i in range(count): diff --git a/sdk/eventhub/azure-eventhub/tests/pyamqp_tests/unittest/test_decode.py b/sdk/eventhub/azure-eventhub/tests/pyamqp_tests/unittest/test_decode.py index 05b77014c20c..40e539b9497a 100644 --- a/sdk/eventhub/azure-eventhub/tests/pyamqp_tests/unittest/test_decode.py +++ b/sdk/eventhub/azure-eventhub/tests/pyamqp_tests/unittest/test_decode.py @@ -1,5 +1,5 @@ import pytest -from azure.eventhub._pyamqp._decode import _decode_decimal128 +from azure.eventhub._pyamqp._decode import _decode_decimal128, _decode_described, _decode_array_small, _decode_array_large from decimal import Decimal @@ -18,3 +18,31 @@ def test_decimal_decode(value, expected): assert output[1] == expected +def test_described(): + value = b"\x80\0\0\x017\0\0\x07\xd3\xd0\0\0\0\x12\0\0\0\x02\xa1\ntest/topicP\0" + buffer, output = _decode_described(memoryview(value)) + assert output.descriptor == 1335734831059 + assert output == [b'test/topic', 0] + print(output) + + +def test_array_of_described(): + value = b"\0\x03\0\x80\0\0\x017\0\0\x07\xd4\xd0\0\0\0\x0c\0\0\0\x02\xa1\x02n1\xa1\x02v1\0\0\0\x0c\0\0\0\x02\xa1\x02n2\xa1\x02v2\0\0\0\n\0\0\0\x02\xa1\x02n1\xa1\0" + + buffer, output = _decode_array_small(memoryview(value)) + assert output == [[b'n1', b'v1'], [b'n2', b'v2'], [b'n1', b'']] + assert output[0].descriptor == 1335734831060 + assert output[1].descriptor == 1335734831060 + assert output[2].descriptor == 1335734831060 + + +def test_array_of_described_large(): + value = b"\0\0\x0e\x0f\0\0\x01\0\0\x80\0\0\x017\0\0\x07\xd4\xd0" + for i in range(256): + value += b"\0\0\0\n\0\0\0\x02\xa1\x01n\xa1\x01v" + + buffer, output = _decode_array_large(memoryview(value)) + assert len(output) == 256 + for i in range(256): + assert output[i] == [b'n', b'v'] + assert output[i].descriptor == 1335734831060 From dbeea8b0f9b640a3a32632d932add254e43c21a5 Mon Sep 17 00:00:00 2001 From: Nikolay Kim Date: Wed, 25 Mar 2026 09:09:09 +0100 Subject: [PATCH 6/7] wip --- sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py | 2 +- .../azure-eventhub/tests/pyamqp_tests/unittest/test_decode.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py index d78640d003d4..d7042d5faa4d 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py @@ -16,7 +16,7 @@ class DescribedInt(Described, int): class DescribedFloat(Described, float): - pass + pass class DescribedStr(Described, str): diff --git a/sdk/eventhub/azure-eventhub/tests/pyamqp_tests/unittest/test_decode.py b/sdk/eventhub/azure-eventhub/tests/pyamqp_tests/unittest/test_decode.py index 40e539b9497a..4254715abffa 100644 --- a/sdk/eventhub/azure-eventhub/tests/pyamqp_tests/unittest/test_decode.py +++ b/sdk/eventhub/azure-eventhub/tests/pyamqp_tests/unittest/test_decode.py @@ -23,7 +23,6 @@ def test_described(): buffer, output = _decode_described(memoryview(value)) assert output.descriptor == 1335734831059 assert output == [b'test/topic', 0] - print(output) def test_array_of_described(): From 08406577aeadee5e0fd4b7930e509106afcebd8b Mon Sep 17 00:00:00 2001 From: Nikolay Kim Date: Wed, 25 Mar 2026 09:10:47 +0100 Subject: [PATCH 7/7] wip --- .../azure-eventhub/azure/eventhub/_pyamqp/_decode.py | 8 ++++---- .../azure-eventhub/azure/eventhub/_pyamqp/described.py | 4 ---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py index 80bedf9f505a..839cc1796ae8 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/_decode.py @@ -453,11 +453,11 @@ def decode_empty_frame(header: memoryview) -> Tuple[int, bytes]: 130: described.DescribedFloat, 131: described.DescribedInt, 160: described.DescribedBytes, - 161: described.DescribedStr, - 163: described.DescribedStr, + 161: described.DescribedBytes, + 163: described.DescribedBytes, 176: described.DescribedBytes, - 177: described.DescribedStr, - 179: described.DescribedStr, + 177: described.DescribedBytes, + 179: described.DescribedBytes, 192: described.DescribedList, 193: described.DescribedDict, 208: described.DescribedList, diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py index d7042d5faa4d..a86a15f119ed 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/described.py @@ -19,10 +19,6 @@ class DescribedFloat(Described, float): pass -class DescribedStr(Described, str): - pass - - class DescribedBytes(Described, bytes): pass