Metadata-Version: 2.4
Name: maxson-build-utils
Version: 0.1.44
Summary: maxson-build-utils (mbu) enables the rollout of Python app's built in the style of Clayton Bennett in 2026. Granular scaffold standup, generalized build tools for rollout to shiv, msix, and more, with a PyProject class in the middle. This app consumes the City-of-Memphis-Wastewater stack, including pyhabitat, typer-helptree, dworshak-env, and blindwindow.
Author-email: George Clayton Bennett <george.bennett@memphistn.gov>
Maintainer-email: George Clayton Bennett <george.bennett@memphistn.gov>
License-Expression: MIT
Project-URL: Homepage, https://github.com/city-of-memphis-wastewater/maxson-build-utils
Project-URL: Repository, https://github.com/city-of-memphis-wastewater/maxson-build-utils
Project-URL: Issues, https://github.com/city-of-memphis-wastewater/maxson-build-utils/issues
Project-URL: Changelog, https://raw.githubusercontent.com/city-of-memphis-wastewater/maxson-build-utils/main/docs/CHANGELOG.md
Keywords: build-tools,build,scaffold,CI/CD,deployment
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Developers
Classifier: Typing :: Typed
Classifier: Development Status :: 3 - Alpha
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: dworshak-config>=0.2.8
Requires-Dist: dworshak-env>=0.1.8
Requires-Dist: pyhabitat>=1.3.13
Requires-Dist: typer>=0.27.0; python_version >= "3.10"
Requires-Dist: typer<0.24.0,>=0.22.0; python_version < "3.10"
Requires-Dist: typer-helptree>=0.2.12
Requires-Dist: blindwindow>=0.1.5
Provides-Extra: pyinstaller
Requires-Dist: pyinstaller>=6.17.0; extra == "pyinstaller"
Provides-Extra: gui
Requires-Dist: maxson-gui-utils>=0.1.25; extra == "gui"
Provides-Extra: web
Requires-Dist: uvicorn>=0.34.3; python_version >= "3.9" and extra == "web"
Requires-Dist: msgspec>=0.19.0; python_version >= "3.9" and extra == "web"
Requires-Dist: starlette>=0.50.0; python_version >= "3.10" and extra == "web"
Requires-Dist: starlette>=0.47.3; python_version == "3.9.*" and extra == "web"
Requires-Dist: python-multipart>=0.0.20; extra == "web"
Provides-Extra: kivy
Requires-Dist: kivy>=2.3.1; extra == "kivy"
Provides-Extra: buildozer
Requires-Dist: buildozer; extra == "buildozer"
Dynamic: license-file

# maxson-build-utils

Centralized org tooling for PyInstaller, DMG, AppImage, DEB, PYZ, etc.

A convention-optional build and deployment framework, with an opinionated Maxson project scaffold available as a convenience.

The central secret sauce is argument and variable value routing from disk. Icons, references, descriptions, names, paths, it can all be inferred or drawn. We leverage the .persist file where necessary to achieve this but ideally we draw values from the pyproject.toml file and form other expected standard paths.

In this way, wrapped CLI tools like create-dmg or pyonstaller can instead draw in determinstic argument values instead of requiring explicit flags.

Package scaffolding precedes building in most cases, so that manifest files are available.

If you frequently build and distribute Python applications and find yourself repeating the same configuration steps, this tool can significantly accelerate your development and simplify the long-term maintenance of your projects.

## Spotlight IT

ChatGPT or Gemini can provide good Python core logic.
"Fix my problem, tell me the library, write a single script, give me some functions with some arguments."

But how do you run that solution on other computers? For coworkers? For contractors? 

maxson-build-utils provides you with an opinionated canvas. Drop in your special core, wire up the args in the functions to the CLI and the GUI, run the builds, and then you've got a one way ticket to the Windows store. IT will probably say yes.

Shadow IT? No, Spotlight IT

## Installation

```bash
pipx install "maxson-build-utils[pyinstaller]"
```

## Quick Start

Scaffold and edit a new project

```bash
mkdir my-project
cd my-project
mbu init all
# edit core.py with special logic
# edit cli.py and gui.py to expose core features
# edit pyproject.toml to add new dependecies

# sync the local new venv
uv sync --group dev --extra gui --extra pyinstaller
```

Build local artifacts
```bash
mbu build shiv
mbu build pyinstaller
```

Leverage the batteries-included github runners by pushing to github.
This will give you files that may be submitted to the Windows Store, the Apple store, and Linux distribution.
```
git tag v0.1.0
git push origin v0.1.0
# Runners are designed to build and upload artifacts to the release.
gh release create v0.1.0 --title "my-project v0.1.0"
```

## Helptree

See the `maxson-build-utils` Typer CLI structure.

```
maxson-build-utils helptree
```

<p align="center">
  <img src="https://raw.githubusercontent.com/City-of-Memphis-Wastewater/maxson-build-utils/main/assets/maxson-build-utils_v0.1.44_helptree.svg" width="100%" alt="SVG of the CLI helptree">
</p>
