Python — создаваемая цель поставки, а не встроенный синтаксис и не вторая модель выполнения Topaz. Сначала средство проверки разбирает и проверяет всю программу Topaz; затем бэкенд записывает код Python и поставляемый вспомогательный модуль для выполнения принятой программы.
Контракт и компоненты
Сборка пакета создаёт program.py и topaz_py_rt.py. Для запуска нужен
Python 3.11 или новее, но не требуются компилятор Topaz или исходный пакет.
Права пакета на работу с файловой системой, аргументы, стандартные потоки
ввода, вывода и ошибок, а также код завершения остаются явными границами
созданного продукта.
Рабочий процесс
Храните прикладную логику и публичный API модулей в проверяемом Topaz. Сначала запустите эталонное выполнение и тесты пакета, затем соберите цель Python и проверьте созданный продукт с теми же входными данными и наблюдаемыми результатами. Поставляйте оба файла вместе; внешний запускатель или сервис Python считается отдельным кодом среды выполнения.
topaz check --root . --locked
topaz test --root . --locked
topaz build --target python --root . --locked --out-dir python-out
python3 python-out/program.pyГраницы и ограничения
Импорты, декораторы, исключения, генераторы, аннотации и API пакетов Python
не являются синтаксисом Topaz. Созданный исходный код — артефакт поставки, а
не стабильная точка ручного расширения. Компилятор отклоняет форму, если
выбранный бэкенд не может сохранить её проверенное поведение. Успешная
генерация не открывает произвольные библиотеки или исключения Python для
файлов .tpz.