MCPcopy Create free account
hub / github.com/FastLED/FastLED / read_status_file_safe

Function read_status_file_safe

ci/util/pio_package_daemon.py:114–150  ·  view source on GitHub ↗

Read status file with corruption recovery. Returns: DaemonStatus object (or default if corrupted)

()

Source from the content-addressed store, hash-verified

112
113
114def read_status_file_safe() -> DaemonStatus:
115 """Read status file with corruption recovery.
116
117 Returns:
118 DaemonStatus object (or default if corrupted)
119 """
120 default_status = DaemonStatus(
121 state=DaemonState.IDLE,
122 message="",
123 updated_at=time.time(),
124 )
125
126 if not STATUS_FILE.exists():
127 return default_status
128
129 try:
130 with open(STATUS_FILE, "r") as f:
131 data = json.load(f)
132
133 # Parse into typed DaemonStatus
134 return DaemonStatus.from_dict(data)
135
136 except (json.JSONDecodeError, ValueError) as e:
137 logging.warning(f"Corrupted status file detected: {e}")
138 logging.warning("Creating fresh status file")
139
140 # Write fresh status file
141 write_status_file_atomic(default_status.to_dict())
142
143 return default_status
144 except KeyboardInterrupt as ki:
145 handle_keyboard_interrupt(ki)
146 raise
147 except Exception as e:
148 logging.error(f"Unexpected error reading status file: {e}")
149 write_status_file_atomic(default_status.to_dict())
150 return default_status
151
152
153def write_status_file_atomic(status: dict[str, Any]) -> None:

Callers 1

run_daemon_loopFunction · 0.85

Calls 9

to_dictMethod · 0.95
DaemonStatusClass · 0.90
write_status_file_atomicFunction · 0.85
timeMethod · 0.80
warningMethod · 0.80
loadMethod · 0.45
from_dictMethod · 0.45
errorMethod · 0.45

Tested by

no test coverage detected