diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..07fe41c52 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# GitHub syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/.gitignore b/.gitignore index efa8454e5..3f3f17e52 100644 --- a/.gitignore +++ b/.gitignore @@ -94,3 +94,6 @@ cypress/videos/ packages/core/typescript/itk-wasm/dist CMakePresets.json +# pixi environments +.pixi +*.egg-info diff --git a/README.md b/README.md index d62b5ec30..08ac5d326 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ ITK-Wasm [![npm version](https://badge.fury.io/py/itkwasm.svg)](https://pypi.org/project/itkwasm/) [![npm version](https://badge.fury.io/py/itk-webassemblyinterface.svg)](https://pypi.org/project/itk-webassemblyinterface/) -[![DOI](https://zenodo.org/badge/45812381.svg)](https://zenodo.org/badge/latestdoi/45812381) +[![DOI](https://zenodo.org/badge/45812381.svg)](https://zenodo.org/doi/10.5281/zenodo.3688880) ![License](https://img.shields.io/github/license/InsightSoftwareConsortium/ITK-Wasm) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/InsightSoftwareConsortium/ITK-Wasm) diff --git a/docs/_static/packages/compare-images.png b/docs/_static/packages/compare-images.png deleted file mode 100644 index 6162e9beb..000000000 Binary files a/docs/_static/packages/compare-images.png and /dev/null differ diff --git a/docs/_static/packages/compress-stringify.png b/docs/_static/packages/compress-stringify.png deleted file mode 100644 index 31d6bdda9..000000000 Binary files a/docs/_static/packages/compress-stringify.png and /dev/null differ diff --git a/docs/_static/packages/dicom.png b/docs/_static/packages/dicom.png deleted file mode 100644 index 462f3283f..000000000 Binary files a/docs/_static/packages/dicom.png and /dev/null differ diff --git a/docs/_static/packages/downsample.png b/docs/_static/packages/downsample.png deleted file mode 100644 index 626f361ed..000000000 Binary files a/docs/_static/packages/downsample.png and /dev/null differ diff --git a/docs/_static/packages/elastix.png b/docs/_static/packages/elastix.png deleted file mode 100644 index 13e34bf74..000000000 Binary files a/docs/_static/packages/elastix.png and /dev/null differ diff --git a/docs/_static/packages/htj2k.png b/docs/_static/packages/htj2k.png deleted file mode 100644 index bebea63fd..000000000 Binary files a/docs/_static/packages/htj2k.png and /dev/null differ diff --git a/docs/_static/packages/image-io.png b/docs/_static/packages/image-io.png deleted file mode 100644 index e9b1bad70..000000000 Binary files a/docs/_static/packages/image-io.png and /dev/null differ diff --git a/docs/_static/packages/mesh-io.png b/docs/_static/packages/mesh-io.png deleted file mode 100644 index 29ecbd156..000000000 Binary files a/docs/_static/packages/mesh-io.png and /dev/null differ diff --git a/docs/_static/packages/morphological-contour-interpolation.png b/docs/_static/packages/morphological-contour-interpolation.png deleted file mode 100644 index 5eaaa4944..000000000 Binary files a/docs/_static/packages/morphological-contour-interpolation.png and /dev/null differ diff --git a/docs/conf.py b/docs/conf.py index ae4ae62b7..77730b2c3 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -42,9 +42,9 @@ } html_theme = 'furo' -html_static_path = ['_static'] -html_logo = "_static/logo-white.svg" -html_favicon = "_static/icon/favicon.png" +htmlstatic_path = ['static'] +html_logo = "static/logo-white.svg" +html_favicon = "static/icon/favicon.png" html_title = f"{project} documentation" html_baseurl = os.environ.get("SPHINX_BASE_URL", "") diff --git a/docs/cxx/interface_types.md b/docs/cxx/interface_types.md index b05ba1402..1c8cb14cc 100644 --- a/docs/cxx/interface_types.md +++ b/docs/cxx/interface_types.md @@ -45,9 +45,8 @@ int main(argc, char * argv[]) } ``` -
-
itk::wasm::InputTextStream
A string. To reader this data type in C++, using the resulting std::istream.
-
+`itk::wasm::InputTextStream` +: A string. To reader this data type in C++, using the resulting [`std::istream`](https://www.cplusplus.com/reference/istream/istream/). *todo: document remaining CLI11 input and output classes.* diff --git a/docs/cxx/tutorial/debugging.md b/docs/cxx/tutorial/debugging.md index d57c28ee5..18535377a 100644 --- a/docs/cxx/tutorial/debugging.md +++ b/docs/cxx/tutorial/debugging.md @@ -51,11 +51,11 @@ add_executable(DebugMe DebugMe.cxx) with standard CMake commands, -![Native build](/_static/tutorial/debugging/native-build.png) +![Native build](../../static/tutorial/debugging/native-build.png) The native binary can then be debugged in the standard way. For example, with `gdb` on Linux: -![Native debug Linux](/_static/tutorial/debugging/native-debug-linux.png) +![Native debug Linux](../../static/tutorial/debugging/native-debug-linux.png) ## WASI @@ -63,17 +63,17 @@ The most direct way to debug WebAssembly is through the [WebAssembly System Inte First, build to WASI WebAssembly with debugging symbols available: -![WASI debug build](/_static/tutorial/debugging/wasi-build-debug.png) +![WASI debug build](../../static/tutorial/debugging/wasi-build-debug.png) Then, the `itk-wasm` CLI can conveniently run the Wasm binary with the included WASI runtime: -![Run WASI debug](/_static/tutorial/debugging/run-wasi-debug.png) +![Run WASI debug](../../static/tutorial/debugging/run-wasi-debug.png) We can see that `abort` is called in the `main` function at line 13 in `DebugMe.cxx`. A full debugging session is also possible after [LLDB](https://lldb.llvm.org/) >= 13 and [Wasmtime](https://wasmtime.dev/) are installed. -![LLDB WASI debug](/_static/tutorial/debugging/lldb-wasi-debug.png) +![LLDB WASI debug](../../static/tutorial/debugging/lldb-wasi-debug.png) **Note:** when calling `wasmtime` directly and passing local files into a pipeline, `--dir` arguments must be set. This gives `wasmtime` permission to access the directories containing the files. This is required due to WASI's [capability-based security](https://en.wikipedia.org/wiki/Capability-based_security) model. For example, if a file path starts with `./`, then add `--dir ./` arguments to the `wasmtime` invocation. `--dir` can be specified multiple times. @@ -85,31 +85,31 @@ As with native builds, this builds debugging symbols, the human-readable names o When built with the default `Release` build type: -![Emscripten build Release](/_static/tutorial/debugging/emscripten-build-release.png) +![Emscripten build Release](../../static/tutorial/debugging/emscripten-build-release.png) the JavaScript support code is minified, and difficult to debug: -![Run Node Release](/_static/tutorial/debugging/run-node-release.png) +![Run Node Release](../../static/tutorial/debugging/run-node-release.png) However, when built with the `Debug` build type: -![Emscripten build Debug](/_static/tutorial/debugging/emscripten-build-debug.png) +![Emscripten build Debug](../../static/tutorial/debugging/emscripten-build-debug.png) a useful backtrace can be obtained: -![Run Node Debug](/_static/tutorial/debugging/run-node-debug.png) +![Run Node Debug](../../static/tutorial/debugging/run-node-debug.png) In order to run a debugger with Node, add the `--inspect-brk` flag when invoking `node`: -![Node inspect](/_static/tutorial/debugging/node-inspect.png) +![Node inspect](../../static/tutorial/debugging/node-inspect.png) This will pause execution on start a debugging remote interface. To connect to the remote interface with a Chromium browser, visit `chrome://inspect` and click the *inspect* link on the corresponding *Remote Target*: -![Node inspect Remote Target](/_static/tutorial/debugging/node-inspect-remote-target.png) +![Node inspect Remote Target](../../static/tutorial/debugging/node-inspect-remote-target.png) This will open the Chrome Dev Tools debugger: -![Node inspect Chrome DevTools](/_static/tutorial/debugging/node-inspect-chrome-dev-tools.png) +![Node inspect Chrome DevTools](../../static/tutorial/debugging/node-inspect-chrome-dev-tools.png) Other debugger interfaces [are also available](https://nodejs.org/en/docs/inspector), like a CLI debugger or the VSCode debugger. @@ -127,21 +127,21 @@ Next, enable it in DevTools. Open DevTools -> Click the *gear (⚙)* icon in the top right corner -> go to the *Experiments* panel -> and tick *WebAssembly Debugging: Enable DWARF support*. -![Enable Wasm Debugging](/_static/tutorial/debugging/enable-chrome-wasm-debugging.png) +![Enable Wasm Debugging](../../static/tutorial/debugging/enable-chrome-wasm-debugging.png) After exitting Settings, you will be prompted to reload DevTools -- reload. Next, open the options for Chrome WebAssembly Debugging extension: -![Wasm Debugging Options](/_static/tutorial/debugging/devtools-options.png) +![Wasm Debugging Options](../../static/tutorial/debugging/devtools-options.png) Since itk-wasm performs builds in a clean Docker environment, the debugging source paths in the Docker environment are different than the paths on the host system. The debugging extension has a path substitution system that can account for these differences. In the Docker image, the directory where `itk-wasm` is invoked is mounted as `/work`. Substitute `/work` with the directory where the `itk-wasm` CLI is invoked. For example, if `itk-wasm` was invoked at `/home/matt/src/itk-wasm/examples/Debugging`, then: -![Path substitution](/_static/tutorial/debugging/path-substitution.png) +![Path substitution](../../static/tutorial/debugging/path-substitution.png) Build the project with itk-wasm and the `Debug` `CMAKE_BUILD_TYPE` to include DWARF debugging information: -![Emscripten build Debug](/_static/tutorial/debugging/emscripten-build-debug.png) +![Emscripten build Debug](../../static/tutorial/debugging/emscripten-build-debug.png) Here we load and run the WebAssembly with a simple HTML file and server: @@ -167,8 +167,8 @@ Here we load and run the WebAssembly with a simple HTML file and server: ``` -![HTTP Server](/_static/tutorial/debugging/http-server.png) +![HTTP Server](../../static/tutorial/debugging/http-server.png) And we can debug the C++ code in Chrome's DevTools debugger along side the executing JavaScript! -![Debug C++ DevTools](/_static/tutorial/debugging/debug-cxx-devtools.png) +![Debug C++ DevTools](../../static/tutorial/debugging/debug-cxx-devtools.png) diff --git a/docs/cxx/tutorial/hello_pipeline.md b/docs/cxx/tutorial/hello_pipeline.md index baf1636c9..20c9d641d 100644 --- a/docs/cxx/tutorial/hello_pipeline.md +++ b/docs/cxx/tutorial/hello_pipeline.md @@ -151,7 +151,7 @@ Check the generated help output: npx itk-wasm run hello-pipeline.wasi.wasm -- -- --help ``` -![Hello pipeline help](/_static/tutorial/hello_pipeline.png) +![Hello pipeline help](../../static/tutorial/hello_pipeline.png) The two `--`'s are to separate arguments for the Wasm module from arguments to the `itk-wasm` CLI and the WebAssembly interpreter. diff --git a/docs/cxx/tutorial/hello_world.md b/docs/cxx/tutorial/hello_world.md index 56cbcc039..28405bf49 100644 --- a/docs/cxx/tutorial/hello_world.md +++ b/docs/cxx/tutorial/hello_world.md @@ -146,13 +146,13 @@ Create an HTML file named `index.html` that will call the Wasm module through Ja Serve the web page and Wasm module with an http server: -```sh +```shell npm install http-server http-server . ``` And point your browser to `http://127.0.0.1:8080/`. -![Hello Wasm World!](/_static/tutorial/hello_wasm_world.png) +![Hello Wasm World!](../../static/tutorial/hello_wasm_world.png) Congratulations! You just executed a C++ program in your web browser. 🎉 diff --git a/docs/cxx/tutorial/index.md b/docs/cxx/tutorial/index.md index 6a896b5af..c78c7a434 100644 --- a/docs/cxx/tutorial/index.md +++ b/docs/cxx/tutorial/index.md @@ -12,13 +12,3 @@ This tutorial will walk you through the process of *creating WebAssembly scienti This [Jupyter notebook tutorial](https://github.com/InsightSoftwareConsortium/ScientificImageAnalysisVisualizationAndArtificialIntelligenceCourse/blob/master/10_Create_Scientific_WebAssembly_Pipelines.ipynb) also provides an interactive walkthrough. - -```{toctree} -:maxdepth: 2 -:caption: 📖 Tutorial Steps - -hello_world.md -hello_pipeline.md -inputs_outputs.md -debugging.md -``` diff --git a/docs/cxx/tutorial/inputs_outputs.md b/docs/cxx/tutorial/inputs_outputs.md index dee699227..8aa8ba2cb 100644 --- a/docs/cxx/tutorial/inputs_outputs.md +++ b/docs/cxx/tutorial/inputs_outputs.md @@ -84,7 +84,7 @@ Parse the command line arguments with the `ITK_WASM_PARSE` macro: The `-h` and `--help` flags are automatically generated from pipeline arguments to print usage information. -![inputs-outputs help](/_static/tutorial/inputs_outputs_help.png) +![inputs-outputs help](../../static/tutorial/inputs_outputs_help.png) Finally, process our data: ```cpp @@ -157,11 +157,11 @@ npx itk-wasm -b wasi-build run inputs-outputs.wasi.wasm -- -- --radius 2 cthead1 The input image: -![input image](/_static/tutorial/cthead1.png) +![input image](../../static/tutorial/cthead1.png) has been smoothed: -![smoothed](/_static/tutorial/smoothed.png) +![smoothed](../../static/tutorial/smoothed.png) ## Run in Node.js diff --git a/docs/index.md b/docs/index.md index 61ccb1f81..ebe6a93b7 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,14 +5,14 @@ ITK-Wasm
-![itk-wasm](_static/itk-webassembly.png) +![itk-wasm](static/itk-webassembly.png) [![Examples](https://github.com/InsightSoftwareConsortium/ITK-Wasm/actions/workflows/examples.yml/badge.svg)](https://github.com/InsightSoftwareConsortium/ITK-Wasm/actions/workflows/examples.yml) [![Toolchains](https://github.com/InsightSoftwareConsortium/ITK-Wasm/actions/workflows/toolchains.yml/badge.svg)](https://github.com/InsightSoftwareConsortium/ITK-Wasm/actions/workflows/toolchains.yml) [![JavaScript, TypeScript](https://github.com/InsightSoftwareConsortium/ITK-Wasm/actions/workflows/javascript-typescript.yml/badge.svg)](https://github.com/InsightSoftwareConsortium/ITK-Wasm/actions/workflows/javascript-typescript.yml) [![Python WASM](https://github.com/InsightSoftwareConsortium/ITK-Wasm/actions/workflows/python-wasm.yml/badge.svg)](https://github.com/InsightSoftwareConsortium/ITK-Wasm/actions/workflows/python-wasm.yml) [![C++,Native Python](https://github.com/InsightSoftwareConsortium/ITK-Wasm/actions/workflows/cxx-python.yml/badge.svg)](https://github.com/InsightSoftwareConsortium/ITK-Wasm/actions/workflows/cxx-python.yml) [![WASI](https://github.com/InsightSoftwareConsortium/ITK-Wasm/actions/workflows/wasi.yml/badge.svg)](https://github.com/InsightSoftwareConsortium/ITK-Wasm/actions/workflows/wasi.yml) [![Documentation](https://github.com/InsightSoftwareConsortium/ITK-Wasm/actions/workflows/documentation.yml/badge.svg)](https://github.com/InsightSoftwareConsortium/ITK-Wasm/actions/workflows/documentation.yml) [![npm version](https://badge.fury.io/js/itk-wasm.svg)](https://www.npmjs.com/package/itk-wasm) [![itkwasm version](https://badge.fury.io/py/itkwasm.svg)](https://pypi.org/project/itkwasm/) -[![DOI](https://zenodo.org/badge/45812381.svg)](https://zenodo.org/badge/latestdoi/45812381) +[![DOI](https://zenodo.org/badge/45812381.svg)](https://zenodo.org/doi/10.5281/zenodo.3688880) ![License](https://img.shields.io/github/license/InsightSoftwareConsortium/ITK-Wasm) ![GitHub commit activity](https://img.shields.io/github/commit-activity/y/InsightSoftwareConsortium/ITK-Wasm)
@@ -26,55 +26,4 @@ The project provides tools to - transfer data efficiently in and out of the WebAssembly runtime. - perform asynchronous, parallel execution of processing pipelines in a worker pool. -*ITK-Wasm* can be used to execute [ITK](https://www.itk.org/) or arbitrary C++ codes in the browser, on the command line, and in languages like Python via [WASI](https://wasi.dev/) and [Emscripten](https://emscripten.org) runtimes. - -```{toctree} -:hidden: -:maxdepth: 3 -:caption: 👋 Introduction - -introduction/packages.md -introduction/parts.md -model/index.md -introduction/file_formats/index.md -``` - -```{toctree} -:hidden: -:maxdepth: 3 -:caption: 🌐 JavaScript/TypeScript - -typescript/interface_types/index.md -typescript/index.md -typescript/distribution/index.md -``` - -```{toctree} -:hidden: -:maxdepth: 3 -:caption: 🐍 Python - -python/introduction.md -python/numpy.md -python/itk_python.md -apidocs/index.rst -``` - -```{toctree} -:hidden: -:maxdepth: 3 -:caption: 📖 C++ Wasm Processing Pipelines - -cxx/installation.md -cxx/tutorial/index.md -cxx/interface_types.md -``` - -```{toctree} -:hidden: -:maxdepth: 3 -:caption: 🔨 ITK-Wasm Development - -development/hacking_itk_wasm.md -development/itk_js_to_itk_wasm_migration_guide.md -``` +*ITK-Wasm* can be used to execute [ITK](https://www.itk.org/) or arbitrary C++ codes in the browser, on the command line, and in languages like Python via [WASI](https://wasi.dev/) and [Emscripten](https://emscripten.org) runtimes. \ No newline at end of file diff --git a/docs/introduction/file_formats/index.md b/docs/introduction/file_formats/index.md index 2f096f296..fd6b385ae 100644 --- a/docs/introduction/file_formats/index.md +++ b/docs/introduction/file_formats/index.md @@ -14,17 +14,8 @@ ITK-Wasm formats can be output in a directory or bundled in a single `.cbor` fil ITK-Wasm file formats are available in ITK-Wasm IO functions but also in C++ via the *WebAssemblyInterface* ITK module. This module can be enabled in an ITK build by setting the `-DModule_WebAssemblyInterface:BOOL=ON` flag in CMake. And, loading and conversion is also available native-binary Python bindings via the [*itk-webassemblyinterface* Python package](https://pypi.org/project/itk-webassemblyinterface/). -
-
ITK-Wasm Image (.iwi, .iwi.cbor, .iwi.cbor.zst)
Serialization of an Image.
-
ITK-Wasm Mesh (.iwm, .iwm.cbor, .iwm.cbor.zst)
Serialization of a Mesh, or PolyData.
-
+ITK-Wasm Image (.iwi, .iwi.cbor, .iwi.cbor.zst) +: Serialization of an [Image](../../model/Image). - -```{toctree} -:hidden: -:maxdepth: 3 - -images.md -meshes.md -dicom.md -``` +ITK-Wasm Mesh (.iwm, .iwm.cbor, .iwm.cbor.zst) +: Serialization of a [Mesh](../../model/Mesh) or [PolyData](../../model/PolyData). diff --git a/docs/introduction/packages.md b/docs/introduction/packages.md index 4c30238fd..809fb1c3a 100644 --- a/docs/introduction/packages.md +++ b/docs/introduction/packages.md @@ -4,21 +4,38 @@ Example packages built with itk-wasm can be found below. If you created a package, please [open a pull request](https://github.com/InsightSoftwareConsortium/ITK-Wasm/compare) to add it to the table! -| Repository | Description | Links | -|-----------------------------|:---------------------------------------------:|:----------------------:| -| [@itk-wasm/compare-images][compare-images-repo] | [][compare-images-demo-js]
*Compare images with a tolerance for regression testing.* | ![js][js-logo] ![ts][ts-logo]
[👨‍💻 Demo][compare-images-demo-js]
[🕮 Docs][compare-images-docs-js]
[📦 Package][compare-images-package-js]

![py][py-logo]
[🕮 Docs][compare-images-docs-py]
[📦 Package][compare-images-package-py] | -| [@itk-wasm/compress-stringify][compress-stringify-repo] | [][compress-stringify-demo-js]
*Zstandard compression and decompression and base64 encoding and decoding in WebAssembly.* | ![js][js-logo] ![ts][ts-logo]
[👨‍💻 Demo][compress-stringify-demo-js]
[🕮 Docs][compress-stringify-docs-js]
[📦 Package][compress-stringify-package-js]

![py][py-logo]
[👨‍💻 Demo][compress-stringify-demo-py]
[🕮 Docs][compress-stringify-docs-py]
[📦 Package][compress-stringify-package-py] | -| [@itk-wasm/dicom][dicom-repo] | [][dicom-demo-js]
*Read files and images related to DICOM file format.* | ![js][js-logo] ![ts][ts-logo]
[👨‍💻 Demo][dicom-demo-js]
[🕮 Docs][dicom-docs-js]
[📦 Package][dicom-package-js]

![py][py-logo]
[🕮 Docs][dicom-docs-py]
[📦 Package][dicom-package-py] | -| [@itk-wasm/downsample][downsample-repo] | [][downsample-demo-js]
*Pipelines for downsampling images.* | ![js][js-logo] ![ts][ts-logo]
[👨‍💻 Demo][downsample-demo-js]
[🕮 Docs][downsample-docs-js]
[📦 Package][downsample-package-js]

![py][py-logo]
[🕮 Docs][downsample-docs-py]
[📦 Package][downsample-package-py] | -| [@itk-wasm/elastix][elastix-repo] | [][elastix-demo-js]
*A toolbox for rigid and nonrigid registration of images.* | ![js][js-logo] ![ts][ts-logo]
[👨‍💻 Demo][elastix-demo-js]
[🕮 Docs][elastix-docs-js]
[📦 Package][elastix-package-js]

![py][py-logo]
[🕮 Docs][elastix-docs-py]
[📦 Package][elastix-package-py] | -| [@itk-wasm/htj2k][htj2k-repo] | [][htj2k-demo-js]
*Wasm-SIMD accelerated decoding and encoding High-throughput JPEG2000 (HTJ2K) images.* | ![js][js-logo] ![ts][ts-logo]
[👨‍💻 Demo][htj2k-demo-js]
[🕮 Docs][htj2k-docs-js]
[📦 Package][htj2k-package-js]

![py][py-logo]
[🕮 Docs][htj2k-docs-py]
[📦 Package][htj2k-package-py] | -| [@itk-wasm/image-io][image-io-repo] | [][image-io-demo-js]
*Input and output for scientific and medical image file formats.* | ![js][js-logo] ![ts][ts-logo]
[👨‍💻 Demo][image-io-demo-js]
[🕮 Docs][image-io-docs-js]
[📦 Package][image-io-package-js]

![py][py-logo]
[🕮 Docs][image-io-docs-py]
[📦 Package][image-io-package-py] | -| [@itk-wasm/mesh-io][mesh-io-repo] | [][mesh-io-demo-js]
*Input and output for scientific and medical mesh file formats.* | ![js][js-logo] ![ts][ts-logo]
[👨‍💻 Demo][mesh-io-demo-js]
[🕮 Docs][mesh-io-docs-js]
[📦 Package][mesh-io-package-js]

![py][py-logo]
[🕮 Docs][mesh-io-docs-py]
[📦 Package][mesh-io-package-py] | -| [@itk-wasm/morphological-contour-interpolation][morphological-contour-interpolation-repo] | [][morphological-contour-interpolation-demo-js]
*Input and output for scientific and medical mesh file formats.* | ![js][js-logo] ![ts][ts-logo]
[👨‍💻 Demo][morphological-contour-interpolation-demo-js]
[🕮 Docs][morphological-contour-interpolation-docs-js]
[📦 Package][morphological-contour-interpolation-package-js]

![py][py-logo]
[🕮 Docs][morphological-contour-interpolation-docs-py]
[📦 Package][morphological-contour-interpolation-package-py] | +```{list-table} Example packages +:header-rows: 1 +:label: example-packages +:class: text-center -[js-logo]: /_static/javascript-logo.svg -[ts-logo]: /_static/typescript-logo.svg -[py-logo]: /_static/python.svg +* - Description + - Links +* - [![compare-images](../static/packages/compare-images.png)][compare-images-demo-js] [compare-images][compare-images-repo]
*Compare images with a tolerance for regression testing.* + - ![js][js-logo] [👨‍💻 Demo][compare-images-demo-js]
[🕮 Docs][compare-images-docs-js]
[📦 Package][compare-images-package-js]

![py][py-logo] [🕮 Docs][compare-images-docs-py]
[📦 Package][compare-images-package-py] ![](../static/links-spacer.png) +* - [![compress-stringify](../static/packages/compress-stringify.png)][compress-stringify-demo-js] [compress-stringify][compress-stringify-repo]
*Zstandard compression and decompression and base64 encoding and decoding in WebAssembly.* + - ![js][js-logo] [👨‍💻 Demo][compress-stringify-demo-js]
[🕮 Docs][compress-stringify-docs-js]
[📦 Package][compress-stringify-package-js]

![py][py-logo] [👨‍💻 Demo][compress-stringify-demo-py]
[🕮 Docs][compress-stringify-docs-py]
[📦 Package][compress-stringify-package-py] +* - [![dicom](../static/packages/dicom.png)][dicom-demo-js] [dicom][dicom-repo]
*Read files and images related to DICOM file format.* + - ![js][js-logo] [👨‍💻 Demo][dicom-demo-js]
[🕮 Docs][dicom-docs-js]
[📦 Package][dicom-package-js]

![py][py-logo] [🕮 Docs][dicom-docs-py]
[📦 Package][dicom-package-py] +* - [![downsample](../static/packages/downsample.png)][downsample-demo-js] [downsample][downsample-repo]
*Pipelines for downsampling images.* + - ![js][js-logo] [👨‍💻 Demo][downsample-demo-js]
[🕮 Docs][downsample-docs-js]
[📦 Package][downsample-package-js]

![py][py-logo] [🕮 Docs][downsample-docs-py]
[📦 Package][downsample-package-py] +* - [![elastix](../static/packages/elastix.png)][elastix-demo-js] [elastix][elastix-repo]
*A toolbox for rigid and nonrigid registration of images.* + - ![js][js-logo] [👨‍💻 Demo][elastix-demo-js]
[🕮 Docs][elastix-docs-js]
[📦 Package][elastix-package-js]

![py][py-logo] [🕮 Docs][elastix-docs-py]
[📦 Package][elastix-package-py] +* - [![htj2k](../static/packages/htj2k.png)][htj2k-demo-js] [htj2k][htj2k-repo]
*Wasm-SIMD accelerated decoding and encoding High-throughput JPEG2000 (HTJ2K) images.* + - ![js][js-logo] [👨‍💻 Demo][htj2k-demo-js]
[🕮 Docs][htj2k-docs-js]
[📦 Package][htj2k-package-js]

![py][py-logo] [🕮 Docs][htj2k-docs-py]
[📦 Package][htj2k-package-py] +* - [![image-io](../static/packages/image-io.png)][image-io-demo-js] [image-io][image-io-repo]
*Input and output for scientific and medical image file formats.* + - ![js][js-logo] [👨‍💻 Demo][image-io-demo-js]
[🕮 Docs][image-io-docs-js]
[📦 Package][image-io-package-js]

![py][py-logo] [🕮 Docs][image-io-docs-py]
[📦 Package][image-io-package-py] +* - [![mesh-io](../static/packages/mesh-io.png)][mesh-io-demo-js] [mesh-io][mesh-io-repo]
*Input and output for scientific and medical mesh file formats.* + - ![js][js-logo] [👨‍💻 Demo][mesh-io-demo-js]
[🕮 Docs][mesh-io-docs-js]
[📦 Package][mesh-io-package-js]

![py][py-logo] [🕮 Docs][mesh-io-docs-py]
[📦 Package][mesh-io-package-py] +* - [![morphological-contour-interpolation](../static/packages/morphological-contour-interpolation.png)][morphological-contour-interpolation-demo-js] [morphological-contour-interpolation][morphological-contour-interpolation-repo]
*Input and output for scientific and medical mesh file formats.* + - ![js][js-logo] [👨‍💻 Demo][morphological-contour-interpolation-demo-js]
[🕮 Docs][morphological-contour-interpolation-docs-js]
[📦 Package][morphological-contour-interpolation-package-js]

![py][py-logo] [🕮 Docs][morphological-contour-interpolation-docs-py]
[📦 Package][morphological-contour-interpolation-package-py] + +``` + +[js-logo]: ../static/javascript-logo.svg +[ts-logo]: ../static/typescript-logo.svg +[py-logo]: ../static/python.svg +[gh-logo]: ../static/github.svg [compare-images-repo]: https://github.com/InsightSoftwareConsortium/ITK-Wasm/tree/main/packages/compare-images [compare-images-demo-js]: https://insightsoftwareconsortium.github.io/ITK-Wasm/compare-images/ts/app/ diff --git a/docs/myst.yml b/docs/myst.yml new file mode 100644 index 000000000..504977b09 --- /dev/null +++ b/docs/myst.yml @@ -0,0 +1,186 @@ +# See docs at: https://mystmd.org/guide/frontmatter +version: 1 +project: + id: 823d8bd8-d894-408c-bd81-bca17930fb73 + title: "ITK-Wasm documentation" + subtitle: "Universal spatial analysis and visualization." + short_title: "ITK-Wasm" + description: "ITK-Wasm combines ITK and WebAssembly to enable high-performance spatial analysis in a web browser or system-level environments and reproducible execution across programming languages and hardware architectures." + keywords: ["ITK", "WebAssembly", "JavaScript", "Python", "Biomedical Imaging", "Scientific Computing", "Image Processing", "Visualization"] + # authors: ["Matthew McCormick"] + github: https://github.com/InsightSoftwareConsortium/ITK-Wasm + license: + code: Apache-2.0 + content: CC-BY-4.0 + # To autogenerate a Table of Contents, run "myst init --write-toc" + toc: + # Auto-generated by `myst init --write-toc` + - file: index.md + - title: 👋 hey + children: + - file: apidocs/itkwasm/itkwasm.binary_file.md + - title: 👋 Introduction + children: + - file: introduction/packages.md + - file: introduction/parts.md + - title: File Formats + children: + - file: introduction/file_formats/index.md + - file: introduction/file_formats/images.md + - file: introduction/file_formats/meshes.md + - file: introduction/file_formats/dicom.md + - title: 🔗 Model + children: + - file: model/index.md + - file: model/BinaryData.md + - file: model/binaryFile__data.md + - file: model/BinaryFile.md + - file: model/binaryStream__data.md + - file: model/BinaryStream.md + - file: model/cellComponentType.md + - file: model/cellPixelComponents.md + - file: model/cellPixelComponentType.md + - file: model/cellPixelType.md + - file: model/components.md + - file: model/componentType.md + - file: model/dimension.md + - file: model/doubleList__values.md + - file: model/DoubleList.md + - file: model/floatList__values.md + - file: model/FloatList.md + - file: model/FloatTypes.md + - file: model/image__data.md + - file: model/image__direction.md + - file: model/image__imageType.md + - file: model/image__metadata.md + - file: model/image__name.md + - file: model/image__origin.md + - file: model/image__size.md + - file: model/image__spacing.md + - file: model/Image.md + - file: model/ImageType.md + - file: model/integerList__values.md + - file: model/IntegerList.md + - file: model/InterfaceType.md + - file: model/IntTypes.md + - file: model/JsonCompatible.md + - file: model/mesh__cellBufferSize.md + - file: model/mesh__cellData.md + - file: model/mesh__cells.md + - file: model/mesh__meshType.md + - file: model/mesh__name.md + - file: model/mesh__numberOfCellPixels.md + - file: model/mesh__numberOfCells.md + - file: model/mesh__numberOfPointPixels.md + - file: model/mesh__numberOfPoints.md + - file: model/mesh__pointData.md + - file: model/mesh__points.md + - file: model/Mesh.md + - file: model/MeshType.md + - file: model/metadata__entries.md + - file: model/Metadata.md + - file: model/metadataEntry__key.md + - file: model/metadataEntry__value.md + - file: model/MetadataEntry.md + - file: model/path.md + - file: model/pixelType.md + - file: model/PixelTypes.md + - file: model/pointComponentType.md + - file: model/pointPixelComponents.md + - file: model/pointPixelComponentType.md + - file: model/pointPixelType.md + - file: model/polyData__cellData.md + - file: model/polyData__lines.md + - file: model/polyData__linesBufferSize.md + - file: model/polyData__name.md + - file: model/polyData__numberOfCellPixels.md + - file: model/polyData__numberOfPointPixels.md + - file: model/polyData__numberOfPoints.md + - file: model/polyData__pointData.md + - file: model/polyData__points.md + - file: model/polyData__polygons.md + - file: model/polyData__polygonsBufferSize.md + - file: model/PolyData.md + - file: model/stringList__values.md + - file: model/StringList.md + - file: model/textFile__data.md + - file: model/TextFile.md + - file: model/textStream__data.md + - file: model/TextStream.md + - title: Types + children: + - file: model/types/Boolean.md + - file: model/types/Curie.md + - file: model/types/Date.md + - file: model/types/DateOrDatetime.md + - file: model/types/Datetime.md + - file: model/types/Decimal.md + - file: model/types/Double.md + - file: model/types/Float.md + - file: model/types/Integer.md + - file: model/types/Jsonpath.md + - file: model/types/Jsonpointer.md + - file: model/types/Ncname.md + - file: model/types/Nodeidentifier.md + - file: model/types/Objectidentifier.md + - file: model/types/Sparqlpath.md + - file: model/types/String.md + - file: model/types/Time.md + - file: model/types/Uri.md + - file: model/types/Uriorcurie.md + - title: 🐍 Python + children: + - file: python/introduction.md + - file: python/numpy.md + - file: python/itk_python.md + - file: python/itk-webassemblyinterface.md + - title: 🌐 JavaScript / Typescript + children: + - file: typescript/index.md + - file: typescript/browser_io.md + - file: typescript/browser_pipelines.md + - file: typescript/node_io.md + - file: typescript/node_pipelines.md + - title: Distribution + children: + - file: typescript/distribution/index.md + - file: typescript/distribution/vite.md + - file: typescript/distribution/node.md + - file: typescript/distribution/umd.md + - file: typescript/distribution/webpack.md + - title: Interface Types + children: + - file: typescript/interface_types/index.md + - file: typescript/interface_types/BinaryFile.md + - file: typescript/interface_types/BinaryStream.md + - file: typescript/interface_types/Image.md + - file: typescript/interface_types/ImageType.md + - file: typescript/interface_types/JsonCompatible.md + - file: typescript/interface_types/Mesh.md + - file: typescript/interface_types/MeshType.md + - file: typescript/interface_types/PolyData.md + - file: typescript/interface_types/TextFile.md + - file: typescript/interface_types/TextStream.md + - title: 📖 Cxx + children: + - file: cxx/installation.md + - file: cxx/interface_types.md + - title: Tutorial + children: + - file: cxx/tutorial/index.md + - file: cxx/tutorial/hello_world.md + - file: cxx/tutorial/hello_pipeline.md + - file: cxx/tutorial/inputs_outputs.md + - file: cxx/tutorial/debugging.md + - title: 🔨 Development + children: + - file: development/hacking_itk_wasm.md + - file: development/itk_js_to_itk_wasm_migration_guide.md + +site: + title: "ITK-Wasm documentation" + template: book-theme + options: + favicon: static/icon/favicon.png + logo: static/logo-light.svg + logo_dark: static/logo-dark.svg diff --git a/docs/python/introduction.md b/docs/python/introduction.md index 613920708..5665ca46b 100644 --- a/docs/python/introduction.md +++ b/docs/python/introduction.md @@ -1,18 +1,18 @@ # Introduction -`itkwasm` enables **universal spatial analysis and visualization** via [WebAssembly (wasm)](https://webassembly.org) {octicon}`telescope`. +`itkwasm` enables **universal spatial analysis and visualization** via [WebAssembly (wasm)](https://webassembly.org) 🔭. -`itkwasm` Python packages run on *all modern web browsers and at a system level across all major operating systems and hardware architectures* {octicon}`browser` {octicon}`codespaces`. +`itkwasm` Python packages run on *all modern web browsers and at a system level across all major operating systems and hardware architectures* 🖥️. -All versions of Python 3.8+ are supported {octicon}`globe`. +All versions of Python 3.8+ are supported 🌐. -Additionally, non-wasm packages accelerate performance via GPUs when available {octicon}`rocket`. +Additionally, non-wasm packages accelerate performance via GPUs when available 🚀. -In the browser, [Pyodide](https://pyodide.org/)-compatible packages provide client-side web app scripting in Python, including via [PyScript](https://pyscript.net/), and sustainable, scalable Jupyter deployments via [JupyterLite](https://jupyterlite-sphinx.readthedocs.io/) {octicon}`code-square` {octicon}`light-bulb`. +In the browser, [Pyodide](https://pyodide.org/)-compatible packages provide client-side web app scripting in Python, including via [PyScript](https://pyscript.net/), and sustainable, scalable Jupyter deployments via [JupyterLite](https://jupyterlite-sphinx.readthedocs.io/) 🕸️. -At a system level, Linux, macOS, and Windows operating systems are supported on x86_64 and ARM via [wasmtime-py](https://bytecodealliance.github.io/wasmtime-py/) {octicon}`zap`. +At a system level, Linux, macOS, and Windows operating systems are supported on x86_64 and ARM via [wasmtime-py](https://bytecodealliance.github.io/wasmtime-py/) ⚡. -`itkwasm` Python packages are *highly modular*, have *a tiny footprint*, and have *minimal dependencies*; they only depend on `itkwasm`, `numpy`, and `pyodide` or `wasmtime` {octicon}`container`. +`itkwasm` Python packages are *highly modular*, have *a tiny footprint*, and have *minimal dependencies*; they only depend on `itkwasm`, `numpy`, and `pyodide` or `wasmtime` 📦. This [Jupyter notebook tutorial](https://github.com/InsightSoftwareConsortium/ScientificImageAnalysisVisualizationAndArtificialIntelligenceCourse/blob/master/9_WebAssembly_Introduction.ipynb) @@ -22,7 +22,34 @@ provides further background information and related hands-on experiences. There is a primary, pip-installable Python package. In browser environments, this will pull a corresponding [Emscripten](https://emscripten.org)-enabled Python package. For system Python distributions, this will bring in a corresponding [WASI](https://wasi.dev)-enabled Python package. When GPU-accelerated implementations of functions are available in other packages along with required hardware and software, simply pip-installing the accelerator package will cause function calls to invoke accelerated overrides registered with modern [package metadata](https://packaging.python.org/en/latest/guides/creating-and-discovering-plugins/#using-package-metadata). -![environment dispatch diagram](/_static/environment-dispatch-mermaid.svg) +```{figure} +:::{mermaid} +flowchart TD + A[fa:fa-box-open itkwasm-package-name] --> B{browser?} + A -.-> |pip install| P[accelerator-package] + B --> |yes| C[fa:fa-box-open itkwasm-package-name-emscripten] + C --> |any OS, architecture| D([Chromium-based browser]) + C --> |any OS, architecture| E([Firefox]) + C --> |macOS, x86_64, ARM| F([Safari]) + B --> |no| wasi[fa:fa-box-open itkwasm-package-name-wasi] + wasi --> G{architecture?} + G --> H(x86_64) + G --> I(ARM) + H --> J(Linux) + H --> K(macOS) + H --> L(Windows) + I --> M(Linux) + I --> N(macOS) + P --> Q(CUDA) + P --> R(OpenCL) + P --> S(WebGPU) + S --> T{browser?} + T --> |yes| U[fa:fa-box-open accelerator-package-emscripten] + T --> |no| V[fa:fa-box-open accelerator-package-native] +::: + +ITK-Wasm Python environmental dispatch +``` ## Browser and system APIs @@ -31,7 +58,7 @@ While synchronous functions are available in system packages, browser packages p For example, to install the [itkwasm-compress-stringify](https://pypi.org/project/itkwasm-compress-stringify/) package: -::::{tab-set} +````{tab-set} :::{tab-item} System ```shell @@ -45,14 +72,15 @@ In Pyodide, e.g. the [Pyodide REPL](https://pyodide.org/en/stable/console.html) ```python import micropip await micropip.install('itkwasm-compress-stringify') +``` ::: -:::: +```` In the browser, call the async `*_async` function with the `await` keyword. -::::{tab-set} +````{tab-set} :::{tab-item} System ```python @@ -72,4 +100,4 @@ compressed = await compress_stringify_async(data) ``` ::: -:::: +```` diff --git a/docs/itk-webassemblyinterface-description.md b/docs/python/itk-webassemblyinterface.md similarity index 100% rename from docs/itk-webassemblyinterface-description.md rename to docs/python/itk-webassemblyinterface.md diff --git a/docs/requirements.txt b/docs/requirements.txt index 30a7c100a..1a495ab29 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,7 +1,5 @@ -sphinx>=7.2.6 -furo +mystmd sphinx-autodoc2>=0.5.0 -myst-parser sphinx-copybutton sphinxext-opengraph sphinx-design diff --git a/docs/_static/environment-dispatch-mermaid-history.json b/docs/static/environment-dispatch-mermaid-history.json similarity index 100% rename from docs/_static/environment-dispatch-mermaid-history.json rename to docs/static/environment-dispatch-mermaid-history.json diff --git a/docs/_static/environment-dispatch-mermaid.png b/docs/static/environment-dispatch-mermaid.png similarity index 100% rename from docs/_static/environment-dispatch-mermaid.png rename to docs/static/environment-dispatch-mermaid.png diff --git a/docs/_static/environment-dispatch-mermaid.svg b/docs/static/environment-dispatch-mermaid.svg similarity index 100% rename from docs/_static/environment-dispatch-mermaid.svg rename to docs/static/environment-dispatch-mermaid.svg diff --git a/docs/_static/github.svg b/docs/static/github.svg similarity index 100% rename from docs/_static/github.svg rename to docs/static/github.svg diff --git a/docs/_static/icon/favicon-160x160.png b/docs/static/icon/favicon-160x160.png similarity index 100% rename from docs/_static/icon/favicon-160x160.png rename to docs/static/icon/favicon-160x160.png diff --git a/docs/_static/icon/favicon-16x16.png b/docs/static/icon/favicon-16x16.png similarity index 100% rename from docs/_static/icon/favicon-16x16.png rename to docs/static/icon/favicon-16x16.png diff --git a/docs/_static/icon/favicon-196x196.png b/docs/static/icon/favicon-196x196.png similarity index 100% rename from docs/_static/icon/favicon-196x196.png rename to docs/static/icon/favicon-196x196.png diff --git a/docs/_static/icon/favicon-32x32.png b/docs/static/icon/favicon-32x32.png similarity index 100% rename from docs/_static/icon/favicon-32x32.png rename to docs/static/icon/favicon-32x32.png diff --git a/docs/_static/icon/favicon-96x96.png b/docs/static/icon/favicon-96x96.png similarity index 100% rename from docs/_static/icon/favicon-96x96.png rename to docs/static/icon/favicon-96x96.png diff --git a/docs/_static/icon/favicon.png b/docs/static/icon/favicon.png similarity index 100% rename from docs/_static/icon/favicon.png rename to docs/static/icon/favicon.png diff --git a/docs/_static/itk-webassembly.png b/docs/static/itk-webassembly.png similarity index 100% rename from docs/_static/itk-webassembly.png rename to docs/static/itk-webassembly.png diff --git a/docs/_static/javascript-logo.svg b/docs/static/javascript-logo.svg similarity index 100% rename from docs/_static/javascript-logo.svg rename to docs/static/javascript-logo.svg diff --git a/docs/static/links-spacer.png b/docs/static/links-spacer.png new file mode 100644 index 000000000..6d8c2f898 Binary files /dev/null and b/docs/static/links-spacer.png differ diff --git a/docs/static/logo-dark.svg b/docs/static/logo-dark.svg new file mode 100644 index 000000000..f494df1ea --- /dev/null +++ b/docs/static/logo-dark.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_static/logo-white.svg b/docs/static/logo-light.svg similarity index 100% rename from docs/_static/logo-white.svg rename to docs/static/logo-light.svg diff --git a/docs/_static/logo.png b/docs/static/logo.png similarity index 100% rename from docs/_static/logo.png rename to docs/static/logo.png diff --git a/docs/_static/logo.svg b/docs/static/logo.svg similarity index 100% rename from docs/_static/logo.svg rename to docs/static/logo.svg diff --git a/docs/_static/npm.svg b/docs/static/npm.svg similarity index 100% rename from docs/_static/npm.svg rename to docs/static/npm.svg diff --git a/docs/static/packages/compare-images.png b/docs/static/packages/compare-images.png new file mode 100644 index 000000000..17a743c5d Binary files /dev/null and b/docs/static/packages/compare-images.png differ diff --git a/docs/static/packages/compress-stringify.png b/docs/static/packages/compress-stringify.png new file mode 100644 index 000000000..e7364b275 Binary files /dev/null and b/docs/static/packages/compress-stringify.png differ diff --git a/docs/static/packages/dicom.png b/docs/static/packages/dicom.png new file mode 100644 index 000000000..8d34dbf9a Binary files /dev/null and b/docs/static/packages/dicom.png differ diff --git a/docs/static/packages/downsample.png b/docs/static/packages/downsample.png new file mode 100644 index 000000000..b5ce74a8d Binary files /dev/null and b/docs/static/packages/downsample.png differ diff --git a/docs/static/packages/elastix.png b/docs/static/packages/elastix.png new file mode 100644 index 000000000..0732d4f77 Binary files /dev/null and b/docs/static/packages/elastix.png differ diff --git a/docs/static/packages/htj2k.png b/docs/static/packages/htj2k.png new file mode 100644 index 000000000..4970b33ba Binary files /dev/null and b/docs/static/packages/htj2k.png differ diff --git a/docs/static/packages/image-io.png b/docs/static/packages/image-io.png new file mode 100644 index 000000000..0b19fb705 Binary files /dev/null and b/docs/static/packages/image-io.png differ diff --git a/docs/static/packages/mesh-io.png b/docs/static/packages/mesh-io.png new file mode 100644 index 000000000..f277963cf Binary files /dev/null and b/docs/static/packages/mesh-io.png differ diff --git a/docs/static/packages/morphological-contour-interpolation.png b/docs/static/packages/morphological-contour-interpolation.png new file mode 100644 index 000000000..515e67d3b Binary files /dev/null and b/docs/static/packages/morphological-contour-interpolation.png differ diff --git a/docs/_static/python.svg b/docs/static/python.svg similarity index 100% rename from docs/_static/python.svg rename to docs/static/python.svg diff --git a/docs/_static/tutorial/cthead1.png b/docs/static/tutorial/cthead1.png similarity index 100% rename from docs/_static/tutorial/cthead1.png rename to docs/static/tutorial/cthead1.png diff --git a/docs/_static/tutorial/debugging/debug-cxx-devtools.png b/docs/static/tutorial/debugging/debug-cxx-devtools.png similarity index 100% rename from docs/_static/tutorial/debugging/debug-cxx-devtools.png rename to docs/static/tutorial/debugging/debug-cxx-devtools.png diff --git a/docs/_static/tutorial/debugging/devtools-options.png b/docs/static/tutorial/debugging/devtools-options.png similarity index 100% rename from docs/_static/tutorial/debugging/devtools-options.png rename to docs/static/tutorial/debugging/devtools-options.png diff --git a/docs/_static/tutorial/debugging/emscripten-build-debug.png b/docs/static/tutorial/debugging/emscripten-build-debug.png similarity index 100% rename from docs/_static/tutorial/debugging/emscripten-build-debug.png rename to docs/static/tutorial/debugging/emscripten-build-debug.png diff --git a/docs/_static/tutorial/debugging/emscripten-build-release.png b/docs/static/tutorial/debugging/emscripten-build-release.png similarity index 100% rename from docs/_static/tutorial/debugging/emscripten-build-release.png rename to docs/static/tutorial/debugging/emscripten-build-release.png diff --git a/docs/_static/tutorial/debugging/emscripten-build.png b/docs/static/tutorial/debugging/emscripten-build.png similarity index 100% rename from docs/_static/tutorial/debugging/emscripten-build.png rename to docs/static/tutorial/debugging/emscripten-build.png diff --git a/docs/_static/tutorial/debugging/enable-chrome-wasm-debugging.png b/docs/static/tutorial/debugging/enable-chrome-wasm-debugging.png similarity index 100% rename from docs/_static/tutorial/debugging/enable-chrome-wasm-debugging.png rename to docs/static/tutorial/debugging/enable-chrome-wasm-debugging.png diff --git a/docs/_static/tutorial/debugging/http-server.png b/docs/static/tutorial/debugging/http-server.png similarity index 100% rename from docs/_static/tutorial/debugging/http-server.png rename to docs/static/tutorial/debugging/http-server.png diff --git a/docs/_static/tutorial/debugging/lldb-wasi-debug.png b/docs/static/tutorial/debugging/lldb-wasi-debug.png similarity index 100% rename from docs/_static/tutorial/debugging/lldb-wasi-debug.png rename to docs/static/tutorial/debugging/lldb-wasi-debug.png diff --git a/docs/_static/tutorial/debugging/native-build.png b/docs/static/tutorial/debugging/native-build.png similarity index 100% rename from docs/_static/tutorial/debugging/native-build.png rename to docs/static/tutorial/debugging/native-build.png diff --git a/docs/_static/tutorial/debugging/native-debug-linux.png b/docs/static/tutorial/debugging/native-debug-linux.png similarity index 100% rename from docs/_static/tutorial/debugging/native-debug-linux.png rename to docs/static/tutorial/debugging/native-debug-linux.png diff --git a/docs/_static/tutorial/debugging/node-inspect-chrome-dev-tools.png b/docs/static/tutorial/debugging/node-inspect-chrome-dev-tools.png similarity index 100% rename from docs/_static/tutorial/debugging/node-inspect-chrome-dev-tools.png rename to docs/static/tutorial/debugging/node-inspect-chrome-dev-tools.png diff --git a/docs/_static/tutorial/debugging/node-inspect-remote-target.png b/docs/static/tutorial/debugging/node-inspect-remote-target.png similarity index 100% rename from docs/_static/tutorial/debugging/node-inspect-remote-target.png rename to docs/static/tutorial/debugging/node-inspect-remote-target.png diff --git a/docs/_static/tutorial/debugging/node-inspect.png b/docs/static/tutorial/debugging/node-inspect.png similarity index 100% rename from docs/_static/tutorial/debugging/node-inspect.png rename to docs/static/tutorial/debugging/node-inspect.png diff --git a/docs/_static/tutorial/debugging/path-substitution.png b/docs/static/tutorial/debugging/path-substitution.png similarity index 100% rename from docs/_static/tutorial/debugging/path-substitution.png rename to docs/static/tutorial/debugging/path-substitution.png diff --git a/docs/_static/tutorial/debugging/run-node-debug.png b/docs/static/tutorial/debugging/run-node-debug.png similarity index 100% rename from docs/_static/tutorial/debugging/run-node-debug.png rename to docs/static/tutorial/debugging/run-node-debug.png diff --git a/docs/_static/tutorial/debugging/run-node-release.png b/docs/static/tutorial/debugging/run-node-release.png similarity index 100% rename from docs/_static/tutorial/debugging/run-node-release.png rename to docs/static/tutorial/debugging/run-node-release.png diff --git a/docs/_static/tutorial/debugging/run-wasi-debug.png b/docs/static/tutorial/debugging/run-wasi-debug.png similarity index 100% rename from docs/_static/tutorial/debugging/run-wasi-debug.png rename to docs/static/tutorial/debugging/run-wasi-debug.png diff --git a/docs/_static/tutorial/debugging/wasi-build-debug.png b/docs/static/tutorial/debugging/wasi-build-debug.png similarity index 100% rename from docs/_static/tutorial/debugging/wasi-build-debug.png rename to docs/static/tutorial/debugging/wasi-build-debug.png diff --git a/docs/_static/tutorial/hello_pipeline.png b/docs/static/tutorial/hello_pipeline.png similarity index 100% rename from docs/_static/tutorial/hello_pipeline.png rename to docs/static/tutorial/hello_pipeline.png diff --git a/docs/_static/tutorial/hello_wasm_world.png b/docs/static/tutorial/hello_wasm_world.png similarity index 100% rename from docs/_static/tutorial/hello_wasm_world.png rename to docs/static/tutorial/hello_wasm_world.png diff --git a/docs/_static/tutorial/inputs_outputs_help.png b/docs/static/tutorial/inputs_outputs_help.png similarity index 100% rename from docs/_static/tutorial/inputs_outputs_help.png rename to docs/static/tutorial/inputs_outputs_help.png diff --git a/docs/_static/tutorial/smoothed.png b/docs/static/tutorial/smoothed.png similarity index 100% rename from docs/_static/tutorial/smoothed.png rename to docs/static/tutorial/smoothed.png diff --git a/docs/_static/typescript-logo.svg b/docs/static/typescript-logo.svg similarity index 100% rename from docs/_static/typescript-logo.svg rename to docs/static/typescript-logo.svg diff --git a/docs/_static/umd/umd_cypress_video.gif b/docs/static/umd/umd_cypress_video.gif similarity index 100% rename from docs/_static/umd/umd_cypress_video.gif rename to docs/static/umd/umd_cypress_video.gif diff --git a/docs/_static/umd/umd_example.gif b/docs/static/umd/umd_example.gif similarity index 100% rename from docs/_static/umd/umd_example.gif rename to docs/static/umd/umd_example.gif diff --git a/docs/_static/umd/umd_run_tests.png b/docs/static/umd/umd_run_tests.png similarity index 100% rename from docs/_static/umd/umd_run_tests.png rename to docs/static/umd/umd_run_tests.png diff --git a/docs/_static/umd/umd_select_load_data_spec.png b/docs/static/umd/umd_select_load_data_spec.png similarity index 100% rename from docs/_static/umd/umd_select_load_data_spec.png rename to docs/static/umd/umd_select_load_data_spec.png diff --git a/docs/_static/umd/umd_test_debug.png b/docs/static/umd/umd_test_debug.png similarity index 100% rename from docs/_static/umd/umd_test_debug.png rename to docs/static/umd/umd_test_debug.png diff --git a/docs/typescript/browser_io.md b/docs/typescript/browser_io.md index 610689ef1..4fb93f3b3 100644 --- a/docs/typescript/browser_io.md +++ b/docs/typescript/browser_io.md @@ -12,7 +12,7 @@ These functions return the [`WebWorker`](https://developer.mozilla.org/en-US/doc ## `readFile` -```ts +```typescript readFile(webWorker: Worker | null, file: File): Promise<{ webWorker: Worker, image: Image, mesh: Mesh }> ``` @@ -22,7 +22,7 @@ readFile(webWorker: Worker | null, file: File): ## `readBlob` -```ts +```typescript readBlob(webWorker: Worker | null, blob: Blob, fileName: string, mimeType?: string): Promise<{ webWorker: Worker, image?: Image, mesh?: Mesh }> @@ -32,7 +32,7 @@ readBlob(webWorker: Worker | null, blob: Blob, fileName: string, ## `readArrayBuffer` -```ts +```typescript readArrayBuffer(webWorker: Worker | null, arrayBuffer: ArrayBuffer, fileName: string, mimeType?: string): Promise<{ webWorker: Worker, image?: Image | mesh?: Mesh }> @@ -42,7 +42,7 @@ readArrayBuffer(webWorker: Worker | null, arrayBuffer: ArrayBuffer, fileName: st ## `writeArrayBuffer` -```ts +```typescript writeArrayBuffer(webWorker: Worker | null, imageOrMesh: Image | Mesh, fileName: string, mimeType: string = '', useCompression: boolean = false): Promise<{ webWorker: Worker, arrayBuffer: ArrayBuffer }> @@ -59,7 +59,7 @@ writeArrayBuffer(webWorker: Worker | null, imageOrMesh: Image | Mesh, fileName: ## `readImageFile` -```ts +```typescript readImageFile(webWorker: Worker | null, file: File): Promise<{ webWorker: Worker, image: Image }> ``` @@ -68,7 +68,7 @@ readImageFile(webWorker: Worker | null, file: File): ## `readImageBlob` -```ts +```typescript readImageBlob(webWorker: Worker | null, blob: Blob, fileName: string, options: { componentType?: IntTypes | FloatTypes, pixelType?: PixelTypes, mimeType?: string }): Promise<{ webWorker: Worker, image: Image }> @@ -78,7 +78,7 @@ readImageBlob(webWorker: Worker | null, blob: Blob, fileName: string, ## `readImageArrayBuffer` -```ts +```typescript readImageArrayBuffer(webWorker: Worker | null, arrayBuffer: ArrayBuffer, fileName: string, options: { componentType?: IntTypes | FloatTypes, pixelType?: PixelTypes, mimeType?: string }): Promise<{ webWorker: Worker, image: Image }> @@ -88,7 +88,7 @@ readImageArrayBuffer(webWorker: Worker | null, arrayBuffer: ArrayBuffer, fileNam ## `readImageHTTP` -```ts +```typescript readImageHTTP(url: string): Promise ``` @@ -97,7 +97,7 @@ readImageHTTP(url: string): ## `readImageFileSeries` -```ts +```typescript readImageFileSeries(fileList: File[] | FileList, options: { zSpacing?: number = 1.0, zOrigin?: number = 0.0, sortedSeries?: boolean = false, }): Promise<{ image: Image, webWorkerPool: WorkerPool }> @@ -113,7 +113,7 @@ The used `webWorkerPool` is returned to enable resource cleanup by calling `.ter ## `readImageDICOMFileSeries` -```ts +```typescript readImageDICOMFileSeries(fileList: File[] | FileList, options: { componentType?: IntTypes | FloatTypes, pixelType?: PixelTypes, singleSortedSeries?: boolean = false }): Promise<{ image: Image, webWorkerPool: WorkerPool }> @@ -127,7 +127,7 @@ The used `webWorkerPool` is returned to enable resource cleanup by calling `.ter ## `readImageDICOMArrayBufferSeries` -```ts +```typescript readImageDICOMArrayBufferSeries(arrayBuffers: ArrayBuffer[], options: { componentType?: IntTypes | FloatTypes, pixelType?: PixelTypes, singleSortedSeries?: boolean = false }): Promise<{ image: Image, webWorkerPool: WorkerPool }> @@ -141,7 +141,7 @@ The used `webWorkerPool` is returned to enable resource cleanup by calling `.ter ## `readDICOMTags` -```ts +```typescript readDICOMTags(webWorker: Worker | null, file: File, tags: string[] | null = null): Promise<{ tags: Map, webWorker: Worker }> ``` @@ -159,7 +159,7 @@ Returns: ## `readDICOMTagsArrayBuffer` -```ts +```typescript readDICOMTagsArrayBuffer(webWorker: Worker | null, arrayBuffer: ArrayBuffer, tags: string[] | null = null): Promise<{ tags: Map, webWorker: Worker }> @@ -179,7 +179,7 @@ Returns: ## `writeImageArrayBuffer` -```ts +```typescript writeImageArrayBuffer(webWorker: Worker | null, image: Image, fileName: string, options: { mimeType?: string, useCompression?: boolean = false }): Promise<{ webWorker: Worker, arrayBuffer: ArrayBuffer }> @@ -196,7 +196,7 @@ writeImageArrayBuffer(webWorker: Worker | null, image: Image, fileName: string, ## `readMeshFile` -```ts +```typescript readMeshFile(webWorker: Worker | null, file: File): Promise<{ webWorker: Worker, mesh: Mesh }> ``` @@ -205,7 +205,7 @@ readMeshFile(webWorker: Worker | null, file: File): ## `readMeshBlob` -```ts +```typescript readMeshBlob(webWorker: Worker | null, blob: Blob, fileName: string, mimeType?: string): Promise<{ webWorker: Worker, mesh: Mesh }> @@ -215,7 +215,7 @@ readMeshBlob(webWorker: Worker | null, blob: Blob, fileName: string, ## `readMeshArrayBuffer` -```ts +```typescript readMeshArrayBuffer(webWorker: Worker | null, arrayBuffer: ArrayBuffer, fileName: string, mimeType?: string): Promise<{ webWorker: Worker, mesh: Mesh }> ``` @@ -225,7 +225,7 @@ readMeshArrayBuffer(webWorker: Worker | null, arrayBuffer: ArrayBuffer, fileName ## `writeMeshArrayBuffer` -```ts +```typescript writeMeshArrayBuffer(webWorker: Worker | null, mesh: Mesh, fileName: string, mimeType?f: string, options?: { useCompression?: boolean, binaryFileType?: boolean }): Promise<{ webWorker: Worker, arrayBuffer: ArrayBuffer }> diff --git a/docs/typescript/browser_pipelines.md b/docs/typescript/browser_pipelines.md index 23a9f6f62..21f8c7b0d 100644 --- a/docs/typescript/browser_pipelines.md +++ b/docs/typescript/browser_pipelines.md @@ -8,7 +8,7 @@ The processing pipeline functions generated with `itk-wasm bindgen` return a [`P ## `runPipeline` -```ts +```typescript runPipeline(webWorker: Worker | null | boolean, pipelinePath: string | URL, args: string[], diff --git a/docs/typescript/distribution/index.md b/docs/typescript/distribution/index.md index 3fbe9a810..77e1dcecd 100644 --- a/docs/typescript/distribution/index.md +++ b/docs/typescript/distribution/index.md @@ -1,13 +1,3 @@ # Distribution This sections walks through examples on how to distribution applications for deployment that depend on itk-wasm packages. - -```{toctree} -:maxdepth: 1 -:caption: 📦 Distribution - -umd.md -vite.md -webpack.md -node.md -``` \ No newline at end of file diff --git a/docs/typescript/distribution/node.md b/docs/typescript/distribution/node.md index 0690cf4ee..547e3ddba 100644 --- a/docs/typescript/distribution/node.md +++ b/docs/typescript/distribution/node.md @@ -1,4 +1,4 @@ -# itk-wasm in a Node.js application +# ITK-Wasm in a Node.js application An `itk-convert` command line interface (CLI) example demonstrates how to use *itk-wasm* in a Node.js application. Find the full example in the `itk-wasm/examples/node-js` [directory of the GitHub repository](https://github.com/InsightSoftwareConsortium/ITK-Wasm/tree/main/examples/node-js). @@ -12,7 +12,7 @@ npm install --save itk-wasm @itk-wasm/image-io @itk-wasm/mesh-io This adds `itk-wasm` and `itk-wasm` IO packages to the `dependencies` section of your *package.json* file: -```js +```javascript { "name": "itk-convert", "version": "3.0.0", @@ -32,7 +32,7 @@ Next, call functions like [`readImageNode`](https://itk-wasm-image-io-docs-js.on For example, -```js +```javascript import { readImageNode, writeImageNode } from '@itk-wasm/image-io' import { readMeshNode, writeMeshNode, extensionToMeshIo } from '@itk-wasm/mesh-io' import { getFileExtension } from 'itk-wasm' diff --git a/docs/typescript/distribution/umd.md b/docs/typescript/distribution/umd.md index 981a8c98c..6e631018b 100644 --- a/docs/typescript/distribution/umd.md +++ b/docs/typescript/distribution/umd.md @@ -1,4 +1,4 @@ -# itk-wasm UMD module from a HTML script tag +# ITK-Wasm UMD module from a HTML script tag This example demonstrates how to use *itk-wasm* in a web browser application via its pre-built [UMD](https://github.com/umdjs/umd) module. This is an alternative to bundling the modules with the Webpack application, as shown in the [Webpack example](./webpack). In this example, we re-use the itk-wasm IO modules published on [jsdelivr.com](https://jsdelivr.com). Find the full example in the `itk-wasm/examples/UMD` [directory of the GitHub repository](https://github.com/InsightSoftwareConsortium/ITK-Wasm/tree/main/examples/UMD). @@ -13,7 +13,7 @@ Inside the HTML `head`, load the itk-wasm UMD script: Inside body JavaScript code, the `itk` object provides [itk-wasm API functions and objects](/typescript/index) as properties. -```js +```javascript [...] return itk.readFile(null, files[0]).then(function({ image, mesh, webWorker }) { webWorker.terminate(); @@ -31,7 +31,7 @@ Optionally, add an npm script that will start a local web server for development Next, define a `start` command to start a local development web server in the *scripts* section of the `package.json` file, -```js +```javascript "scripts": { "start": "http-server ./dist/" }, @@ -39,11 +39,11 @@ Next, define a `start` command to start a local development web server in the *s To start the development web server hosting the `./dist/` directory contents, run -```sh +```shell npm run start ``` -![UMD Example](/_static/umd/umd_example.gif) +![UMD Example](../../static/umd/umd_example.gif) ## Testing with Cypress @@ -51,7 +51,7 @@ This section described how to configure browser-based testing with the [Cypress] First, install Cypress and the `start-server-and-test` package. -```sh +```shell npm install --save-dev cypress start-server-and-test ``` @@ -59,13 +59,13 @@ The `start-server-and-test` tool can start our development server for testing wi Create directories to house our tests and test data: -```sh +```shell mkdir -p cypress/integration cypress/fixtures ``` Provide a test dataset: -```sh +```shell cp /path/to/cow.vtk cypress/fixtures/cow.vtk ``` @@ -85,7 +85,7 @@ describe('Load data', () => { Then, specify npm scripts to develop and debug the tests and run them in an automated way. -```js +```javascript "scripts": { "start": "http-server ./dist/" "cypress:open": "pnpm exec cypress open", @@ -97,29 +97,29 @@ Then, specify npm scripts to develop and debug the tests and run them in an auto To develop or debug tests, run -```sh +```shell npm run test:debug ``` This will open Cypress. Select the test to run: -![Select load_data_spec](/_static/umd/umd_select_load_data_spec.png) +![Select load_data_spec](../../static/umd/umd_select_load_data_spec.png) This will load the selected browser to see the test status and web page that is tested. You can also open the browser's development console. -![Develop and debug tests](/_static/umd/umd_test_debug.png) +![Develop and debug tests](../../static/umd/umd_test_debug.png) To run the tests during continuous integration: -```sh +```shell npm run test ``` This will output the tests results in the console: -![Console test output](/_static/umd/umd_run_tests.png) +![Console test output](../../static/umd/umd_run_tests.png) And produce a video of the result at *cypress/videos/*. -![Console test output](/_static/umd/umd_cypress_video.gif) +![Console test output](../../static/umd/umd_cypress_video.gif) diff --git a/docs/typescript/distribution/vite.md b/docs/typescript/distribution/vite.md index d5c9fa691..b40251072 100644 --- a/docs/typescript/distribution/vite.md +++ b/docs/typescript/distribution/vite.md @@ -1,17 +1,17 @@ -# itk-wasm in a web browser application via Vite +# ITK-Wasm in a web browser application via Vite -This example demonstrates how to use *itk-wasm* in a web browser application built with [Vite](https://vitejs.dev/). Find the code in [itk-wasm/examples/Vite](https://github.com/InsightSoftwareConsortium/ITK-Wasm/tree/main/examples/Vite). +This example demonstrates how to use *ITK-Wasm* in a web browser application built with [Vite](https://vitejs.dev/). Find the code in [itk-wasm/examples/Vite](https://github.com/InsightSoftwareConsortium/ITK-Wasm/tree/main/examples/Vite). -*itk-wasm* **asynchronously** downloads web worker JavaScript and WebAssembly Emscripten modules **on demand**. For *itk-wasm* to work: +*ITK-Wasm* **asynchronously** downloads web worker JavaScript and WebAssembly Emscripten modules **on demand**. For *ITK-Wasm* to work: -* Copy *itk-wasm* Javascript and WebAssembly files to a public directory -* Tell *itk-wasm* the location to download the Javascript and WebAssembly files in the public directory +* Copy *ITK-Wasm* Javascript and WebAssembly files to a public directory +* Tell *ITK-Wasm* the location to download the Javascript and WebAssembly files in the public directory -## Copy *itk-wasm* Javascript and WebAssembly files to a public directory +## Copy *ITK-Wasm* Javascript and WebAssembly files to a public directory -In the Vite example, `vite.config.js` uses `vite-plugin-static-copy` to move prebuilt *itk-wasm* files to the `/dist` directory. +In the Vite example, `vite.config.js` uses `vite-plugin-static-copy` to move prebuilt *ITK-Wasm* files to the `/dist` directory. -```js +```javascript import { defineConfig } from 'vite' import { viteStaticCopy } from 'vite-plugin-static-copy' @@ -39,13 +39,13 @@ export default defineConfig({ The Vite config copies *web-workers* directory, which asynchronously perform IO or runs processing pipelines in a background thread. -The config copies the complete *image-io* and *mesh-io* directories. You may want to copy a subset of *image-io* or *mesh-io* files, based on what features you use of *itk-wasm*. +The config copies the complete *image-io* and *mesh-io* directories. You may want to copy a subset of *image-io* or *mesh-io* files, based on what features you use of *ITK-Wasm*. -## Tell *itk-wasm* the location to download the Javascript and WebAssembly files +## Tell *ITK-Wasm* the location to download the Javascript and WebAssembly files -To change the location of the *itk-wasm* web worker and Emscripten modules, configure Vite's `resolve.alias` setting. +To change the location of the *ITK-Wasm* web worker and Emscripten modules, configure Vite's `resolve.alias` setting. -```js +```javascript import { defineConfig } from 'vite' import path from 'path' @@ -63,9 +63,9 @@ export default defineConfig({ }) ``` -The itkConfig.js file holds paths where *itk-wasm* fetches assets at runtime. +The itkConfig.js file holds paths where *ITK-Wasm* fetches assets at runtime. -```js +```javascript const itkConfig = { pipelineWorkerUrl: '/itk/web-workers/min-bundles/pipeline.worker.js', imageIOUrl: '/itk/image-io', diff --git a/docs/typescript/distribution/webpack.md b/docs/typescript/distribution/webpack.md index 750ef502a..c9f696f98 100644 --- a/docs/typescript/distribution/webpack.md +++ b/docs/typescript/distribution/webpack.md @@ -1,4 +1,4 @@ -# itk-wasm in a browser application via Webpack +# ITK-Wasm in a browser application via Webpack This example demonstrates how to use *itk-wasm* in a web browser application built with [Webpack](https://webpack.js.org/). Find the full example in the `itk-wasm/examples/Webpack` [directory of the GitHub repository](https://github.com/InsightSoftwareConsortium/ITK-Wasm/tree/main/examples/Webpack). @@ -8,19 +8,19 @@ This example assumes you are creating a [Node.js package](https://docs.npmjs.com Add `itk-wasm` and the io-packages to your project's dependencies: -```sh +```shell npm install --save itk-wasm itk-image-io itk-mesh-io ``` Then, install Webpack-related development dependencies: -```sh +```shell npm install --save-dev webpack webpack-cli webpack-dev-server worker-loader babel-loader '@babel/preset-env' '@babel/core' copy-webpack-plugin ``` Next, create a `webpack.config.js` file like the following: -```js +```javascript const path = require('path') const webpack = require('webpack') @@ -80,7 +80,7 @@ Replace `src/index.js` by your [Webpack entry point](https://webpack.js.org/conc The [babel-loader](https://github.com/babel/babel-loader) rule will [transpile](https://scotch.io/tutorials/javascript-transpilers-what-they-are-why-we-need-them) JavaScript from the latest language syntax to a syntax supported by existing browser clients. Configure the target browsers to support with a `.babelrc` file like the following: -```js +```javascript { presets: [ ['@babel/preset-env', { @@ -98,7 +98,7 @@ The `CopyPlugin` copies *itk-wasm* Emscripten modules to distribute along with y To change the location of the *itk-wasm* web worker and Emscripten modules, set the Webpack `resolve.alias` setting for an `itkConfig.js` module so the bundle will use our included web worker and io WebAssembly modules. The `src/itkConfig.js` for this example is: -```js +```javascript const itkConfig = { pipelineWorkerUrl: '/itk/web-workers/min-bundles/pipeline.worker.js', imageIOUrl: '/itk/image-io', @@ -111,7 +111,7 @@ export default itkConfig Define commands to build the project or build the project and start a local development web server in the *scripts* section of the `package.json` file, -```js +```javascript "scripts": { "build": "webpack --progress --colors -p", "start": "webpack-dev-server --content-base ./dist/ --watch-content-base" @@ -120,13 +120,13 @@ Define commands to build the project or build the project and start a local deve Build the project with -```sh +```shell npm run build ``` To start the development web server, run -```sh +```shell npm run start ``` @@ -136,7 +136,7 @@ This section described how to configure browser-based testing with the [Cypress] First, install Cypress and the `start-server-and-test` package. -```sh +```shell npm install --save-dev cypress start-server-and-test ``` @@ -144,19 +144,19 @@ The `start-server-and-test` tool can start our development server for testing wi Create directories to house our tests and test data: -```sh +```shell mkdir -p cypress/integration cypress/fixtures ``` Provide a test dataset: -```sh +```shell cp /path/to/cow.vtk cypress/fixtures/cow.vtk ``` Create our test script at *cypress/integration/load_data_spec.js*. The test files names should end in **_spec.js*. -```js +```javascript describe('Load data', () => { it('successfully loads a mesh', () => { cy.visit('http://localhost:8080/') @@ -170,7 +170,7 @@ describe('Load data', () => { Then, specify npm scripts to develop and debug the tests and run them in an automated way. -```js +```javascript "scripts": { "start": "webpack-dev-server --mode development --static ./dist/", "cypress:open": "pnpm exec cypress open", @@ -184,29 +184,29 @@ Note that [with webpack-dev-server](https://github.com/bahmutov/start-server-and To develop or debug tests, run -```sh +```shell npm run test:debug ``` This will open Cypress. Select the test to run: -![Select load_data_spec](/_static/umd/umd_select_load_data_spec.png) +![Select load_data_spec](../../static/umd/umd_select_load_data_spec.png) This will load the selected browser to see the test status and web page that is tested. You can also open the browser's development console. -![Develop and debug tests](/_static/umd/umd_test_debug.png) +![Develop and debug tests](../../static/umd/umd_test_debug.png) To run the tests during continuous integration: -```sh +```shell npm run test ``` This will output the tests results in the console: -![Console test output](/_static/umd/umd_run_tests.png) +![Console test output](../../static/umd/umd_run_tests.png) And produce a video of the result at *cypress/videos/*. -![Console test output](/_static/umd/umd_cypress_video.gif) +![Console test output](../../static/umd/umd_cypress_video.gif) diff --git a/docs/typescript/index.md b/docs/typescript/index.md index dac8e60c3..5d635578d 100644 --- a/docs/typescript/index.md +++ b/docs/typescript/index.md @@ -11,14 +11,4 @@ or from native browser data types, encountered when executed in a web browser JavaScript runtime. The **Processing Pipelines** sections describes how to execute processing -pipelines written as C/C++ command line executables in Node.js or the browser. - -```{toctree} -:maxdepth: 1 -:caption: 🌐 JavaScript/TypeScript - -browser_io.md -browser_pipelines.md -node_io.md -node_pipelines.md -``` \ No newline at end of file +pipelines written as C/C++ command line executables in Node.js or the browser. \ No newline at end of file diff --git a/docs/typescript/interface_types/index.md b/docs/typescript/interface_types/index.md index 6f063c57c..16abaef5a 100644 --- a/docs/typescript/interface_types/index.md +++ b/docs/typescript/interface_types/index.md @@ -2,20 +2,4 @@ itk-wasm execution pipelines support the following [interface types](https://github.com/InsightSoftwareConsortium/ITK-Wasm/tree/main/packages/core/typescript/itk-wasm/src/interface-types/interface-types.ts): -```{toctree} -:maxdepth: 3 -:caption: Interface Types - -TextFile.md -BinaryFile.md -TextStream.md -BinaryStream.md -Image.md -ImageType.md -Mesh.md -MeshType.md -PolyData.md -JsonCompatible.md -``` - These interfaces types are supported in the [Emscripten interface](/api/browser_pipelines), [WASI](https://wasi.dev/) embedding interfaces, and native or virtual [filesystem IO](/introduction/file_formats/index.html). They are intended to be forward-compatible with the [WebAssembly Component Model](https://github.com/WebAssembly/component-model). diff --git a/docs/typescript/node_io.md b/docs/typescript/node_io.md index 4ac632d7d..44a977703 100644 --- a/docs/typescript/node_io.md +++ b/docs/typescript/node_io.md @@ -8,7 +8,7 @@ Similar to the [web browser API](/typescript/browser_io), most of these function ## `readLocalFile` -```ts +```typescript readLocalFile(filePath: string): Promise ``` @@ -16,7 +16,7 @@ readLocalFile(filePath: string): Promise ## `writeLocalFile` -```ts +```typescript writeLocalFile(imageOrMesh: Image | Mesh, filePath: string, useCompression: boolean = false): Promise ``` @@ -31,7 +31,7 @@ writeLocalFile(imageOrMesh: Image | Mesh, filePath: string, useCompression: bool ## `readImageLocalFile` -```ts +```typescript readImageLocalFile(filePath: string): Promise ``` @@ -40,7 +40,7 @@ readImageLocalFile(filePath: string): ## `readImageLocalDICOMFileSeries` -```ts +```typescript readImageLocalDICOMFileSeries(filePaths, singleSortedSeries: boolean = false): Promise ``` @@ -51,7 +51,7 @@ If the files are known to be from a single, sorted series, the last argument can ## `readDICOMTagsLocalFile` -```ts +```typescript readDICOMTagsLocalFile(fileName: string, tags: string[] | null = null): Promise> ``` @@ -65,7 +65,7 @@ Returns a [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refere ## `writeImageLocalFile` -```ts +```typescript writeImageLocalFile(image: Image, filePath: string, useCompression: boolean): null ``` @@ -80,7 +80,7 @@ writeImageLocalFile(image: Image, filePath: string, useCompression: boolean): ## `readMeshLocalFile` -```ts +```typescript readMeshLocalFile(filePath: string): Promise ``` @@ -89,7 +89,7 @@ readMeshLocalFile(filePath: string): ## `writeMeshLocalFile` -```ts +```typescript writeMeshLocalFile(Mesh, filePath: string, { useCompression?: boolean, binaryFileType?: boolean }): null ``` diff --git a/docs/typescript/node_pipelines.md b/docs/typescript/node_pipelines.md index c943788b2..c42d21146 100644 --- a/docs/typescript/node_pipelines.md +++ b/docs/typescript/node_pipelines.md @@ -8,7 +8,7 @@ Similar to the [web browser API](./browser_pipelines), most of these functions r ## `runPipelineNode` -```ts +```typescript runPipelineNode(pipelinePath: string, args: string[], outputs: PipelineOutput[], diff --git a/examples/node-js/package.json b/examples/node-js/package.json index 40a6c658e..e6907343a 100644 --- a/examples/node-js/package.json +++ b/examples/node-js/package.json @@ -7,7 +7,7 @@ }, "type": "module", "scripts": { - "test:node": "node src/itk-convert.js ../../docs/_static/logo.png ./logo.tif", + "test:node": "node src/itk-convert.js ../../docs/static/logo.png ./logo.tif", "test": "pnpm test:node" }, "repository": { diff --git a/pixi.lock b/pixi.lock new file mode 100644 index 000000000..d0bb635a7 --- /dev/null +++ b/pixi.lock @@ -0,0 +1,1503 @@ +version: 5 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + packages: {} + docs: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.20-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-hc0a3c3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h1dd3fc0_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.48.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.4.0-h2c329e2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mystmd-1.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-22.4.1-h6d9b948_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.4-h194c7f8_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.12.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.12.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.12.3-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + - pypi: https://files.pythonhosted.org/packages/27/98/318351f17c4c2f59b7d7fc8280fc95c0159357732a26cc6b33de0aeca44d/astroid-3.2.3-py3-none-any.whl + - pypi: git+https://github.com/thewtex/sphinx-autodoc2@481fec388b8a4543b3cab2186b7bb87295cf9674 + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.7.4-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/giflib-5.2.2-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-73.2-h787c7f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.40-h9fc2d93_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.21-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.2-h2f0025b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.1.0-he277a41_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.1.0-he277a41_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.43-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.46.0-hf51ef55_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.1.0-h3f4de04_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.6.0-h395e79b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.48.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-1.4.0-h8b4e01b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h68df207_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mystmd-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-h0425590_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nodejs-22.5.1-hc499004_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.3.1-h68df207_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.4-h829453d_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.12.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.12.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.12.3-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h68df207_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + - pypi: https://files.pythonhosted.org/packages/4e/00/113288a1d7b2d25132d3271092c0c8f36406f355f7f98e85e63c7a63d8fe/astroid-3.3.1-py3-none-any.whl + - pypi: git+https://github.com/thewtex/sphinx-autodoc2@481fec388b8a4543b3cab2186b7bb87295cf9674 +packages: +- kind: conda + name: _libgcc_mutex + version: '0.1' + build: conda_forge + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- kind: conda + name: _openmp_mutex + version: '4.5' + build: 2_gnu + build_number: 16 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23621 + timestamp: 1650670423406 +- kind: conda + name: _openmp_mutex + version: '4.5' + build: 2_gnu + build_number: 16 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23712 + timestamp: 1650670790230 +- kind: pypi + name: astroid + version: 3.2.3 + url: https://files.pythonhosted.org/packages/27/98/318351f17c4c2f59b7d7fc8280fc95c0159357732a26cc6b33de0aeca44d/astroid-3.2.3-py3-none-any.whl + sha256: 3eae9ea67c11c858cdd2c91337d2e816bd019ac897ca07d7b346ac10105fceb3 + requires_dist: + - typing-extensions>=4.0.0 ; python_version < '3.11' + requires_python: '>=3.8.0' +- kind: pypi + name: astroid + version: 3.3.1 + url: https://files.pythonhosted.org/packages/4e/00/113288a1d7b2d25132d3271092c0c8f36406f355f7f98e85e63c7a63d8fe/astroid-3.3.1-py3-none-any.whl + sha256: a1a30b911ef8d74988c2a3a59d55ddf9cb973382f115479e213752a4fad36c7c + requires_dist: + - typing-extensions>=4.0.0 ; python_version < '3.11' + requires_python: '>=3.9.0' +- kind: conda + name: bzip2 + version: 1.0.8 + build: h4bc722e_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- kind: conda + name: bzip2 + version: 1.0.8 + build: h68df207_7 + build_number: 7 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 189884 + timestamp: 1720974504976 +- kind: conda + name: ca-certificates + version: 2024.7.4 + build: hbcca054_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_0.conda + sha256: c1548a3235376f464f9931850b64b02492f379b2f2bb98bc786055329b080446 + md5: 23ab7665c5f63cfb9f1f6195256daac6 + license: ISC + purls: [] + size: 154853 + timestamp: 1720077432978 +- kind: conda + name: ca-certificates + version: 2024.7.4 + build: hcefe29a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.7.4-hcefe29a_0.conda + sha256: 562bfc2608d82996a08e5b5b2366ed319a51ace6a2518a004ba672edca75fc23 + md5: c4c784a1336d72fff54f6b207f3dd75f + license: ISC + purls: [] + size: 154904 + timestamp: 1720078197019 +- kind: conda + name: click + version: 8.1.7 + build: unix_pyh707e725_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec + md5: f3ad426304898027fc619827ff428eca + depends: + - __unix + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=conda-forge-mapping + size: 84437 + timestamp: 1692311973840 +- kind: conda + name: giflib + version: 5.2.2 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/giflib-5.2.2-h31becfc_0.conda + sha256: a79dc3bd54c4fb1f249942ee2d5b601a76ecf9614774a4cff9af49adfa458db2 + md5: 2f809afaf0ba1ea4135dce158169efac + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 82124 + timestamp: 1712692444545 +- kind: conda + name: giflib + version: 5.2.2 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda + sha256: aac402a8298f0c0cc528664249170372ef6b37ac39fdc92b40601a6aed1e32ff + md5: 3bf7b9fd5a7136126e0234db4b87c8b6 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 77248 + timestamp: 1712692454246 +- kind: conda + name: icu + version: '73.2' + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda + sha256: e12fd90ef6601da2875ebc432452590bc82a893041473bc1c13ef29001a73ea8 + md5: cc47e1facc155f91abd89b11e48e72ff + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 12089150 + timestamp: 1692900650789 +- kind: conda + name: icu + version: '73.2' + build: h787c7f5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-73.2-h787c7f5_0.conda + sha256: aedb9c911ede5596c87e1abd763ed940fab680d71fdb953bce8e4094119d47b3 + md5: 9d3c29d71f28452a2e843aff8cbe09d2 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 12237094 + timestamp: 1692900632394 +- kind: conda + name: ld_impl_linux-64 + version: '2.40' + build: hf3520f5_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda + sha256: 764b6950aceaaad0c67ef925417594dd14cd2e22fff864aeef455ac259263d15 + md5: b80f2f396ca2c28b8c14c437a4ed1e74 + constrains: + - binutils_impl_linux-64 2.40 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 707602 + timestamp: 1718625640445 +- kind: conda + name: ld_impl_linux-aarch64 + version: '2.40' + build: h9fc2d93_7 + build_number: 7 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.40-h9fc2d93_7.conda + sha256: 4a6c0bd77e125da8472bd73bba7cd4169a3ce4699b00a3893026ae8664b2387d + md5: 1b0feef706f4d03eff0b76626ead64fc + constrains: + - binutils_impl_linux-aarch64 2.40 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 735885 + timestamp: 1718625653417 +- kind: conda + name: lerc + version: 4.0.0 + build: h27087fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 281798 + timestamp: 1657977462600 +- kind: conda + name: lerc + version: 4.0.0 + build: h4de3ea5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 262096 + timestamp: 1657978241894 +- kind: conda + name: libdeflate + version: '1.20' + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.20-hd590300_0.conda + sha256: f8e0f25c382b1d0b87a9b03887a34dbd91485453f1ea991fef726dba57373612 + md5: 8e88f9389f1165d7c0936fe40d9a9a79 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 71500 + timestamp: 1711196523408 +- kind: conda + name: libdeflate + version: '1.21' + build: h68df207_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.21-h68df207_0.conda + sha256: ac6242105523d555c2550a959882c3d57f1ecef7dd38b672a63c66ff75bdc250 + md5: 806c74df6dcf96adea47c7829b264f80 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 69802 + timestamp: 1722820193304 +- kind: conda + name: libexpat + version: 2.6.2 + build: h2f0025b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.2-h2f0025b_0.conda + sha256: 07453df3232a649f39fb4d1e68cfe1c78c3457764f85225f6f3ccd1bdd9818a4 + md5: 1b9f46b804a2c3c5d7fd6a80b77c35f9 + depends: + - libgcc-ng >=12 + constrains: + - expat 2.6.2.* + license: MIT + license_family: MIT + purls: [] + size: 72544 + timestamp: 1710362309065 +- kind: conda + name: libexpat + version: 2.6.2 + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda + sha256: 331bb7c7c05025343ebd79f86ae612b9e1e74d2687b8f3179faec234f986ce19 + md5: e7ba12deb7020dd080c6c70e7b6f6a3d + depends: + - libgcc-ng >=12 + constrains: + - expat 2.6.2.* + license: MIT + license_family: MIT + purls: [] + size: 73730 + timestamp: 1710362120304 +- kind: conda + name: libffi + version: 3.4.2 + build: h3557bc0_5 + build_number: 5 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c + md5: dddd85f4d52121fab0a8b099c5e06501 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + purls: [] + size: 59450 + timestamp: 1636488255090 +- kind: conda + name: libffi + version: 3.4.2 + build: h7f98852_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + purls: [] + size: 58292 + timestamp: 1636488182923 +- kind: conda + name: libgcc-ng + version: 14.1.0 + build: h77fa898_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda + sha256: b8e869ac96591cda2704bf7e77a301025e405227791a0bddf14a3dac65125538 + md5: ca0fad6a41ddaef54a153b78eccb5037 + depends: + - _libgcc_mutex 0.1 conda_forge + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.1.0 h77fa898_0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 842109 + timestamp: 1719538896937 +- kind: conda + name: libgcc-ng + version: 14.1.0 + build: he277a41_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.1.0-he277a41_0.conda + sha256: b9ca03216bc089c0c46f008bc6f447bc0df8dc826d9801fb4283e49fa89c877e + md5: 47ecd1292a3fd78b616640b35dd9632c + depends: + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.1.0 he277a41_0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 532273 + timestamp: 1719547536460 +- kind: conda + name: libgomp + version: 14.1.0 + build: h77fa898_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_0.conda + sha256: 7699df61a1f6c644b3576a40f54791561f2845983120477a16116b951c9cdb05 + md5: ae061a5ed5f05818acdf9adab72c146d + depends: + - _libgcc_mutex 0.1 conda_forge + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 456925 + timestamp: 1719538796073 +- kind: conda + name: libgomp + version: 14.1.0 + build: he277a41_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.1.0-he277a41_0.conda + sha256: 11f326e49e0fb92c2a52e870c029fc26b4b6d3eb9414fa4374cb8496b231a730 + md5: 434ccc943b843117e4cebc97265f2504 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 459535 + timestamp: 1719547432949 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 647126 + timestamp: 1694475003570 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 618575 + timestamp: 1694474974816 +- kind: conda + name: libnsl + version: 2.0.1 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 34501 + timestamp: 1697358973269 +- kind: conda + name: libnsl + version: 2.0.1 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- kind: conda + name: libpng + version: 1.6.43 + build: h194ca79_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.43-h194ca79_0.conda + sha256: 6f408f3d6854f86e223289f0dda12562b047c7a1fdf3636c67ec39afcd141f43 + md5: 1123e504d9254dd9494267ab9aba95f0 + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: zlib-acknowledgement + purls: [] + size: 294380 + timestamp: 1708782876525 +- kind: conda + name: libpng + version: 1.6.43 + build: h2797004_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda + sha256: 502f6ff148ac2777cc55ae4ade01a8fc3543b4ffab25c4e0eaa15f94e90dd997 + md5: 009981dd9cfcaa4dbfa25ffaed86bcae + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: zlib-acknowledgement + purls: [] + size: 288221 + timestamp: 1708780443939 +- kind: conda + name: libsqlite + version: 3.46.0 + build: hde9e2c9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda + sha256: daee3f68786231dad457d0dfde3f7f1f9a7f2018adabdbb864226775101341a8 + md5: 18aa975d2094c34aef978060ae7da7d8 + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0a0 + license: Unlicense + purls: [] + size: 865346 + timestamp: 1718050628718 +- kind: conda + name: libsqlite + version: 3.46.0 + build: hf51ef55_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.46.0-hf51ef55_0.conda + sha256: 7b48d006be6cd089105687fb524a2c93c4218bfc398d0611340cafec55249977 + md5: a8ae63fd6fb7d007f74ef3df95e5edf3 + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0a0 + license: Unlicense + purls: [] + size: 1043861 + timestamp: 1718050586624 +- kind: conda + name: libstdcxx-ng + version: 14.1.0 + build: h3f4de04_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.1.0-h3f4de04_0.conda + sha256: 4f2f35b78258d1a1e56b1b0e61091862c10ec76bf67ca1b0ff99dd5e07e76271 + md5: 2f84852b723ac4389eb188db695526bb + depends: + - libgcc-ng 14.1.0 he277a41_0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3805250 + timestamp: 1719547563542 +- kind: conda + name: libstdcxx-ng + version: 14.1.0 + build: hc0a3c3a_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-hc0a3c3a_0.conda + sha256: 88c42b388202ffe16adaa337e36cf5022c63cf09b0405cf06fc6aeacccbe6146 + md5: 1cb187a157136398ddbaae90713e2498 + depends: + - libgcc-ng 14.1.0 h77fa898_0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3881307 + timestamp: 1719538923443 +- kind: conda + name: libtiff + version: 4.6.0 + build: h1dd3fc0_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h1dd3fc0_3.conda + sha256: fc3b210f9584a92793c07396cb93e72265ff3f1fa7ca629128bf0a50d5cb15e4 + md5: 66f03896ffbe1a110ffda05c7a856504 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.20,<1.21.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx-ng >=12 + - libwebp-base >=1.3.2,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.5,<1.6.0a0 + license: HPND + purls: [] + size: 282688 + timestamp: 1711217970425 +- kind: conda + name: libtiff + version: 4.6.0 + build: h395e79b_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.6.0-h395e79b_4.conda + sha256: b3517c9876d8517815d9325eac62c84648652874fcc7f30a252629584990a178 + md5: 07ac339fcab2d44ddfd9b8ac58e80a05 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.21,<1.22.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx-ng >=12 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + purls: [] + size: 316919 + timestamp: 1722871687932 +- kind: conda + name: libuuid + version: 2.38.1 + build: h0b41bf4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- kind: conda + name: libuuid + version: 2.38.1 + build: hb4cce97_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35720 + timestamp: 1680113474501 +- kind: conda + name: libuv + version: 1.48.0 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.48.0-h31becfc_0.conda + sha256: 8be03c6a43e17fdf574e2c29f1f8b917ba2842b5f4662b51d577960a3083fc2c + md5: 97f754b22f63a943345bd807e1d51e01 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 635472 + timestamp: 1709913320273 +- kind: conda + name: libuv + version: 1.48.0 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.48.0-hd590300_0.conda + sha256: b7c0e8a0c93c2621be7645b37123d4e8d27e8a974da26a3fba47a9c37711aa7f + md5: 7e8b914b1062dd4386e3de4d82a3ead6 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + purls: [] + size: 899979 + timestamp: 1709913354710 +- kind: conda + name: libwebp + version: 1.4.0 + build: h2c329e2_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.4.0-h2c329e2_0.conda + sha256: bd45805b169e3e0ff166d360c3c4842d77107d28c8f9feba020a8e8b9c80f948 + md5: 80030debaa84cfc31755d53742df3ca6 + depends: + - giflib >=5.2.2,<5.3.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp-base 1.4.0.* + - libwebp-base >=1.4.0,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 91941 + timestamp: 1714599671055 +- kind: conda + name: libwebp + version: 1.4.0 + build: h8b4e01b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-1.4.0-h8b4e01b_0.conda + sha256: b7015194cb7e0c38e9b216be32bb11d885bc9cbe6bb14729818a1fea732ad437 + md5: b8ec3537009b561eb9bbd1780f920093 + depends: + - giflib >=5.2.2,<5.3.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.7.0a0 + - libwebp-base 1.4.0.* + - libwebp-base >=1.4.0,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 101815 + timestamp: 1714602881855 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d + md5: 5fd7ab3e5f382c70607fbac6335e6e19 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 363577 + timestamp: 1713201785160 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f + md5: b26e8aa824079e1be0294e7152ca4559 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 438953 + timestamp: 1713199854503 +- kind: conda + name: libxcrypt + version: 4.4.36 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + purls: [] + size: 114269 + timestamp: 1702724369203 +- kind: conda + name: libxcrypt + version: 4.4.36 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- kind: conda + name: libzlib + version: 1.3.1 + build: h4ab18f5_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + sha256: adf6096f98b537a11ae3729eaa642b0811478f0ea0402ca67b5108fe2cb0010d + md5: 57d7dc60e9325e3de37ff8dffd18e814 + depends: + - libgcc-ng >=12 + constrains: + - zlib 1.3.1 *_1 + license: Zlib + license_family: Other + purls: [] + size: 61574 + timestamp: 1716874187109 +- kind: conda + name: libzlib + version: 1.3.1 + build: h68df207_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h68df207_1.conda + sha256: 0d6dfd1e36e10c205ff1fdcf42d42289ff0f50be7a4eaa7b34f086a5e22a0734 + md5: b13fb82f88902e34dd0638cd7d378c21 + depends: + - libgcc-ng >=12 + constrains: + - zlib 1.3.1 *_1 + license: Zlib + license_family: Other + purls: [] + size: 67199 + timestamp: 1716874136348 +- kind: conda + name: markdown-it-py + version: 3.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda + sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 + md5: 93a8e71256479c62074356ef6ebf501b + depends: + - mdurl >=0.1,<1 + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/markdown-it-py?source=conda-forge-mapping + size: 64356 + timestamp: 1686175179621 +- kind: conda + name: mdurl + version: 0.1.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda + sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 + md5: 776a8dd9e824f77abac30e6ef43a8f7a + depends: + - python >=3.6 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mdurl?source=conda-forge-mapping + size: 14680 + timestamp: 1704317789138 +- kind: conda + name: mystmd + version: 1.2.9 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mystmd-1.2.9-pyhd8ed1ab_0.conda + sha256: 226ff9dbf6801804f1fd6ab68f7d35ab1bd68493c780b8c19b6c2a23e9692c33 + md5: e7e3724a1d7dd48ab1e1365dddb9fb8b + depends: + - nodejs >=18 + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mystmd?source=conda-forge-mapping + size: 1878279 + timestamp: 1718970949483 +- kind: conda + name: mystmd + version: 1.3.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mystmd-1.3.1-pyhd8ed1ab_0.conda + sha256: cb038282157873fa0494b05b959353bcf099ebe5b8050554fd465ffd91e64b35 + md5: 8a792db443c8530b12f209aa44cf7989 + depends: + - nodejs >=18 + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mystmd?source=hash-mapping + size: 1895922 + timestamp: 1721872250465 +- kind: conda + name: ncurses + version: '6.5' + build: h0425590_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-h0425590_0.conda + sha256: f8002feaa9e0eb929cd123f1275d8c0b3c6ffb7fd9269b192927009df19dc89e + md5: 38362af7bfac0efef69675acee564458 + depends: + - libgcc-ng >=12 + license: X11 AND BSD-3-Clause + purls: [] + size: 925099 + timestamp: 1715194843316 +- kind: conda + name: ncurses + version: '6.5' + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda + sha256: 4fc3b384f4072b68853a0013ea83bdfd3d66b0126e2238e1d6e1560747aa7586 + md5: fcea371545eda051b6deafb24889fc69 + depends: + - libgcc-ng >=12 + license: X11 AND BSD-3-Clause + purls: [] + size: 887465 + timestamp: 1715194722503 +- kind: conda + name: nodejs + version: 22.4.1 + build: h6d9b948_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/nodejs-22.4.1-h6d9b948_0.conda + sha256: 9062630f75661704785a99c5493a0d313adfd3a866ddec2c7e3c9667a90943c6 + md5: e85cc927b96458f99222f7db9aa3a3de + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=73.2,<74.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libuv >=1.48.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.1,<4.0a0 + - zlib + license: MIT + license_family: MIT + purls: [] + size: 20672046 + timestamp: 1720723808972 +- kind: conda + name: nodejs + version: 22.5.1 + build: hc499004_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/nodejs-22.5.1-hc499004_0.conda + sha256: ec0183ef079cb197865128d9dbddaaea30762100a8cb01aa83ff56a10da3e6fe + md5: 4de9c36b93f381bf69b452f76f99dfd1 + depends: + - icu >=73.2,<74.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libuv >=1.48.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.1,<4.0a0 + - zlib + license: MIT + license_family: MIT + purls: [] + size: 21197697 + timestamp: 1721513496567 +- kind: conda + name: openssl + version: 3.3.1 + build: h4ab18f5_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4ab18f5_1.conda + sha256: ff3faf8d4c1c9aa4bd3263b596a68fcc6ac910297f354b2ce28718a3509db6d9 + md5: b1e9d076f14e8d776213fd5047b4c3d9 + depends: + - ca-certificates + - libgcc-ng >=12 + constrains: + - pyopenssl >=22.1 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2896610 + timestamp: 1719363957188 +- kind: conda + name: openssl + version: 3.3.1 + build: h68df207_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.3.1-h68df207_2.conda + sha256: 6c15fd3e6c1dd92b17533fe307cb758be88e85e32e1b988507708905357acb60 + md5: e53f74e640d477466e04bae394b0d163 + depends: + - ca-certificates + - libgcc-ng >=12 + constrains: + - pyopenssl >=22.1 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3435721 + timestamp: 1721194625490 +- kind: conda + name: pygments + version: 2.18.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b + md5: b7f5c092b8f9800150d998a71b76d5a1 + depends: + - python >=3.8 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/pygments?source=conda-forge-mapping + size: 879295 + timestamp: 1714846885370 +- kind: conda + name: python + version: 3.12.4 + build: h194c7f8_0_cpython + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.4-h194c7f8_0_cpython.conda + sha256: 97a78631e6c928bf7ad78d52f7f070fcf3bd37619fa48dc4394c21cf3058cdee + md5: d73490214f536cccb5819e9873048c92 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=12 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.46.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.3.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + size: 32073625 + timestamp: 1718621771849 +- kind: conda + name: python + version: 3.12.4 + build: h829453d_0_cpython + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.4-h829453d_0_cpython.conda + sha256: 21a308f92f6988e1a8169a8d46b43fbd1a6b638d0964d015a4444d7af05f00e1 + md5: 48c28e5926b7c8ffe58f77991a43ca23 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=12 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.46.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.3.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + size: 12642375 + timestamp: 1718618670784 +- kind: conda + name: readline + version: '8.2' + build: h8228510_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + md5: 47d31b792659ce70f470b5c82fdfb7a4 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 281456 + timestamp: 1679532220005 +- kind: conda + name: readline + version: '8.2' + build: h8fc344f_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd + md5: 105eb1e16bf83bfb2eb380a48032b655 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 294092 + timestamp: 1679532238805 +- kind: conda + name: rich + version: 13.7.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda + sha256: 2b26d58aa59e46f933c3126367348651b0dab6e0bf88014e857415bb184a4667 + md5: ba445bf767ae6f0d959ff2b40c20912b + depends: + - markdown-it-py >=2.2.0 + - pygments >=2.13.0,<3.0.0 + - python >=3.7.0 + - typing_extensions >=4.0.0,<5.0.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rich?source=conda-forge-mapping + size: 184347 + timestamp: 1709150578093 +- kind: conda + name: shellingham + version: 1.5.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb + md5: d08db09a552699ee9e7eec56b4eb3899 + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/shellingham?source=conda-forge-mapping + size: 14568 + timestamp: 1698144516278 +- kind: pypi + name: sphinx-autodoc2 + version: 0.5.0 + url: git+https://github.com/thewtex/sphinx-autodoc2@481fec388b8a4543b3cab2186b7bb87295cf9674 + requires_dist: + - astroid>=2.7,<4 + - tomli ; python_version < '3.11' + - typing-extensions + - typer[all] ; extra == 'cli' + - sphinx>=4.0.0 ; extra == 'docs' + - furo ; extra == 'docs' + - myst-parser ; extra == 'docs' + - sphinx>=4.0.0 ; extra == 'sphinx' + - pytest ; extra == 'testing' + - pytest-regressions ; extra == 'testing' + - pytest-cov ; extra == 'testing' + - sphinx>=4.0.0,<7 ; extra == 'testing' + requires_python: '>=3.8' +- kind: conda + name: tk + version: 8.6.13 + build: h194ca79_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3351802 + timestamp: 1695506242997 +- kind: conda + name: tk + version: 8.6.13 + build: noxft_h4845f30_101 + build_number: 101 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- kind: conda + name: typer + version: 0.12.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.12.3-pyhd8ed1ab_0.conda + sha256: b8b182303858c512fa04f38a3123c892958f708d2ae90afd35246da7c4829485 + md5: 10efd02b22c39c0a46312ef7cb16d237 + depends: + - python >=3.7 + - typer-slim-standard 0.12.3 hd8ed1ab_0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/typer?source=conda-forge-mapping + size: 52670 + timestamp: 1712702716762 +- kind: conda + name: typer-slim + version: 0.12.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.12.3-pyhd8ed1ab_0.conda + sha256: 01dcb54375c8eae54d13374ed3d5823635401c552340b87e67fdbbb507760596 + md5: cf2c3a89f89644c53cadbfeb124914e9 + depends: + - click >=8.0.0 + - python >=3.7 + - typing_extensions >=3.7.4.3 + constrains: + - shellingham >=1.3.0,<2.0.0 + - rich >=10.11.0,<14.0.0 + - typer >=0.12.3,<0.12.4.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/typer-slim?source=conda-forge-mapping + size: 45674 + timestamp: 1712702684668 +- kind: conda + name: typer-slim-standard + version: 0.12.3 + build: hd8ed1ab_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.12.3-hd8ed1ab_0.conda + sha256: 06e2f8ca7e3f7168a39d3d2cc62ee1e220928e1e5a4370f4ade2566342c4a459 + md5: 8e56b98837d17e6ace4dc455d905709a + depends: + - rich + - shellingham + - typer-slim 0.12.3 pyhd8ed1ab_0 + license: MIT + license_family: MIT + purls: [] + size: 46047 + timestamp: 1712702688759 +- kind: conda + name: typing_extensions + version: 4.12.2 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb + md5: ebe6952715e1d5eb567eeebf25250fa7 + depends: + - python >=3.8 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=conda-forge-mapping + size: 39888 + timestamp: 1717802653893 +- kind: conda + name: tzdata + version: 2024a + build: h0c530f3_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda + sha256: 7b2b69c54ec62a243eb6fba2391b5e443421608c3ae5dbff938ad33ca8db5122 + md5: 161081fc7cec0bfda0d86d7cb595f8d8 + license: LicenseRef-Public-Domain + purls: [] + size: 119815 + timestamp: 1706886945727 +- kind: conda + name: xz + version: 5.2.6 + build: h166bdaf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 + md5: 2161070d867d1b1204ea749c8eec4ef0 + depends: + - libgcc-ng >=12 + license: LGPL-2.1 and GPL-2.0 + purls: [] + size: 418368 + timestamp: 1660346797927 +- kind: conda + name: xz + version: 5.2.6 + build: h9cdd2b7_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 + md5: 83baad393a31d59c20b63ba4da6592df + depends: + - libgcc-ng >=12 + license: LGPL-2.1 and GPL-2.0 + purls: [] + size: 440555 + timestamp: 1660348056328 +- kind: conda + name: zlib + version: 1.3.1 + build: h4ab18f5_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda + sha256: cee16ab07a11303de721915f0a269e8c7a54a5c834aa52f74b1cc3a59000ade8 + md5: 9653f1bf3766164d0e65fa723cabbc54 + depends: + - libgcc-ng >=12 + - libzlib 1.3.1 h4ab18f5_1 + license: Zlib + license_family: Other + purls: [] + size: 93004 + timestamp: 1716874213487 +- kind: conda + name: zlib + version: 1.3.1 + build: h68df207_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h68df207_1.conda + sha256: 7d4f12a602447c00f65f99fcf332f350cc49161a4f215466e9eb1bbe51852978 + md5: 6031f9e32654fbdb9fdba406ab980517 + depends: + - libgcc-ng >=12 + - libzlib 1.3.1 h68df207_1 + license: Zlib + license_family: Other + purls: [] + size: 95770 + timestamp: 1716874148566 +- kind: conda + name: zstd + version: 1.5.6 + build: h02f22dd_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 539937 + timestamp: 1714723130243 +- kind: conda + name: zstd + version: 1.5.6 + build: ha6fb4c9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 554846 + timestamp: 1714722996770 diff --git a/pixi.toml b/pixi.toml new file mode 100644 index 000000000..5d20346f2 --- /dev/null +++ b/pixi.toml @@ -0,0 +1,29 @@ +[project] +name = "ITK-Wasm" +version = "0.1.0" +description = "Build environment for ITK-Wasm" +authors = ["Matt McCormick "] +channels = ["conda-forge"] +platforms = ["linux-aarch64", "linux-64"] + +[tasks] + +[dependencies] + +[feature.docs.dependencies] +mystmd = "*" +libwebp = ">=1.4.0,<1.5" +rich = ">=13.7.1,<13.8" +typer = ">=0.12.3,<0.13" + +[feature.docs.tasks] +build-docs = { cmd = "myst build --html", cwd = "docs", description = "Build documentation." } +start-docs = { cmd = "myst start", cwd = "docs", description = "Start live documentation build." } +autodoc2-db = { cmd = "autodoc2 create-db ../packages/core/python/itkwasm/itkwasm", cwd = "docs", description = "Create package API database."} +autodoc2-write = { cmd = "autodoc2 write --output apidocs -r md ../packages/core/python/itkwasm/itkwasm", cwd = "docs", description = "Write package API doc markdown." } + +[environments] +docs = {features = ["docs"], no-default-feature = true} + +[feature.docs.pypi-dependencies] +sphinx-autodoc2 = { git = "https://github.com/thewtex/sphinx-autodoc2", rev = "write-md" }