pycmx
The pycmx package parses a CMX 3600 EDL and its most most common variations.
Features
- The major variations of the CMX 3600: the standard, "File32", "File128" and long Adobe Premiere event numbers are automatically detected and properly read. Event number field and source name field sizes are determined dynamically for each statement for a high level of compliance at the expense of strictness.
- A more relaxed "tolerant" mode allows parsing of an EDL file where columns use non-standard widths.
- Preserves relationship between events and individual edits/clips.
- Remark or comment fields with common recognized forms are read and available to the client, including clip name and source file data.
- ASC CDL and FRMC/VFX framecount statements are parsed and decoded.
- Symbolically decodes transitions and audio channels.
- Does not parse or validate timecodes, does not enforce framerates, does not parameterize timecode or framerates in any way. This makes the parser more tolerant of EDLs with mixed rates.
- Unrecognized lines are accessible on the
EditListandEventclasses along with the line numbers, to help the client diagnose problems with a list and give the client the ability to extend the package with their own parsing code.
Usage
Opening and Parsing EDL Files
>>> import pycmx
>>> with open("tests/edls/TEST.edl") as f:
... edl = pycmx.parse_cmx3600(f)
...
>>> edl.title
'DC7 R1_v8.2'
Reading Events and Edits
EditList.events is a generator...
>>> events = list( edl.events )
>>> len(events)
120
>>> events[43].number
'044'
...and events contain 1...n edits.
>>> events[43].edits[0].source_in
'00:00:00:00'
>>> events[43].edits[0].transition.cut
True
>>> events[43].edits[0].record_out
'01:10:21:10'
Acessing Transitions and Enabled Channels
>>> events[41].edits[0].transition.dissolve
False
>>> events[41].edits[1].transition.dissolve
True
>>> events[41].edits[0].clip_name
'TC R1 V1.2 TEMP1 DX M.WAV'
>>> events[41].edits[1].clip_name
'TC R1 V6 TEMP2 M DX.WAV'
# parsed channel maps are also
# available to the client
>>> events[2].edits[0].channels.get_audio_channel(7)
True
>>> events[2].edits[0].channels.get_audio_channel(6)
False
>>> for c in events[2].edits[0].channels.channels:
... print(f"Audio channel {c} is present")
...
Audio channel 7 is present
>>> events[2].edits[0].channels.video
False
Metadata
Release files for pycmx 1.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pycmx-1.5.1.tar.gz | 11.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pycmx-1.5.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.6 kB
Release files / pycmx-1.5.1.tar.gz
| Download URL | pycmx-1.5.1.tar.gz |
|---|---|
| Size | 11.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ccaada765300ab2e7dfb64ed1016995c854986db6ed513e635e58e5a9bb92255
|
|
BLAKE2b-256 checksum How to use checksums |
7941b59c82fcf8428af859d6b1ac9422ee966e3ad7cd0b6ec1ea813aaa30cd29
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 17, 2026.
Transparency logRelease files / pycmx-1.5.1-py3-none-any.whl
| Download URL | pycmx-1.5.1-py3-none-any.whl |
|---|---|
| Size | 15.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
77d4d97e9c7bcd9d28e3b8744f7c6210977b1d8c70af6d0434da02e5e3adcf6e
|
|
BLAKE2b-256 checksum How to use checksums |
778c30403b29e3b619528b31d88aee31b757de64a808c8a16a39957af0bdfdb3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 17, 2026.
Transparency log