11"""Core print logic."""
22
3+ from __future__ import annotations
4+
35import json
46import logging
57from copy import copy
8+ from dataclasses import dataclass
9+ from typing import Any
610
711import dotted # type: ignore[import-untyped]
812from beartype import beartype
9- from beartype .typing import Any , Dict , List , Optional
1013from corallium .loggers .rich_printer import rich_printer
1114from corallium .loggers .styles import get_level
12- from pydantic import BaseModel
1315from rich .console import Console
1416
1517from tail_jsonl .config import Config
1618
1719
18- @ beartype
19- def _dot_pop (data : Dict , key : str ) -> Optional [ str ] : # type: ignore[type-arg]
20+
21+ def _dot_pop (data : dict , key : str ) -> str | None : # type: ignore[type-arg]
2022 value = dotted .get (data , key )
2123 if isinstance (value , str ):
2224 dotted .remove (data , key )
2325 return value or None
2426 return None
2527
2628
27- @ beartype
28- def _pop_key (data : Dict , keys : List [str ], fallback : str ) -> Any : # type: ignore[type-arg]
29+
30+ def _pop_key (data : dict , keys : list [str ], fallback : str ) -> Any : # type: ignore[type-arg]
2931 """Return result of recursively popping each key while searching for a match."""
3032 try :
3133 key = keys .pop (0 )
@@ -34,23 +36,24 @@ def _pop_key(data: Dict, keys: List[str], fallback: str) -> Any: # type: ignore
3436 return _dot_pop (data , key ) or _pop_key (data , keys , fallback )
3537
3638
37- @ beartype
38- def pop_key (data : Dict , keys : List [str ], fallback : str ) -> Any : # type: ignore[type-arg]
39+
40+ def pop_key (data : dict , keys : list [str ], fallback : str ) -> Any : # type: ignore[type-arg]
3941 """Return the first key in the data or default to the fallback."""
4042 return _pop_key (data , copy (keys ), fallback )
4143
4244
43- class Record (BaseModel ):
45+ @dataclass
46+ class Record :
4447 """Record Model."""
4548
4649 timestamp : str
4750 level : str
4851 message : str
49- data : Dict # type: ignore[type-arg]
52+ data : dict # type: ignore[type-arg]
5053
5154 @classmethod
52- @ beartype
53- def from_line (cls , data : Dict , config : Config ) -> ' Record' : # type: ignore[type-arg]
55+
56+ def from_line (cls , data : dict , config : Config ) -> Record : # type: ignore[type-arg]
5457 """Return Record from jsonl."""
5558 return cls (
5659 timestamp = pop_key (data , config .keys .timestamp , '<no timestamp>' ),
@@ -60,7 +63,7 @@ def from_line(cls, data: Dict, config: Config) -> 'Record': # type: ignore[type
6063 )
6164
6265
63- @ beartype
66+
6467def print_record (line : str , console : Console , config : Config ) -> None :
6568 """Format and print the record."""
6669 try :
0 commit comments