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

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

   
--mode onefile build mode
--enable-plugins tk-inter enable plugin
--windows-console-mode disable disable console
-o 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 Генерация конфига из аргументов

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

   
--mode onefile режим сборки
--enable-plugins tk-inter включить плагин
--windows-console-mode disable отключить консоль
-o 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.3.0.tar.gz (27.5 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.3.0-py3-none-any.whl (38.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: nuitka_build_config-0.3.0.tar.gz
  • Upload date:
  • Size: 27.5 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.3.0.tar.gz
Algorithm Hash digest
SHA256 871fd46c8122e1af1efc5ad126961220623257d379e1d29184b62a416c08dfe4
MD5 2f13312d6a631a97ecf08a76a4a895a4
BLAKE2b-256 7ceafb1642a14ad18770d358b06c4fcc9c6e7716f9ba43312664d64d2712d1a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nuitka_build_config-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f67f8c9f8a3bc8130e4a6fcd143d8e7782806b72c74524062c9272d9e3b91598
MD5 efb0411c8d42dc61cc149f1e516dfd1b
BLAKE2b-256 62dec3d5637147cfef0d65ed4ee0b02fe855d6c6e55b1a552340d30228f52f38

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