Package: slice-to-py-dist
slice_to_py_dist: упаковка Slice файлов (ZeroC/ICE) в распространяемый python-пакетОписаниеSliceявляется языком описания интерфейсов сетевого взаимодействия для фреймворкаZeroC/ICE(далееICE). Для того, чтобы приложения могли взаимодействовать между собой посредством
ICE, Slice файлы (.ice) должны быть скомпилированы в исходные файлы, обеспечивающие реализацию
описанных интерфейсов на одном из языков программирования, поддерживаемых ICE (например, в.pyфайлы для языка Python).Данный проектslice_to_py_distпредназначен для упаковки набора Slice файлов в распространяемый
python-пакет (sdist), который может быть, например, загружен на pypi, или распространяться другим
способом. Впоследствии, на этапе установки sdist-пакета в целевом python-окружении эти.iceфайлы
будут скомпилированы в.pyфайлы (реализации интерфейсов).Компиляция выполняется с помощью компилятораslice2py(из состава pypi-пакетаzeroc-ice).
При этом будут созданы импортируемые python-пакеты (такие, которые можно указывать в команде import),
соответствующие модулям верхнего уровня в Slice описаниях. Эти импортируемые python-пакеты и будут
установлены в целевом python-окружении.Запуск компиляции Slice файлов на этапе установки sdist-пакета производится из специализированного
бэкенда сборки (build-backend), который добавляется в sdist-пакет при его формировании. Бэкенд
сборки использует технологиюin-tree backend(см. ссылки).ПримерДля примера будет использоваться каталогtests/funnycat/data, который содержит:подкаталогsliceсо Slice файлами,конфигурационный файлconfig.toml.Установкаslice_to_py_distи запуск для упаковки Slice файлов в sdist пакет:$ python3 -m venv .venv
$ source .venv/bin/activate
(.venv) $ pip install slice_to_py_dist

(.venv) $ datadir=tests/funnycat/data
(.venv) $ python -m slice_to_py_dist -c $datadir/config.toml --slice-source-dir $datadir/slice(Опции, указанные в конфигурационном файле, могут быть указаны и в командной строке. И наоборот,
опция--slice-source-dirтакже может быть указана в конфигурационном файле. Для разбора опций
используется pypi-пакет configargparse).После выполнения команды в текущем каталоге должен появиться sdist пакет, напримерfunnycat-0.0.2.tar.gz.При установке sdist пакета в целевом python-окружении выполняется компиляция Slice файлов и
появляются следующие импортируемые python-пакеты:FunnyCatFunnyCatSupportfunnycat_genfunnycat_sliceПакетыFunnyCatиFunnyCatSupportсоответствуют Slice модулям верхнего уровня (см. Slice файлы).
Эти пакеты используются в приложениях для организации между ними сетевого взаимодействия в
соответствии с разработанными Slice интерфейсами:from FunnyCat.Main import CatPrx
...Внутри эти пакеты для своей работы используют пакетfunnycat_gen.Пакетfunnycat_genсодержит фактические реализации Slice интерфейсов, сгенерированные компиляторомslice2py. Имя пакета формируется в соответствии с директивамиpython:pkgdir(см. Slice файлы).
Этот пакет не должен напрямую использоваться приложениями.Пакетfunnycat_sliceявляется вспомогательным, справочным. Он содержит исходные Slice файлы на тот
случай, если в целевом python-окружении возникнет необходимость в их просмотре/анализе. Имя пакета
формируется в соответствии с опциейslice-storage-package(см. файлconfig.toml).Разработкаpoetry run black ./slice_to_py_dist/ ./tests/
poetry run pylint ./slice_to_py_dist/ ./tests/
poetry run pytest ./tests/
poetry version ...
poetry build
poetry publishСсылкиICE и Slice:ZeroC/ICECode Generation in PythonСборка распространяемых python-пакетов:PEP 517PEP 517: In-tree build backendsPEP 517: Appendix A: Comparison to PEP 516setuptools: Build System Supportstackoverflow: Custom build backend for Python