Usage of the EventMetaData Class
EventMetadata is merely an abstract class and serves as an interface.
Concrete usage example: KafkaInputMetadata
KafkaInputMetadata stores metadata for an event - in this case, the OFFSET and PARTITION of the event in Kafka.
[1]:
from logprep.ng.connector.confluent_kafka.metadata import ConfluentKafkaMetadata
kafka_metadata = ConfluentKafkaMetadata(partition=1, offset=0)
print(kafka_metadata)
KafkaInputMetadata(partition=1, offset=0)
Validation FAILING
[2]:
kafka_metadata = ConfluentKafkaMetadata(partition="1", offset="Zero")
print(kafka_metadata)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[2], line 1
----> 1 kafka_metadata = KafkaInputMetadata(partition="1", offset="Zero")
3 print(kafka_metadata)
File <attrs generated methods logprep.ng.connector.confluent_kafka.metadata.KafkaInputMetadata>:28, in __init__(self, partition, offset)
26 _setattr('offset', offset)
27 if _config._run_validators is True:
---> 28 __attr_validator_partition(self, __attr_partition, self.partition)
29 __attr_validator_offset(self, __attr_offset, self.offset)
File ~/dev/bwi/Logprep/.venv/lib/python3.12/site-packages/attr/validators.py:100, in _InstanceOfValidator.__call__(self, inst, attr, value)
98 if not isinstance(value, self.type):
99 msg = f"'{attr.name}' must be {self.type!r} (got {value!r} that is a {value.__class__!r})."
--> 100 raise TypeError(
101 msg,
102 attr,
103 self.type,
104 value,
105 )
TypeError: ("'partition' must be <class 'int'> (got '1' that is a <class 'str'>).", Attribute(name='partition', default=NOTHING, validator=<instance_of validator for type <class 'int'>>, repr=True, eq=True, eq_key=None, order=True, order_key=None, hash=None, init=True, metadata=mappingproxy({}), type=<class 'int'>, converter=None, kw_only=True, inherited=False, on_setattr=None, alias='partition'), <class 'int'>, '1')