mirror of
https://github.com/iluvcapra/pycmx.git
synced 2025-12-31 00:40:57 +00:00
2
.flake8
2
.flake8
@@ -1,5 +1,5 @@
|
||||
[flake8]
|
||||
per-file-ignores =
|
||||
pycmx/__init__.py: F401
|
||||
src/pycmx/__init__.py: F401
|
||||
tests/__init__.py: F401
|
||||
|
||||
|
||||
5
.github/workflows/python-package.yml
vendored
5
.github/workflows/python-package.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
|
||||
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
@@ -26,8 +26,7 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
python -m pip install flake8 pytest
|
||||
python -m pip install -e .
|
||||
python -m pip install -e .[dev]
|
||||
- name: Lint with flake8
|
||||
run: |
|
||||
# stop the build if there are Python syntax errors or undefined names
|
||||
|
||||
1
.python-version
Normal file
1
.python-version
Normal file
@@ -0,0 +1 @@
|
||||
3.13
|
||||
@@ -9,11 +9,11 @@ version: 2
|
||||
build:
|
||||
os: ubuntu-20.04
|
||||
tools:
|
||||
python: "3.10"
|
||||
# You can also specify other tool versions:
|
||||
# nodejs: "16"
|
||||
# rust: "1.55"
|
||||
# golang: "1.17"
|
||||
python: "3.13"
|
||||
jobs:
|
||||
install:
|
||||
- pip install --upgrade pip
|
||||
- pip install --group 'doc'
|
||||
|
||||
# Build documentation in the docs/ directory with Sphinx
|
||||
sphinx:
|
||||
@@ -28,5 +28,3 @@ python:
|
||||
install:
|
||||
- method: pip
|
||||
path: .
|
||||
extra_requirements:
|
||||
- doc
|
||||
|
||||
@@ -37,7 +37,7 @@ The `pycmx` package parses a CMX 3600 EDL and its most most common variations.
|
||||
### Opening and Parsing EDL Files
|
||||
```
|
||||
>>> import pycmx
|
||||
>>> with open("tests/edls/TEST.edl") as f
|
||||
>>> with open("tests/edls/TEST.edl") as f:
|
||||
... edl = pycmx.parse_cmx3600(f)
|
||||
...
|
||||
>>> edl.title
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
[tool.poetry]
|
||||
[project]
|
||||
name = "pycmx"
|
||||
version = "1.5.0"
|
||||
description = "Python CMX 3600 Edit Decision List Parser"
|
||||
authors = ["Jamie Hardt <jamiehardt@me.com>"]
|
||||
license = "MIT"
|
||||
authors = [{name = "Jamie Hardt", email= "<jamiehardt@me.com>"}]
|
||||
license-files = ["LICENSE"]
|
||||
readme = "README.md"
|
||||
keywords = [
|
||||
'parser',
|
||||
'film',
|
||||
'broadcast'
|
||||
]
|
||||
requires-python = '>3.8'
|
||||
classifiers = [
|
||||
'Development Status :: 5 - Production/Stable',
|
||||
'License :: OSI Approved :: MIT License',
|
||||
@@ -21,20 +22,29 @@ classifiers = [
|
||||
'Programming Language :: Python :: 3.10',
|
||||
'Programming Language :: Python :: 3.11',
|
||||
'Programming Language :: Python :: 3.12',
|
||||
'Programming Language :: Python :: 3.13'
|
||||
'Programming Language :: Python :: 3.13',
|
||||
'Programming Language :: Python :: 3.14'
|
||||
]
|
||||
homepage = "https://github.com/iluvcapra/pycmx"
|
||||
documentation = "https://pycmx.readthedocs.io/"
|
||||
repository = "https://github.com/iluvcapra/pycmx.git"
|
||||
urls.Tracker = "https://github.com/iluvcapra/pycmx/issues"
|
||||
|
||||
[tool.poetry.extras]
|
||||
[project.optional-dependencies]
|
||||
doc = [
|
||||
'sphinx >= 5.3.0',
|
||||
'sphinx_rtd_theme >= 1.1.1'
|
||||
]
|
||||
dev = [
|
||||
'flake8',
|
||||
'pytest'
|
||||
]
|
||||
|
||||
[project.urls]
|
||||
Homepage = "https://github.com/iluvcapra/pycmx"
|
||||
Documentation = "https://pycmx.readthedocs.io/"
|
||||
Repository = "https://github.com/iluvcapra/pycmx.git"
|
||||
Tracker = "https://github.com/iluvcapra/pycmx/issues"
|
||||
|
||||
[dependency-groups]
|
||||
doc = ['sphinx', 'sphinx_rtd_theme']
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.8"
|
||||
sphinx = { version='>= 5.3.0', optional=true}
|
||||
sphinx_rtd_theme = {version ='>= 1.1.1', optional=true}
|
||||
|
||||
[tool.pyright]
|
||||
typeCheckingMode = "basic"
|
||||
@@ -52,5 +62,5 @@ disable = [
|
||||
]
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core"]
|
||||
build-backend = "poetry.core.masonry.api"
|
||||
requires = ["uv_build>=0.9.18,<0.10.0"]
|
||||
build-backend = "uv_build"
|
||||
|
||||
@@ -35,7 +35,6 @@ class Edit:
|
||||
asc_sat_statement: Optional[StmtCdlSat] = None,
|
||||
frmc_statement: Optional[StmtFrmc] = None,
|
||||
) -> None:
|
||||
# Assigning types for the attributes explicitly
|
||||
self._edit_statement: StmtEvent = edit_statement
|
||||
self._audio_ext: Optional[StmtAudioExt] = audio_ext_statement
|
||||
self._clip_name_statement: Optional[StmtClipName] = clip_name_statement
|
||||
@@ -51,8 +50,8 @@ class Edit:
|
||||
def line_number(self) -> int:
|
||||
"""
|
||||
Get the line number for the "standard form" statement associated with
|
||||
this edit. Line numbers a zero-indexed, such that the
|
||||
"TITLE:" record is line zero.
|
||||
this edit. Line numbers a zero-indexed, such that the "TITLE:" record
|
||||
is line zero.
|
||||
"""
|
||||
return self._edit_statement.line_number
|
||||
|
||||
@@ -180,7 +179,7 @@ class Edit:
|
||||
@property
|
||||
def asc_sop_raw(self) -> Optional[str]:
|
||||
"""
|
||||
ASC CDL Slope-Offset-Power statement raw line
|
||||
ASC CDL Slope-Offset-Power statement raw line.
|
||||
"""
|
||||
if self._asc_sop_statement is None:
|
||||
return None
|
||||
@@ -190,7 +189,7 @@ class Edit:
|
||||
@property
|
||||
def asc_sat(self) -> Optional[float]:
|
||||
"""
|
||||
Get ASC CDL saturation value for clip, if present
|
||||
Get ASC CDL saturation value for clip, if present.
|
||||
"""
|
||||
if self._asc_sat_statement is None:
|
||||
return None
|
||||
@@ -12,7 +12,7 @@ from typing import Any, Generator
|
||||
class EditList:
|
||||
"""
|
||||
Represents an entire edit decision list as returned by
|
||||
:func:`~pycmx.parse_cmx3600()`.
|
||||
:func:`~pycmx.parse_cmx_events.parse_cmx3600()`.
|
||||
"""
|
||||
|
||||
def __init__(self, statements: list):
|
||||
@@ -5,8 +5,6 @@ from typing import Any, NamedTuple
|
||||
|
||||
from .cdl import AscSopComponents
|
||||
|
||||
# type str = str
|
||||
|
||||
|
||||
class StmtTitle(NamedTuple):
|
||||
title: str
|
||||
@@ -24,7 +24,7 @@ class Transition:
|
||||
@property
|
||||
def kind(self) -> Optional[str]:
|
||||
"""
|
||||
Return the kind of transition: Cut, Wipe, etc
|
||||
Return the kind of transition: Cut, Wipe, etc.
|
||||
"""
|
||||
if self.cut:
|
||||
return Transition.Cut
|
||||
@@ -56,7 +56,8 @@ class Transition:
|
||||
|
||||
@property
|
||||
def effect_duration(self) -> int:
|
||||
"""The duration of this transition, in frames of the record target.
|
||||
"""
|
||||
The duration of this transition, in frames of the record target.
|
||||
|
||||
In the event of a key event, this is the duration of the fade in.
|
||||
"""
|
||||
Reference in New Issue
Block a user