Formatter¶
Convert device responses to different output formats (table, JSON, CSV, TSV, etc.). ResponseView provides two perspectives of the data (nested and flattened), and ResponseFormatter outputs them in your chosen format.
Architecture¶
Class Diagram¶
classDiagram
class DeviceResponse {
+type: str
+status: str
+received_us: int
+...dynamic_fields: Any
}
class ResponseView {
-raw: DeviceResponse
-flat: DeviceResponse
+__init__(response: DeviceResponse)
}
class ResponseFormatter {
-supported_formats: list
+display(response: DeviceResponse, format: str)
-_format_table(response: DeviceResponse) str
-_format_json(response: DeviceResponse) str
-_format_jsonl(response: DeviceResponse) str
-_format_csv(response: DeviceResponse) str
-_format_ssv(response: DeviceResponse) str
-_format_tsv(response: DeviceResponse) str
-_format_ltsv(response: DeviceResponse) str
}
ResponseView --> DeviceResponse: uses (raw)
ResponseView --> DeviceResponse: uses (flat)
ResponseFormatter --> DeviceResponse: formats
Response Perspective Transformation¶
flowchart LR
A["DeviceResponse<br/>(nested structure)"] --> B["ResponseView"]
B --> C["raw perspective<br/>(original nested)"]
B --> D["flat perspective<br/>(underscore-separated keys)"]
C --> E["ResponseFormatter"]
D --> E
E --> F["Output Format<br/>table/json/csv/etc"]
style A fill:#e1f5ff
style C fill:#fff3e0
style D fill:#f3e5f5
style F fill:#e8f5e9
Supported Output Formats¶
graph TD
A["ResponseFormatter"] --> B["table"]
A --> C["json"]
A --> D["jsonl"]
A --> E["csv"]
A --> F["ssv<br/>space-separated"]
A --> G["tsv<br/>tab-separated"]
A --> H["ltsv<br/>labeled tsv"]
style B fill:#fff3e0
style C fill:#f3e5f5
style D fill:#e3f2fd
style E fill:#e8f5e9
style F fill:#fce4ec
style G fill:#f1f8e9
style H fill:#ede7f6
ResponseView¶
::: kazunoko.formatter.ResponseView options: show_root_heading: true show_source: true
ResponseFormatter¶
::: kazunoko.formatter.ResponseFormatter options: show_root_heading: true show_source: true