Skip to main content

Nuitka build config

Project description

Nuitka Build Config (nbc)

Документация на русском

nuitka-build-config (nbc) is a tool for managing application builds with Nuitka using declarative configuration files (YAML/JSON). It provides a convenient Pydantic configuration model, a CLI for generation and building, as well as support for pre- and post-compilation actions.

📦 Features

  • 🧩 Declarative Configuration — describe builds in YAML/JSON without writing commands.
  • ⚙️ Configuration Generation — automatically create a configuration file from command line parameters.
  • 🧠 Pydantic Models — strict validation and IDE autocompletion.
  • 📦 Plugin Support — enable/disable Nuitka plugins.
  • 🖥️ Cross-platform — separate parameters for Windows, macOS, Linux.
  • 📋 Pre/Post Compilation Actions — run arbitrary commands (e.g., tests, packaging).
  • 📊 Report Generation — create an XML compilation report.
  • 🧹 Build Directory Removal--remove-output option.

🚀 Installation

pip install nuitka-build-config

Or with uv:

uv add nuitka-build-config

After installation, the nbc command becomes available.

🧪 Usage

1. Generate a configuration file

nbc generate --main main.py --mode standalone --windows-console-mode disable -o myconfig.yaml

Almost all Nuitka parameters are supported (see nbc generate --help).

2. Build a project from a configuration file

nbc build myconfig.yaml

If main is not specified in the config, you can pass it as a second argument:

nbc build myconfig.yaml main.py

3. Generate build command without building (Dry-run)

nbc build --dry-run

This will show which Nuitka command would have been executed.

4. Example configuration (nbc-config.yaml)

type: standalone
main: src/main.py
run: true
follow_stdlib: false
output_dir: ./dist
output_name: myapp
remove_output: true

include:
  packages:
    - requests
    - rich
  files:
    - ./assets/icon.png
    - [./data/, "data"]

plugins:
  - anti-bloat

windows_params:
  console_mode: disable
  uac_admin: true
  icon: ./assets/app.ico

python_flags:
  - -O           # remove asserts
  - no_warnings

pre_compile_actions:
  - echo "Starting build"

post_compile_actions:
  - upx --best dist/myapp.exe

🧱 Programmatic Usage

You can use the models inside your Python code:

from nuitka_build_config.models import NuitkaConfig

config = NuitkaConfig.from_yaml_file("nbc-config.yaml")
print(config.output_dir)  # ./dist

🧰 CLI Commands

Command Description
nbc build Run build from configuration
nbc generate Generate config from arguments
nbc help Help on commands

Параметры generate (примеры)

   
--mode onefile build mode
--enable-plugins tk-inter enable plugin
--windows-console-mode disable disable console
--output-file config.yaml output file name (default nbc-config.yaml)
--compile start build immediately after generation

⚙️ Requirements

  • Python ≥ 3.9
  • Nuitka ≥ 4.0
  • Pydantic ≥ 2.0

🧩 Extensions and Customization

The package is designed to be modular. You can:

  • Inherit from NuitkaConfig and add your own fields.
  • Override _add_* methods in DecoratorMixin.
  • Use extra_flags for any custom Nuitka arguments.

🌍 Internationalization

CLI messages and field descriptions support translations. Current languages: English, Русский.

Translation files are located in nuitka_build_config/locale/.

📄 License

MIT License © MagIlyasDOMA


Nuitka Build Config (nbc)

Documentation in English

nuitka-build-config (nbc) --- это инструмент для управления сборкой приложений с помощью Nuitka через декларативные конфигурационные файлы (YAML/JSON). Он предоставляет удобную Pydantic-модель конфигурации, CLI для генерации и сборки, а также поддержку пред- и пост-компиляционных действий.

📦 Возможности

  • 🧩 Декларативная конфигурация --- описание сборки в YAML/JSON без написания команд.
  • ⚙️ Генерация конфигурации --- автоматическое создание файла конфигурации из параметров командной строки.
  • 🧠 Pydantic-модели --- строгая валидация и автодополнение в IDE.
  • 📦 Поддержка плагинов --- включение/отключение плагинов Nuitka.
  • 🖥️ Кроссплатформенность --- отдельные параметры для Windows, macOS, Linux.
  • 📋 Действия до/после компиляции --- запуск произвольных команд (например, тесты, упаковка).
  • 📊 Генерация отчётов --- создание XML-отчёта о компиляции.
  • 🧹 Удаление build-каталога --- опция --remove-output.

🚀 Установка

pip install nuitka-build-config

Или с помощью uv:

uv add nuitka-build-config

После установки становится доступна команда nbc.

🧪 Использование

1. Генерация конфигурационного файла

nbc generate --main main.py --mode standalone --windows-console-mode disable -o myconfig.yaml

Поддерживаются почти все параметры Nuitka (см. nbc generate --help).

2. Сборка проекта по конфигурации

nbc build myconfig.yaml

Если main не указан в конфиге, его можно передать вторым аргументом:

nbc build myconfig.yaml main.py

3. Генерация команды сборки без сборки (Dry-run)

nbc build --dry-run

Покажет, какая команда Nuitka была бы выполнена.

4. Пример конфигурации (nbc-config.yaml)

type: standalone
main: src/main.py
run: true
follow_stdlib: false
output_dir: ./dist
output_name: myapp
remove_output: true

include:
  packages:
    - requests
    - rich
  files:
    - ./assets/icon.png
    - [./data/, "data"]

plugins:
  - anti-bloat

windows_params:
  console_mode: disable
  uac_admin: true
  icon: ./assets/app.ico

python_flags:
  - -O           # удалить assert'ы
  - no_warnings

pre_compile_actions:
  - echo "Starting build"

post_compile_actions:
  - upx --best dist/myapp.exe

🧱 Программное использование

Вы можете использовать модели внутри своего Python-кода:

from nuitka_build_config.models import NuitkaConfig

config = NuitkaConfig.from_yaml_file("config.yaml")
print(config.output_dir)  # ./dist

🧰 Команды CLI

Команда Описание
nbc build Запуск сборки по конфигурации
nbc generate Генерация конфига из аргументов
nbc help Справка по командам

Параметры generate (примеры)

   
--mode onefile режим сборки
--enable-plugins tk-inter включить плагин
--windows-console-mode disable отключить консоль
--output-file config.yaml имя выходного файла (по умолч. nbc-config.yaml)
--compile сразу после генерации запустить сборку

⚙️ Требования

  • Python ≥ 3.9
  • Nuitka ≥ 4.0
  • Pydantic ≥ 2.0

🧩 Расширения и кастомизация

Пакет спроектирован модульно. Вы можете:

  • Наследовать NuitkaConfig и добавлять свои поля.
  • Переопределять методы _add_* в DecoratorMixin.
  • Использовать extra_flags для любых кастомных аргументов Nuitka.

🌍 Интернационализация

Сообщения CLI и описания полей поддерживают переводы. Текущие языки: English, Русский.

Файлы переводов находятся в nuitka_build_config/locale/.

📄 Лицензия

MIT License © MagIlyasDOMA

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nuitka_build_config-0.1.7.tar.gz (27.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nuitka_build_config-0.1.7-py3-none-any.whl (37.9 kB view details)

Uploaded Python 3

File details

Details for the file nuitka_build_config-0.1.7.tar.gz.

File metadata

  • Download URL: nuitka_build_config-0.1.7.tar.gz
  • Upload date:
  • Size: 27.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for nuitka_build_config-0.1.7.tar.gz
Algorithm Hash digest
SHA256 76eeecce66483a5a80e6b9b3733e004babc4c74919c30e00b45bae97564187d8
MD5 680060451b75e6c75a2deff8b31b03dc
BLAKE2b-256 ed77e58eb864c3b3d631b0b2fcb121625518ffe9263dbbd5a5fc0cba29918d9b

See more details on using hashes here.

File details

Details for the file nuitka_build_config-0.1.7-py3-none-any.whl.

File metadata

File hashes

Hashes for nuitka_build_config-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 e061fc2df6064ff9c7603d6d8b519dbbb62fa4f407c994ff0d42c6c4414ac55b
MD5 118a504b275ebf746ab11f1fd4b48676
BLAKE2b-256 9db9eb48a382caff2e8f98945aa124f589aaab0f00971311cb148740a82b30c4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page