Skip to main content

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.

Super-Linter


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:

  • ambientLight
  • blendShape
  • circle
  • cone
  • connectJoint
  • CreateJiggleDeformer
  • createNode
  • CreateWrap
  • cylinder
  • deltaMush
  • directionalLight
  • ikHandle
  • ikHandleDisplayScale
  • ikSolver
  • ikSystemInfo
  • insertJoint
  • joint
  • jointDisplayScale
  • lattice
  • ls
  • mirrorJoint
  • nurbsCube
  • nurbsPlane
  • nurbsSquare
  • pointLight
  • polyCone
  • polyCube
  • polyCylinder
  • polyHelix
  • polyPipe
  • polyPlane
  • polyPlatonicSolid
  • polyPrimitive
  • polyPrism
  • polyPyramid
  • polySphere
  • polyTorus
  • proximityWrap
  • removeJoint
  • sculpt
  • skinCluster
  • softMod
  • spaceLocator
  • sphere
  • spotLight
  • torus
  • wire

Regenerate wrappers and stubs with:

mayapy -m tools.generate

This command inspects the current Maya runtime, regenerates versioned node hierarchy snapshots, and regenerates command wrapper runtime/stub files from Maya help + tool metadata.

Generation internals and design notes live in docstrings under tools/.

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.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for maya-brew 0.5.0
File Size Uploaded Provenance
maya_brew-0.5.0.tar.gz 134.7 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for maya-brew 0.5.0
File Interpreter ABI Platform
maya_brew-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 246.9 kB

Release files / maya_brew-0.5.0.tar.gz

Download URL maya_brew-0.5.0.tar.gz
Size 134.7 kB
Tags Source
SHA-256 checksum
How to use checksums
2cb93c998fa04356de862bddbafc29fb7d76fb9bd73e53837edc85f8f04e9dfb
BLAKE2b-256 checksum
How to use checksums
eb2db9a7ad1c7aa1ec7bda4ddfa48ac67004125248ff052822529b0a5de9f6ee
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 24, 2026.

Transparency log

Release files / maya_brew-0.5.0-py3-none-any.whl

Download URL maya_brew-0.5.0-py3-none-any.whl
Size 112.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a9e4eb705329c7b57e62b94eab2256bbeb36c7ed067724340d8f18b52846a7a8
BLAKE2b-256 checksum
How to use checksums
eaa2a6a9b6d01f7c7967d65ff44840acd174ba29bbf5832487c0200e80ee3994
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 24, 2026.

Transparency log

Security for maya-brew 0.5.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.

Select from 2 files

Attestation for maya_brew-0.5.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 24, 2026.

Transparency log

A 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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page