Skip to content

Commit dea9c80

Browse files
committed
add support for python 3.13 (vfx platform 2026)
Signed-off-by: Roger Nelson <[email protected]>
1 parent 65e5ccf commit dea9c80

File tree

5 files changed

+25
-46
lines changed

5 files changed

+25
-46
lines changed

.github/workflows/python-package.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ jobs:
9393
strategy:
9494
matrix:
9595
os: [ubuntu-latest, windows-latest, macos-14, macos-latest]
96-
python-version: ["3.9", "3.10", "3.11", "3.12"]
96+
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
9797
include:
9898
- { os: ubuntu-latest, shell: bash }
9999
- { os: macos-latest, shell: bash }
@@ -179,7 +179,7 @@ jobs:
179179
macos-14,
180180
macos-latest,
181181
]
182-
python-build: ["cp39", "cp310", "cp311", "cp312"]
182+
python-build: ["cp39", "cp310", "cp311", "cp312", "cp313"]
183183
#exclude:
184184
# none currently
185185
# - { os: macos-latest, python-build: 'cp37' }

docs/requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
sphinx==5.3.0
1+
sphinx==7.3.7
22
readthedocs-sphinx-ext==2.1.9 # ??
33
sphinx-rtd-theme
4-
myst-parser==0.18.1
4+
myst-parser==3.0.1

docs/tutorials/otio-serialized-schema.md

Lines changed: 18 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -29,24 +29,23 @@ changes. If it needs to be updated and this file regenerated, run:
2929
```
3030
Adapters convert between OTIO and other formats.
3131
32-
Note that this class is not subclassed by adapters. Rather, an adapter is
33-
a python module that implements at least one of the following functions:
32+
Note that this class is not subclassed by adapters. Rather, an adapter is
33+
a python module that implements at least one of the following functions:
3434
35-
.. code-block:: python
35+
.. code-block:: python
3636
37-
write_to_string(input_otio)
38-
write_to_file(input_otio, filepath) (optionally inferred)
39-
read_from_string(input_str)
40-
read_from_file(filepath) (optionally inferred)
37+
write_to_string(input_otio)
38+
write_to_file(input_otio, filepath) (optionally inferred)
39+
read_from_string(input_str)
40+
read_from_file(filepath) (optionally inferred)
4141
42-
...as well as a small json file that advertises the features of the adapter
43-
to OTIO. This class serves as the wrapper around these modules internal
44-
to OTIO. You should not need to extend this class to create new adapters
45-
for OTIO.
42+
...as well as a small json file that advertises the features of the adapter
43+
to OTIO. This class serves as the wrapper around these modules internal
44+
to OTIO. You should not need to extend this class to create new adapters
45+
for OTIO.
4646
47-
For more information: https://opentimelineio.readthedocs.io/en/latest/tutorials/write-an-
47+
For more information: https://opentimelineio.readthedocs.io/en/latest/tutorials/write-an-
4848
adapter.html. # noqa
49-
5049
```
5150

5251
parameters:
@@ -84,10 +83,8 @@ parameters:
8483
*documentation*:
8584

8685
```
87-
8886
An object that can be composed within a :class:`~Composition` (such as :class:`~Track` or
8987
:class:`.Stack`).
90-
9188
```
9289

9390
parameters:
@@ -101,11 +98,9 @@ parameters:
10198
*documentation*:
10299

103100
```
104-
105101
Base class for an :class:`~Item` that contains :class:`~Composable`\s.
106102
107103
Should be subclassed (for example by :class:`.Track` and :class:`.Stack`), not used directly.
108-
109104
```
110105

111106
parameters:
@@ -207,10 +202,8 @@ parameters:
207202
*documentation*:
208203

209204
```
210-
211205
The RationalTime class represents a measure of time of :math:`rt.value/rt.rate` seconds.
212206
It can be rescaled into another :class:`~RationalTime`'s rate.
213-
214207
```
215208

216209
parameters:
@@ -224,11 +217,9 @@ parameters:
224217
*documentation*:
225218

226219
```
227-
228220
The TimeRange class represents a range in time. It encodes the start time and the duration,
229221
meaning that :meth:`end_time_inclusive` (last portion of a sample in the time range) and
230222
:meth:`end_time_exclusive` can be computed.
231-
232223
```
233224

234225
parameters:
@@ -261,14 +252,13 @@ parameters:
261252
```
262253
Defines an OTIO plugin Manifest.
263254
264-
This is considered an internal OTIO implementation detail.
255+
This is considered an internal OTIO implementation detail.
265256
266-
A manifest tracks a collection of plugins and enables finding them by name
267-
or other features (in the case of adapters, what file suffixes they
268-
advertise support for).
257+
A manifest tracks a collection of plugins and enables finding them by name
258+
or other features (in the case of adapters, what file suffixes they
259+
advertise support for).
269260
270-
For more information, consult the documentation.
271-
261+
For more information, consult the documentation.
272262
```
273263

274264
parameters:
@@ -287,8 +277,7 @@ parameters:
287277

288278
```
289279
A class of plugin that is encoded in a python module, exposed via a
290-
manifest.
291-
280+
manifest.
292281
```
293282

294283
parameters:
@@ -304,11 +293,9 @@ parameters:
304293
*documentation*:
305294

306295
```
307-
308296
A :class:`~Clip` is a segment of editable media (usually audio or video).
309297
310298
Contains a :class:`.MediaReference` and a trim on that media reference.
311-
312299
```
313300

314301
parameters:
@@ -420,7 +407,6 @@ parameters:
420407
*documentation*:
421408

422409
```
423-
424410
An ImageSequenceReference refers to a numbered series of single-frame image files. Each file can be
425411
referred to by a URL generated by the :class:`~ImageSequenceReference`.
426412
@@ -496,7 +482,6 @@ yield the first three target urls as:
496482
- ``file:///show/sequence/shot/sample_image_sequence.-0001.exr``
497483
- ``file:///show/sequence/shot/sample_image_sequence.0000.exr``
498484
- ``file:///show/sequence/shot/sample_image_sequence.0001.exr``
499-
500485
```
501486

502487
parameters:
@@ -520,9 +505,7 @@ parameters:
520505
*documentation*:
521506

522507
```
523-
524508
A time warp that applies a linear speed up or slow down across the entire clip.
525-
526509
```
527510

528511
parameters:
@@ -543,13 +526,11 @@ Instead it affects the speed of the media displayed within that item.
543526
*documentation*:
544527

545528
```
546-
547529
A marker indicates a marked range of time on an item in a timeline, usually with a name, color or
548530
other metadata.
549531
550532
The marked range may have a zero duration. The marked range is in the owning item's time coordinate
551533
system.
552-
553534
```
554535

555536
parameters:
@@ -566,12 +547,10 @@ parameters:
566547
*documentation*:
567548

568549
```
569-
570550
Represents media for which a concrete reference is missing.
571551
572552
Note that a :class:`~MissingReference` may have useful metadata, even if the location of the media
573553
is not known.
574-
575554
```
576555

577556
parameters:
@@ -587,7 +566,6 @@ parameters:
587566
*documentation*:
588567

589568
```
590-
591569
A container which can hold an ordered list of any serializable objects. Note that this is not a
592570
:class:`.Composition` nor is it :class:`.Composable`.
593571
@@ -598,7 +576,6 @@ a named collection.
598576
599577
A :class:`~SerializableCollection` is useful for serializing multiple timelines, clips, or media
600578
references to a single file.
601-
602579
```
603580

604581
parameters:

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,7 @@ def run(self):
320320
'Programming Language :: Python :: 3.10',
321321
'Programming Language :: Python :: 3.11',
322322
'Programming Language :: Python :: 3.12',
323+
'Programming Language :: Python :: 3.13',
323324
'Operating System :: OS Independent',
324325
'Natural Language :: English',
325326
],

src/py-opentimelineio/opentimelineio/console/autogen_serialized_datamodel.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import tempfile
1313
import sys
1414
import textwrap
15+
import inspect
1516

1617
import io
1718

@@ -297,7 +298,7 @@ def _write_documentation(model):
297298
label = model[cl]["OTIO_SCHEMA"]
298299

299300
if (cl.__doc__ is not None):
300-
docstring = cl.__doc__.split("\n")
301+
docstring = inspect.getdoc(cl).split("\n")
301302
new_docstring = []
302303
for line in docstring:
303304
line = textwrap.wrap(line, width=100,

0 commit comments

Comments
 (0)