# Module: dto/annotationClass ## Purpose Defines the `AnnotationClass` data model and `WeatherMode` enum used in the training pipeline. Reads annotation class definitions from `classes.json`. ## Public Interface ### WeatherMode (Enum) | Member | Value | Description | |--------|-------|-------------| | `Norm` | 0 | Normal weather | | `Wint` | 20 | Winter conditions | | `Night` | 40 | Night conditions | ### AnnotationClass | Field/Method | Type/Signature | Description | |-------------|----------------|-------------| | `id` | int | Class ID (weather_offset + base_id) | | `name` | str | Class name (with weather suffix if non-Norm) | | `color` | str | Hex color string (e.g. `#ff0000`) | | `color_tuple` | property → tuple | RGB tuple parsed from hex color | | `read_json()` | static → dict[int, AnnotationClass] | Reads `classes.json`, expands across weather modes, returns dict keyed by ID | ## Internal Logic - `read_json()` locates `classes.json` relative to the parent directory of the `dto/` package - For each of the 3 weather modes, creates an AnnotationClass per entry in `classes.json` with offset IDs (0, 20, 40) - This produces up to 80 classes total (17 base × 3 modes = 51, but the system reserves 80 slots) - `color_tuple` strips the first 3 characters of the color string and parses hex pairs ## Dependencies - `json`, `enum`, `os.path` (stdlib) ## Consumers train (for YAML generation), dataset-visualiser (for visualization colors) ## Data Models `AnnotationClass` — annotation class with ID, name, color. `WeatherMode` — enum for weather conditions. ## Configuration Reads `classes.json` from project root (relative path from `dto/` parent). ## External Integrations None. ## Security None. ## Tests None directly; used transitively by `tests/imagelabel_visualize_test.py`.