1 Commits

Author SHA1 Message Date
Jamie Hardt
8e466ea9fc Added poetry.lock to gitignore 2025-05-24 22:29:06 -07:00
36 changed files with 83 additions and 102 deletions

4
.flake8 Normal file
View File

@@ -0,0 +1,4 @@
[flake8]
per-file-ignores =
ptulsconv/__init__.py: F401
ptulsconv/docparser/__init__.py: F401

View File

@@ -16,7 +16,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] python-version: [3.8, 3.9, "3.10", "3.11", "3.12"]
steps: steps:
- uses: actions/checkout@v2.5.0 - uses: actions/checkout@v2.5.0
@@ -27,11 +27,15 @@ jobs:
- name: Install dependencies - name: Install dependencies
run: | run: |
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install . python -m pip install flake8 pytest
pip install --group dev . pip install -e .
- name: Lint with ruff - name: Lint with flake8
run: | run: |
ruff check src # stop the build if there are Python syntax errors or undefined names
flake8 ptulsconv tests --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 ptulsconv tests --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest - name: Test with pytest
run: | run: |
pytest pytest
flake8 ptulsconv

View File

@@ -26,4 +26,14 @@ jobs:
- name: Build package - name: Build package
run: python -m build run: python -m build
- name: pypi-publish - name: pypi-publish
uses: pypa/gh-action-pypi-publish@v1.13.0 uses: pypa/gh-action-pypi-publish@v1.12.4
# - name: Report to Mastodon
# uses: cbrgm/mastodon-github-action@v1.0.1
# with:
# message: |
# I just released a new version of ptulsconv, my ADR cue sheet generator!
# #python #protools #pdf #filmmaking
# ${{ github.server_url }}/${{ github.repository }}
# env:
# MASTODON_URL: ${{ secrets.MASTODON_URL }}
# MASTODON_ACCESS_TOKEN: ${{ secrets.MASTODON_ACCESS_TOKEN }}

2
.gitignore vendored
View File

@@ -109,3 +109,5 @@ lcov.info
.vim .vim
.vscode .vscode
poetry.lock

View File

@@ -10,15 +10,10 @@ build:
os: ubuntu-20.04 os: ubuntu-20.04
tools: tools:
python: "3.10" python: "3.10"
jobs: # You can also specify other tool versions:
pre_install: # nodejs: "16"
- pip install --upgrade --upgrade-strategy only-if-needed --group doc . # rust: "1.55"
build: # golang: "1.17"
html:
python -m sphinx -T -b html -d _build/doctrees -D language=en . $READTHEDOCS_OUTPUT/html
post_build:
- echo "Command run at 'post_build' step"
- echo `date`
# Build documentation in the docs/ directory with Sphinx # Build documentation in the docs/ directory with Sphinx
sphinx: sphinx:
@@ -28,13 +23,10 @@ sphinx:
formats: formats:
- pdf - pdf
# FIXME: We should be installing the `doc` dependency group and not the `doc`
# extra.
#Optionally declare the Python requirements required to build your docs #Optionally declare the Python requirements required to build your docs
# python: python:
# install: install:
# - method: pip - method: pip
# path: . path: .
# extra_requirements: extra_requirements:
# - doc - doc

View File

@@ -23,10 +23,6 @@ The easiest way to install on your site is to use `pip`:
% pip3 install ptulsconv % pip3 install ptulsconv
If you are using `uv` you can also do a tool install...
% uv tool install ptulsconv
This will install the necessary libraries on your host and gives you This will install the necessary libraries on your host and gives you
command-line access to the tool through an entry-point `ptulsconv`. In a command-line access to the tool through an entry-point `ptulsconv`. In a
terminal window type `ptulsconv -h` for a list of available options. terminal window type `ptulsconv -h` for a list of available options.

View File

@@ -3,7 +3,6 @@
# For the full list of built-in configuration values, see the documentation: # For the full list of built-in configuration values, see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html # https://www.sphinx-doc.org/en/master/usage/configuration.html
import importlib
import sys import sys
import os import os
@@ -16,9 +15,9 @@ import ptulsconv
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
project = 'ptulsconv' project = 'ptulsconv'
copyright = '2019-2025 Jamie Hardt. All rights reserved' copyright = '2019-2023 Jamie Hardt. All rights reserved'
version = "Version 2" # author = ptulsconv.__author__
release = importlib.metadata.version("ptulsconv") release = ptulsconv.__version__
# -- General configuration --------------------------------------------------- # -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration

View File

@@ -6,12 +6,7 @@ Usage Form
Invocations of ptulsconv take the following form: Invocations of ptulsconv take the following form:
ptulsconv [options] [IN_FILE] ptulsconv [options] IN_FILE
`IN_FILE` is a Pro Tools text export in UTF-8 encoding. If `IN_FILE` is
missing, `ptulsconv` will attempt to connect to Pro Tools and read cue data
from the selected tracks of the currently-open session.
Flags Flags

3
ptulsconv/__init__.py Normal file
View File

@@ -0,0 +1,3 @@
"""
Parse and convert Pro Tools text exports
"""

View File

@@ -2,10 +2,7 @@ from optparse import OptionParser, OptionGroup
import datetime import datetime
import sys import sys
import importlib.metadata from ptulsconv import __name__, __copyright__
from ptulsconv import __name__
import ptulsconv
from ptulsconv.commands import convert from ptulsconv.commands import convert
from ptulsconv.reporting import print_status_style, \ from ptulsconv.reporting import print_status_style, \
print_banner_style, print_section_header_style, \ print_banner_style, print_section_header_style, \
@@ -85,9 +82,7 @@ def main():
parser.add_option_group(informational_options) parser.add_option_group(informational_options)
version = importlib.metadata.version(ptulsconv.__name__) print_banner_style(__copyright__)
print_banner_style(f"{ptulsconv.__name__} - version {version}")
print_banner_style(ptulsconv.__copyright__)
(options, args) = parser.parse_args(sys.argv) (options, args) = parser.parse_args(sys.argv)

View File

@@ -55,8 +55,8 @@ def output_adr_csv(lines: List[ADRLine], time_format: TimecodeFormat):
directories for each character number and name pair, and within that directories for each character number and name pair, and within that
directory, creates a CSV file for each reel. directory, creates a CSV file for each reel.
""" """
reels = set([ln.reel for ln in lines])
reels: set[str | None] = set([ln.reel for ln in lines])
for n, name in [(n.character_id, n.character_name) for n in lines]: for n, name in [(n.character_id, n.character_name) for n in lines]:
dir_name = "%s_%s" % (n, name) dir_name = "%s_%s" % (n, name)
os.makedirs(dir_name, exist_ok=True) os.makedirs(dir_name, exist_ok=True)

View File

@@ -2,7 +2,4 @@
Docparser module Docparser module
""" """
from .pt_doc_parser import parse_document from .pt_doc_parser import parse_document
__all__ = [parse_document]

View File

@@ -79,13 +79,13 @@ def make_doc_template(page_size, filename, document_title,
header_box, page_box = page_box.split_y(0.75 * inch, direction='d') header_box, page_box = page_box.split_y(0.75 * inch, direction='d')
title_box, report_box = header_box.split_x(3.5 * inch, direction='r') title_box, report_box = header_box.split_x(3.5 * inch, direction='r')
def on_page_lambda(c, _): on_page_lambda = (lambda c, _:
draw_header_footer(c, report_box, title_box, draw_header_footer(c, report_box, title_box,
footer_box, title=title, footer_box, title=title,
supervisor=supervisor, supervisor=supervisor,
document_subheader=document_subheader, document_subheader=document_subheader,
client=client, client=client,
doc_title=document_header) doc_title=document_header))
frames = [Frame(page_box.min_x, page_box.min_y, frames = [Frame(page_box.min_x, page_box.min_y,
page_box.width, page_box.height)] page_box.width, page_box.height)]

View File

@@ -1,60 +1,49 @@
[project] [project]
name = "ptulsconv" name = "ptulsconv"
version = "4.0.0" license = { file = "LICENSE" }
description = "Read Pro Tools Text exports and generate PDF ADR Reports, JSON"
readme = "README.md"
requires-python = ">=3.9"
license-files = ["LICENSE"]
keywords = ["text-processing", "parsers", "film",
"broadcast", "editing", "editorial"]
classifiers = [ classifiers = [
'License :: OSI Approved :: MIT License', 'License :: OSI Approved :: MIT License',
'Topic :: Multimedia', 'Topic :: Multimedia',
'Topic :: Multimedia :: Sound/Audio', 'Topic :: Multimedia :: Sound/Audio',
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Development Status :: 5 - Production/Stable", "Development Status :: 5 - Production/Stable",
"Topic :: Text Processing :: Filters" "Topic :: Text Processing :: Filters"
] ]
authors = [{name = "Jamie Hardt", email = "<jamiehardt@me.com>"}] requires-python = ">=3.8"
dependencies = [ keywords = ["text-processing", "parsers", "film",
"parsimonious>=0.10.0", "broadcast", "editing", "editorial"]
"py-ptsl>=600.0.0",
"reportlab>=4.4.4", [tool.poetry]
"tqdm>=4.67.1", name = "ptulsconv"
] version = "2.2.2"
description = "Read Pro Tools Text exports and generate PDF ADR Reports, JSON"
authors = ["Jamie Hardt <jamiehardt@me.com>"]
license = "MIT"
readme = "README.md"
[tool.poetry.dependencies]
python = "^3.8"
parsimonious = "^0.10.0"
tqdm = "^4.67.1"
reportlab = "^4.4.1"
py-ptsl = "^101.1.0"
[tool.poetry.extras]
doc = ['sphinx', 'sphinx_rtd_theme']
[tool.poetry.scripts]
wavinfo = 'ptulsconv.__main__:main'
# [tool.uv.build-backend]
# data = { headers = "include/headers", scripts = "bin" }
[project.urls] [project.urls]
Source = 'https://github.com/iluvcapra/ptulsconv' Source = 'https://github.com/iluvcapra/ptulsconv'
Issues = 'https://github.com/iluvcapra/ptulsconv/issues' Issues = 'https://github.com/iluvcapra/ptulsconv/issues'
Documentation = 'https://ptulsconv.readthedocs.io/' Documentation = 'https://ptulsconv.readthedocs.io/'
[project.optional-dependencies]
doc = [
"sphinx>=7.4.7",
"sphinx-rtd-theme>=3.0.2",
]
[project.scripts]
ptulsconv = "ptulsconv:__main__.main"
[build-system] [build-system]
requires = ["uv_build>=0.8.18,<0.9.0"] requires = ["poetry-core"]
build-backend = "uv_build" build-backend = "poetry.core.masonry.api"
[dependency-groups]
dev = [
"ruff>=0.13.1",
]
doc = [
"sphinx>=7.4.7",
"sphinx-rtd-theme>=3.0.2",
]

View File

@@ -1,5 +0,0 @@
"""
Parse and convert Pro Tools text exports
"""
__copyright__ = "ptulsconv (c) 2025 Jamie Hardt. All rights reserved."