diff --git a/.github/workflows/documentation.yaml b/.github/workflows/documentation.yaml index 873539e4a916..af4cab487bff 100644 --- a/.github/workflows/documentation.yaml +++ b/.github/workflows/documentation.yaml @@ -10,15 +10,18 @@ permissions: contents: read jobs: + # BEWARE(streetsidesoftware/cspell-action#187): a misconfigured cspell will _not_ have a non-zero exit code... spellcheck: name: Spellcheck runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: streetsidesoftware/cspell-action@v2 + - uses: streetsidesoftware/cspell-action@v3 with: config: "docs/cspell.json" files: "**/*.md" + strict: true + incremental_files_only: false linkinator: name: linkinator runs-on: ubuntu-latest diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d5383d7a5b2..cb05435c2462 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,7 +65,7 @@ Other highlights: - Fix row ordering flakiness when using clear APIs [#3288](https://github.com/rerun-io/rerun/pull/3288) - Fix incorrect propagation of field's nullability into its inner list [#3352](https://github.com/rerun-io/rerun/pull/3352) - Fix post-GC purging of streams view time histogram [#3364](https://github.com/rerun-io/rerun/pull/3364) -- Fix color greyscale colormap not being even [#3391](https://github.com/rerun-io/rerun/pull/3391) +- Fix color grayscale colormap not being even [#3391](https://github.com/rerun-io/rerun/pull/3391) - Fix depth point cloud not taking transformation at its path into account [#3514](https://github.com/rerun-io/rerun/pull/3514) - Fix infinite recursion when putting a container inside a viewer tab [#3534](https://github.com/rerun-io/rerun/pull/3534) - Fix failing to preview small images [#3520](https://github.com/rerun-io/rerun/pull/3520) @@ -333,7 +333,7 @@ for use-cases like real-time video feeds. [#2220](https://github.com/rerun-io/re - Convert objectron proto.py back to using typing.List [#2559](https://github.com/rerun-io/rerun/pull/2559) - Exclude from `objectron/proto/objectron/proto.py` from `just py-format` [#2562](https://github.com/rerun-io/rerun/pull/2562) - Fix pinhole visualization not working with camera extrinsics & intrinsics on the same path [#2568](https://github.com/rerun-io/rerun/pull/2568) -- Fix: always auto-layout spaceviews until the user interveens [#2583](https://github.com/rerun-io/rerun/pull/2583) +- Fix: always auto-layout spaceviews until the user intervenes [#2583](https://github.com/rerun-io/rerun/pull/2583) - Fix freeze/crash when logging large times [#2588](https://github.com/rerun-io/rerun/pull/2588) - Update egui_tiles to fix crash [#2598](https://github.com/rerun-io/rerun/pull/2598) - Fix clicking object with single instance (of every component) selecting instance instead of entity [#2573](https://github.com/rerun-io/rerun/pull/2573) @@ -742,9 +742,9 @@ here's a smaller release packed with useful improvements 🎉 #### 🤷‍♂️ Other - Fix secret in dispatch_lint.yml [4848f98f2605a3caf9b7695273e0871efa2d44c8](https://github.com/rerun-io/rerun/commit/4848f98f2605a3caf9b7695273e0871efa2d44c8) - Only maintain a single manual-dispatch job for testing workflows [98f7de3b52b0fea6abe364f9d0ce0bd4c459caf1](https://github.com/rerun-io/rerun/commit/98f7de3b52b0fea6abe364f9d0ce0bd4c459caf1) -- Add other build parameterizations to manual_dispatch.yml [dbdf275eaf17220d14811dc34b69b6a76e948e73](https://github.com/rerun-io/rerun/commit/dbdf275eaf17220d14811dc34b69b6a76e948e73) +- Add other build parametrizations to manual_dispatch.yml [dbdf275eaf17220d14811dc34b69b6a76e948e73](https://github.com/rerun-io/rerun/commit/dbdf275eaf17220d14811dc34b69b6a76e948e73) - Use proper if gates on the manual_dispatch.yml jobs [9ad62011678caaed04260ba160763e24e64a7402](https://github.com/rerun-io/rerun/commit/9ad62011678caaed04260ba160763e24e64a7402) -- Add ability to save cache to manual_disaptch.yml [5c61b37a1bc40f1a223c370b3b69b08654aada47](https://github.com/rerun-io/rerun/commit/5c61b37a1bc40f1a223c370b3b69b08654aada47) +- Add ability to save cache to manual_dispatch.yml [5c61b37a1bc40f1a223c370b3b69b08654aada47](https://github.com/rerun-io/rerun/commit/5c61b37a1bc40f1a223c370b3b69b08654aada47) - Standard case of inputs [2729c71f1ba9f7cdbe64adc3c610caf9464324e4](https://github.com/rerun-io/rerun/commit/2729c71f1ba9f7cdbe64adc3c610caf9464324e4) - Add manual step for packaging to 'manual_dispatch.yml' [a3178e6143c068175b477cb236f2ba2477e083ea](https://github.com/rerun-io/rerun/commit/a3178e6143c068175b477cb236f2ba2477e083ea) - New workflow_dispatch for building wheels for a PR [3bc2cb73ece98f914254221ce0ea129015834f59](https://github.com/rerun-io/rerun/commit/3bc2cb73ece98f914254221ce0ea129015834f59) @@ -907,7 +907,7 @@ This new release adds MVP support for embedding Rerun in Jupyter notebooks, and - GPU colormapping, first step [#1835](https://github.com/rerun-io/rerun/pull/1835) - GPU tensor colormapping [#1841](https://github.com/rerun-io/rerun/pull/1841) - GPU picking for depth clouds [#1849](https://github.com/rerun-io/rerun/pull/1849) -- Implement billinear filtering of textures [#1850](https://github.com/rerun-io/rerun/pull/1850) [#1859](https://github.com/rerun-io/rerun/pull/1859) [#1860](https://github.com/rerun-io/rerun/pull/1860) +- Implement bilinear filtering of textures [#1850](https://github.com/rerun-io/rerun/pull/1850) [#1859](https://github.com/rerun-io/rerun/pull/1859) [#1860](https://github.com/rerun-io/rerun/pull/1860) - Refactor: remove `GpuTexture2DHandle::invalid` [#1866](https://github.com/rerun-io/rerun/pull/1866) - Fix filtering artifact for non-color images [#1886](https://github.com/rerun-io/rerun/pull/1886) - Refactor: Add helper functions to `GpuTexture2DHandle` [#1900](https://github.com/rerun-io/rerun/pull/1900) diff --git a/design/batching.md b/design/batching.md index 55c1b633aca3..446326264eff 100644 --- a/design/batching.md +++ b/design/batching.md @@ -901,7 +901,7 @@ At some point we're gonna want to have a fully dedicated storage & query path fo Recursive clears are currently handled in `StoreDb`, which is an issue for (at least) two reasons: - Once we start saving the store in a native format, rather than a collection of `LogMsg`, we'll lose the recursive clears when dumping then reloading the recording. -- The recursive clears aren't even arrow-ified yet. +- The recursive clears aren't even arrowified yet. ### Native file format for writing the store to disk diff --git a/design/blueprint_store.md b/design/blueprint_store.md index 6fd555b9ff34..31ed0eb3105b 100644 --- a/design/blueprint_store.md +++ b/design/blueprint_store.md @@ -135,7 +135,7 @@ This means a trivial expression like: `rr.show(rrb.Points3D("points"))` is still As a further simplification, the Blueprint will allow for the direct inclusion of static data, allowing users to bypass the data-logging APIs entirely for simple use-cases that don't require temporal information. This will be accomplished -by allowing `rrb.Data` objects to be constructured from any Rerun-loggable object. +by allowing `rrb.Data` objects to be constructed from any Rerun-loggable object. Data that is a *query* from the recording store references an entity path used seprately by the logging APIs: ```python diff --git a/design/component_datatypes.md b/design/component_datatypes.md index 28c3f074e2a5..67ea2fadad30 100644 --- a/design/component_datatypes.md +++ b/design/component_datatypes.md @@ -41,7 +41,7 @@ We can use this for: ### Open questions: How do we handle Jpegs? Are they a separate datatype for the `Tensor` component: `(Tensor Jpeg)`, or are they a separate component type: `(Jpeg [u8])` ? -How do we handle the transform-graph of convertes? What if there are cycles? What if there are two different paths from one `(component datatype)` tuple to another? +How do we handle the transform-graph of conversions? What if there are cycles? What if there are two different paths from one `(component datatype)` tuple to another? #### What naming convention should we use for datatypes? * Rust style: `[u8]`, `[f32; 3]` etc ? diff --git a/docs/cspell.json b/docs/cspell.json index d350157893ea..cff9efda5bf7 100644 --- a/docs/cspell.json +++ b/docs/cspell.json @@ -1,125 +1,352 @@ { "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json", "version": "0.2", + "usePnP": true, "ignorePaths": ["node_modules/**"], "ignoreWords": [ + "Angjoo", + "Ankush", + "Aubry", + "Automagic", + "Aytar", + "Ayush", + "Bgra", + "Bhat", + "Birkl", + "COLMAP", + "CSRT", + "CVPR", + "Carreira", + "Chao", + "Clément", "Colab", + "Dhariwal", + "Dilara", + "Doersch", + "Dollár", + "Efros", + "Farooq", + "Feichtenhofer", + "Firman", + "GLES", + "Georgios", + "Girshick", + "Gkioxari", + "Gokay", + "Gustafson", + "Hanzi", "Hawksbill", + "Heewoo", + "Huggingface", + "Jitendra", + "Joao", + "Kirillov", + "LIMAP", + "Landmarker", + "Larsson", + "Malik", + "Mathieu", + "Mintun", + "Mishkin", + "Monnier", + "Müller", + "Niantic", + "Nichol", + "Nikhila", + "Objectron", "Odometry", + "Optimus", + "PHALP", + "Pautrat", + "Pavlakos", + "Piotr", + "Pollefeys", + "Prafulla", + "Premultiply", + "Prisacariu", + "Pythonic", + "RGBA", + "RGBD", + "Ravi", + "Readback", + "Rebatch", + "Reiner", "Robo", + "Rémi", + "SCCACHE", + "SLAHMR", + "SMPL", + "Sayed", + "Shaohui", + "Shap", + "Shariq", + "Sitzmann", + "Sjouks", + "Struct", + "TUID", "TURTLEBOT", + "Tete", + "Tewari", + "Tpng", "Trimesh", + "UI's", "URDF", + "Unorm", + "Vecerik", + "Viktor", + "WASI", "WINIT", + "Wofk", + "Wonka", "XCYCW2H2", "XCYCWH", "XYWH", "XYXY", + "Xiao", "YXHW", "YXYX", + "Yifan", + "Yilun", + "Yusuf", + "Zisserman", + "aarch", + "abey", + "adrr", "adwaita", + "ahash", + "andreas", + "arkit", + "arkitscene", "arkitscenes", + "arrowified", + "artefacts", "astype", + "authkey", + "autogen'd", + "automations", + "autoplay", + "backbuffer", + "backprojection", + "barebone", + "bindgen", + "bindgroup", + "binsearch", + "binsearches", + "binsearching", + "binutils", + "braindump", "bringup", + "callstack", + "callstacks", + "camino", + "clippy", + "codegen", + "colormap", + "colormapping", + "colormaps", "colorrgba", - "datatypes", - "eframe", - "fname", - "howto", - "hstack", - "imgmsg", - "ipynb", - "jleibs", - "keypointid", - "libclang", - "libgtk", - "libvulkan", - "libxcb", - "libxkbcommon", - "linalg", - "nanos", - "nans", - "nbconvert", - "odometry", - "pycollada", - "randr", - "realsense", - "repr", - "roadmap", - "rosclpy", - "roundtrip", - "roundtrips", - "rsplit", - "rviz", - "segs", - "srcset", - "startswith", - "timepoint", - "trimesh", - "turtlebot", - "urdf", - "urlparse", - "virtualenv", - "wxyz", - "xfixes", - "xyzw", - "yourdfpy", - "yourdfpy" - ], - "words": [ - "autoplay", - "COLMAP", + "comms", "consts", - "CSRT", + "controlnet", + "customizability", + "dataclass", + "dataframe", + "datastructures", + "datatypes", + "deallocate", + "deallocation", + "debuginfo", + "dedup", + "depgraph", "devel", "dicom", "docstring", "docstrings", + "dont", "downscaled", + "downscaling", + "drawables", "dtype", + "dtypes", + "eframe", "egui", + "ehttp", "emilk", + "enumflags", + "everytime", + "ewebsock", "extrinsics", + "fieldname", + "flamegraphs", + "flatbuffers", + "fname", + "frontmatter", + "gcloud", "glb", "gltf", "grayscale", - "Huggingface", + "groupby", + "gsutil", + "hasher", + "hickups", + "howto", + "hstack", + "icosphere", + "imgmsg", + "impls", "intrinsics", + "ipynb", + "ipython", "itertools", + "jleibs", + "jparismorgan", + "justfile", "keypoint", + "keypointid", "keypoints", + "kpreid", + "lavapipe", "lerp", + "libclang", + "libgtk", + "libvulkan", + "libxcb", + "libxkbcommon", + "linalg", "linestrip", "linestrips", + "linkinator", "linspace", + "llvmpipe", "loggable", + "logtype", + "maturin", + "mediapipe", "meshgrid", + "mgrid", + "michaeleisel", + "microbatches", + "microbatching", + "mkdocs", + "mosphere", + "mpizenberg", + "msvc", "multimodal", + "multiview", + "mydata", + "mypy", + "nanos", + "nans", + "nbconvert", + "ncipollo", + "ndarray", + "nohash", + "noqa", "numpy", "nyud", + "obbs", "obj", - "Objectron", - "Optimus", + "odometry", + "pablovela", + "pacman", + "parametrizations", + "photogrammetrically", + "pngcrush", "pointcloud", + "prettyplease", + "proto", + "protoc", + "pycollada", + "pyopf", "pypi", + "pyright", "quickstart", + "randn", + "randr", + "rasterizer", + "readback", + "realsense", + "rebatching", + "recognised", "rects", + "refcount", + "refcounted", + "renamings", + "repr", "reproj", - "RGBA", + "reqwest", + "rgbd", + "roadmap", + "rosclpy", "roundtrip", "roundtrips", + "roym", + "rsplit", + "runable", + "rustc", + "rustflags", + "rustsec", + "rustup", + "rviz", + "sccache", "scipy", + "screeshot", "scrollwheel", + "segs", + "seprately", + "serde", + "serialisation", + "serialised", + "smallvec", + "spaceview", + "spaceviews", + "srcset", + "stacklevel", + "startswith", + "staticmethod", + "struct", + "structs", + "subdir", + "superquadrics", + "taplo", + "thiserror", + "timepanel", + "timepoint", "timepoints", + "timeseries", + "tinyvec", "trackpad", - "unmultiplied" + "trimesh", + "turtlebot", + "unmultiplied", + "upcasting", + "upsampling", + "upvote", + "urdf", + "ureq", + "urholaukkarinen", + "urlparse", "usize", "venv", + "virtualenv", "vstack", + "vsuryamurthy", "vulkan", "walkthrough", + "webgpu", "webm", - "wgpu" + "webpki", + "wgpu", + "wgsl", + "whele", + "wxyz", + "xfixes", + "xtask", + "xyzw", + "yourdfpy", + "yourname", + "zipfile", + "zstd", + "zune" ] } - diff --git a/examples/python/shape_pointe/README.md b/examples/python/shape_pointe/README.md index 8d6147ce4e00..b96d07769a33 100644 --- a/examples/python/shape_pointe/README.md +++ b/examples/python/shape_pointe/README.md @@ -34,7 +34,7 @@ Shap-E improves on this by representing 3D shapes implicitly. This is done in tw -In the second stage, a diffusion model is trained on a dataset of NeRF weights generated by the previous encoder. This diffusion model is conditioned on either images or text descriptions. The resulting NeRF also outputs SDF values so that meshes can be extracted using marching cubes again. Here we see the prompt "a cheesburger" turn into a 3D mesh a set of images. +In the second stage, a diffusion model is trained on a dataset of NeRF weights generated by the previous encoder. This diffusion model is conditioned on either images or text descriptions. The resulting NeRF also outputs SDF values so that meshes can be extracted using marching cubes again. Here we see the prompt "a cheeseburger" turn into a 3D mesh a set of images. https://vimeo.com/865974191?autoplay=1&loop=1&autopause=0&background=1&muted=1&ratio=10000:6545 diff --git a/examples/python/simplerecon/README.md b/examples/python/simplerecon/README.md index 5ca95defcc1a..9d2903a71ee3 100644 --- a/examples/python/simplerecon/README.md +++ b/examples/python/simplerecon/README.md @@ -11,7 +11,7 @@ SimpleRecon is a back-to-basics approach for 3D scene reconstruction from posed https://vimeo.com/865974318?autoplay=1&loop=1&autopause=0&background=1&muted=1&ratio=10000:7627 -SimpleRecon's key contributions include using a 2D CNN with a cost volume, incorporating metadata via MLP, and avoiding computational costs of 3D convolutions. The different frustrums in the visualization show each source frame used to compute the cost volume. These source frames have their features extracted and back-projected into the current frames depth plane hypothesis. +SimpleRecon's key contributions include using a 2D CNN with a cost volume, incorporating metadata via MLP, and avoiding computational costs of 3D convolutions. The different frustums in the visualization show each source frame used to compute the cost volume. These source frames have their features extracted and back-projected into the current frames depth plane hypothesis. https://vimeo.com/865974327?autoplay=1&loop=1&autopause=0&background=1&muted=1&ratio=10000:6522 diff --git a/rerun_py/ARCHITECTURE.md b/rerun_py/ARCHITECTURE.md index 67782b6d161f..db417b7c8431 100644 --- a/rerun_py/ARCHITECTURE.md +++ b/rerun_py/ARCHITECTURE.md @@ -15,7 +15,7 @@ We call an `Archetype` a well-define collection of component that represent a gi Some complex components are build using combination of another type of object called "datatype". These objects have well-defined memory layout but typically lack semantics. For example, the `Vec3D` datatype is a size 3 array of `float32`, and can be used by various components (for example, the `Position3D` component use the `Vec3D` datatype). -The purpose of the Python SDK is to make it easy to build archetype-conforming data structures and log them for subsequent display and inspection using the Rerun viewer, through an easy-to-learn, Pythonic API. To that end, it exposes an API over the supported archetypes, as well as all the components and datatypes needed to build them. In addition, the SDK provides the `rr.log()` function to log any archetype-conforming object, and several support function for initialisation, recording session management, etc. +The purpose of the Python SDK is to make it easy to build archetype-conforming data structures and log them for subsequent display and inspection using the Rerun viewer, through an easy-to-learn, Pythonic API. To that end, it exposes an API over the supported archetypes, as well as all the components and datatypes needed to build them. In addition, the SDK provides the `rr.log()` function to log any archetype-conforming object, and several support function for initialization, recording session management, etc. The present document focuses on the construction of archetype-conforming objects and the `rr.log()` function. @@ -149,7 +149,7 @@ TODO(ab): Implementing a Pythonic API for a component or datatype sometime require a subtle interplay between various hand-coded overrides and auto-generated methods. The `Color` component is a good illustration: -- The `ColorExt.rgba__field_converter_override()` converter flexibly normalises user input into a `int` RGBA storage. +- The `ColorExt.rgba__field_converter_override()` converter flexibly normalizes user input into a `int` RGBA storage. - The auto-generated `__int__()` method facilitates the conversion of a `Color` instance into a `int`, which is recognised by Numpy array creation functions. - The `ColorExt.native_to_pa_array()` exploits these capabilities of the `Color` native object to simplify its implementation (even though, in most cases, the user code will skip using actual `Color` instances). @@ -167,5 +167,5 @@ The `converter` attribute of [`attrs.field()`] can be any callable. Often, `lamb TODO(ab): - fully typed SDK is a goal - both mypy and pyright -- tests (in `rerun_py/tests/unit/`) serve as typing test as well and should minimise use of `# noqa` and similar +- tests (in `rerun_py/tests/unit/`) serve as typing test as well and should minimize use of `# noqa` and similar - unfortunately, PyCharm [doesn't properly support converters](https://youtrack.jetbrains.com/issue/PY-34243/attr.s-attr.ibconverter...-type-hinting-false-positive).