Skip to content

Commit f292ab8

Browse files
authored
Remove scikit-video dependency (#6)
* Update to 0.2.0 (#4) * Add build workflow * Fix build workflow * Fix build script * Fix build script * Fix build script * Add `libglu1-mesa-dev` dependency for build script * Add `libglew-dev` dependency to build script * Add `-Dpybind11_DIR=` * Set `$CONDA_PREFIX` environment variable * Fix build workflow * Remove doxygen from build script * Fix bug in setup.py * Fix build script * Disable tests * Fix bug in setup.py * Use `sudo` for `setup.py install` in build script * Fix build script * Build wheel and upload artifact * Reduce artifact size * Fix artifact * Exclude debug build from artifact * Clean up artifact * Fix workflow * Add Docker build workflow * Add `pyyaml` as build dependency to build script * Update build instructions * Fix build workflow * Fix Docker workflow * Fix workflow * Add debug code to workflow * Fix Dockerfile * Squashed commit of the following: commit 750d7f8 Author: Leonid Kostrykin <[email protected]> Date: Wed Dec 13 10:32:42 2023 +0100 Fix Dockerfile commit cc5fc3f Author: Leonid Kostrykin <[email protected]> Date: Wed Dec 13 10:28:01 2023 +0100 Fix Dockerfile commit 0006721 Author: Leonid Kostrykin <[email protected]> Date: Wed Dec 13 10:24:11 2023 +0100 Fix Dockerfile commit fba55bb Author: Leonid Kostrykin <[email protected]> Date: Wed Dec 13 10:15:22 2023 +0100 Fix Dockerfile commit 8891b25 Author: Leonid Kostrykin <[email protected]> Date: Wed Dec 13 10:10:23 2023 +0100 Fix Dockerfile commit d282592 Author: Leonid Kostrykin <[email protected]> Date: Wed Dec 13 10:03:30 2023 +0100 Fix Dockerfile commit 2a4edd0 Author: Leonid Kostrykin <[email protected]> Date: Wed Dec 13 09:59:18 2023 +0100 Fix Dockerfile commit dc78de0 Author: Leonid Kostrykin <[email protected]> Date: Wed Dec 13 09:53:39 2023 +0100 Fix Dockerfile commit 7d97369 Author: Leonid Kostrykin <[email protected]> Date: Wed Dec 13 09:46:30 2023 +0100 Add debug info to Dockerfile commit e789036 Author: Leonid Kostrykin <[email protected]> Date: Wed Dec 13 09:40:22 2023 +0100 Fix Dockerfile commit dc48cc7 Author: Leonid Kostrykin <[email protected]> Date: Wed Dec 13 09:27:00 2023 +0100 Add debug code commit be4c97e Author: Leonid Kostrykin <[email protected]> Date: Wed Dec 13 09:22:19 2023 +0100 Fix Dockerfile * Add examples to Dockerfile * Update README.md * Fix Dockerfile * Fix Dockerfile * Fix Dockerfile * Fix Dockerfile * Fix Dockerfile * Fix Dockerfile * Update README.md * Fix `docker run` instruction * Refactor for 0.2.0 (#1) * Add environment.yml * Update CMakeLists.txt * Clean up build script * Add `libopengl-devel` dependency * Fix build * Clean up tests, fix linking * Clean up `egl.Context` binding * Drop `carna.py` * Update settings.json * Clean up `base.Spatial` and `base.Node` * Implement `SpatialView` and add memory tests * Add `Node.test__attach_child__circular` * Add `Node.test__attach_child__nonfree` * Add `Node.test__movable` * Add `Node.test__tag` * Add `Node.test__localTransform` * Add `Node.test__detach_from_parent` * Add `CARNA_EXRA_CHECKS` environment variable * Add `Camera` tests * Add `Geometry` tests (incomplete) * Add `Geometry.test__geometry_type` and `Geometry.test__features_count` * Clean up code * Add `Material` and tests * Fix typo * Add `Geometry.put_feature` and `Geometry.remove_feature` * Add `Geometry.clear_features` * Add `Geometry.has_feature` * Clean up code * Add `ContextView` * Pin `pybind11 <3` * Refactor structure * Add `Surface` (no tests yet) * Add `FrameRenderer` and tests * Clean up test/test_egl.py * Add `configure_carna_log` * Add `math` * Add `MeshFactory` * Add `OpaqueRenderingStage` * Add `CarnaRenderingTestCase` * Make build directory readonly in VSCode * Fix `Surface::end` * Fix tests * Add `helpers.FrameRendererHelper` * Add `FrameRenderer.append_stage` * Remove extra checks (not working properly across submodules) * Add convenience layer * Add `renderer` convenience function * Extend spatial convenience functions * Add RTD setup * Add sphinx build to build script * Fix doc building * Update docs * Make `carna.renderer` a class instead of a function * Update docs * Update integration test * Add `frustum` method to convenience renderer * Update docs * Update docs * Update docs * Rename `configure_carna_log` to `logging` * Add `VolumeGridHelperBase` * Add `VolumeGridHelper_IntensityVolumeUInt16` * Add `VolumeGridHelper_IntensityVolumeUInt16.intensities_role` * Add `VolumeGridHelper_IntensityVolumeUInt16_NormalMap3DInt8` * Add `VolumeGridHelper_IntensityVolumeUInt8` * Add `VolumeGridHelper_IntensityVolumeUInt8_NormalMap3DInt8` * Add `VolumeGridHelper_*.create_node` * Add `MaskRenderingStage` (test fail) * Add failing `EGLContext` test case * Fix bug in `EGLContext` d'tor (tests pass) * Add `Color` and tests * Add `MaskRenderingStage` attributes, methods, and tests * Add docs * Add `volume` convenience function * Add debug build mode * Fix bug with lazy data loading behaviour of `VolumeGridHelper` https://kostrykin.github.io/Carna/html/classCarna_1_1base_1_1ManagedTexture3D.html#a37f03f311b2d1bd87ccb12f545d70f04 * Update docs * Update docs * Add logo to docs * Add `renderer.animation` * Use `solid` shaders instead of `unshaded` for example materials * Fix `animation.render` to produce smooth animations * Fix docs * Add `MIPStage` and `MIPLayer` * Fix bug in `EGLContext` (enable resource sharing) * Add `CuttingPlanesStage` * Add script to install Carna development version * Fix install_carna_dev.bash * Employ `.carna-dev` in CMakeLists.txt * Add `ColorMapView` * Fix install_carna_dev.bash * Add `MIPStage.color_map` * Update test results * Add `color_map_helper` and fix tests * Update build instructions * Add `carna.base.AssertionFailure` * Migrate to `Carna::base::MeshRenderingMixin` * Rename `Dimensions` to `Extent` and `millimeters` to `units` * Migrate build process from Carna to LibCarna * Migrate LICENSE to MIT * Migrate code from Carna to CarnaLib * Add logo * Add example notebook * Clean up convenience layer * Add `_transform` to convenience layer * Replace `np.bool` by `bool` * Add support for h264 rendering in `imshow` * Always build docs from scratch This is to avoid errors with nbsphinx. * Add examples/cthead.ipynb * Import colormaps from matplotlib * Add `DVRStage` * Add DVR to cells.ipynb * Update example notebooks * Rename `libcarna.animation` to `libcarna.animate` * Update example notebooks * Simplify `animate` syntax * Update example notebooks * Clean up `_expand_module` * Update example notebooks * Add material scheme validation * Update example notebooks * Add `dvr.replicate` * Add `mip.replicate` * Update example notebooks * Add `transform_into_voxels_from` method for volumes * Update example notebooks * Fix HUV normalization * Add `drr` * Update example notebooks * Update docs and example notebooks * Add `normalize_hounsfield_units` function * Add more debugging checks to `EGLContext` * Rename `mesh_factory` to `meshes` * Add `camera.proj` and `camera.frustum` methods * Refactor `_transform` and `_spatial_mixin` * Update * Update example notebooks * Add `libcarna.data` * Add `libcarna.data.toy` * Add `cutting_planes` * Add `cutting_planes` and `mask_renderer` * Rename `render` to `render_stage` * Fix `base.MeshFactory` * Clean up API, docs, and examples * Migrate `cutting_planes` to use color maps instead of windowing * Add `.normalized` and `.raw` convenience methods for `volume` geometries * Add fundamental colorbars * Refactor `colormap_helper` * Add colorbar labels, update example notebooks * Update example notebooks * Add spatial annotations example * Fix bugs, add segmentation example * Update README.md and example notebooks * Add `material.line_width` * Add track visualization example * Add `mesh` and `material` arguments to `geometry` function * Adapt to newest upstream changes * Add keyword aliases * Add more aliases and update docs * Update CI to build wheel * Add testing to CI * Update requirements * Update build workflows * Fix .github/workflows/build_all.yml * Fix .github/workflows/build_all.yml * Fix .github/workflows/build_all.yml * Fix .github/workflows/build.yml * Add example notebooks to test CI, fix triggers * Update README.md * Update environment.yml * Add `workflow_dispatch` trigger * Update build.yml * Update build.yml * Update build.yml * Update build.yml * Update build.yml * Update build.yml * Update build_all.yml * Update CI * Update CI * Update CI * Update CI * Update CI * Update CI * Update CI, update environment.yml * Update CI * Fix setup.py * Remove dangling files * Add dependencies to setup.py * Update CI * Update CI * Migrate to unity build * Update CI * Update CI * Update CI * Update CI * Update CI * Update CI * Remove libcarna from setup.py dependencies (not a Python dependency) * Fix dependencies * Update CI * Add test/__init__.py * Fix Python<3.12 compatibility * Update CI * Update CI * Update CI * Update CI * Fix compatibility with Python<3.11 * Debug * Add `LibCarna::egl::EGLContext::Details::selectDisplay` * Debug * Debug * Add `LIBCARNA_PYTHON_LOGGING` environment variable * Debug * Update CI * Install `libegl` via conda instead of apt * Add `typing_extensions` as dependency in setup.py * Update CI * Update CI * Update CI * Update CI * Remove support for Python 3.9 * Debug * Debug * Debug * Debug, add `EGLContext.vendor` and `EGLContext.renderer` * Update image comparison methods * Update image comparison methods * Update image comparison methods * Add vendor-specific expected test outputs * Employ vendor-specific expected test outputs * Remove debug output * Install missing dependencies * Add summary of notebook changes * Fix CI * Install ffmpeg * Remove notebooks from CI (taking too long) * Add more keyword aliases * Refactor `_spatial_mixin` rotation/translation/scaling methods * Update README.md * Remove MANIFEST.in * Update .readthedocs.yaml * Update .readthedocs.yaml * Update .readthedocs.yaml * Update RTD integration (#2) * Add `LIBCARNA_PYTHON_NBSPHINX_EXECUTE` environment variable * Add docs building for testing to CI * Update RTD integration, remove doc building from CI * Update docs/conf.py * Update .readthedocs.yaml * Update .readthedocs.yaml * Update .readthedocs.yaml * Update README.md * Update README.md * Update README.md * Update README.md * Migrate build system to `python-build` (#3) * Migrate to `python-build` * Clean-up setup.py.in * Fix linux_build.bash * Update CMakeLists.txt * Fix linux_build.bash * Fix linux_build.bash * Update build * Update tests * Fix linux_build.bash * Update CMake files * Update CI and RTD integration * Update build.yml * Rename `LIBCARNA_PYTHON_BUILD_TEST` to `LIBCARNA_PYTHON_BUILD_TESTS` * Update README.md * Update docs * Migrate to local skvideo fork * Clean up `libcarna.libs.skvideo` * Clean up `libcarna.libs.skvideo` * Clean up `libcarna.libs.skvideo` * Clean up `libcarna.libs.skvideo` * Clean up `libcarna.libs.skvideo` * Update example notebooks * Rename LICENSE-scikit-video to LICENSE-skvideo * Remove `scikit-video` requirement from setup.py
1 parent 0d3fc0a commit f292ab8

File tree

14 files changed

+955
-131
lines changed

14 files changed

+955
-131
lines changed

CMakeLists.txt

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,16 @@ find_package( LibCarna "3.4.0" REQUIRED COMPONENTS release )
8181
include_directories( ${LibCarna_INCLUDE_DIR} )
8282
set( LIBCARNA_VERSION ${FOUND_VERSION} )
8383

84+
############################################
85+
# Macro that sets variable to default value
86+
# only when the variable isn't defined yet
87+
############################################
88+
89+
macro( copy_python_aux_files mod_path )
90+
file( GLOB PYTHON_AUX_FILES "${CMAKE_CURRENT_SOURCE_DIR}/misc/${mod_path}/*.py" )
91+
file( COPY ${PYTHON_AUX_FILES} DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/${mod_path}" )
92+
endmacro()
93+
8494
############################################
8595

8696
configure_file(
@@ -95,13 +105,17 @@ configure_file(
95105
@ONLY
96106
)
97107

98-
file( GLOB PYTHON_AUX_FILES "${CMAKE_CURRENT_SOURCE_DIR}/misc/libcarna/*.py" )
99-
file( COPY ${PYTHON_AUX_FILES} DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/${PYTHON_MODULE_NAME}" )
108+
copy_python_aux_files( "${PYTHON_MODULE_NAME}" )
109+
copy_python_aux_files( "${PYTHON_MODULE_NAME}/libs" )
110+
copy_python_aux_files( "${PYTHON_MODULE_NAME}/libs/skvideo" )
111+
copy_python_aux_files( "${PYTHON_MODULE_NAME}/libs/skvideo/io" )
112+
copy_python_aux_files( "${PYTHON_MODULE_NAME}/libs/skvideo/utils" )
100113

101114
file( GLOB LICENSES "${LibCarna_LICENSE_DIR}/LICENSE*" )
102115
file( COPY ${LICENSES} DESTINATION "${CMAKE_CURRENT_BINARY_DIR}" )
103116
file( COPY ${CMAKE_CURRENT_SOURCE_DIR}/README.md DESTINATION "${CMAKE_CURRENT_BINARY_DIR}" )
104117
file( COPY ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE DESTINATION "${CMAKE_CURRENT_BINARY_DIR}" )
118+
file( COPY ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE-skvideo DESTINATION "${CMAKE_CURRENT_BINARY_DIR}" )
105119

106120
############################################
107121
# Project

LICENSE-skvideo

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
New BSD License
2+
3+
Copyright (c) 2015 The scikit-video developers.
4+
All rights reserved.
5+
6+
7+
Redistribution and use in source and binary forms, with or without
8+
modification, are permitted provided that the following conditions are met:
9+
10+
a. Redistributions of source code must retain the above copyright notice,
11+
this list of conditions and the following disclaimer.
12+
b. Redistributions in binary form must reproduce the above copyright
13+
notice, this list of conditions and the following disclaimer in the
14+
documentation and/or other materials provided with the distribution.
15+
c. Neither the name of the scikit-video developers nor the names of
16+
its contributors may be used to endorse or promote products
17+
derived from this software without specific prior written
18+
permission.
19+
20+
21+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24+
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
25+
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29+
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30+
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
31+
DAMAGE.
32+

environment.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ dependencies:
2828
- libcarna ==3.4.0
2929
- matplotlib-base # for `_colormap_helper`
3030
- numpngw ==0.1.4 # writes APNG
31-
- scikit-video ==1.1.11 # API for ffmpeg
3231
- ffmpeg # writes h264
3332
- scipy # for `libcarna.data` and `libcarna.normalize_hounsfield_units`
3433
- scikit-image # for `libcarna.data`

examples/cells.ipynb

Lines changed: 55 additions & 55 deletions
Large diffs are not rendered by default.

examples/cthead.ipynb

Lines changed: 34 additions & 34 deletions
Large diffs are not rendered by default.

examples/introduction.ipynb

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414
"id": "3bf7058d",
1515
"metadata": {
1616
"execution": {
17-
"iopub.execute_input": "2025-05-13T11:30:37.159368Z",
18-
"iopub.status.busy": "2025-05-13T11:30:37.159210Z",
19-
"iopub.status.idle": "2025-05-13T11:30:37.733839Z",
20-
"shell.execute_reply": "2025-05-13T11:30:37.733418Z"
17+
"iopub.execute_input": "2025-05-15T21:27:31.292087Z",
18+
"iopub.status.busy": "2025-05-15T21:27:31.291928Z",
19+
"iopub.status.idle": "2025-05-15T21:27:31.692969Z",
20+
"shell.execute_reply": "2025-05-15T21:27:31.692413Z"
2121
},
2222
"vscode": {
2323
"languageId": "plaintext"
@@ -52,10 +52,10 @@
5252
"id": "cd38b675",
5353
"metadata": {
5454
"execution": {
55-
"iopub.execute_input": "2025-05-13T11:30:37.735613Z",
56-
"iopub.status.busy": "2025-05-13T11:30:37.735453Z",
57-
"iopub.status.idle": "2025-05-13T11:30:37.737396Z",
58-
"shell.execute_reply": "2025-05-13T11:30:37.737148Z"
55+
"iopub.execute_input": "2025-05-15T21:27:31.694352Z",
56+
"iopub.status.busy": "2025-05-15T21:27:31.694173Z",
57+
"iopub.status.idle": "2025-05-15T21:27:31.696537Z",
58+
"shell.execute_reply": "2025-05-15T21:27:31.696148Z"
5959
},
6060
"vscode": {
6161
"languageId": "plaintext"
@@ -84,10 +84,10 @@
8484
"id": "8518d1b2",
8585
"metadata": {
8686
"execution": {
87-
"iopub.execute_input": "2025-05-13T11:30:37.738879Z",
88-
"iopub.status.busy": "2025-05-13T11:30:37.738781Z",
89-
"iopub.status.idle": "2025-05-13T11:30:37.740641Z",
90-
"shell.execute_reply": "2025-05-13T11:30:37.740403Z"
87+
"iopub.execute_input": "2025-05-15T21:27:31.697706Z",
88+
"iopub.status.busy": "2025-05-15T21:27:31.697602Z",
89+
"iopub.status.idle": "2025-05-15T21:27:31.699966Z",
90+
"shell.execute_reply": "2025-05-15T21:27:31.699586Z"
9191
},
9292
"vscode": {
9393
"languageId": "plaintext"
@@ -120,10 +120,10 @@
120120
"id": "df9403bf",
121121
"metadata": {
122122
"execution": {
123-
"iopub.execute_input": "2025-05-13T11:30:37.742124Z",
124-
"iopub.status.busy": "2025-05-13T11:30:37.742021Z",
125-
"iopub.status.idle": "2025-05-13T11:30:37.746048Z",
126-
"shell.execute_reply": "2025-05-13T11:30:37.745798Z"
123+
"iopub.execute_input": "2025-05-15T21:27:31.701092Z",
124+
"iopub.status.busy": "2025-05-15T21:27:31.700980Z",
125+
"iopub.status.idle": "2025-05-15T21:27:31.705588Z",
126+
"shell.execute_reply": "2025-05-15T21:27:31.705204Z"
127127
},
128128
"vscode": {
129129
"languageId": "plaintext"
@@ -133,7 +133,7 @@
133133
{
134134
"data": {
135135
"text/plain": [
136-
"<libcarna._spatial.geometry.<locals>.Geometry at 0x7c02b5141eb0>"
136+
"<libcarna._spatial.geometry.<locals>.Geometry at 0x79040f1b1df0>"
137137
]
138138
},
139139
"execution_count": 4,
@@ -182,10 +182,10 @@
182182
"id": "4a1a1c31",
183183
"metadata": {
184184
"execution": {
185-
"iopub.execute_input": "2025-05-13T11:30:37.747577Z",
186-
"iopub.status.busy": "2025-05-13T11:30:37.747480Z",
187-
"iopub.status.idle": "2025-05-13T11:30:37.749306Z",
188-
"shell.execute_reply": "2025-05-13T11:30:37.749077Z"
185+
"iopub.execute_input": "2025-05-15T21:27:31.706696Z",
186+
"iopub.status.busy": "2025-05-15T21:27:31.706593Z",
187+
"iopub.status.idle": "2025-05-15T21:27:31.708834Z",
188+
"shell.execute_reply": "2025-05-15T21:27:31.708452Z"
189189
},
190190
"vscode": {
191191
"languageId": "plaintext"
@@ -221,10 +221,10 @@
221221
"id": "0ca491a8",
222222
"metadata": {
223223
"execution": {
224-
"iopub.execute_input": "2025-05-13T11:30:37.750878Z",
225-
"iopub.status.busy": "2025-05-13T11:30:37.750675Z",
226-
"iopub.status.idle": "2025-05-13T11:30:37.833847Z",
227-
"shell.execute_reply": "2025-05-13T11:30:37.833433Z"
224+
"iopub.execute_input": "2025-05-15T21:27:31.709922Z",
225+
"iopub.status.busy": "2025-05-15T21:27:31.709820Z",
226+
"iopub.status.idle": "2025-05-15T21:27:31.782437Z",
227+
"shell.execute_reply": "2025-05-15T21:27:31.782093Z"
228228
},
229229
"vscode": {
230230
"languageId": "plaintext"
@@ -253,10 +253,10 @@
253253
"id": "37ff9c22",
254254
"metadata": {
255255
"execution": {
256-
"iopub.execute_input": "2025-05-13T11:30:37.835247Z",
257-
"iopub.status.busy": "2025-05-13T11:30:37.835139Z",
258-
"iopub.status.idle": "2025-05-13T11:30:37.931324Z",
259-
"shell.execute_reply": "2025-05-13T11:30:37.930910Z"
256+
"iopub.execute_input": "2025-05-15T21:27:31.783596Z",
257+
"iopub.status.busy": "2025-05-15T21:27:31.783489Z",
258+
"iopub.status.idle": "2025-05-15T21:27:31.876948Z",
259+
"shell.execute_reply": "2025-05-15T21:27:31.876528Z"
260260
},
261261
"vscode": {
262262
"languageId": "plaintext"
@@ -266,7 +266,7 @@
266266
{
267267
"data": {
268268
"text/plain": [
269-
"<matplotlib.image.AxesImage at 0x7c02b4fff890>"
269+
"<matplotlib.image.AxesImage at 0x79040f09c050>"
270270
]
271271
},
272272
"execution_count": 7,
@@ -307,10 +307,10 @@
307307
"id": "10ab7a0a",
308308
"metadata": {
309309
"execution": {
310-
"iopub.execute_input": "2025-05-13T11:30:37.932674Z",
311-
"iopub.status.busy": "2025-05-13T11:30:37.932571Z",
312-
"iopub.status.idle": "2025-05-13T11:30:38.079719Z",
313-
"shell.execute_reply": "2025-05-13T11:30:38.079276Z"
310+
"iopub.execute_input": "2025-05-15T21:27:31.878180Z",
311+
"iopub.status.busy": "2025-05-15T21:27:31.878061Z",
312+
"iopub.status.idle": "2025-05-15T21:27:32.032392Z",
313+
"shell.execute_reply": "2025-05-15T21:27:32.031942Z"
314314
},
315315
"vscode": {
316316
"languageId": "plaintext"
@@ -373,7 +373,7 @@
373373
"name": "python",
374374
"nbconvert_exporter": "python",
375375
"pygments_lexer": "ipython3",
376-
"version": "3.12.10"
376+
"version": "3.13.3"
377377
}
378378
},
379379
"nbformat": 4,

misc/libcarna/_imshow.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import numpngw
1010
import numpy as np
11-
import skvideo.io
11+
from .libs.skvideo import io as skvideo_io
1212

1313
try:
1414
from IPython.core.display import HTML as IPythonHTML
@@ -47,7 +47,7 @@ def _render_html_h264(array: np.ndarray | Iterable[np.ndarray], fps: float = 25)
4747

4848
# Encode video
4949
with tempfile.NamedTemporaryFile(suffix='.mp4') as mp4_file:
50-
with skvideo.io.FFmpegWriter(
50+
with skvideo_io.FFmpegWriter(
5151
mp4_file.name,
5252
outputdict={
5353
'-vcodec': 'h264',

misc/libcarna/libs/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)