Skip to content

Commit 4e4de96

Browse files
committed
Begin to setup and implement uv for package management
1 parent f0aac2b commit 4e4de96

File tree

3 files changed

+76
-71
lines changed

3 files changed

+76
-71
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,6 @@ cpp_cov_html/
2323
lcov_html_report/
2424
*.so
2525
*.pyd
26+
27+
# uv
28+
uv.lock

pyproject.toml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,65 @@ requires = [
66
]
77
build-backend = "setuptools.build_meta"
88

9+
[project]
10+
name = "OpenTimelineIO"
11+
version = "0.18.0.dev1"
12+
description = "Editorial interchange format and API"
13+
readme = "README.md"
14+
requires-python = ">=3.7, !=3.9.0"
15+
license = { text = "Apache-2.0" }
16+
authors = [
17+
{ name = "Contributors to the OpenTimelineIO project", email = "[email protected]" }
18+
]
19+
keywords = ["film", "tv", "editing", "editorial", "edit", "non-linear", "edl", "time"]
20+
classifiers = [
21+
"Development Status :: 4 - Beta",
22+
"Topic :: Multimedia :: Graphics",
23+
"Topic :: Multimedia :: Video",
24+
"Topic :: Multimedia :: Video :: Display",
25+
"Topic :: Multimedia :: Video :: Non-Linear Editor",
26+
"Topic :: Software Development :: Libraries :: Python Modules",
27+
"Programming Language :: Python :: 3",
28+
"Programming Language :: Python :: 3.7",
29+
"Programming Language :: Python :: 3.8",
30+
"Programming Language :: Python :: 3.9",
31+
"Programming Language :: Python :: 3.10",
32+
"Programming Language :: Python :: 3.11",
33+
"Operating System :: OS Independent",
34+
"Natural Language :: English",
35+
]
36+
37+
dependencies = [
38+
'importlib_metadata>=1.4; python_version < "3.8"',
39+
]
40+
41+
[project.urls]
42+
Homepage = "http://opentimeline.io"
43+
Source = "https://github.com/AcademySoftwareFoundation/OpenTimelineIO"
44+
Documentation = "https://opentimelineio.readthedocs.io/"
45+
Issues = "https://github.com/AcademySoftwareFoundation/OpenTimelineIO/issues"
46+
47+
[project.scripts]
48+
otiocat = "opentimelineio.console.otiocat:main"
49+
otioconvert = "opentimelineio.console.otioconvert:main"
50+
otiopluginfo = "opentimelineio.console.otiopluginfo:main"
51+
otiostat = "opentimelineio.console.otiostat:main"
52+
otiotool = "opentimelineio.console.otiotool:main"
53+
otioview = "opentimelineview.console:main"
54+
otioautogen_serialized_schema_docs = "opentimelineio.console.autogen_serialized_datamodel:main"
55+
56+
[project.optional-dependencies]
57+
dev = [
58+
"check-manifest",
59+
"flake8>=3.5",
60+
"coverage>=4.5",
61+
"urllib3>=1.24.3",
62+
]
63+
view = [
64+
'PySide2~=5.11; platform_machine=="x86_64"',
65+
'PySide6~=6.2; platform_machine=="aarch64"',
66+
]
67+
968
[tool.cibuildwheel.linux]
1069
archs = ["x86_64", "aarch64"]
1170

setup.py

Lines changed: 14 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
# SPDX-License-Identifier: Apache-2.0
44
# Copyright Contributors to the OpenTimelineIO project
55

6-
"""Setup.py for installing OpenTimelineIO
6+
"""Setup.py for installing OpenTimelineIO using setuptools.
77
8-
For more information:
9-
- see README.md
10-
- http://opentimeline.io
8+
This file is retained for compatibility and to handle the custom C++ build
9+
process via CMake. Project metadata, dependencies, and entry points are
10+
defined in pyproject.toml following PEP 621.
1111
"""
1212

1313
import multiprocessing
@@ -217,6 +217,7 @@ def cmake_install(self):
217217

218218

219219
# Metadata that gets stamped into the __init__ files during the build phase.
220+
# This might be removable in the future if version stamping is handled differently.
220221
PROJECT_METADATA = {
221222
"version": "0.18.0.dev1",
222223
"author": 'Contributors to the OpenTimelineIO project',
@@ -294,41 +295,11 @@ def run(self):
294295
OpenTimelineIO format."""
295296

296297
setup(
297-
name='OpenTimelineIO',
298-
description='Editorial interchange format and API',
299-
long_description=LONG_DESCRIPTION,
300-
long_description_content_type='text/markdown',
301-
url='http://opentimeline.io',
302-
project_urls={
303-
'Source':
304-
'https://github.com/AcademySoftwareFoundation/OpenTimelineIO',
305-
'Documentation':
306-
'https://opentimelineio.readthedocs.io/',
307-
'Issues':
308-
'https://github.com/AcademySoftwareFoundation/OpenTimelineIO/issues',
309-
},
310-
311-
classifiers=[
312-
'Development Status :: 4 - Beta',
313-
'Topic :: Multimedia :: Graphics',
314-
'Topic :: Multimedia :: Video',
315-
'Topic :: Multimedia :: Video :: Display',
316-
'Topic :: Multimedia :: Video :: Non-Linear Editor',
317-
'Topic :: Software Development :: Libraries :: Python Modules',
318-
'License :: OSI Approved :: Apache Software License',
319-
'Programming Language :: Python :: 3',
320-
'Programming Language :: Python :: 3.7',
321-
'Programming Language :: Python :: 3.8',
322-
'Programming Language :: Python :: 3.9',
323-
'Programming Language :: Python :: 3.10',
324-
'Programming Language :: Python :: 3.11',
325-
'Operating System :: OS Independent',
326-
'Natural Language :: English',
327-
],
328-
329-
keywords='film tv editing editorial edit non-linear edl time',
330-
331-
platforms='any',
298+
# name, version, description, author, license, etc. are in pyproject.toml
299+
# url, project_urls are in pyproject.toml
300+
# classifiers are in pyproject.toml
301+
# keywords are in pyproject.toml
302+
# platforms='any', # Handled by build system/wheels
332303

333304
package_data={
334305
'opentimelineio': [
@@ -356,38 +327,10 @@ def run(self):
356327
'opentimelineview': 'src/opentimelineview',
357328
},
358329

359-
# Disallow 3.9.0 because of https://github.com/python/cpython/pull/22670
360-
python_requires='>=3.7, !=3.9.0', # noqa: E501
361-
362-
install_requires=[
363-
'importlib_metadata>=1.4; python_version < "3.8"',
364-
],
365-
entry_points={
366-
'console_scripts': [
367-
'otiocat = opentimelineio.console.otiocat:main',
368-
'otioconvert = opentimelineio.console.otioconvert:main',
369-
'otiopluginfo = opentimelineio.console.otiopluginfo:main',
370-
'otiostat = opentimelineio.console.otiostat:main',
371-
'otiotool = opentimelineio.console.otiotool:main',
372-
'otioview = opentimelineview.console:main',
373-
(
374-
'otioautogen_serialized_schema_docs = '
375-
'opentimelineio.console.autogen_serialized_datamodel:main'
376-
),
377-
],
378-
},
379-
extras_require={
380-
'dev': [
381-
'check-manifest',
382-
'flake8>=3.5',
383-
'coverage>=4.5',
384-
'urllib3>=1.24.3'
385-
],
386-
'view': [
387-
'PySide2~=5.11; platform.machine=="x86_64"',
388-
'PySide6~=6.2; platform.machine=="aarch64"'
389-
]
390-
},
330+
# python_requires is in pyproject.toml
331+
# install_requires is in pyproject.toml
332+
# entry_points are in pyproject.toml
333+
# extras_require is in pyproject.toml
391334

392335
# because we need to open() the adapters manifest, we aren't zip-safe
393336
zip_safe=False,

0 commit comments

Comments
 (0)