* Add separate class for sftp file system * Add separate serial IO handling class * Replace function name mangling with gcode handler registration system * Add states to virtual Bambu printer that manage state specific interaction * Add synchronization utilities to work with virtual printer as if it is a binary stream * Add unittests with mocked Bambu printer to ensure core functionality works as expected * Fix formatting to be automatically processed by black formatter * Fix python 3.10 type annotations for readability
34 lines
789 B
Python
34 lines
789 B
Python
from __future__ import annotations
|
|
|
|
from dataclasses import asdict, dataclass
|
|
from datetime import datetime
|
|
from pathlib import Path
|
|
|
|
from octoprint.util.files import unix_timestamp_to_m20_timestamp
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class FileInfo:
|
|
dosname: str
|
|
path: Path
|
|
size: int
|
|
date: datetime
|
|
|
|
@property
|
|
def file_name(self):
|
|
return self.path.name
|
|
|
|
@property
|
|
def timestamp(self) -> float:
|
|
return self.date.timestamp()
|
|
|
|
@property
|
|
def timestamp_m20(self) -> str:
|
|
return unix_timestamp_to_m20_timestamp(int(self.timestamp))
|
|
|
|
def get_gcode_info(self) -> str:
|
|
return f'{self.dosname} {self.size} {self.timestamp_m20} "{self.file_name}"'
|
|
|
|
def to_dict(self):
|
|
return asdict(self)
|