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')