py_aep
py_aep is a Python package for working with After Effects AEP files.
About
After Effects files (.aep) are mostly binary files, encoded in RIFX format. This package uses struct to parse .aep files and return an Application object containing a project, items, layers, effects and properties. The API is very close to the ExtendScript API, with a few nice additions like iterators.
Features
Supported
- Reading .aep files
- Creating a new empty project from scratch (
py_aep.new), replicating File > New > New Project - Saving to a new .aep file
- Modifying most properties, including some that are not accessible through ExtendScript such as gradients, render settings, 3D renderer options, output module settings, etc. (Differences from ExtendScript for more details)
- Adding and removing keyframes on any property - including mask paths, source text, markers, orientation and gradients - with static/animated transitions matching After Effects' own output
- Adding new compositions and folders, moving items between folders
- Creating layers: solids, nulls, shapes, cameras, lights, text (point, box and vertical text), and parametric 3D mesh layers (cube, sphere, plane, torus, cone, cylinder)
- Removing items and layers; moving and duplicating layers; replacing a layer's source item
- Importing footage files and image sequences, setting proxies, and selecting a single layer from layered
.psd/.psb/.ai/.pdffiles - Replacing a footage item's source, including rebinding to a specific layer of a layered file
- Variable font axes on text layers, and editing dropdown menu items (property parameters)
- Render queue management: adding compositions, removing and duplicating items, adding output modules, applying render/output templates from the AE preferences
- Essential Graphics, Essential Properties and alternate sources
- Preferences parsing for Render Queue Item / Output Module templates, New Composition / Project presets, ...
- Interpolation between numeric keyframe values
- Color Management: working and display space, footage interpretation and output module
Limited support
- Properties that are synthesized by After Effects at runtime and not stored in the binary are supported but some might be missing or inaccurate
- When adding effect properties to a layer or PropertyGroup, only effects that are already present in a .aep can be added
- Some Text layers attributes are missing
Not supported
- Expression evaluation
- Image sampling and rendering
- Layers, properties and keyframes selection
- Runtime things such as System information, UI state, etc.
Installation
uv (recommended)
uv add py-aep
pip
pip install py-aep
Getting started
import py_aep
app = py_aep.parse("myproject.aep")
project = app.project
comp = project.compositions[0]
# Modify composition settings
comp.frame_rate = 24
# Modify a layer property
comp.layers[0].transform.opacity.value = 50
# Save to a new file
project.save("modified.aep")
For more examples, see the Quick Start guide.
Roadmap
See the open issues for a list of proposed features and known issues.
If you encounter a bug, please submit an issue and attach a basic scene to reproduce your issue.
Contributing
See the full Contributing Guide on GitHub.
Contact
Aurore Delaunay - github.15@audel.ovh
Acknowledgments
Metadata
Release files for py-aep 0.16.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 | |
|---|---|---|---|
| py_aep-0.16.0.tar.gz | 1.2 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| py_aep-0.16.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.0 MB
Release files / py_aep-0.16.0.tar.gz
| Download URL | py_aep-0.16.0.tar.gz |
|---|---|
| Size | 1.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
283e165167c3d1ad12f50a740ecdff9b3c28632413f60e185016081ba4c8c4f5
|
|
BLAKE2b-256 checksum How to use checksums |
06a16e52e347a1e0f41fa599e3013baead06634a157f960ed407a9e04771bbb1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 11, 2026.
Transparency logRelease files / py_aep-0.16.0-py3-none-any.whl
| Download URL | py_aep-0.16.0-py3-none-any.whl |
|---|---|
| Size | 736.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c3538d19e98dad2c41e2ac236d15e9c3d1c244df33df9bb4c5ea328297af9dfa
|
|
BLAKE2b-256 checksum How to use checksums |
baeec6c27d22f83ba54aba3dab74d342f352864c427e8b9e4e783ac86f4b6362
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 11, 2026.
Transparency log