Merge pull request #21 from iluvcapra/uv-build

PEP 621 compliance
This commit is contained in:
Jamie Hardt
2025-12-18 20:43:40 -08:00
committed by GitHub
17 changed files with 43 additions and 37 deletions

View File

@@ -1,5 +1,5 @@
[flake8]
per-file-ignores =
pycmx/__init__.py: F401
src/pycmx/__init__.py: F401
tests/__init__.py: F401

View File

@@ -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
View File

@@ -0,0 +1 @@
3.13

View File

@@ -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

View File

@@ -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

View File

@@ -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"

View File

@@ -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

View File

@@ -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):

View File

@@ -5,8 +5,6 @@ from typing import Any, NamedTuple
from .cdl import AscSopComponents
# type str = str
class StmtTitle(NamedTuple):
title: str

View File

@@ -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.
"""