5 Commits

Author SHA1 Message Date
a8f35a9ffc twiddle, nudge version number 2025-12-18 10:18:04 -08:00
Jamie Hardt
242f2e08d5 Merge pull request #20 from iluvcapra/19-unusual-edl
Tolerant Parsing Mode
2025-12-18 10:06:07 -08:00
610d406e97 flake8 2025-12-17 15:13:49 -08:00
28307608fc Added raw ASC_SOP line method 2025-12-17 15:12:34 -08:00
9ab3804c89 Removed explicit imports of pycmx 2025-12-17 15:09:05 -08:00
7 changed files with 37 additions and 24 deletions

View File

@@ -14,7 +14,7 @@ The `pycmx` package parses a CMX 3600 EDL and its most most common variations.
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.
* An more relaxed "tolerant" mode allows parsing of an EDL file where columns
* 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

View File

@@ -1,8 +1,8 @@
# pycmx
# (c) 2018-2025 Jamie Hardt
from pycmx.cdl import AscSopComponents, FramecountTriple
from pycmx.statements import (
from .cdl import AscSopComponents, FramecountTriple
from .statements import (
StmtCdlSat,
StmtCdlSop,
StmtFrmc,
@@ -177,6 +177,16 @@ class Edit:
return self._asc_sop_statement.cdl_sop
@property
def asc_sop_raw(self) -> Optional[str]:
"""
ASC CDL Slope-Offset-Power statement raw line
"""
if self._asc_sop_statement is None:
return None
return self._asc_sop_statement.line
@property
def asc_sat(self) -> Optional[float]:
"""

View File

@@ -1,8 +1,8 @@
# pycmx
# (c) 2018-2025 Jamie Hardt
from pycmx.statements import (StmtCorruptRemark, StmtTitle, StmtEvent,
StmtUnrecognized, StmtSourceUMID)
from .statements import (StmtCorruptRemark, StmtTitle, StmtEvent,
StmtUnrecognized, StmtSourceUMID)
from .event import Event
from .channel_map import ChannelMap

View File

@@ -1,10 +1,9 @@
# pycmx
# (c) 2023-2025 Jamie Hardt
from pycmx.statements import StmtFrmc
from .parse_cmx_statements import (
StmtEvent, StmtClipName, StmtSourceFile, StmtAudioExt, StmtUnrecognized,
StmtEffectsName, StmtCdlSop, StmtCdlSat)
from .statements import (StmtFrmc, StmtEvent, StmtClipName, StmtSourceFile,
StmtAudioExt, StmtUnrecognized, StmtEffectsName,
StmtCdlSop, StmtCdlSat)
from .edit import Edit
from typing import List, Generator, Optional, Tuple, Any

View File

@@ -4,7 +4,7 @@
import re
from typing import TextIO, List
from pycmx.cdl import AscSopComponents, Rgb
from .cdl import AscSopComponents, Rgb
from .statements import (StmtCdlSat, StmtCdlSop, StmtCorruptRemark, StmtFrmc,
StmtRemark, StmtTitle, StmtUnrecognized, StmtFCM,
@@ -60,9 +60,8 @@ def _parse_cmx3600_line(line: str, line_number: int,
source_field_len = len(line) - (event_field_len + 65)
try:
return _parse_columns_for_standard_form(line, event_field_len,
source_field_len,
line_number)
return _parse_columns_for_standard_form(
line, event_field_len, source_field_len, line_number)
except EventFormError:
if tolerant:
@@ -134,15 +133,19 @@ def _parse_remark(line, line_number) -> object:
else:
try:
return StmtCdlSop(cdl_sop=AscSopComponents(
slope=Rgb(red=float(v[0][0]), green=float(v[0][1]),
blue=float(v[0][2])),
offset=Rgb(red=float(v[1][0]), green=float(v[1][1]),
blue=float(v[1][2])),
power=Rgb(red=float(v[2][0]), green=float(v[2][1]),
blue=float(v[2][2]))
),
line_number=line_number)
return StmtCdlSop(line=line,
cdl_sop=AscSopComponents(
slope=Rgb(red=float(v[0][0]),
green=float(v[0][1]),
blue=float(v[0][2])),
offset=Rgb(red=float(v[1][0]),
green=float(v[1][1]),
blue=float(v[1][2])),
power=Rgb(red=float(v[2][0]),
green=float(v[2][1]),
blue=float(v[2][2]))
),
line_number=line_number)
except ValueError as e:
return StmtCorruptRemark('ASC_SOP', e, line_number)

View File

@@ -3,7 +3,7 @@
from typing import Any, NamedTuple
from pycmx.cdl import AscSopComponents
from .cdl import AscSopComponents
# type str = str
@@ -50,6 +50,7 @@ class StmtSourceFile(NamedTuple):
class StmtCdlSop(NamedTuple):
line: str
cdl_sop: AscSopComponents[float]
line_number: int

View File

@@ -1,6 +1,6 @@
[tool.poetry]
name = "pycmx"
version = "1.4.0"
version = "1.5.0"
description = "Python CMX 3600 Edit Decision List Parser"
authors = ["Jamie Hardt <jamiehardt@me.com>"]
license = "MIT"