This is an automated email from the ASF dual-hosted git repository.
kojiromike pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/avro.git
The following commit(s) were added to refs/heads/master by this push:
new 12d05859d AVRO-3796: Use Property Decorator (#2348)
12d05859d is described below
commit 12d05859d97cf3bc05c2a3cc87df320a6fd8786c
Author: Michael A. Smith <[email protected]>
AuthorDate: Sun Jul 16 10:54:38 2023 -0400
AVRO-3796: Use Property Decorator (#2348)
---
lang/py/avro/ipc.py | 54 +++++++++++++++++++++++++---------
lang/py/avro/schema.py | 80 ++++++++++++++++++++++++++++++++++++++------------
2 files changed, 102 insertions(+), 32 deletions(-)
diff --git a/lang/py/avro/ipc.py b/lang/py/avro/ipc.py
index 2c3ff6685..7ab6ea497 100644
--- a/lang/py/avro/ipc.py
+++ b/lang/py/avro/ipc.py
@@ -77,27 +77,41 @@ class BaseRequestor:
self._send_protocol = None
# read-only properties
- local_protocol = property(lambda self: self._local_protocol)
- transceiver = property(lambda self: self._transceiver)
+ @property
+ def local_protocol(self):
+ return self._local_protocol
+
+ @property
+ def transceiver(self):
+ return self._transceiver
# read/write properties
- def set_remote_protocol(self, new_remote_protocol):
+ @property
+ def remote_protocol(self):
+ return self._remote_protocol
+
+ @remote_protocol.setter
+ def remote_protocol(self, new_remote_protocol):
self._remote_protocol = new_remote_protocol
REMOTE_PROTOCOLS[self.transceiver.remote_name] = self.remote_protocol
- remote_protocol = property(lambda self: self._remote_protocol,
set_remote_protocol)
+ @property
+ def remote_hash(self):
+ return self._remote_hash
- def set_remote_hash(self, new_remote_hash):
+ @remote_hash.setter
+ def remote_hash(self, new_remote_hash):
self._remote_hash = new_remote_hash
REMOTE_HASHES[self.transceiver.remote_name] = self.remote_hash
- remote_hash = property(lambda self: self._remote_hash, set_remote_hash)
+ @property
+ def send_protocol(self):
+ return self._send_protocol
- def set_send_protocol(self, new_send_protocol):
+ @send_protocol.setter
+ def send_protocol(self, new_send_protocol):
self._send_protocol = new_send_protocol
- send_protocol = property(lambda self: self._send_protocol,
set_send_protocol)
-
def request(self, message_name, request_datum):
"""
Writes a request message and reads a response or error message.
@@ -236,9 +250,17 @@ class Responder:
self.set_protocol_cache(self.local_hash, self.local_protocol)
# read-only properties
- local_protocol = property(lambda self: self._local_protocol)
- local_hash = property(lambda self: self._local_hash)
- protocol_cache = property(lambda self: self._protocol_cache)
+ @property
+ def local_protocol(self):
+ return self._local_protocol
+
+ @property
+ def local_hash(self):
+ return self._local_hash
+
+ @property
+ def protocol_cache(self):
+ return self._protocol_cache
# utility functions to manipulate protocol cache
def get_protocol_cache(self, hash):
@@ -371,7 +393,9 @@ class FramedReader:
self._reader = reader
# read-only properties
- reader = property(lambda self: self._reader)
+ @property
+ def reader(self):
+ return self._reader
def read_framed_message(self):
message = []
@@ -401,7 +425,9 @@ class FramedWriter:
self._writer = writer
# read-only properties
- writer = property(lambda self: self._writer)
+ @property
+ def writer(self):
+ return self._writer
def write_framed_message(self, message):
message_length = len(message)
diff --git a/lang/py/avro/schema.py b/lang/py/avro/schema.py
index 8a64cb315..464f8180c 100644
--- a/lang/py/avro/schema.py
+++ b/lang/py/avro/schema.py
@@ -276,9 +276,17 @@ class NamedSchema(Schema):
return self.name if self.namespace == names.default_namespace else
self.fullname
# read-only properties
- name = property(lambda self: self.get_prop("name"))
- namespace = property(lambda self: self.get_prop("namespace"))
- fullname = property(lambda self: self._fullname)
+ @property
+ def name(self):
+ return self.get_prop("name")
+
+ @property
+ def namespace(self):
+ return self.get_prop("namespace")
+
+ @property
+ def fullname(self):
+ return self._fullname
#
@@ -347,10 +355,21 @@ class Field(CanonicalPropertiesMixin, EqualByJsonMixin):
self.set_prop("doc", doc)
# read-only properties
- default = property(lambda self: self.get_prop("default"))
- has_default = property(lambda self: self._has_default)
- order = property(lambda self: self.get_prop("order"))
- doc = property(lambda self: self.get_prop("doc"))
+ @property
+ def default(self):
+ return self.get_prop("default")
+
+ @property
+ def has_default(self):
+ return self._has_default
+
+ @property
+ def order(self):
+ return self.get_prop("order")
+
+ @property
+ def doc(self):
+ return self.get_prop("doc")
def __str__(self):
return json.dumps(self.to_json())
@@ -449,8 +468,13 @@ class BytesDecimalSchema(PrimitiveSchema,
DecimalLogicalSchema):
self.set_prop("scale", scale)
# read-only properties
- precision = property(lambda self: self.get_prop("precision"))
- scale = property(lambda self: self.get_prop("scale"))
+ @property
+ def precision(self):
+ return self.get_prop("precision")
+
+ @property
+ def scale(self):
+ return self.get_prop("scale")
def to_json(self, names=None):
return self.props
@@ -477,7 +501,9 @@ class FixedSchema(EqualByPropsMixin, NamedSchema):
self.set_prop("size", size)
# read-only properties
- size = property(lambda self: self.get_prop("size"))
+ @property
+ def size(self):
+ return self.get_prop("size")
def match(self, writer):
"""Return True if the current schema (as reader) matches the writer
schema.
@@ -531,8 +557,13 @@ class FixedDecimalSchema(FixedSchema,
DecimalLogicalSchema):
self.set_prop("scale", scale)
# read-only properties
- precision = property(lambda self: self.get_prop("precision"))
- scale = property(lambda self: self.get_prop("scale"))
+ @property
+ def precision(self):
+ return self.get_prop("precision")
+
+ @property
+ def scale(self):
+ return self.get_prop("scale")
def to_json(self, names=None):
return self.props
@@ -587,7 +618,9 @@ class EnumSchema(EqualByPropsMixin, NamedSchema):
return symbols
raise Exception
- doc = property(lambda self: self.get_prop("doc"))
+ @property
+ def doc(self):
+ return self.get_prop("doc")
def match(self, writer):
"""Return True if the current schema (as reader) matches the writer
schema.
@@ -645,7 +678,9 @@ class ArraySchema(EqualByJsonMixin, Schema):
self.set_prop("items", items_schema)
# read-only properties
- items = property(lambda self: self.get_prop("items"))
+ @property
+ def items(self):
+ return self.get_prop("items")
def match(self, writer):
"""Return True if the current schema (as reader) matches the writer
schema.
@@ -697,7 +732,9 @@ class MapSchema(EqualByJsonMixin, Schema):
self.set_prop("values", values_schema)
# read-only properties
- values = property(lambda self: self.get_prop("values"))
+ @property
+ def values(self):
+ return self.get_prop("values")
def match(self, writer):
"""Return True if the current schema (as reader) matches the writer
schema.
@@ -766,7 +803,9 @@ class UnionSchema(EqualByJsonMixin, Schema):
self._schemas = schema_objects
# read-only properties
- schemas = property(lambda self: self._schemas)
+ @property
+ def schemas(self):
+ return self._schemas
def match(self, writer):
"""Return True if the current schema (as reader) matches the writer
schema.
@@ -890,8 +929,13 @@ class RecordSchema(EqualByJsonMixin, NamedSchema):
names.default_namespace = old_default
# read-only properties
- fields = property(lambda self: self.get_prop("fields"))
- doc = property(lambda self: self.get_prop("doc"))
+ @property
+ def fields(self):
+ return self.get_prop("fields")
+
+ @property
+ def doc(self):
+ return self.get_prop("doc")
@property
def fields_dict(self):