diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 75912506d..fa3b768d0 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -93,7 +93,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest, macos-14, macos-latest] - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] include: - { os: ubuntu-latest, shell: bash } - { os: macos-latest, shell: bash } @@ -179,7 +179,7 @@ jobs: macos-14, macos-latest, ] - python-build: ["cp39", "cp310", "cp311", "cp312"] + python-build: ["cp39", "cp310", "cp311", "cp312", "cp313"] #exclude: # none currently # - { os: macos-latest, python-build: 'cp37' } diff --git a/docs/conf.py b/docs/conf.py index a6fd5afbe..be34d0cdc 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -44,7 +44,6 @@ # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output html_theme = "sphinx_rtd_theme" -html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] htmlhelp_basename = f'{project.lower()}doc' diff --git a/docs/requirements.txt b/docs/requirements.txt index b7ee962d5..f3d8c4a44 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,4 +1,4 @@ -sphinx==5.3.0 +sphinx==7.3.7 readthedocs-sphinx-ext==2.1.9 # ?? sphinx-rtd-theme -myst-parser==0.18.1 +myst-parser==3.0.1 diff --git a/docs/tutorials/otio-serialized-schema.md b/docs/tutorials/otio-serialized-schema.md index 1b9dcd0b8..73919a094 100644 --- a/docs/tutorials/otio-serialized-schema.md +++ b/docs/tutorials/otio-serialized-schema.md @@ -29,24 +29,23 @@ changes. If it needs to be updated and this file regenerated, run: ``` Adapters convert between OTIO and other formats. - Note that this class is not subclassed by adapters. Rather, an adapter is - a python module that implements at least one of the following functions: +Note that this class is not subclassed by adapters. Rather, an adapter is +a python module that implements at least one of the following functions: - .. code-block:: python +.. code-block:: python - write_to_string(input_otio) - write_to_file(input_otio, filepath) (optionally inferred) - read_from_string(input_str) - read_from_file(filepath) (optionally inferred) + write_to_string(input_otio) + write_to_file(input_otio, filepath) (optionally inferred) + read_from_string(input_str) + read_from_file(filepath) (optionally inferred) - ...as well as a small json file that advertises the features of the adapter - to OTIO. This class serves as the wrapper around these modules internal - to OTIO. You should not need to extend this class to create new adapters - for OTIO. +...as well as a small json file that advertises the features of the adapter +to OTIO. This class serves as the wrapper around these modules internal +to OTIO. You should not need to extend this class to create new adapters +for OTIO. - For more information: https://opentimelineio.readthedocs.io/en/latest/tutorials/write-an- +For more information: https://opentimelineio.readthedocs.io/en/latest/tutorials/write-an- adapter.html. # noqa - ``` parameters: @@ -84,10 +83,8 @@ parameters: *documentation*: ``` - An object that can be composed within a :class:`~Composition` (such as :class:`~Track` or :class:`.Stack`). - ``` parameters: @@ -101,11 +98,9 @@ parameters: *documentation*: ``` - Base class for an :class:`~Item` that contains :class:`~Composable`\s. Should be subclassed (for example by :class:`.Track` and :class:`.Stack`), not used directly. - ``` parameters: @@ -207,10 +202,8 @@ parameters: *documentation*: ``` - The RationalTime class represents a measure of time of :math:`rt.value/rt.rate` seconds. It can be rescaled into another :class:`~RationalTime`'s rate. - ``` parameters: @@ -224,11 +217,9 @@ parameters: *documentation*: ``` - The TimeRange class represents a range in time. It encodes the start time and the duration, meaning that :meth:`end_time_inclusive` (last portion of a sample in the time range) and :meth:`end_time_exclusive` can be computed. - ``` parameters: @@ -261,14 +252,13 @@ parameters: ``` Defines an OTIO plugin Manifest. - This is considered an internal OTIO implementation detail. +This is considered an internal OTIO implementation detail. - A manifest tracks a collection of plugins and enables finding them by name - or other features (in the case of adapters, what file suffixes they - advertise support for). +A manifest tracks a collection of plugins and enables finding them by name +or other features (in the case of adapters, what file suffixes they +advertise support for). - For more information, consult the documentation. - +For more information, consult the documentation. ``` parameters: @@ -287,8 +277,7 @@ parameters: ``` A class of plugin that is encoded in a python module, exposed via a - manifest. - +manifest. ``` parameters: @@ -304,11 +293,9 @@ parameters: *documentation*: ``` - A :class:`~Clip` is a segment of editable media (usually audio or video). Contains a :class:`.MediaReference` and a trim on that media reference. - ``` parameters: @@ -420,7 +407,6 @@ parameters: *documentation*: ``` - An ImageSequenceReference refers to a numbered series of single-frame image files. Each file can be referred to by a URL generated by the :class:`~ImageSequenceReference`. @@ -496,7 +482,6 @@ yield the first three target urls as: - ``file:///show/sequence/shot/sample_image_sequence.-0001.exr`` - ``file:///show/sequence/shot/sample_image_sequence.0000.exr`` - ``file:///show/sequence/shot/sample_image_sequence.0001.exr`` - ``` parameters: @@ -520,9 +505,7 @@ parameters: *documentation*: ``` - A time warp that applies a linear speed up or slow down across the entire clip. - ``` parameters: @@ -543,13 +526,11 @@ Instead it affects the speed of the media displayed within that item. *documentation*: ``` - A marker indicates a marked range of time on an item in a timeline, usually with a name, color or other metadata. The marked range may have a zero duration. The marked range is in the owning item's time coordinate system. - ``` parameters: @@ -566,12 +547,10 @@ parameters: *documentation*: ``` - Represents media for which a concrete reference is missing. Note that a :class:`~MissingReference` may have useful metadata, even if the location of the media is not known. - ``` parameters: @@ -587,7 +566,6 @@ parameters: *documentation*: ``` - A container which can hold an ordered list of any serializable objects. Note that this is not a :class:`.Composition` nor is it :class:`.Composable`. @@ -598,7 +576,6 @@ a named collection. A :class:`~SerializableCollection` is useful for serializing multiple timelines, clips, or media references to a single file. - ``` parameters: diff --git a/setup.py b/setup.py index 48b90690c..9ed48682b 100644 --- a/setup.py +++ b/setup.py @@ -320,6 +320,7 @@ def run(self): 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', + 'Programming Language :: Python :: 3.13', 'Operating System :: OS Independent', 'Natural Language :: English', ], diff --git a/src/py-opentimelineio/opentimelineio/console/autogen_serialized_datamodel.py b/src/py-opentimelineio/opentimelineio/console/autogen_serialized_datamodel.py index 3a33763d2..5e12b6b36 100644 --- a/src/py-opentimelineio/opentimelineio/console/autogen_serialized_datamodel.py +++ b/src/py-opentimelineio/opentimelineio/console/autogen_serialized_datamodel.py @@ -297,7 +297,7 @@ def _write_documentation(model): label = model[cl]["OTIO_SCHEMA"] if (cl.__doc__ is not None): - docstring = cl.__doc__.split("\n") + docstring = inspect.getdoc(cl).split("\n") new_docstring = [] for line in docstring: line = textwrap.wrap(line, width=100,