Schematy danych w Spectomate definiują strukturę danych dla poszczególnych formatów zarządzania pakietami oraz dostarczają metody do parsowania i generowania plików w tych formatach. Są one kluczowym elementem umożliwiającym konwersję między różnymi formatami.
Schemat dla formatu pip (requirements.txt).
parse_requirement(req_line) - parsuje pojedynczą linię z pliku requirements.txtparse_file(file_path) - parsuje cały plik requirements.txtgenerate_requirements_txt(data) - generuje zawartość pliku requirements.txt na podstawie danychwrite_requirements_txt(data, output_path) - zapisuje dane do pliku requirements.txt{
"format": "pip",
"requirements": [
# Może zawierać stringi (prosty format) lub słowniki (rozszerzony format)
"numpy==1.22.0",
"pandas>=1.4.0",
# lub
{
"type": "package",
"name": "numpy",
"version_spec": {
"operator": "==",
"version": "1.22.0"
}
},
{
"type": "comment",
"content": "# Komentarz"
}
]
}
Schemat dla formatu conda (environment.yml).
parse_file(file_path) - parsuje plik environment.ymlextract_conda_dependencies(conda_data) - wyodrębnia zależności condaextract_pip_dependencies(conda_data) - wyodrębnia zależności pipgenerate_environment_yml(data) - generuje zawartość pliku environment.ymlwrite_environment_yml(data, output_path) - zapisuje dane do pliku environment.yml{
"format": "conda",
"name": "myproject",
"channels": ["conda-forge", "defaults"],
"dependencies": [
"python=3.9",
"numpy=1.22.0",
"pandas>=1.4.0",
{"pip": ["requests>=2.27.0", "pyyaml>=6.0"]}
]
}
Schemat dla formatu poetry (pyproject.toml).
parse_file(file_path) - parsuje plik pyproject.tomlextract_dependencies(poetry_data, include_dev) - wyodrębnia zależnościgenerate_pyproject_toml(data) - generuje zawartość pliku pyproject.tomlwrite_pyproject_toml(data, output_path) - zapisuje dane do pliku pyproject.tomlconvert_from_pip(pip_data, project_name, version) - konwertuje dane z formatu pip do formatu poetry{
"format": "poetry",
"name": "myproject",
"version": "0.1.0",
"description": "",
"authors": ["Your Name <your.email@example.com>"],
"readme": "README.md",
"dependencies": {
"python": "^3.9",
"numpy": "==1.22.0",
"pandas": ">=1.4.0"
},
"dev-dependencies": {
"pytest": "^7.0.0"
}
}
Schematy danych w Spectomate są zaprojektowane, aby obsługiwać różne formaty i reprezentacje danych:
Metody konwersji i parsowania są zaprojektowane tak, aby obsługiwać oba formaty, co zapewnia elastyczność i kompatybilność z różnymi narzędziami i bibliotekami.
Aby utworzyć własny schemat danych dla nowego formatu:
Następnie możesz utworzyć konwertery, które będą korzystać z nowego schematu do konwersji między nowym formatem a istniejącymi formatami.