Skip to content

Commit c8149c5

Browse files
Merge branch 'main' into python_imath_init
2 parents 1ec7fcb + 829a913 commit c8149c5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+300
-195
lines changed

.github/dependabot.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ updates:
44
- package-ecosystem: "github-actions"
55
directory: "/"
66
schedule:
7-
interval: "daily"
7+
interval: "quarterly"
88

99
- package-ecosystem: "pip"
1010
directory: "/"
1111
schedule:
1212
day: "monday"
13-
interval: "weekly"
13+
interval: "quarterly"
1414

1515
- package-ecosystem: "gitsubmodule"
1616
directory: "/"

.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' }

CMakeLists.txt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,13 @@ option(OTIO_FIND_RAPIDJSON "Find RapidJSON using find_package" OFF)
3636
set(OTIO_PYTHON_INSTALL_DIR "" CACHE STRING "Python installation dir (such as the site-packages dir)")
3737

3838
# Build options
39+
#
40+
# If you are building OpenTimelineIO as a static library you will need to
41+
# defined OPENTIME_STATIC and OTIO_STATIC. If you use the provided CMake
42+
# config files these will be automatically defined for you. To use the
43+
# provided config files add `find_package(OpenTimelineIO)` to your
44+
# CMakeLists.txt file.
45+
#
3946
option(OTIO_SHARED_LIBS "Build shared if ON, static if OFF" ON)
4047
option(OTIO_CXX_COVERAGE "Invoke code coverage if lcov/gcov is available" OFF)
4148
option(OTIO_CXX_EXAMPLES "Build CXX examples (also requires OTIO_PYTHON_INSTALL=ON)" OFF)
@@ -109,12 +116,6 @@ if(OTIO_SHARED_LIBS)
109116
else()
110117
message(STATUS "Building static libs")
111118
set(OTIO_SHARED_OR_STATIC_LIB "STATIC")
112-
if (OTIO_PYTHON_INSTALL)
113-
# If we're compiling for pybind, we can hide all our symbols, they'll only be called from pybind
114-
# Note that this has no effect on Windows.
115-
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
116-
set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
117-
endif()
118119
endif()
119120

120121
# Set the SO version. The SO version must be incremented every time a change

docs/conf.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
4545

4646
html_theme = "sphinx_rtd_theme"
47-
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
4847

4948
htmlhelp_basename = f'{project.lower()}doc'
5049

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/opentime/CMakeLists.txt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
set(OPENTIME_HEADER_FILES
55
errorStatus.h
6+
export.h
67
rationalTime.h
78
stringPrintf.h
89
timeRange.h
@@ -25,13 +26,21 @@ target_include_directories(
2526
set_target_properties(opentime PROPERTIES
2627
DEBUG_POSTFIX "${OTIO_DEBUG_POSTFIX}"
2728
LIBRARY_OUTPUT_NAME "opentime"
28-
POSITION_INDEPENDENT_CODE TRUE
29-
WINDOWS_EXPORT_ALL_SYMBOLS true)
29+
POSITION_INDEPENDENT_CODE TRUE)
3030

31-
if(BUILD_SHARED_LIBS)
31+
if(OTIO_SHARED_LIBS)
3232
set_target_properties(opentime PROPERTIES
3333
SOVERSION ${OTIO_SOVERSION}
3434
VERSION ${OTIO_VERSION})
35+
target_compile_definitions(
36+
opentime
37+
PUBLIC
38+
OPENTIME_EXPORTS)
39+
else()
40+
target_compile_definitions(
41+
opentime
42+
PUBLIC
43+
OPENTIME_STATIC)
3544
endif()
3645

3746
if(APPLE)

src/opentime/errorStatus.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33

44
#pragma once
55

6+
#include "opentime/export.h"
67
#include "opentime/version.h"
78
#include <string>
89

910
namespace opentime { namespace OPENTIME_VERSION {
1011

1112
/// @brief This struct represents the return status of a function.
12-
struct ErrorStatus
13+
struct OPENTIME_API_TYPE ErrorStatus
1314
{
1415
/// @brief This enumeration represents the possible outcomes.
1516
enum Outcome
@@ -47,7 +48,7 @@ struct ErrorStatus
4748
std::string details;
4849

4950
///! @brief Return a human readable string for the given outcome.
50-
static std::string outcome_to_string(Outcome);
51+
static OPENTIME_API std::string outcome_to_string(Outcome);
5152
};
5253

5354
///! @brief Check whether the given ErrorStatus is an error.

0 commit comments

Comments
 (0)