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.8.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.8-py3-none-any.whl (37.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: nuitka_build_config-0.1.8.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.8.tar.gz
Algorithm Hash digest
SHA256 77ca715559fd9a3a9334a444059fa64a916fc1c550bb2f638970bb86c483d352
MD5 b58d52793ea65cde00fd11ff0d89570e
BLAKE2b-256 da998802275cda71da3fb9a1f375e2ed3051112ad80cfe5cbb3dd9f88a392aed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nuitka_build_config-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 6da7a7f900beccfd9df76f30d8a4563a2ba8c6b52a418e2edebd050727390334
MD5 6abc15148766ccc69059ec8c0c043423
BLAKE2b-256 4f845706d87772ac02bbe65beae67b9c766da03fbd9f8b7a062242f4676fa557

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