Coverage for src / ezplog / types / protocols / printer_protocol.py: 100.00%
5 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-03 16:27 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-03 16:27 +0000
1# ///////////////////////////////////////////////////////////////
2# EZPL - Printer Protocol
3# Project: ezpl
4# ///////////////////////////////////////////////////////////////
6"""
7Printer Protocol for Ezpl logging framework.
9This module defines the Protocol (abstract interface) that all printer
10implementations must follow. It provides type checking and ensures
11consistent API across different printer implementations.
12"""
14from __future__ import annotations
16# ///////////////////////////////////////////////////////////////
17# IMPORTS
18# ///////////////////////////////////////////////////////////////
19# Standard library imports
20from contextlib import AbstractContextManager
21from typing import Any, Protocol, runtime_checkable
23# Local imports
24from ..enums import Pattern
26# ///////////////////////////////////////////////////////////////
27# PROTOCOLS
28# ///////////////////////////////////////////////////////////////
31@runtime_checkable
32class PrinterProtocol(Protocol):
33 """
34 Protocol defining the interface for printer implementations.
36 All printer implementations must conform to this protocol to ensure
37 consistent API and type safety.
39 **Required Methods:**
40 - Logging methods: info(), debug(), success(), warning(), error(), critical()
41 - Pattern methods: tip(), system(), install(), detect(), config(), deps()
42 - Enhanced methods: print_pattern(), print_json()
43 - Utility methods: set_level(), log()
44 - Indentation methods: add_indent(), del_indent(), reset_indent(), manage_indent()
46 **Required Properties:**
47 - wizard: Access to RichWizard instance for advanced features
48 """
50 # ///////////////////////////////////////////////////////////////
51 # CORE LOGGING METHODS
52 # ///////////////////////////////////////////////////////////////
54 def info(self, message: Any) -> None:
55 """Log an info message."""
56 ...
58 def debug(self, message: Any) -> None:
59 """Log a debug message."""
60 ...
62 def success(self, message: Any) -> None:
63 """Log a success message."""
64 ...
66 def warning(self, message: Any) -> None:
67 """Log a warning message."""
68 ...
70 def error(self, message: Any) -> None:
71 """Log an error message."""
72 ...
74 def critical(self, message: Any) -> None:
75 """Log a critical message."""
76 ...
78 # ///////////////////////////////////////////////////////////////
79 # PATTERN METHODS
80 # ///////////////////////////////////////////////////////////////
82 def tip(self, message: Any) -> None:
83 """Display a tip message."""
84 ...
86 def system(self, message: Any) -> None:
87 """Display a system message."""
88 ...
90 def install(self, message: Any) -> None:
91 """Display an installation message."""
92 ...
94 def detect(self, message: Any) -> None:
95 """Display a detection message."""
96 ...
98 def config(self, message: Any) -> None:
99 """Display a configuration message."""
100 ...
102 def deps(self, message: Any) -> None:
103 """Display a dependencies message."""
104 ...
106 # ///////////////////////////////////////////////////////////////
107 # ENHANCED METHODS
108 # ///////////////////////////////////////////////////////////////
110 def print_pattern(
111 self, pattern: str | Pattern, message: Any, level: str = "INFO"
112 ) -> None:
113 """Display a message with pattern format."""
114 ...
116 def print_json(
117 self,
118 data: str | dict | list,
119 title: str | None = None,
120 indent: int | None = None,
121 highlight: bool = True,
122 ) -> None:
123 """Display JSON data in formatted way."""
124 ...
126 # ///////////////////////////////////////////////////////////////
127 # UTILITY METHODS
128 # ///////////////////////////////////////////////////////////////
130 @property
131 def level(self) -> str:
132 """Get the current logging level."""
133 ...
135 def set_level(self, level: str) -> None:
136 """Set the logging level."""
137 ...
139 def log(self, level: str, message: Any) -> None:
140 """Log a message with specified level."""
141 ...
143 # ///////////////////////////////////////////////////////////////
144 # INDENTATION METHODS
145 # ///////////////////////////////////////////////////////////////
147 def add_indent(self) -> None:
148 """Increase indentation level."""
149 ...
151 def del_indent(self) -> None:
152 """Decrease indentation level."""
153 ...
155 def reset_indent(self) -> None:
156 """Reset indentation to zero."""
157 ...
159 def manage_indent(self) -> AbstractContextManager[None]:
160 """Context manager for temporary indentation."""
161 ...
163 # ///////////////////////////////////////////////////////////////
164 # PROPERTIES
165 # ///////////////////////////////////////////////////////////////
167 @property
168 def wizard(self) -> Any:
169 """Get RichWizard instance for advanced features."""
170 ...
173# ///////////////////////////////////////////////////////////////
174# PUBLIC API
175# ///////////////////////////////////////////////////////////////
177__all__ = [
178 "PrinterProtocol",
179]