Skip to content

Commit 49eb6ca

Browse files
authored
Merge branch 'main' into 1635_fix_flatten_issue
2 parents d45b56d + f3cb304 commit 49eb6ca

174 files changed

Lines changed: 9840 additions & 3158 deletions

File tree

Some content is hidden

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

.github/dependabot.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,15 @@ 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: "/"
1717
schedule:
18-
day: "monday"
19-
interval: "weekly"
18+
interval: "quarterly"

.github/labeler.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,5 @@ opentime:
2121
'time calculations':
2222
- any: ['src/opentime/**']
2323

24-
otioview:
25-
- any: ['src/opentimelineview/**']
26-
2724
python-bindings:
2825
- any: ['src/py-opentimelineio/**']

.github/workflows/pypi-publish.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,18 @@ jobs:
1717
# happen for this actual commit (the commit that the tag points to).
1818
# It also restores the files timestamps.
1919
- name: Download wheels from commit ${{ github.sha }}
20-
uses: dawidd6/action-download-artifact@v8
20+
uses: dawidd6/action-download-artifact@v11
2121
with:
2222
workflow: python-package.yml
2323
workflow_conclusion: success
2424
commit: ${{ github.sha }}
2525
name_is_regexp: true
2626
name: 'wheel-.*'
2727
path: dist
28+
merge_multiple: true
2829

2930
- name: Download sdist from commit ${{ github.sha }}
30-
uses: dawidd6/action-download-artifact@v8
31+
uses: dawidd6/action-download-artifact@v11
3132
with:
3233
workflow: python-package.yml
3334
workflow_conclusion: success

.github/workflows/python-package.yml

Lines changed: 136 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ env:
1111

1212
on:
1313
push:
14-
branches: [ main ]
14+
branches: [main]
1515
pull_request:
16-
branches: [ main ]
16+
branches: [main]
1717

1818
concurrency:
1919
group: ${{ github.workflow }}-${{ github.ref }}
@@ -24,18 +24,18 @@ jobs:
2424
runs-on: ${{ matrix.os }}
2525
strategy:
2626
matrix:
27-
os: [ubuntu-latest, windows-latest, macos-13, macos-latest]
27+
os: [ubuntu-latest, windows-latest, macos-14, macos-latest]
2828
# Unfortunately the CMake test target is OS dependent so we set it as
2929
# a variable here.
3030
include:
31-
- os: ubuntu-latest
32-
OTIO_TEST_TARGET: test
33-
- os: windows-latest
34-
OTIO_TEST_TARGET: RUN_TESTS
35-
- os: macos-latest
36-
OTIO_TEST_TARGET: test
37-
- os: macos-13
38-
OTIO_TEST_TARGET: test
31+
- os: ubuntu-latest
32+
OTIO_TEST_TARGET: test
33+
- os: windows-latest
34+
OTIO_TEST_TARGET: RUN_TESTS
35+
- os: macos-latest
36+
OTIO_TEST_TARGET: test
37+
- os: macos-14
38+
OTIO_TEST_TARGET: test
3939

4040
env:
4141
OTIO_BUILD_CONFIG: Release
@@ -44,151 +44,156 @@ jobs:
4444
OTIO_CONSUMER_TEST_BUILD_DIR: ${{ github.workspace }}/consumertest
4545

4646
steps:
47-
- uses: actions/checkout@v4
48-
with:
49-
submodules: 'recursive'
50-
- name: Install coverage dependency
51-
if: matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
52-
run: |
53-
sudo apt-get install lcov
54-
- name: Build
55-
run: |
56-
cmake -E make_directory ${{ env.OTIO_BUILD_DIR }}
57-
cd ${{ env.OTIO_BUILD_DIR }}
58-
cmake ${{ github.workspace }} -DCMAKE_INSTALL_PREFIX=${{ env.OTIO_INSTALL_DIR }} -DOTIO_SHARED_LIBS=OFF -DOTIO_CXX_COVERAGE=ON
59-
cmake --build . --config ${{ env.OTIO_BUILD_CONFIG }}
60-
- name: Run tests
61-
run: |
62-
cd ${{ env.OTIO_BUILD_DIR }}
63-
cmake --build . --target ${{ matrix.OTIO_TEST_TARGET }} --config ${{ env.OTIO_BUILD_CONFIG }}
64-
- name: Collect code coverage
65-
if: matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
66-
run: |
67-
cd ${{ env.OTIO_BUILD_DIR }}
68-
lcov --rc lcov_branch_coverage=1 --rc no_exception_branch=1 --ignore-errors mismatch --capture -b . --directory . --output-file=coverage.info -q
69-
cat coverage.info | sed "s/SF:.*src/SF:src/g" > coverage.filtered.info
70-
lcov --remove coverage.filtered.info '*/tests/*' --output-file=coverage.filtered.info -q
71-
lcov --list coverage.filtered.info
72-
# \todo Should the Codecov web pages show the results of the C++ or Python tests?
73-
# - name: Upload coverage to Codecov
74-
# if: matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
75-
# uses: codecov/codecov-action@v3.1.4
76-
# with:
77-
# files: ${{ env.OTIO_BUILD_DIR }}/coverage.filtered.info
78-
# flags: unittests
79-
# name: opentimelineio-codecov
80-
# fail_ci_if_error: true
81-
- name: Install
82-
run: |
83-
cd ${{ env.OTIO_BUILD_DIR }}
84-
cmake --build . --target install --config ${{ env.OTIO_BUILD_CONFIG }}
85-
- name: Consumer tests
86-
run: |
87-
cmake -E make_directory ${{ env.OTIO_CONSUMER_TEST_BUILD_DIR }}
88-
cd ${{ env.OTIO_CONSUMER_TEST_BUILD_DIR }}
89-
cmake ${{ github.workspace }}/tests/consumer -DCMAKE_PREFIX_PATH=${{ env.OTIO_INSTALL_DIR }}
47+
- uses: actions/checkout@v4
48+
with:
49+
submodules: "recursive"
50+
- name: Install coverage dependency
51+
if: matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
52+
run: |
53+
sudo apt-get install lcov
54+
- name: Build
55+
run: |
56+
cmake -E make_directory ${{ env.OTIO_BUILD_DIR }}
57+
cd ${{ env.OTIO_BUILD_DIR }}
58+
cmake ${{ github.workspace }} -DCMAKE_INSTALL_PREFIX=${{ env.OTIO_INSTALL_DIR }} -DOTIO_SHARED_LIBS=OFF -DOTIO_CXX_COVERAGE=ON -DOTIO_CXX_EXAMPLES=ON
59+
cmake --build . --config ${{ env.OTIO_BUILD_CONFIG }}
60+
- name: Run tests
61+
run: |
62+
cd ${{ env.OTIO_BUILD_DIR }}
63+
cmake --build . --target ${{ matrix.OTIO_TEST_TARGET }} --config ${{ env.OTIO_BUILD_CONFIG }}
64+
- name: Collect code coverage
65+
if: matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
66+
run: |
67+
cd ${{ env.OTIO_BUILD_DIR }}
68+
lcov --rc lcov_branch_coverage=1 --rc no_exception_branch=1 --ignore-errors mismatch --capture -b . --directory . --output-file=coverage.info -q
69+
cat coverage.info | sed "s/SF:.*src/SF:src/g" > coverage.filtered.info
70+
lcov --remove coverage.filtered.info '*/tests/*' --output-file=coverage.filtered.info -q
71+
lcov --list coverage.filtered.info
72+
# \todo Should the Codecov web pages show the results of the C++ or Python tests?
73+
# - name: Upload coverage to Codecov
74+
# if: matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
75+
# uses: codecov/codecov-action@v3.1.4
76+
# with:
77+
# files: ${{ env.OTIO_BUILD_DIR }}/coverage.filtered.info
78+
# flags: unittests
79+
# name: opentimelineio-codecov
80+
# fail_ci_if_error: true
81+
- name: Install
82+
run: |
83+
cd ${{ env.OTIO_BUILD_DIR }}
84+
cmake --build . --target install --config ${{ env.OTIO_BUILD_CONFIG }}
85+
- name: Consumer tests
86+
run: |
87+
cmake -E make_directory ${{ env.OTIO_CONSUMER_TEST_BUILD_DIR }}
88+
cd ${{ env.OTIO_CONSUMER_TEST_BUILD_DIR }}
89+
cmake ${{ github.workspace }}/tests/consumer -DCMAKE_PREFIX_PATH=${{ env.OTIO_INSTALL_DIR }}
9090
9191
py_build_test:
9292
runs-on: ${{ matrix.os }}
9393
strategy:
9494
matrix:
95-
os: [ubuntu-latest, windows-latest, macos-13, macos-latest]
96-
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12']
95+
os: [ubuntu-latest, windows-latest, macos-14, macos-latest]
96+
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
9797
include:
9898
- { os: ubuntu-latest, shell: bash }
99-
- { os: ubuntu-22.04, shell: bash, python-version: 3.7 }
10099
- { os: macos-latest, shell: bash }
101-
- { os: macos-13, shell: bash }
100+
- { os: macos-14, shell: bash }
102101
- { os: windows-latest, shell: pwsh }
103-
- { os: windows-latest, shell: msys2, python-version: 'mingw64' }
102+
- { os: windows-latest, shell: msys2, python-version: "mingw64" }
104103
exclude:
105-
- { os: macos-latest, python-version: 3.7 }
106-
- { os: macos-latest, python-version: 3.8 }
107104
- { os: macos-latest, python-version: 3.9 }
108-
- { os: ubuntu-latest, python-version: 3.7 }
109105

110106
defaults:
111107
run:
112-
shell: '${{ matrix.shell }} {0}'
108+
shell: "${{ matrix.shell }} {0}"
113109

114110
env:
115111
OTIO_CXX_COVERAGE_BUILD: ON
116112
OTIO_CXX_BUILD_TMP_DIR: ${{ github.workspace }}/build
117113

118114
steps:
119-
- uses: actions/checkout@v4
120-
with:
121-
submodules: 'recursive'
122-
- name: Set up MSYS2
123-
if: matrix.python-version == 'mingw64'
124-
uses: msys2/setup-msys2@v2
125-
with:
126-
msystem: mingw64
127-
install: >-
128-
mingw-w64-x86_64-python
129-
mingw-w64-x86_64-python-pip
130-
mingw-w64-x86_64-gcc
131-
mingw-w64-x86_64-cmake
132-
make
133-
git
134-
- name: Set up Python ${{ matrix.python-version }}
135-
if: matrix.python-version != 'mingw64'
136-
uses: actions/setup-python@v5.4.0
137-
with:
138-
python-version: ${{ matrix.python-version }}
139-
- name: Install coverage dependency
140-
if: matrix.python-version == env.GH_COV_PY && matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
141-
run: |
142-
echo 'OTIO_CXX_DEBUG_BUILD=1' >> $GITHUB_ENV
143-
sudo apt-get install lcov
144-
- name: Install python build dependencies
145-
run: |
146-
python -m pip install --upgrade pip setuptools wheel "flake8>=3.5" check-manifest
147-
- name: Run check-manifest and lint check
148-
run: make ci-prebuild
149-
- name: Build and Install
150-
run: |
151-
pip install .[dev] -v --break-system-packages
152-
- name: Run tests w/ python coverage
153-
run: make ci-postbuild
154-
# (only on ubuntu/pyhton3.7)
155-
- name: Generate C++ coverage report
156-
if: matrix.python-version == env.GH_COV_PY && matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
157-
run: make lcov
158-
- name: Upload coverage to Codecov
159-
if: matrix.python-version == env.GH_COV_PY && matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
160-
uses: codecov/codecov-action@v4
161-
with:
162-
flags: py-unittests
163-
name: py-opentimelineio-codecov
164-
fail_ci_if_error: false
165-
env:
166-
# based on: https://github.com/codecov/codecov-action?tab=readme-ov-file#usage
167-
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
115+
- uses: actions/checkout@v4
116+
with:
117+
submodules: "recursive"
118+
- name: Set up MSYS2
119+
if: matrix.python-version == 'mingw64'
120+
uses: msys2/setup-msys2@v2
121+
with:
122+
msystem: mingw64
123+
install: >-
124+
mingw-w64-x86_64-python
125+
mingw-w64-x86_64-python-pip
126+
mingw-w64-x86_64-gcc
127+
mingw-w64-x86_64-cmake
128+
make
129+
git
130+
- name: Set up Python ${{ matrix.python-version }}
131+
if: matrix.python-version != 'mingw64'
132+
uses: actions/setup-python@v5.4.0
133+
with:
134+
python-version: ${{ matrix.python-version }}
135+
- name: Install coverage dependency
136+
if: matrix.python-version == env.GH_COV_PY && matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
137+
run: |
138+
echo 'OTIO_CXX_DEBUG_BUILD=1' >> $GITHUB_ENV
139+
sudo apt-get install lcov
140+
- name: Install python build dependencies
141+
run: |
142+
python -m pip install --upgrade pip setuptools wheel "flake8>=3.5" check-manifest
143+
# \todo Temporarily disable check-manifest on MinGW, it is failing
144+
# intermittently with this error:
145+
# ModuleNotFoundError: No module named 'pip._vendor.distlib'
146+
- name: Run check-manifest and lint check
147+
if: matrix.python-version != 'mingw64'
148+
run: make ci-prebuild
149+
- name: Build and Install
150+
run: |
151+
pip install .[dev] -v --break-system-packages
152+
- name: Run tests w/ python coverage
153+
run: make ci-postbuild
154+
# (only on GH_COV_OS and GH_COV_PY)
155+
- name: Generate C++ coverage report
156+
if: matrix.python-version == env.GH_COV_PY && matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
157+
run: make lcov
158+
- name: Upload coverage to Codecov
159+
if: matrix.python-version == env.GH_COV_PY && matrix.os == env.GH_COV_OS && github.actor != env.GH_DEPENDABOT
160+
uses: codecov/codecov-action@v4
161+
with:
162+
flags: py-unittests
163+
name: py-opentimelineio-codecov
164+
fail_ci_if_error: false
165+
env:
166+
# based on: https://github.com/codecov/codecov-action?tab=readme-ov-file#usage
167+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
168168

169169
package_wheels:
170170
needs: py_build_test
171171
runs-on: ${{ matrix.os }}
172172
strategy:
173173
matrix:
174-
os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-13, macos-latest]
175-
python-build: ['cp37', 'cp38', 'cp39', 'cp310', 'cp311', 'cp312']
176-
exclude:
177-
- { os: macos-latest, python-build: 'cp37' }
174+
os:
175+
[
176+
ubuntu-latest,
177+
ubuntu-24.04-arm,
178+
windows-latest,
179+
macos-14,
180+
macos-latest,
181+
]
182+
python-build: ["cp39", "cp310", "cp311", "cp312", "cp313"]
178183
steps:
179184
- uses: actions/checkout@v4
180185

181186
- name: Build wheels (Python 3)
182-
uses: pypa/cibuildwheel@v2.22.0
187+
uses: pypa/cibuildwheel@v3.2.1
183188
with:
184189
output-dir: wheelhouse
185190
env:
186191
CIBW_BUILD: ${{ matrix.python-build }}*
187-
CIBW_SKIP: '*musllinux*'
192+
CIBW_SKIP: "*musllinux*"
188193
CIBW_ARCHS_LINUX: native
189194
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
190195
CIBW_MANYLINUX_AARCH64_IMAGE: manylinux2014
191-
MACOSX_DEPLOYMENT_TARGET: 10.14
196+
MACOSX_DEPLOYMENT_TARGET: 10.15
192197

193198
- uses: actions/upload-artifact@v4
194199
with:
@@ -199,19 +204,19 @@ jobs:
199204
needs: py_build_test
200205
runs-on: ubuntu-latest
201206
steps:
202-
- uses: actions/checkout@v4
203-
with:
204-
submodules: 'recursive'
207+
- uses: actions/checkout@v4
208+
with:
209+
submodules: "recursive"
205210

206-
- uses: actions/setup-python@v5.4.0
211+
- uses: actions/setup-python@v5.4.0
207212

208-
- name: Install pypa/build
209-
run: python -m pip install build --user
213+
- name: Install pypa/build
214+
run: python -m pip install build --user
210215

211-
- name: Generate sdist
212-
run: python -m build -s .
216+
- name: Generate sdist
217+
run: python -m build -s .
213218

214-
- uses: actions/upload-artifact@v4
215-
with:
216-
name: sdist
217-
path: dist
219+
- uses: actions/upload-artifact@v4
220+
with:
221+
name: sdist
222+
path: dist

0 commit comments

Comments
 (0)