maya-brew
Status: Pre-Alpha – Interfaces are experimental and may change without notice. Pin exact versions if using in automation.
What you need after a long day of wrestling with Maya Python.
Overview
maya-brew aims to provide safer, more structured interaction patterns when scripting or tooling inside Autodesk Maya.
Goals:
- Reduce foot‑guns when using Python inside Maya
- Offer utilities that behave well with Maya’s quirks
Background
maya-brew draws inspiration from some of the ergonomic goals that motivated
PyMEL: making Maya’s Python interface feel more “Pythonic,” safer, and more
discoverable. PyMEL historically provided rich object wrappers around nodes, attributes, and other scene elements;
for many workflows this improved readability and reduced boilerplate.
However, over time several practical factors led to the decision to start a lightweight alternative instead of extending PyMEL itself:
- Scope & Complexity: PyMEL’s dynamic wrapping and layered abstractions can introduce startup overhead, indirection, and occasional debugging friction.
- Historical Churn: A long evolution, multiple contributors, and some legacy design choices make selective modernization non‑trivial.
- Maintenance & Momentum: While still usable, PyMEL no longer appears to have the same pace of active development or broad community push it once did.
- Adoption Fit: Many pipelines only need a thin set of safety/ergonomic helpers—not a full object layer over
maya.cmds.
Acknowledgment
PyMEL significantly influenced how many technical artists approach Maya scripting, and this project stands on that
conceptual foundation. maya-brew simply narrows the focus: take the useful ergonomic ideas, shed the heavy wrapping,
and keep to the canonical APIs.
Native node wrappers
User-facing exceptions are defined in maya_brew.exceptions. Catch specific
failures such as NoMatchingNodes, broader categories such as
NodeCastingException, or MayaBrewException for all library-defined errors.
Python node classes follow Maya's node-type inheritance, including intermediate
ancestors. cast selects the exact native class for an existing node;
direct constructors remain explicit.
from maya_brew.nodes.casting import cast
from maya_brew.nodes.node_types import Transform
node = cast("my_transform")
assert isinstance(node, Transform)
transform = cast("my_transform", Transform) # Typed and checked as Transform
Command wrappers
maya_brew.cmds provides typed wrappers around selected maya.cmds commands.
Wrapper docstrings describe differences from Maya's behavior. Use maya.cmds
directly for commands that are not yet wrapped.
Currently wrapped commands:
createNodelspolyPlane
Run mayapy -m tools.generate to regenerate signatures from Maya's command help
and tool-side metadata. Handwritten stubs supply command-specific typing where needed.
Generated hierarchies
Offline generation infrastructure lives in tools/node_hierarchy, outside the
installed runtime package. Its versioned outputs live exclusively in
src/maya_brew/nodes/_generated/maya_<version>:
| Artifact | Purpose |
|---|---|
classes.py |
Explicit, importable native classes |
constants.py |
TYPE_CLASSES mapping from Maya names to generated classes |
The runtime selects generated classes by Maya's major version, with runtime fallback for missing releases or types.
Metadata
Release files for maya-brew 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| maya_brew-0.3.0.tar.gz | 79.4 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| maya_brew-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 143.1 kB
Release files / maya_brew-0.3.0.tar.gz
| Download URL | maya_brew-0.3.0.tar.gz |
|---|---|
| Size | 79.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
80c5419c70a00263aa1e8cfe21772393db6476dac6071ec7fd33f042cfe93cf2
|
|
BLAKE2b-256 checksum How to use checksums |
6323f4cac9cb3d4bea9500ddd5e8e10c6cfe068b1b1ba61dea456e618022a04e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logRelease files / maya_brew-0.3.0-py3-none-any.whl
| Download URL | maya_brew-0.3.0-py3-none-any.whl |
|---|---|
| Size | 63.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9ca33245d1fc430f74071edff63ff569483c9de49ed25f67887453a9627deee5
|
|
BLAKE2b-256 checksum How to use checksums |
a2451a565de5b135b49f7800285f57852aed370fb2166cb09a4ef6a55440e74e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logSecurity for maya-brew 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for maya_brew-0.3.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.