Konwertery są kluczowym elementem Spectomate, odpowiedzialnym za transformację danych między różnymi formatami zarządzania pakietami. Każdy konwerter implementuje wspólny interfejs zdefiniowany w klasie bazowej BaseConverter.
Konwerter z formatu conda (environment.yml) do formatu pip (requirements.txt).
from spectomate.converters.conda_to_pip import CondaToPipConverter
converter = CondaToPipConverter(
source_file="environment.yml",
target_file="requirements.txt"
)
result_path = converter.execute()
Konwerter wykonuje następujące kroki:
Konwerter z formatu pip (requirements.txt) do formatu conda (environment.yml).
from spectomate.converters.pip_to_conda import PipToCondaConverter
converter = PipToCondaConverter(
source_file="requirements.txt",
target_file="environment.yml",
options={"env_name": "myproject"}
)
result_path = converter.execute()
Konwerter wykonuje następujące kroki:
Konwerter z formatu pip (requirements.txt) do formatu poetry (pyproject.toml).
from spectomate.converters.pip_to_poetry import PipToPoetryConverter
converter = PipToPoetryConverter(
source_file="requirements.txt",
target_file="pyproject.toml",
options={"project_name": "myproject", "version": "0.1.0"}
)
result_path = converter.execute()
Konwerter wykonuje następujące kroki:
Aby utworzyć własny konwerter, należy:
BaseConverterget_source_format() - zwraca identyfikator formatu źródłowegoget_target_format() - zwraca identyfikator formatu docelowegoread_source() - odczytuje plik źródłowyconvert() - konwertuje danewrite_target() - zapisuje dane do pliku docelowego@register_converterfrom spectomate.core.base_converter import BaseConverter
from spectomate.core.registry import register_converter
@register_converter
class MyCustomConverter(BaseConverter):
@staticmethod
def get_source_format() -> str:
return "format_a"
@staticmethod
def get_target_format() -> str:
return "format_b"
def read_source(self) -> Dict[str, Any]:
# Implementacja odczytu pliku źródłowego
pass
def convert(self, source_data: Dict[str, Any]) -> Dict[str, Any]:
# Implementacja konwersji danych
pass
def write_target(self, target_data: Dict[str, Any]) -> Path:
# Implementacja zapisu danych do pliku docelowego
pass