python-build-tools
A toolkit containing many powerful utilities, including:
- OS utilities (buildtools.os_utils)
- Indented logging with colorama support (buildtools.bt_logging.log)
- The powerful Maestro build management system (buildtools.maestro)
- A powerful VCS repository wrapper system (buildtools.repo)
- A mess of other random things.
This is mostly a personal toolkit that grew out of control.
os_utils
from buildtools import os_utils
# Ensure test/ exists
os_utils.ensureDirExists('test')
# Get copy of current environmental variables.
ENV = os_utils.ENV.clone()
# Add .bin/ to the beginning of PATH in our virtual environment
ENV.prependTo('PATH', '.bin/')
# Remove any duplicate entries from PATH
ENV.removeDuplicatedEntries('PATH')
# Find gcc in our virtual environment (checks PATHEXT on Windows, too!)
# Returns the path to gcc, or None if it couldn't be found.
GCC = ENV.which('gcc')
# Ensure bash exists before continuing (same rules as above)
ENV.assertWhich('bash')
# Bring up gcc's help page. Crash if non-0 exit code, echo command to console, and output STDOUT/STDERR to console.
os_utils.cmd([GCC, '--help'], critical=True, echo=True, show_output=True)
Logging
from buildtools import log
def a():
log.info('This will be indented if a() is called in a log block.')
log.info('No indentation, yet.')
with log.warning('A warning. Next line will be indented.'):
log.error('Error!')
with log.info('The following function\'s log output will be indented by another layer.')
a()
log.critical('So will %s!', 'this')
Maestro
Maestro is currently synchronous, with plans to make it async.
from buildtools.maestro import BuildMaestro
from buildtools.maestro.fileio import ReplaceTextTarget
from buildtools.maestro.coffeescript import CoffeeBuildTarget
from buildtools.maestro.web import SCSSBuildTarget, SCSSConvertTarget
bm = BuildMaestro()
# Compile CoffeeScript to JS
bm.add(CoffeeBuildTarget('htdocs/js/vgws.js', ['coffee/src/vgws.coffee']))
bm.add(CoffeeBuildTarget('htdocs/js/editpoll.multichoice.js', ['coffee/editpoll.multichoice.coffee'], dependencies=['htdocs/js/vgws.js']))
bm.add(CoffeeBuildTarget('htdocs/js/editpoll.option.js', ['coffee/editpoll.editpoll.coffee'], dependencies=['htdocs/js/vgws.js']))
# Convert CSS to SCSS
bm.add(SCSSBuildTarget('htdocs/css/style.css', ['style/style.scss'], [], import_paths=['style'], compass=True))
# Compile, taking dependencies into count when ordering operations.
bm.run()
# Same as above, but providing command line arguments such as --clean, and --rebuild.
bm.as_app()
Metadata
Release files for pybuildtools 0.7.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pybuildtools-0.7.9.tar.gz | 78.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pybuildtools-0.7.9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 216.1 kB
Release files / pybuildtools-0.7.9.tar.gz
| Download URL | pybuildtools-0.7.9.tar.gz |
|---|---|
| Size | 78.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
847edff01009915ed5c453d7238d04d5c019a8efbbd2c40f325df990686036a9
|
|
BLAKE2b-256 checksum How to use checksums |
887f95e7c6cdd36456b35e3abafd3936669baac0b1da0d73268069042138abfe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / pybuildtools-0.7.9-py3-none-any.whl
| Download URL | pybuildtools-0.7.9-py3-none-any.whl |
|---|---|
| Size | 138.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
49831c2ddfef795bc386f86ca4d1788556e3f170f0e08bc8e8a518085974a23d
|
|
BLAKE2b-256 checksum How to use checksums |
85b853fe6f091bf719949cbb4097b69139072b276ab205dcad710dd21705c2b1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|