{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": "# Usage of the EventMetaData Class\n" }, { "metadata": {}, "cell_type": "markdown", "source": "EventMetadata is merely an abstract class and serves as an interface." }, { "metadata": {}, "cell_type": "markdown", "source": [ "Concrete usage example: KafkaInputMetadata\n", "\n", "KafkaInputMetadata stores metadata for an event - in this case, the OFFSET and PARTITION of the event in Kafka." ] }, { "metadata": { "ExecuteTime": { "end_time": "2025-07-04T08:11:01.037150Z", "start_time": "2025-07-04T08:11:01.015782Z" } }, "cell_type": "code", "source": [ "from logprep.ng.connector.confluent_kafka.metadata import ConfluentKafkaMetadata\n", "\n", "kafka_metadata = ConfluentKafkaMetadata(partition=1, offset=0)\n", "\n", "print(kafka_metadata)" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "KafkaInputMetadata(partition=1, offset=0)\n" ] } ], "execution_count": 1 }, { "metadata": {}, "cell_type": "markdown", "source": "**Validation FAILING**" }, { "metadata": { "ExecuteTime": { "end_time": "2025-07-04T08:11:04.754014Z", "start_time": "2025-07-04T08:11:04.523614Z" } }, "cell_type": "code", "source": [ "kafka_metadata = ConfluentKafkaMetadata(partition=\"1\", offset=\"Zero\")\n", "\n", "print(kafka_metadata)" ], "outputs": [ { "ename": "TypeError", "evalue": "(\"'partition' must be (got '1' that is a ).\", Attribute(name='partition', default=NOTHING, validator=>, repr=True, eq=True, eq_key=None, order=True, order_key=None, hash=None, init=True, metadata=mappingproxy({}), type=, converter=None, kw_only=True, inherited=False, on_setattr=None, alias='partition'), , '1')", "output_type": "error", "traceback": [ "\u001B[31m---------------------------------------------------------------------------\u001B[39m", "\u001B[31mTypeError\u001B[39m Traceback (most recent call last)", "\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[2]\u001B[39m\u001B[32m, line 1\u001B[39m\n\u001B[32m----> \u001B[39m\u001B[32m1\u001B[39m kafka_metadata = \u001B[43mKafkaInputMetadata\u001B[49m\u001B[43m(\u001B[49m\u001B[43mpartition\u001B[49m\u001B[43m=\u001B[49m\u001B[33;43m\"\u001B[39;49m\u001B[33;43m1\u001B[39;49m\u001B[33;43m\"\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43moffset\u001B[49m\u001B[43m=\u001B[49m\u001B[33;43m\"\u001B[39;49m\u001B[33;43mZero\u001B[39;49m\u001B[33;43m\"\u001B[39;49m\u001B[43m)\u001B[49m\n\u001B[32m 3\u001B[39m \u001B[38;5;28mprint\u001B[39m(kafka_metadata)\n", "\u001B[36mFile \u001B[39m\u001B[32m:28\u001B[39m, in \u001B[36m__init__\u001B[39m\u001B[34m(self, partition, offset)\u001B[39m\n\u001B[32m 26\u001B[39m _setattr(\u001B[33m'\u001B[39m\u001B[33moffset\u001B[39m\u001B[33m'\u001B[39m, offset)\n\u001B[32m 27\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m _config._run_validators \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mTrue\u001B[39;00m:\n\u001B[32m---> \u001B[39m\u001B[32m28\u001B[39m \u001B[43m__attr_validator_partition\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43m__attr_partition\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mpartition\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 29\u001B[39m __attr_validator_offset(\u001B[38;5;28mself\u001B[39m, __attr_offset, \u001B[38;5;28mself\u001B[39m.offset)\n", "\u001B[36mFile \u001B[39m\u001B[32m~/dev/bwi/Logprep/.venv/lib/python3.12/site-packages/attr/validators.py:100\u001B[39m, in \u001B[36m_InstanceOfValidator.__call__\u001B[39m\u001B[34m(self, inst, attr, value)\u001B[39m\n\u001B[32m 98\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(value, \u001B[38;5;28mself\u001B[39m.type):\n\u001B[32m 99\u001B[39m msg = \u001B[33mf\u001B[39m\u001B[33m\"\u001B[39m\u001B[33m'\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mattr.name\u001B[38;5;132;01m}\u001B[39;00m\u001B[33m'\u001B[39m\u001B[33m must be \u001B[39m\u001B[38;5;132;01m{\u001B[39;00m\u001B[38;5;28mself\u001B[39m.type\u001B[38;5;132;01m!r}\u001B[39;00m\u001B[33m (got \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mvalue\u001B[38;5;132;01m!r}\u001B[39;00m\u001B[33m that is a \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mvalue.\u001B[34m__class__\u001B[39m\u001B[38;5;132;01m!r}\u001B[39;00m\u001B[33m).\u001B[39m\u001B[33m\"\u001B[39m\n\u001B[32m--> \u001B[39m\u001B[32m100\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mTypeError\u001B[39;00m(\n\u001B[32m 101\u001B[39m msg,\n\u001B[32m 102\u001B[39m attr,\n\u001B[32m 103\u001B[39m \u001B[38;5;28mself\u001B[39m.type,\n\u001B[32m 104\u001B[39m value,\n\u001B[32m 105\u001B[39m )\n", "\u001B[31mTypeError\u001B[39m: (\"'partition' must be (got '1' that is a ).\", Attribute(name='partition', default=NOTHING, validator=>, repr=True, eq=True, eq_key=None, order=True, order_key=None, hash=None, init=True, metadata=mappingproxy({}), type=, converter=None, kw_only=True, inherited=False, on_setattr=None, alias='partition'), , '1')" ] } ], "execution_count": 2 } ], "metadata": { "kernelspec": { "display_name": "Python 3.11.0 ('.venv': venv)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.0" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "586280540a85d3e21edc698fe7b86af2848b9b02644e6c22463da25c40a3f1be" } } }, "nbformat": 4, "nbformat_minor": 2 }