From 401c853bc8dcc9ce0cb060cf540065bcbe8e80f6 Mon Sep 17 00:00:00 2001 From: Jeremy Leibs Date: Tue, 14 May 2024 18:32:33 +0200 Subject: [PATCH 01/40] Increase timeout for test_multiprocessing_gc failure (#6318) ### What Seeing intermittent test failures such as: https://github.com/rerun-io/rerun/actions/runs/9079263975/job/24949470254 1s seems like it should have been plenty, but maybe this is a system load timeout issue? We only hit this timeout if the test is failing so increasing it some shouldn't hurt anything. ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6318?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6318?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6318) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- rerun_py/tests/unit/test_multiprocessing_gc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rerun_py/tests/unit/test_multiprocessing_gc.py b/rerun_py/tests/unit/test_multiprocessing_gc.py index d4aeda1d7bcd2..7c78eabeccc6b 100644 --- a/rerun_py/tests/unit/test_multiprocessing_gc.py +++ b/rerun_py/tests/unit/test_multiprocessing_gc.py @@ -27,7 +27,7 @@ def test_multiprocessing_gc() -> None: target=task, ) proc.start() - proc.join(1) + proc.join(5) if proc.is_alive(): # Terminate so our test doesn't get stuck proc.terminate() From 178ef607ce1f0d8bb543a629c93be929b243b639 Mon Sep 17 00:00:00 2001 From: Jeremy Leibs Date: Tue, 14 May 2024 19:27:50 +0200 Subject: [PATCH 02/40] Transmit url analytics correctly for rerun.io domains (#6322) ### What Resolves: - https://github.com/rerun-io/rerun/issues/6274 - https://github.com/rerun-io/rerun/issues/6288 I added the processing at the last stage of the analytics output so we don't depend on every code path possibily populating the analytics event to do its own domain evaluation and/or hashing. Validated events look correct in posthog: ![image](https://github.com/rerun-io/rerun/assets/3312232/17ddf585-5135-4ad1-8132-f64661b9e730) ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6322?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6322?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6322) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- Cargo.lock | 1 + crates/re_analytics/Cargo.toml | 1 + crates/re_analytics/src/event.rs | 81 ++++++++++++++++++++++++++++++-- lychee.toml | 1 + 4 files changed, 80 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 957b7f4116a50..1dc04a6d3b949 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4122,6 +4122,7 @@ dependencies = [ "sha2", "thiserror", "time", + "url", "uuid", "web-sys", ] diff --git a/crates/re_analytics/Cargo.toml b/crates/re_analytics/Cargo.toml index d92962b0b66a8..a14d1bf21844a 100644 --- a/crates/re_analytics/Cargo.toml +++ b/crates/re_analytics/Cargo.toml @@ -32,6 +32,7 @@ serde_json.workspace = true sha2.workspace = true thiserror.workspace = true time = { workspace = true, features = ["serde", "formatting", "parsing"] } +url = { workspace = true } uuid = { workspace = true, features = ["serde", "v4", "js"] } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] diff --git a/crates/re_analytics/src/event.rs b/crates/re_analytics/src/event.rs index ed8a525990270..bc7545bab8070 100644 --- a/crates/re_analytics/src/event.rs +++ b/crates/re_analytics/src/event.rs @@ -48,7 +48,8 @@ pub struct Identify { pub struct ViewerStarted { /// The URL on which the web viewer is running. /// - /// We _only_ collect this on `rerun.io` domains. + /// This will be used to populate `hashed_root_domain` property for all urls. + /// This will also populate `rerun_url` property if the url root domain is `rerun.io`. pub url: Option, /// The environment in which the viewer is running. @@ -61,7 +62,8 @@ pub struct ViewerStarted { pub struct OpenRecording { /// The URL on which the web viewer is running. /// - /// We _only_ collect this on `rerun.io` domains. + /// This will be used to populate `hashed_root_domain` property for all urls. + /// This will also populate `rerun_url` property if the url root domain is `rerun.io`. pub url: Option, /// The environment in which the viewer is running. @@ -125,6 +127,7 @@ impl Properties for ServeWasm { use std::collections::HashMap; use re_build_info::BuildInfo; +use url::Url; use crate::{AnalyticsEvent, Event, EventKind, Properties, Property}; @@ -167,12 +170,40 @@ impl Event for ViewerStarted { const NAME: &'static str = "viewer_started"; } +const RERUN_DOMAINS: [&str; 1] = ["rerun.io"]; + +/// Given a URL, extract the root domain. +fn extract_root_domain(url: &str) -> Option { + let parsed = Url::parse(url).ok()?; + let domain = parsed.domain()?; + let parts = domain.split('.').collect::>(); + if parts.len() >= 2 { + Some(parts[parts.len() - 2..].join(".")) + } else { + None + } +} + +fn add_sanitized_url_properties(event: &mut AnalyticsEvent, url: Option) { + let Some(root_domain) = url.as_ref().and_then(|url| extract_root_domain(url)) else { + return; + }; + + if RERUN_DOMAINS.contains(&root_domain.as_str()) { + event.insert_opt("rerun_url", url); + } + + let hashed = Property::from(root_domain).hashed(); + event.insert("hashed_root_domain", hashed); +} + impl Properties for ViewerStarted { fn serialize(self, event: &mut AnalyticsEvent) { let Self { url, app_env } = self; event.insert("app_env", app_env); - event.insert_opt("url", url); + + add_sanitized_url_properties(event, url); } } @@ -189,7 +220,8 @@ impl Properties for OpenRecording { data_source, } = self; - event.insert_opt("url", url); + add_sanitized_url_properties(event, url); + event.insert("app_env", app_env); if let Some(store_info) = store_info { @@ -255,3 +287,44 @@ impl Properties for CrashSignal { event.insert("callstack", callstack.clone()); } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_root_domain() { + // Valid urls + assert_eq!( + extract_root_domain("https://rerun.io"), + Some("rerun.io".to_owned()) + ); + assert_eq!( + extract_root_domain("https://ReRun.io"), + Some("rerun.io".to_owned()) + ); + assert_eq!( + extract_root_domain("http://app.rerun.io"), + Some("rerun.io".to_owned()) + ); + assert_eq!( + extract_root_domain("https://www.rerun.io/viewer?url=https://app.rerun.io/version/0.15.1/examples/detect_and_track_objects.rrd"), + Some("rerun.io".to_owned()) + ); + + // Local domains + assert_eq!( + extract_root_domain("http://localhost:9090/?url=ws://localhost:9877"), + None + ); + assert_eq!( + extract_root_domain("http://127.0.0.1:9090/?url=ws://localhost:9877"), + None + ); + + // Invalid urls + assert_eq!(extract_root_domain("rerun.io"), None); + assert_eq!(extract_root_domain("https:/rerun"), None); + assert_eq!(extract_root_domain("https://rerun"), None); + } +} diff --git a/lychee.toml b/lychee.toml index 5f889c05035f9..222bf3ff2316a 100644 --- a/lychee.toml +++ b/lychee.toml @@ -50,6 +50,7 @@ exclude_path = [ "venv", # Actually ignored files beyond .gitignore + "crates/re_analytics/src/event.rs", # Contains test with malformed urls "scripts/lint.py", # Contains url-matching regexes that aren't actual urls "scripts/screenshot_compare/assets/templates/", ] From c19a08f71c12a060b3c01f7d89948b2c61832808 Mon Sep 17 00:00:00 2001 From: Clement Rey Date: Tue, 14 May 2024 20:15:53 +0200 Subject: [PATCH 03/40] Keep track of the RRD protocol version and display it where relevant (#6324) This augments `StoreInfo` with an in-memory only (!) `store_version` field. Our `Decoder` and `StreamDecoder` have been patched to fill out this field using the RRD version present in the stream's header. This version is now visible in the UI, using the CLI, and in the analytics. Viewer: ![image](https://github.com/rerun-io/rerun/assets/2910679/c7b7f211-1a16-41d4-b43a-d8c661819122) CLI: ![image](https://github.com/rerun-io/rerun/assets/2910679/df15efa9-e2a0-42b8-b17a-b2c10dc7a46d) Analytics: ![image](https://github.com/rerun-io/rerun/assets/2910679/b9cf5745-2eb1-4f8a-8a4c-2db9cb874c0b) - Fixes https://github.com/rerun-io/rerun/issues/6280 --- Cargo.lock | 7 ++ crates/re_analytics/src/event.rs | 32 ++++++--- crates/re_build_info/Cargo.toml | 13 ++++ crates/re_build_info/src/crate_version.rs | 6 ++ crates/re_data_loader/Cargo.toml | 1 + crates/re_data_loader/src/load_file.rs | 9 ++- crates/re_data_ui/src/entity_db.rs | 9 +++ crates/re_data_ui/src/log_msg.rs | 9 +++ crates/re_entity_db/Cargo.toml | 1 + crates/re_entity_db/examples/memory_usage.rs | 9 ++- crates/re_entity_db/src/store_bundle.rs | 1 + .../benches/msg_encode_benchmark.rs | 8 ++- crates/re_log_encoding/src/decoder/mod.rs | 38 +++++++--- crates/re_log_encoding/src/decoder/stream.rs | 24 ++++++- crates/re_log_encoding/src/encoder.rs | 19 +++-- crates/re_log_encoding/src/file_sink.rs | 12 +++- crates/re_log_types/Cargo.toml | 2 + crates/re_log_types/src/lib.rs | 9 +++ crates/re_sdk/src/binary_stream_sink.rs | 7 +- crates/re_sdk/src/lib.rs | 1 + crates/re_sdk/src/log_sink.rs | 14 ++-- crates/re_sdk/src/recording_stream.rs | 1 + crates/re_sdk_comms/Cargo.toml | 1 + crates/re_sdk_comms/src/buffered_client.rs | 5 +- crates/re_viewer/src/app.rs | 39 ++++++++-- crates/re_viewer/src/saving.rs | 3 +- .../re_viewer/src/viewer_analytics/event.rs | 71 +++++++++++-------- crates/rerun/src/run.rs | 7 +- 28 files changed, 280 insertions(+), 78 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1dc04a6d3b949..9bb3d19215bc7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4153,6 +4153,9 @@ dependencies = [ [[package]] name = "re_build_info" version = "0.16.0-alpha.4" +dependencies = [ + "serde", +] [[package]] name = "re_build_tools" @@ -4189,6 +4192,7 @@ dependencies = [ "once_cell", "parking_lot", "rayon", + "re_build_info", "re_build_tools", "re_log", "re_log_encoding", @@ -4318,6 +4322,7 @@ dependencies = [ "nohash-hasher", "parking_lot", "rand", + "re_build_info", "re_data_store", "re_format", "re_int_histogram", @@ -4429,6 +4434,7 @@ dependencies = [ "num-derive", "num-traits", "re_arrow2", + "re_build_info", "re_format", "re_format_arrow", "re_log", @@ -4614,6 +4620,7 @@ dependencies = [ "crossbeam", "document-features", "rand", + "re_build_info", "re_log", "re_log_encoding", "re_log_types", diff --git a/crates/re_analytics/src/event.rs b/crates/re_analytics/src/event.rs index bc7545bab8070..e04f4d466ee23 100644 --- a/crates/re_analytics/src/event.rs +++ b/crates/re_analytics/src/event.rs @@ -90,6 +90,9 @@ pub struct StoreInfo { /// Where data is being logged. pub store_source: String, + /// The Rerun version that was used to encode the RRD data. + pub store_version: String, + // Various versions of the host environment. pub rust_version: Option, pub llvm_version: Option, @@ -225,16 +228,29 @@ impl Properties for OpenRecording { event.insert("app_env", app_env); if let Some(store_info) = store_info { - event.insert("application_id", store_info.application_id); - event.insert("recording_id", store_info.recording_id); - event.insert("store_source", store_info.store_source); - event.insert_opt("rust_version", store_info.rust_version); - event.insert_opt("llvm_version", store_info.llvm_version); - event.insert_opt("python_version", store_info.python_version); - event.insert("is_official_example", store_info.is_official_example); + let StoreInfo { + application_id, + recording_id, + store_source, + store_version, + rust_version, + llvm_version, + python_version, + is_official_example, + app_id_starts_with_rerun_example, + } = store_info; + + event.insert("application_id", application_id); + event.insert("recording_id", recording_id); + event.insert("store_source", store_source); + event.insert("store_version", store_version); + event.insert_opt("rust_version", rust_version); + event.insert_opt("llvm_version", llvm_version); + event.insert_opt("python_version", python_version); + event.insert("is_official_example", is_official_example); event.insert( "app_id_starts_with_rerun_example", - store_info.app_id_starts_with_rerun_example, + app_id_starts_with_rerun_example, ); } diff --git a/crates/re_build_info/Cargo.toml b/crates/re_build_info/Cargo.toml index 2bc3a0f19228b..a37d63ef9c54b 100644 --- a/crates/re_build_info/Cargo.toml +++ b/crates/re_build_info/Cargo.toml @@ -17,3 +17,16 @@ workspace = true [package.metadata.docs.rs] all-features = true + + +[features] +default = [] + +## Enable (de)serialization using serde. +serde = ["dep:serde"] + + +[dependencies] + +# Optional dependencies: +serde = { workspace = true, optional = true, features = ["derive", "rc"] } diff --git a/crates/re_build_info/src/crate_version.rs b/crates/re_build_info/src/crate_version.rs index eaac871671fd6..4a576a704cb0d 100644 --- a/crates/re_build_info/src/crate_version.rs +++ b/crates/re_build_info/src/crate_version.rs @@ -41,6 +41,7 @@ mod meta { /// - `01NNNNNN` -> `-rc.N` /// - `00000000` -> none of the above #[derive(Clone, Copy, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] pub struct CrateVersion { pub major: u8, pub minor: u8, @@ -48,7 +49,12 @@ pub struct CrateVersion { pub meta: Option, } +impl CrateVersion { + pub const LOCAL: Self = Self::parse(env!("CARGO_PKG_VERSION")); +} + #[derive(Clone, Copy, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] pub enum Meta { Rc(u8), Alpha(u8), diff --git a/crates/re_data_loader/Cargo.toml b/crates/re_data_loader/Cargo.toml index c8e0301c87123..e82b460db4558 100644 --- a/crates/re_data_loader/Cargo.toml +++ b/crates/re_data_loader/Cargo.toml @@ -24,6 +24,7 @@ default = [] [dependencies] +re_build_info.workspace = true re_log_encoding = { workspace = true, features = ["decoder"] } re_log_types.workspace = true re_log.workspace = true diff --git a/crates/re_data_loader/src/load_file.rs b/crates/re_data_loader/src/load_file.rs index 267eefff37c06..26f678b9ef104 100644 --- a/crates/re_data_loader/src/load_file.rs +++ b/crates/re_data_loader/src/load_file.rs @@ -101,7 +101,8 @@ pub(crate) fn prepare_store_info( let app_id = re_log_types::ApplicationId(path.display().to_string()); let store_source = re_log_types::StoreSource::File { file_source }; - let is_rrd = crate::SUPPORTED_RERUN_EXTENSIONS.contains(&extension(path).as_str()); + let ext = extension(path); + let is_rrd = crate::SUPPORTED_RERUN_EXTENSIONS.contains(&ext.as_str()); (!is_rrd).then(|| { LogMsg::SetStoreInfo(SetStoreInfo { @@ -113,6 +114,12 @@ pub(crate) fn prepare_store_info( is_official_example: false, started: re_log_types::Time::now(), store_source, + // NOTE: If this is a natively supported file, it will go through one of the + // builtin dataloaders, i.e. the local version. + // Otherwise, it will go through an arbitrary external loader, at which point we + // have no certainty what the version is. + store_version: crate::is_supported_file_extension(ext.as_str()) + .then_some(re_build_info::CrateVersion::LOCAL), }, }) }) diff --git a/crates/re_data_ui/src/entity_db.rs b/crates/re_data_ui/src/entity_db.rs index 5fc24e022a675..36258a5dfb98e 100644 --- a/crates/re_data_ui/src/entity_db.rs +++ b/crates/re_data_ui/src/entity_db.rs @@ -44,6 +44,7 @@ impl crate::DataUi for EntityDb { is_official_example: _, started, store_source, + store_version, } = store_info; if let Some(cloned_from) = cloned_from { @@ -60,6 +61,14 @@ impl crate::DataUi for EntityDb { ui.label(store_source.to_string()); ui.end_row(); + if let Some(store_version) = store_version { + re_ui.grid_left_hand_label(ui, "Source RRD version"); + ui.label(store_version.to_string()); + ui.end_row(); + } else { + re_log::debug_once!("store version is undefined for this recording, this is a bug"); + } + re_ui.grid_left_hand_label(ui, "Kind"); ui.label(store_id.kind.to_string()); ui.end_row(); diff --git a/crates/re_data_ui/src/log_msg.rs b/crates/re_data_ui/src/log_msg.rs index 9a2c8a3d90d42..5a3ad7ef61488 100644 --- a/crates/re_data_ui/src/log_msg.rs +++ b/crates/re_data_ui/src/log_msg.rs @@ -48,6 +48,7 @@ impl DataUi for SetStoreInfo { started, store_source, is_official_example, + store_version, } = info; let re_ui = &ctx.re_ui; @@ -77,6 +78,14 @@ impl DataUi for SetStoreInfo { ui.label(format!("{store_source}")); ui.end_row(); + if let Some(store_version) = store_version { + re_ui.grid_left_hand_label(ui, "store_version:"); + ui.label(format!("{store_version}")); + ui.end_row(); + } else { + re_log::debug_once!("store version is undefined for this recording, this is a bug"); + } + re_ui.grid_left_hand_label(ui, "is_official_example:"); ui.label(format!("{is_official_example}")); ui.end_row(); diff --git a/crates/re_entity_db/Cargo.toml b/crates/re_entity_db/Cargo.toml index d5ed52af6722f..5ed1e98294080 100644 --- a/crates/re_entity_db/Cargo.toml +++ b/crates/re_entity_db/Cargo.toml @@ -27,6 +27,7 @@ serde = ["dep:serde", "dep:rmp-serde", "re_log_types/serde"] [dependencies] +re_build_info.workspace = true re_data_store.workspace = true re_format.workspace = true re_int_histogram.workspace = true diff --git a/crates/re_entity_db/examples/memory_usage.rs b/crates/re_entity_db/examples/memory_usage.rs index 3d1e4626bb80e..2effe5505b2cf 100644 --- a/crates/re_entity_db/examples/memory_usage.rs +++ b/crates/re_entity_db/examples/memory_usage.rs @@ -63,8 +63,13 @@ fn log_messages() { fn encode_log_msg(log_msg: &LogMsg) -> Vec { let mut bytes = vec![]; let encoding_options = re_log_encoding::EncodingOptions::COMPRESSED; - re_log_encoding::encoder::encode(encoding_options, std::iter::once(log_msg), &mut bytes) - .unwrap(); + re_log_encoding::encoder::encode( + re_build_info::CrateVersion::LOCAL, + encoding_options, + std::iter::once(log_msg), + &mut bytes, + ) + .unwrap(); bytes } diff --git a/crates/re_entity_db/src/store_bundle.rs b/crates/re_entity_db/src/store_bundle.rs index 1cf0c21e6e4c2..fd25eee34650a 100644 --- a/crates/re_entity_db/src/store_bundle.rs +++ b/crates/re_entity_db/src/store_bundle.rs @@ -107,6 +107,7 @@ impl StoreBundle { is_official_example: false, started: re_log_types::Time::now(), store_source: re_log_types::StoreSource::Other("viewer".to_owned()), + store_version: Some(re_build_info::CrateVersion::LOCAL), }, }); diff --git a/crates/re_log_encoding/benches/msg_encode_benchmark.rs b/crates/re_log_encoding/benches/msg_encode_benchmark.rs index 5e609657ed7da..68c3784088986 100644 --- a/crates/re_log_encoding/benches/msg_encode_benchmark.rs +++ b/crates/re_log_encoding/benches/msg_encode_benchmark.rs @@ -30,7 +30,13 @@ criterion_main!(benches); fn encode_log_msgs(messages: &[LogMsg]) -> Vec { let encoding_options = re_log_encoding::EncodingOptions::COMPRESSED; let mut bytes = vec![]; - re_log_encoding::encoder::encode(encoding_options, messages.iter(), &mut bytes).unwrap(); + re_log_encoding::encoder::encode( + re_build_info::CrateVersion::LOCAL, + encoding_options, + messages.iter(), + &mut bytes, + ) + .unwrap(); assert!(bytes.len() > messages.len()); bytes } diff --git a/crates/re_log_encoding/src/decoder/mod.rs b/crates/re_log_encoding/src/decoder/mod.rs index a1ea2fdc16968..8178f8c3e6f65 100644 --- a/crates/re_log_encoding/src/decoder/mod.rs +++ b/crates/re_log_encoding/src/decoder/mod.rs @@ -37,23 +37,22 @@ fn warn_on_version_mismatch( CrateVersion::from_bytes(encoded_version) }; - const LOCAL_VERSION: CrateVersion = CrateVersion::parse(env!("CARGO_PKG_VERSION")); - - if encoded_version.is_compatible_with(LOCAL_VERSION) { + if encoded_version.is_compatible_with(CrateVersion::LOCAL) { Ok(()) } else { match version_policy { VersionPolicy::Warn => { re_log::warn_once!( "Found log stream with Rerun version {encoded_version}, \ - which is incompatible with the local Rerun version {LOCAL_VERSION}. \ - Loading will try to continue, but might fail in subtle ways." + which is incompatible with the local Rerun version {}. \ + Loading will try to continue, but might fail in subtle ways.", + CrateVersion::LOCAL, ); Ok(()) } VersionPolicy::Error => Err(DecodeError::IncompatibleRerunVersion { file: encoded_version, - local: LOCAL_VERSION, + local: CrateVersion::LOCAL, }), } } @@ -109,7 +108,7 @@ pub fn decode_bytes( pub fn read_options( version_policy: VersionPolicy, bytes: &[u8], -) -> Result { +) -> Result<(CrateVersion, EncodingOptions), DecodeError> { let mut read = std::io::Cursor::new(bytes); let FileHeader { @@ -130,10 +129,11 @@ pub fn read_options( Serializer::MsgPack => {} } - Ok(options) + Ok((CrateVersion::from_bytes(version), options)) } pub struct Decoder { + version: CrateVersion, compression: Compression, read: R, uncompressed: Vec, // scratch space @@ -146,15 +146,24 @@ impl Decoder { let mut data = [0_u8; FileHeader::SIZE]; read.read_exact(&mut data).map_err(DecodeError::Read)?; - let compression = read_options(version_policy, &data)?.compression; + + let (version, options) = read_options(version_policy, &data)?; + let compression = options.compression; Ok(Self { + version, compression, read, uncompressed: vec![], compressed: vec![], }) } + + /// Returns the Rerun version that was used to encode the data in the first place. + #[inline] + pub fn version(&self) -> CrateVersion { + self.version + } } impl Iterator for Decoder { @@ -211,6 +220,12 @@ impl Iterator for Decoder { re_tracing::profile_scope!("MsgPack deser"); match rmp_serde::from_slice(&self.uncompressed[..uncompressed_len]) { + Ok(re_log_types::LogMsg::SetStoreInfo(mut msg)) => { + // Propagate the protocol version from the header into the `StoreInfo` so that all + // parts of the app can easily access it. + msg.info.store_version = Some(self.version()); + Some(Ok(re_log_types::LogMsg::SetStoreInfo(msg))) + } Ok(msg) => Some(Ok(msg)), Err(err) => Some(Err(err.into())), } @@ -227,6 +242,8 @@ fn test_encode_decode() { Time, }; + let rrd_version = CrateVersion::LOCAL; + let messages = vec![LogMsg::SetStoreInfo(SetStoreInfo { row_id: RowId::new(), info: StoreInfo { @@ -239,6 +256,7 @@ fn test_encode_decode() { rustc_version: String::new(), llvm_version: String::new(), }, + store_version: Some(rrd_version), }, })]; @@ -255,7 +273,7 @@ fn test_encode_decode() { for options in options { let mut file = vec![]; - crate::encoder::encode(options, messages.iter(), &mut file).unwrap(); + crate::encoder::encode(rrd_version, options, messages.iter(), &mut file).unwrap(); let decoded_messages = Decoder::new(VersionPolicy::Error, &mut file.as_slice()) .unwrap() diff --git a/crates/re_log_encoding/src/decoder/stream.rs b/crates/re_log_encoding/src/decoder/stream.rs index 3d2d27b86ccc2..dfc8b82970061 100644 --- a/crates/re_log_encoding/src/decoder/stream.rs +++ b/crates/re_log_encoding/src/decoder/stream.rs @@ -2,6 +2,7 @@ use std::collections::VecDeque; use std::io::Cursor; use std::io::Read; +use re_build_info::CrateVersion; use re_log_types::LogMsg; use crate::decoder::read_options; @@ -17,6 +18,11 @@ use super::{DecodeError, VersionPolicy}; /// Chunks are given to the stream via `StreamDecoder::push_chunk`, /// and messages are read back via `StreamDecoder::try_read`. pub struct StreamDecoder { + /// The Rerun version used to encode the RRD data. + /// + /// `None` until a Rerun header has been processed. + version: Option, + /// How to handle version mismatches version_policy: VersionPolicy, @@ -72,6 +78,7 @@ enum State { impl StreamDecoder { pub fn new(version_policy: VersionPolicy) -> Self { Self { + version: None, version_policy, compression: Compression::Off, chunks: ChunkBuffer::new(), @@ -89,7 +96,9 @@ impl StreamDecoder { State::StreamHeader => { if let Some(header) = self.chunks.try_read(FileHeader::SIZE) { // header contains version and compression options - self.compression = read_options(self.version_policy, header)?.compression; + let (version, options) = read_options(self.version_policy, header)?; + self.version = Some(version); + self.compression = options.compression; // we might have data left in the current chunk, // immediately try to read length of the next message @@ -123,7 +132,15 @@ impl StreamDecoder { let message = rmp_serde::from_slice(bytes).map_err(DecodeError::MsgPack)?; self.state = State::MessageHeader; - return Ok(Some(message)); + + return if let re_log_types::LogMsg::SetStoreInfo(mut msg) = message { + // Propagate the protocol version from the header into the `StoreInfo` so that all + // parts of the app can easily access it. + msg.info.store_version = self.version; + Ok(Some(re_log_types::LogMsg::SetStoreInfo(msg))) + } else { + Ok(Some(message)) + }; } } } @@ -239,6 +256,7 @@ mod tests { is_official_example: false, started: Time::from_ns_since_epoch(0), store_source: StoreSource::Unknown, + store_version: Some(CrateVersion::LOCAL), }, }) } @@ -247,7 +265,7 @@ mod tests { let messages: Vec<_> = (0..n).map(|_| fake_log_msg()).collect(); let mut buffer = Vec::new(); - let mut encoder = Encoder::new(options, &mut buffer).unwrap(); + let mut encoder = Encoder::new(CrateVersion::LOCAL, options, &mut buffer).unwrap(); for message in &messages { encoder.append(message).unwrap(); } diff --git a/crates/re_log_encoding/src/encoder.rs b/crates/re_log_encoding/src/encoder.rs index fa00f120493d2..f7ac2567f6171 100644 --- a/crates/re_log_encoding/src/encoder.rs +++ b/crates/re_log_encoding/src/encoder.rs @@ -28,12 +28,13 @@ pub enum EncodeError { // ---------------------------------------------------------------------------- pub fn encode_to_bytes<'a>( + version: CrateVersion, options: EncodingOptions, msgs: impl IntoIterator, ) -> Result, EncodeError> { let mut bytes: Vec = vec![]; { - let mut encoder = Encoder::new(options, std::io::Cursor::new(&mut bytes))?; + let mut encoder = Encoder::new(version, options, std::io::Cursor::new(&mut bytes))?; for msg in msgs { encoder.append(msg)?; } @@ -52,12 +53,14 @@ pub struct Encoder { } impl Encoder { - pub fn new(options: EncodingOptions, mut write: W) -> Result { - const RERUN_VERSION: CrateVersion = CrateVersion::parse(env!("CARGO_PKG_VERSION")); - + pub fn new( + version: CrateVersion, + options: EncodingOptions, + mut write: W, + ) -> Result { FileHeader { magic: *crate::RRD_HEADER, - version: RERUN_VERSION.to_bytes(), + version: version.to_bytes(), options, } .encode(&mut write)?; @@ -117,12 +120,13 @@ impl Encoder { } pub fn encode<'a>( + version: CrateVersion, options: EncodingOptions, messages: impl Iterator, write: &mut impl std::io::Write, ) -> Result<(), EncodeError> { re_tracing::profile_function!(); - let mut encoder = Encoder::new(options, write)?; + let mut encoder = Encoder::new(version, options, write)?; for message in messages { encoder.append(message)?; } @@ -130,12 +134,13 @@ pub fn encode<'a>( } pub fn encode_as_bytes<'a>( + version: CrateVersion, options: EncodingOptions, messages: impl Iterator, ) -> Result, EncodeError> { re_tracing::profile_function!(); let mut bytes: Vec = vec![]; - let mut encoder = Encoder::new(options, &mut bytes)?; + let mut encoder = Encoder::new(version, options, &mut bytes)?; for message in messages { encoder.append(message)?; } diff --git a/crates/re_log_encoding/src/file_sink.rs b/crates/re_log_encoding/src/file_sink.rs index 38bc0b8020649..7bebfd9e3f15f 100644 --- a/crates/re_log_encoding/src/file_sink.rs +++ b/crates/re_log_encoding/src/file_sink.rs @@ -75,7 +75,11 @@ impl FileSink { let file = std::fs::File::create(&path) .map_err(|err| FileSinkError::CreateFile(path.clone(), err))?; - let encoder = crate::encoder::Encoder::new(encoding_options, file)?; + let encoder = crate::encoder::Encoder::new( + re_build_info::CrateVersion::LOCAL, + encoding_options, + file, + )?; let join_handle = spawn_and_stream(Some(&path), encoder, rx)?; Ok(Self { @@ -93,7 +97,11 @@ impl FileSink { re_log::debug!("Writing to stdout…"); - let encoder = crate::encoder::Encoder::new(encoding_options, std::io::stdout())?; + let encoder = crate::encoder::Encoder::new( + re_build_info::CrateVersion::LOCAL, + encoding_options, + std::io::stdout(), + )?; let join_handle = spawn_and_stream(None, encoder, rx)?; Ok(Self { diff --git a/crates/re_log_types/Cargo.toml b/crates/re_log_types/Cargo.toml index 1813ad2547725..31bc52880f187 100644 --- a/crates/re_log_types/Cargo.toml +++ b/crates/re_log_types/Cargo.toml @@ -32,6 +32,7 @@ default = [] serde = [ "dep:serde", "dep:serde_bytes", + "re_build_info/serde", "re_string_interner/serde", "re_tuid/serde", "re_types_core/serde", @@ -40,6 +41,7 @@ serde = [ [dependencies] # Rerun +re_build_info.workspace = true re_format.workspace = true re_format_arrow.workspace = true re_log.workspace = true diff --git a/crates/re_log_types/src/lib.rs b/crates/re_log_types/src/lib.rs index 5c0b7ec4dfe0d..8013a1741d178 100644 --- a/crates/re_log_types/src/lib.rs +++ b/crates/re_log_types/src/lib.rs @@ -37,6 +37,8 @@ mod data_table_batcher; use std::sync::Arc; +use re_build_info::CrateVersion; + pub use self::arrow_msg::{ArrowChunkReleaseCallback, ArrowMsg}; pub use self::data_cell::{DataCell, DataCellError, DataCellInner, DataCellResult}; pub use self::data_row::{ @@ -361,6 +363,13 @@ pub struct StoreInfo { pub started: Time, pub store_source: StoreSource, + + /// The Rerun version used to encoded the RRD data. + /// + // NOTE: The version comes directly from the decoded RRD stream's header, duplicating it here + // would probably only lead to more issues down the line. + #[serde(skip)] + pub store_version: Option, } impl StoreInfo { diff --git a/crates/re_sdk/src/binary_stream_sink.rs b/crates/re_sdk/src/binary_stream_sink.rs index f6ee5127264bd..6a74c869ece54 100644 --- a/crates/re_sdk/src/binary_stream_sink.rs +++ b/crates/re_sdk/src/binary_stream_sink.rs @@ -133,8 +133,11 @@ impl BinaryStreamSink { let (tx, rx) = std::sync::mpsc::channel(); - let encoder = - re_log_encoding::encoder::Encoder::new(encoding_options, storage.inner.clone())?; + let encoder = re_log_encoding::encoder::Encoder::new( + re_build_info::CrateVersion::LOCAL, + encoding_options, + storage.inner.clone(), + )?; let join_handle = spawn_and_stream(encoder, rx)?; diff --git a/crates/re_sdk/src/lib.rs b/crates/re_sdk/src/lib.rs index 18a9af9baa22f..697e08ecb52c6 100644 --- a/crates/re_sdk/src/lib.rs +++ b/crates/re_sdk/src/lib.rs @@ -183,6 +183,7 @@ pub fn new_store_info( rustc_version: env!("RE_BUILD_RUSTC_VERSION").into(), llvm_version: env!("RE_BUILD_LLVM_VERSION").into(), }, + store_version: Some(re_build_info::CrateVersion::LOCAL), } } diff --git a/crates/re_sdk/src/log_sink.rs b/crates/re_sdk/src/log_sink.rs index a67b649fe1941..58bab041fcc06 100644 --- a/crates/re_sdk/src/log_sink.rs +++ b/crates/re_sdk/src/log_sink.rs @@ -255,8 +255,11 @@ impl MemorySinkStorage { { let encoding_options = re_log_encoding::EncodingOptions::COMPRESSED; - let mut encoder = - re_log_encoding::encoder::Encoder::new(encoding_options, &mut buffer)?; + let mut encoder = re_log_encoding::encoder::Encoder::new( + re_build_info::CrateVersion::LOCAL, + encoding_options, + &mut buffer, + )?; for sink in sinks { // NOTE: It's fine, this is an in-memory sink so by definition there's no I/O involved // in this flush; it's just a matter of making the table batcher tick early. @@ -285,8 +288,11 @@ impl MemorySinkStorage { { let encoding_options = re_log_encoding::EncodingOptions::COMPRESSED; - let mut encoder = - re_log_encoding::encoder::Encoder::new(encoding_options, &mut buffer)?; + let mut encoder = re_log_encoding::encoder::Encoder::new( + re_build_info::CrateVersion::LOCAL, + encoding_options, + &mut buffer, + )?; let mut inner = self.inner.lock(); inner.has_been_used = true; diff --git a/crates/re_sdk/src/recording_stream.rs b/crates/re_sdk/src/recording_stream.rs index 4bb800106378c..6d9f0162d80c8 100644 --- a/crates/re_sdk/src/recording_stream.rs +++ b/crates/re_sdk/src/recording_stream.rs @@ -555,6 +555,7 @@ impl RecordingStreamBuilder { is_official_example, started: Time::now(), store_source, + store_version: Some(re_build_info::CrateVersion::LOCAL), }; let batcher_config = diff --git a/crates/re_sdk_comms/Cargo.toml b/crates/re_sdk_comms/Cargo.toml index 9ce91ab96dca3..01e9069304073 100644 --- a/crates/re_sdk_comms/Cargo.toml +++ b/crates/re_sdk_comms/Cargo.toml @@ -28,6 +28,7 @@ server = ["rand", "re_log_encoding/decoder"] [dependencies] +re_build_info.workspace = true re_log_encoding.workspace = true re_log_types = { workspace = true, features = ["serde"] } re_log.workspace = true diff --git a/crates/re_sdk_comms/src/buffered_client.rs b/crates/re_sdk_comms/src/buffered_client.rs index fcc24e7badbb6..6a48e553bd4b8 100644 --- a/crates/re_sdk_comms/src/buffered_client.rs +++ b/crates/re_sdk_comms/src/buffered_client.rs @@ -177,7 +177,10 @@ fn msg_encode( let packet_msg = match &msg_msg { MsgMsg::LogMsg(log_msg) => { - match re_log_encoding::encoder::encode_to_bytes(encoding_options, std::iter::once(log_msg)) { + match re_log_encoding::encoder::encode_to_bytes( + re_build_info::CrateVersion::LOCAL, + encoding_options, std::iter::once(log_msg), + ) { Ok(packet) => { re_log::trace!("Encoded message of size {}", packet.len()); Some(PacketMsg::Packet(packet)) diff --git a/crates/re_viewer/src/app.rs b/crates/re_viewer/src/app.rs index 222c958afb714..5ebad59d3403c 100644 --- a/crates/re_viewer/src/app.rs +++ b/crates/re_viewer/src/app.rs @@ -1,3 +1,4 @@ +use re_build_info::CrateVersion; use re_data_source::{DataSource, FileContents}; use re_entity_db::entity_db::EntityDb; use re_log_types::{ApplicationId, FileSource, LogMsg, StoreKind}; @@ -1326,10 +1327,14 @@ fn blueprint_loader() -> BlueprintPersistence { let blueprint_path = crate::saving::default_blueprint_path(app_id)?; let messages = blueprint.to_messages(None)?; + let rrd_version = blueprint + .store_info() + .and_then(|info| info.store_version) + .unwrap_or(re_build_info::CrateVersion::LOCAL); // TODO(jleibs): Should we push this into a background thread? Blueprints should generally // be small & fast to save, but maybe not once we start adding big pieces of user data? - crate::saving::encode_to_file(&blueprint_path, messages.iter())?; + crate::saving::encode_to_file(rrd_version, &blueprint_path, messages.iter())?; re_log::debug!("Saved blueprint for {app_id} to {blueprint_path:?}"); @@ -1730,6 +1735,11 @@ fn save_recording( anyhow::bail!("No recording data to save"); }; + let rrd_version = entity_db + .store_info() + .and_then(|info| info.store_version) + .unwrap_or(re_build_info::CrateVersion::LOCAL); + let file_name = "data.rrd"; let title = if loop_selection.is_some() { @@ -1738,9 +1748,13 @@ fn save_recording( "Save recording" }; - save_entity_db(app, file_name.to_owned(), title.to_owned(), || { - entity_db.to_messages(loop_selection) - }) + save_entity_db( + app, + rrd_version, + file_name.to_owned(), + title.to_owned(), + || entity_db.to_messages(loop_selection), + ) } fn save_blueprint(app: &mut App, store_context: Option<&StoreContext<'_>>) -> anyhow::Result<()> { @@ -1750,6 +1764,12 @@ fn save_blueprint(app: &mut App, store_context: Option<&StoreContext<'_>>) -> an re_tracing::profile_function!(); + let rrd_version = store_context + .blueprint + .store_info() + .and_then(|info| info.store_version) + .unwrap_or(re_build_info::CrateVersion::LOCAL); + // We change the recording id to a new random one, // otherwise when saving and loading a blueprint file, we can end up // in a situation where the store_id we're loading is the same as the currently active one, @@ -1767,12 +1787,15 @@ fn save_blueprint(app: &mut App, store_context: Option<&StoreContext<'_>>) -> an ); let title = "Save blueprint"; - save_entity_db(app, file_name, title.to_owned(), || Ok(messages)) + save_entity_db(app, rrd_version, file_name, title.to_owned(), || { + Ok(messages) + }) } #[allow(clippy::needless_pass_by_ref_mut)] // `app` is only used on native fn save_entity_db( #[allow(unused_variables)] app: &mut App, // only used on native + rrd_version: CrateVersion, file_name: String, title: String, to_log_messages: impl FnOnce() -> re_log_types::DataTableResult>, @@ -1785,7 +1808,7 @@ fn save_entity_db( let messages = to_log_messages()?; wasm_bindgen_futures::spawn_local(async move { - if let Err(err) = async_save_dialog(&file_name, &title, &messages).await { + if let Err(err) = async_save_dialog(rrd_version, &file_name, &title, &messages).await { re_log::error!("File saving failed: {err}"); } }); @@ -1804,7 +1827,7 @@ fn save_entity_db( if let Some(path) = path { let messages = to_log_messages()?; app.background_tasks.spawn_file_saver(move || { - crate::saving::encode_to_file(&path, messages.iter())?; + crate::saving::encode_to_file(rrd_version, &path, messages.iter())?; Ok(path) })?; } @@ -1815,6 +1838,7 @@ fn save_entity_db( #[cfg(target_arch = "wasm32")] async fn async_save_dialog( + rrd_version: CrateVersion, file_name: &str, title: &str, messages: &[LogMsg], @@ -1832,6 +1856,7 @@ async fn async_save_dialog( }; let bytes = re_log_encoding::encoder::encode_as_bytes( + rrd_version, re_log_encoding::EncodingOptions::COMPRESSED, messages.iter(), )?; diff --git a/crates/re_viewer/src/saving.rs b/crates/re_viewer/src/saving.rs index 1cd59e2dfeb41..4d2e5f7e08be7 100644 --- a/crates/re_viewer/src/saving.rs +++ b/crates/re_viewer/src/saving.rs @@ -61,6 +61,7 @@ pub fn default_blueprint_path(app_id: &ApplicationId) -> anyhow::Result( + version: re_build_info::CrateVersion, path: &std::path::Path, messages: impl Iterator, ) -> anyhow::Result<()> { @@ -71,6 +72,6 @@ pub fn encode_to_file<'a>( .with_context(|| format!("Failed to create file at {path:?}"))?; let encoding_options = re_log_encoding::EncodingOptions::COMPRESSED; - re_log_encoding::encoder::encode(encoding_options, messages, &mut file) + re_log_encoding::encoder::encode(version, encoding_options, messages, &mut file) .context("Message encode") } diff --git a/crates/re_viewer/src/viewer_analytics/event.rs b/crates/re_viewer/src/viewer_analytics/event.rs index 128903c9aa5d9..cc5104b844c62 100644 --- a/crates/re_viewer/src/viewer_analytics/event.rs +++ b/crates/re_viewer/src/viewer_analytics/event.rs @@ -44,20 +44,31 @@ pub fn open_recording( entity_db: &re_entity_db::EntityDb, ) -> OpenRecording { let store_info = entity_db.store_info().map(|store_info| { - let application_id = if store_info.is_official_example { - Id::Official(store_info.application_id.0.clone()) + let re_log_types::StoreInfo { + application_id, + store_id, + is_official_example, + store_source, + store_version, + + cloned_from: _, + started: _, + } = store_info; + + let application_id_preprocessed = if *is_official_example { + Id::Official(application_id.0.clone()) } else { - Id::Hashed(Property::from(store_info.application_id.0.clone()).hashed()) + Id::Hashed(Property::from(application_id.0.clone()).hashed()) }; - let recording_id = if store_info.is_official_example { - Id::Official(store_info.store_id.to_string()) + let recording_id_preprocessed = if *is_official_example { + Id::Official(store_id.to_string()) } else { - Id::Hashed(Property::from(store_info.store_id.to_string()).hashed()) + Id::Hashed(Property::from(store_id.to_string()).hashed()) }; use re_log_types::StoreSource as S; - let store_source = match &store_info.store_source { + let store_source_preprocessed = match &store_source { S::Unknown => "unknown".to_owned(), S::CSdk => "c_sdk".to_owned(), S::PythonSdk(_version) => "python_sdk".to_owned(), @@ -72,43 +83,47 @@ pub fn open_recording( S::Other(other) => other.clone(), }; + let store_version_preprocessed = if let Some(store_version) = store_version { + store_version.to_string() + } else { + re_log::debug_once!("store version is undefined for this recording, this is a bug"); + "undefined".to_owned() + }; + // `rust+llvm` and `python` versions are mutually exclusive - let mut rust_version = None; - let mut llvm_version = None; - let mut python_version = None; - match &store_info.store_source { + let mut rust_version_preprocessed = None; + let mut llvm_version_preprocessed = None; + let mut python_version_preprocessed = None; + match &store_source { S::File { .. } => { - rust_version = Some(env!("RE_BUILD_RUSTC_VERSION").to_owned()); - llvm_version = Some(env!("RE_BUILD_LLVM_VERSION").to_owned()); + rust_version_preprocessed = Some(env!("RE_BUILD_RUSTC_VERSION").to_owned()); + llvm_version_preprocessed = Some(env!("RE_BUILD_LLVM_VERSION").to_owned()); } S::RustSdk { rustc_version: rustc, llvm_version: llvm, } => { - rust_version = Some(rustc.to_string()); - llvm_version = Some(llvm.to_string()); + rust_version_preprocessed = Some(rustc.to_string()); + llvm_version_preprocessed = Some(llvm.to_string()); } S::PythonSdk(version) => { - python_version = Some(version.to_string()); + python_version_preprocessed = Some(version.to_string()); } // TODO(andreas): Send C SDK version and set it. S::CSdk | S::Unknown | S::Viewer | S::Other(_) => {} } - let is_official_example = store_info.is_official_example; - let app_id_starts_with_rerun_example = store_info - .application_id - .as_str() - .starts_with("rerun_example"); + let app_id_starts_with_rerun_example = application_id.as_str().starts_with("rerun_example"); StoreInfo { - application_id, - recording_id, - store_source, - rust_version, - llvm_version, - python_version, - is_official_example, + application_id: application_id_preprocessed, + recording_id: recording_id_preprocessed, + store_source: store_source_preprocessed, + store_version: store_version_preprocessed, + rust_version: rust_version_preprocessed, + llvm_version: llvm_version_preprocessed, + python_version: python_version_preprocessed, + is_official_example: app_id_starts_with_rerun_example, app_id_starts_with_rerun_example, } }); diff --git a/crates/rerun/src/run.rs b/crates/rerun/src/run.rs index 1a67a912895c7..19062d0c7dbd0 100644 --- a/crates/rerun/src/run.rs +++ b/crates/rerun/src/run.rs @@ -527,6 +527,7 @@ impl PrintCommand { let rrd_file = std::fs::File::open(rrd_path)?; let version_policy = re_log_encoding::decoder::VersionPolicy::Warn; let decoder = re_log_encoding::decoder::Decoder::new(version_policy, rrd_file)?; + println!("Decoded RRD stream v{}\n---", decoder.version()); for msg in decoder { let msg = msg.context("decode rrd message")?; match msg { @@ -869,7 +870,11 @@ fn stream_to_rrd_on_disk( let encoding_options = re_log_encoding::EncodingOptions::COMPRESSED; let file = std::fs::File::create(path).map_err(|err| FileSinkError::CreateFile(path.clone(), err))?; - let mut encoder = re_log_encoding::encoder::Encoder::new(encoding_options, file)?; + let mut encoder = re_log_encoding::encoder::Encoder::new( + re_build_info::CrateVersion::LOCAL, + encoding_options, + file, + )?; loop { match rx.recv() { From 6dd77cc3a9b5b603be4eb1b719be81556281be6d Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Tue, 14 May 2024 21:28:50 +0200 Subject: [PATCH 04/40] Readme fixes (#6308) ### What * Fix accidental h1 heading on CONTRIBUTING.md * Various small updates to README.md ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6308?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6308?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6308) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- ARCHITECTURE.md | 16 +- BUILD.md | 22 +- CHANGELOG.md | 145 ++++++------- CONTRIBUTING.md | 9 +- README.md | 20 +- RELEASES.md | 4 +- crates/re_dev_tools/README.md | 2 +- crates/re_renderer/README.md | 2 +- crates/re_tuid/README.md | 2 +- .../rerun/datatypes/class_description.fbs | 2 +- .../rerun/datatypes/quaternion.fbs | 2 +- .../src/datatypes/class_description.rs | 2 +- crates/re_types/src/datatypes/quaternion.rs | 2 +- crates/re_viewer/README.md | 2 +- .../data/quick_start_guides/cpp_connect.md | 4 +- .../data/quick_start_guides/cpp_spawn.md | 2 +- .../data/quick_start_guides/python_spawn.md | 2 +- .../data/quick_start_guides/rust_spawn.md | 4 +- crates/re_viewer_context/README.md | 2 +- design/batching.md | 34 +-- design/blueprint_store.md | 14 +- design/component_datatypes.md | 2 +- design/space_views.md | 4 +- docs/README.md | 2 +- docs/content/concepts/annotation-context.md | 2 +- docs/content/concepts/apps-and-recordings.md | 4 +- docs/content/concepts/batches.md | 2 +- docs/content/concepts/blueprint.md | 24 +-- docs/content/concepts/entity-component.md | 10 +- docs/content/concepts/entity-path.md | 2 +- .../getting-started/configure-the-viewer.md | 6 +- .../configure-the-viewer/interactively.md | 8 +- .../configure-the-viewer/save-and-load.md | 4 +- .../through-code-tutorial.md | 6 +- docs/content/getting-started/data-in/cpp.md | 8 +- .../content/getting-started/data-in/python.md | 16 +- docs/content/getting-started/data-in/rust.md | 18 +- .../getting-started/installing-viewer.md | 4 +- .../getting-started/navigating-the-viewer.md | 12 +- docs/content/getting-started/quick-start.md | 2 +- .../getting-started/quick-start/cpp.md | 4 +- .../getting-started/quick-start/python.md | 6 +- .../getting-started/quick-start/rust.md | 4 +- docs/content/getting-started/what-is-rerun.md | 2 +- docs/content/howto.md | 2 +- .../howto/configure-viewer-through-code.md | 20 +- docs/content/howto/embed-rerun-viewer.md | 8 +- docs/content/howto/extend/extend-ui.md | 2 +- docs/content/howto/limit-ram.md | 2 +- docs/content/howto/notebook.md | 10 +- docs/content/howto/ros2-nav-turtlebot.md | 18 +- docs/content/howto/short-lived-entities.md | 2 +- docs/content/reference/about.md | 4 +- .../reference/data-loaders/overview.md | 2 +- docs/content/reference/entity-queries.md | 2 +- .../reference/migration/migration-0-13.md | 2 +- docs/content/reference/roadmap.md | 4 +- docs/content/reference/sdk-operating-modes.md | 10 +- .../types/datatypes/class_description.md | 2 +- .../reference/types/datatypes/quaternion.md | 2 +- docs/content/reference/viewer/overview.md | 6 +- docs/content/reference/viewer/viewport.md | 2 +- examples/c/spawn_viewer/README.md | 2 +- examples/cpp/spawn_viewer/README.md | 2 +- examples/python/README.md | 8 +- examples/python/_empty_rerun_sdk/README.md | 2 +- examples/python/all_examples/README.md | 8 +- examples/python/arkit_scenes/README.md | 9 - examples/python/clock/README.md | 7 +- examples/python/controlnet/README.md | 1 - .../depth_guided_stable_diffusion/README.md | 1 - .../python/detect_and_track_objects/README.md | 3 +- examples/python/dicom_mri/README.md | 3 +- examples/python/face_tracking/README.md | 1 - examples/python/gesture_detection/README.md | 7 +- examples/python/human_pose_tracking/README.md | 1 - examples/python/lidar/README.md | 1 - .../live_camera_edge_detection/README.md | 1 - examples/python/live_depth_sensor/README.md | 1 - examples/python/live_scrolling_plot/README.md | 2 +- examples/python/llm_embedding_ner/README.md | 1 - examples/python/mcc/README.md | 2 +- examples/python/minimal/README.md | 7 +- .../python/multiprocess_logging/README.md | 13 +- examples/python/multithreading/README.md | 7 +- examples/python/notebook/README.md | 6 +- examples/python/nuscenes_dataset/README.md | 1 - examples/python/objectron/README.md | 3 +- .../open_photogrammetry_format/README.md | 3 +- examples/python/plots/README.md | 15 +- examples/python/raw_mesh/README.md | 1 - examples/python/rgbd/README.md | 15 +- examples/python/ros_node/README.md | 15 +- examples/python/rrt_star/README.md | 35 ++-- .../python/segment_anything_model/README.md | 17 +- .../python/signed_distance_fields/README.md | 17 +- .../python/structure_from_motion/README.md | 21 +- examples/python/template/README.md | 2 +- examples/python/tfrecord_loader/README.md | 4 +- examples/python/urdf_loader/README.md | 4 +- examples/rust/README.md | 4 +- examples/rust/extend_viewer_ui/README.md | 2 +- examples/rust/revy/README.md | 2 +- examples/rust/spawn_viewer/README.md | 2 +- examples/rust/template/README.md | 2 +- hooks/README.md | 2 +- rerun_cpp/arrow_cpp_install.md | 12 +- rerun_cpp/cmake_setup_in_detail.md | 4 +- .../src/rerun/datatypes/class_description.hpp | 2 +- rerun_cpp/src/rerun/datatypes/quaternion.hpp | 2 +- rerun_js/web-viewer-react/README.md | 6 +- rerun_js/web-viewer/README.md | 6 +- rerun_py/ARCHITECTURE.md | 8 +- rerun_py/README.md | 8 +- rerun_py/docs/writing_docs.md | 2 +- .../rerun/datatypes/class_description.py | 2 +- .../rerun_sdk/rerun/datatypes/quaternion.py | 2 +- scripts/lint.py | 197 +++++++++++++----- tests/README.md | 2 +- 119 files changed, 552 insertions(+), 510 deletions(-) diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 03d94919a561f..37df6cfd38b6b 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -18,14 +18,14 @@ The logging SDK:s encodes the data using Apache Arrow (see more below). The logging data can be written to disk as `.rrd` files, or transmitted over TCP to either a Rerun Viewer or a Rerun Server. -### Rerun viewer +### Rerun Viewer The Rerun Viewer is where log data is visualized. It is usually run as a native app, but can also be compiled to WebAssembly (Wasm) and run in a browser. -#### Native viewer -The easiest way to launch the viewer is directly from the logging API with `rr.init("rerun_example_app", spawn=True)`. However, the standalone viewer can also be run from the command line, for example to view an `.rrd` file: `rerun mydata.rrd`. +#### Native Viewer +The easiest way to launch the Viewer is directly from the logging API with `rr.init("rerun_example_app", spawn=True)`. However, the standalone Viewer can also be run from the command line, for example to view an `.rrd` file: `rerun mydata.rrd`. #### Web viewer -You can try running the viewer in a browser using `rr.serve()` in python, or using `rerun --web-viewer mydata.rrd`. +You can try running the Viewer in a browser using `rr.serve()` in python, or using `rerun --web-viewer mydata.rrd`. The web viewer consists of just a few small files - a thin `.html`, a `.wasm` blob, and an auto-generated `.js` bridge for the wasm. These files are served using the [`re_web_viewer_server`](https://github.com/rerun-io/rerun/tree/latest/crates/re_web_viewer_server) crate. @@ -113,7 +113,7 @@ Update instructions: | Crate | Description | |-----------|--------------------------------------| | rerun-cli | Rerun native CLI binary crate | -| rerun | Rerun Rust SDK and viewer shim crate | +| Rerun | Rerun Rust SDK and Viewer shim crate | | rerun_c | Rerun C SDK | | rerun_py | Rerun Python SDK | | re_sdk | Rerun logging SDK | @@ -126,11 +126,11 @@ Update instructions: | Crate | Description | |-----------------------------|----------------------------------------------------------------------------------------| -| re_viewer | The Rerun viewer | +| re_viewer | The Rerun Viewer | | re_viewport | The central viewport panel of the Rerun viewer. | | re_time_panel | The time panel of the Rerun Viewer, allowing to control the displayed timeline & time. | | re_data_ui | Provides ui elements for Rerun component data for the Rerun Viewer. | -| re_viewer_context | Rerun viewer state that is shared with the viewer's code components. | +| re_viewer_context | Rerun Viewer state that is shared with the viewer's code components. | | re_ui | Rerun GUI theme and helpers, built around egui | | re_renderer | A wgpu-based renderer for all your visualization needs. | | re_space_view | Types & utilities for defining Space View classes and communicating with the Viewport. | @@ -170,7 +170,7 @@ Update instructions: |----------------------|--------------------------------------------------------------------------------------------------------| | re_sdk_comms | TCP communication between Rerun SDK and Rerun Server | | re_web_viewer_server | Serves the Rerun web viewer (Wasm and HTML) over HTTP | -| re_ws_comms | WebSocket communication library (encoding, decoding, client, server) between a Rerun server and viewer | +| re_ws_comms | WebSocket communication library (encoding, decoding, client, server) between a Rerun server and Viewer | | re_data_loader | Handles loading of Rerun data from file using data loader plugins | | re_data_source | Handles loading of Rerun data from different sources | diff --git a/BUILD.md b/BUILD.md index ced1a85830982..ed3e5141807a6 100644 --- a/BUILD.md +++ b/BUILD.md @@ -31,7 +31,7 @@ If you are using an Apple-silicon Mac (M1, M2), make sure `rustc -vV` outputs `h rustup set default-host aarch64-apple-darwin && rustup install 1.76.0 ``` -## Building and running the viewer +## Building and running the Viewer Use this command for building and running the viewer: @@ -57,12 +57,12 @@ Rerun is available as a package on PyPi and can be installed with `pip install r Additionally, nightly dev wheels from head of `main` are available at . -If you want to build from source, you can do so easily in the pixi environment: -* Run `pixi run py-build --release` to build SDK & viewer for python (or `pixi run py-build` for a debug build) -* Then you can run examples from the repository, either by making the pixi shell active with `pixi shell` and then running python or by using `pixi run`, e.g. `pixi run python examples/python/minimal/minimal.py` +If you want to build from source, you can do so easily in the Pixi environment: +* Run `pixi run py-build --release` to build SDK & Viewer for Python (or `pixi run py-build` for a debug build) +* Then you can run examples from the repository, either by making the Pixi shell active with `pixi shell` and then running Python or by using `pixi run`, e.g. `pixi run Python examples/python/minimal/minimal.py` -### Tests & Tooling +### Tests & tooling ```sh # Run the unit tests @@ -75,12 +75,12 @@ pixi run py-lint pixi run py-fmt ``` -### Building an installable Python Wheel +### Building an installable Python wheel The `py-wheel` command builds a whl file: ```sh pixi run py-wheel --release ``` -Which you can then install in your own python environment: +Which you can then install in your own Python environment: ```sh pip install ./target/wheels/*.whl ``` @@ -100,16 +100,16 @@ pixi run cpp-build-all ## Building the docs -High-level documentation for rerun can be found at [http://rerun.io/docs](http://rerun.io/docs). It is built from the separate repository [rerun-docs](https://github.com/rerun-io/rerun-docs). +High-level documentation for Rerun can be found at [http://rerun.io/docs](http://rerun.io/docs). It is built from the separate repository [rerun-docs](https://github.com/rerun-io/rerun-docs). - 🌊 [C++ API docs](https://ref.rerun.io/docs/cpp) are built with `doxygen` and hosted on GitHub. Use `pixi run cpp-docs` to build them locally. For details on the C++ doc-system, see [Writing Docs](rerun_cpp/docs/writing_docs.md). -- 🐍 [Python API docs](https://ref.rerun.io/docs/python) are built via `mkdocs` and hosted on GitHub. For details on the python doc-system, see [Writing Docs](rerun_py/docs/writing_docs.md). +- 🐍 [Python API docs](https://ref.rerun.io/docs/python) are built via `mkdocs` and hosted on GitHub. For details on the Python doc-system, see [Writing Docs](rerun_py/docs/writing_docs.md). - πŸ¦€ [Rust API docs](https://docs.rs/rerun/) are hosted on . You can build them locally with: `cargo doc --all-features --no-deps --open`. ## Building for the web -If you want to build a standalone rerun executable that contains the web-viewer and a websocket server, -you need to install the `wasm32-unknown-unknown` rust target and ensure the `web_viewer` feature flag is set when building rerun. +If you want to build a standalone Rerun executable that contains the web-viewer and a websocket server, +you need to install the `wasm32-unknown-unknown` Rust target and ensure the `web_viewer` feature flag is set when building rerun. This is automatically done by this shortcut which builds & runs the web viewer: ``` pixi run rerun-web diff --git a/CHANGELOG.md b/CHANGELOG.md index d4f22e223c612..35e7e1073acfe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,7 +30,7 @@ blueprint = rrb.Blueprint( ) ``` -The blueprint can then be sent to the viewer with +The blueprint can then be sent to the Viewer with ```py rr.send_blueprint(blueprint) ``` @@ -76,7 +76,7 @@ Blueprints are currently only supported in the Python API, with C++ and Rust sup - Customizable data loaders [#5327](https://github.com/rerun-io/rerun/pull/5327) [#5328](https://github.com/rerun-io/rerun/pull/5328) [#5330](https://github.com/rerun-io/rerun/pull/5330) [#5337](https://github.com/rerun-io/rerun/pull/5337) [#5351](https://github.com/rerun-io/rerun/pull/5351) [#5355](https://github.com/rerun-io/rerun/pull/5355) [#5379](https://github.com/rerun-io/rerun/pull/5379) [#5361](https://github.com/rerun-io/rerun/pull/5361) [#5388](https://github.com/rerun-io/rerun/pull/5388) #### 🌊 C++ API -- Fix arrow libraries from download & build not being found in some cases [#5366](https://github.com/rerun-io/rerun/pull/5366) +- Fix Arrow libraries from download & build not being found in some cases [#5366](https://github.com/rerun-io/rerun/pull/5366) - CMake: Add `RERUN_INSTALL_RERUN_C` option to disable installation of `rerun_c` library [#5374](https://github.com/rerun-io/rerun/pull/5374) (thanks [@traversaro](https://github.com/traversaro)!) - CMake: Fix `install` not finding external `arrow` for dynamic linking [#5375](https://github.com/rerun-io/rerun/pull/5375) (thanks [@traversaro](https://github.com/traversaro)!) - Make `pinhole.hpp` robust against `min/max` preprocessor macros (typically from `windows.h`) [#5432](https://github.com/rerun-io/rerun/pull/5432) @@ -85,7 +85,7 @@ Blueprints are currently only supported in the Python API, with C++ and Rust sup - Fix `RERUN_C_BUILD_ARTIFACT` path value if `CARGO_BUILD_TARGET` env variable is set [#5547](https://github.com/rerun-io/rerun/pull/5547) (thanks [@traversaro](https://github.com/traversaro)!) #### 🐍 Python API -- All python components that wrap a `bool` now implement `__bool__` [#5400](https://github.com/rerun-io/rerun/pull/5400) +- All Python components that wrap a `bool` now implement `__bool__` [#5400](https://github.com/rerun-io/rerun/pull/5400) - Add the remaining space views and name them consistently [#5498](https://github.com/rerun-io/rerun/pull/5498) - Add option to include blueprint in an `.rrd` when calling `.save(…)` [#5572](https://github.com/rerun-io/rerun/pull/5572) - Allow naming space view containers [#5626](https://github.com/rerun-io/rerun/pull/5626) @@ -102,7 +102,7 @@ Blueprints are currently only supported in the Python API, with C++ and Rust sup - Be consistent in how items are removed from selection [#5643](https://github.com/rerun-io/rerun/pull/5643) - Fix layout issue on welcome screen for narrow window, triggering debug assertion [#5650](https://github.com/rerun-io/rerun/pull/5650) - Fix broken 2D space view heuristics in Python Notebooks [#5674](https://github.com/rerun-io/rerun/pull/5674) -- Avoid a hang on linux by always create the renderer, even when we have no store_view [#5724](https://github.com/rerun-io/rerun/pull/5724) +- Avoid a hang on Linux by always create the renderer, even when we have no store_view [#5724](https://github.com/rerun-io/rerun/pull/5724) - Fix crash/freeze when zooming out too far in a plot [#5737](https://github.com/rerun-io/rerun/pull/5737) - Fix `draw_order` not working [#5794](https://github.com/rerun-io/rerun/pull/5794) @@ -217,7 +217,6 @@ This release is identical to 0.14.0 and merely fixes an issue in the build artif ## [0.14.0](https://github.com/rerun-io/rerun/compare/0.13.0...0.14.0) - "Unlimited" point clouds & lines, quality of life improvements, bugfixes - 2024-02-28 -### ✨ Overview & highlights ### ✨ Overview & highlights Originally, we planned to do only a bugfix release, but we got an unexpected amount of goodies amassed already. @@ -236,21 +235,21 @@ We're still ramping up for programmable blueprints (soon!), but meanwhile enjoy #### πŸͺ΅ Log API - Add helpers for perspective cameras [#5238](https://github.com/rerun-io/rerun/pull/5238) -- Fix `spawn` starting the viewer even if logging is disabled [#5284](https://github.com/rerun-io/rerun/pull/5284) +- Fix `spawn` starting the Viewer even if logging is disabled [#5284](https://github.com/rerun-io/rerun/pull/5284) #### 🐍 Python API -- Add missing python docs for `disable_timeline` & `reset_time` [#5269](https://github.com/rerun-io/rerun/pull/5269) -- Fix missing error message when passing `from_parent` + rerun transform type to `rerun.Transform3D` [#5270](https://github.com/rerun-io/rerun/pull/5270) +- Add missing Python docs for `disable_timeline` & `reset_time` [#5269](https://github.com/rerun-io/rerun/pull/5269) +- Fix missing error message when passing `from_parent` + Rerun transform type to `rerun.Transform3D` [#5270](https://github.com/rerun-io/rerun/pull/5270) #### πŸ¦€ Rust API - Fix using `rerun` crate as a dependency on CI [#5170](https://github.com/rerun-io/rerun/pull/5170) #### πŸͺ³ Bug fixes - Enforce the rule: heuristics should never add a new view that would be completely covered by an existing view [#5164](https://github.com/rerun-io/rerun/pull/5164) -- Remove log spam when quickly resizing the viewer [#5189](https://github.com/rerun-io/rerun/pull/5189) -- Fix incorrect minimum supported rust version mentioned in docs and examples [#5195](https://github.com/rerun-io/rerun/pull/5195) +- Remove log spam when quickly resizing the Viewer [#5189](https://github.com/rerun-io/rerun/pull/5189) +- Fix incorrect minimum supported Rust version mentioned in docs and examples [#5195](https://github.com/rerun-io/rerun/pull/5195) - Less restrictive visualizability constraints of 2D entities, improved space view generation heuristics [#5188](https://github.com/rerun-io/rerun/pull/5188) -- Fix ugly UI for some arrow data [#5235](https://github.com/rerun-io/rerun/pull/5235) +- Fix ugly UI for some Arrow data [#5235](https://github.com/rerun-io/rerun/pull/5235) - Fix missing redraw upon resetting blueprint [#5262](https://github.com/rerun-io/rerun/pull/5262) - Fix non-deterministic redundancy check for space view spawning heuristic [#5266](https://github.com/rerun-io/rerun/pull/5266) - Fix resetting vertical axis when using non-uniform zoom on Time Series [#5287](https://github.com/rerun-io/rerun/pull/5287) @@ -299,7 +298,6 @@ We're still ramping up for programmable blueprints (soon!), but meanwhile enjoy ## [0.13.0](https://github.com/rerun-io/rerun/compare/0.12.1...0.13.0) - Fast time series, improved layout editing & UI overrides - 2024-02-12 -### ✨ Overview & highlights ### ✨ Overview & highlights This release focuses on scalar time series -- both from a performance and UI perspectives. @@ -328,7 +326,7 @@ Check out our [associated blog post](https://www.rerun.io/blog/fast-plots) for m - The Space View's origin can now be edited in the Selection Panel. - The container hierarchy can now be cleaned up with the new `Simplify Hierarchy` button in the Selection Panel for containers. -- πŸ¦€ The rust SDK now exposes an optional integration with the `mint` crate +- πŸ¦€ The Rust SDK now exposes an optional integration with the `mint` crate - πŸ•ΈοΈ The web UI SDK now supports loading multiple `.rrd` URLs - πŸ”Ί The web viewer now renders using WebGPU by default (when available), leading to lower memory usage on Chrome. You can override this behavior using `?renderer=webgl`/`?renderer=webgpu` url parameter, or restart with WebGL/WebGPU respectively from the options menu. @@ -346,7 +344,7 @@ Check out our [migration guide](https://www.rerun.io/docs/reference/migration/mi #### 🌊 C++ API - Document that in C++ PinholeProjection::from_mat3x3 is column major [#4843](https://github.com/rerun-io/rerun/pull/4843) - Include LICENSE files into C++ SDK Assets [#4870](https://github.com/rerun-io/rerun/pull/4870) (thanks [@rgolovanov](https://github.com/rgolovanov)!) -- Fix C++ arrow build flag forwarding [#4921](https://github.com/rerun-io/rerun/pull/4921) (thanks [@rgolovanov](https://github.com/rgolovanov)!) +- Fix C++ Arrow build flag forwarding [#4921](https://github.com/rerun-io/rerun/pull/4921) (thanks [@rgolovanov](https://github.com/rgolovanov)!) #### πŸ¦€ Rust API - Add integration with the `mint` crate [#4753](https://github.com/rerun-io/rerun/pull/4753) @@ -410,7 +408,7 @@ Check out our [migration guide](https://www.rerun.io/docs/reference/migration/mi #### πŸ“š Docs - Improve documentation of the `Clear` archetype [#4760](https://github.com/rerun-io/rerun/pull/4760) - `DisconnectedSpace` now only applies to spatial space views [#4935](https://github.com/rerun-io/rerun/pull/4935) -- Fill gaps in image encoding documentation, fix how python documents union variants [#4988](https://github.com/rerun-io/rerun/pull/4988) +- Fill gaps in image encoding documentation, fix how Python documents union variants [#4988](https://github.com/rerun-io/rerun/pull/4988) #### πŸ–Ό UI improvements - Improve timeseries Space Views: @@ -544,7 +542,7 @@ Check out our [migration guide](https://www.rerun.io/docs/reference/migration/mi - Fix heuristic object properties being broken in some cases / fix DepthMeter being ignored sometimes [#4679](https://github.com/rerun-io/rerun/pull/4679) #### 🌁 Viewer improvements -- Make viewer contexts's render context reference non-mutable [#4430](https://github.com/rerun-io/rerun/pull/4430) +- Make Viewer contexts's render context reference non-mutable [#4430](https://github.com/rerun-io/rerun/pull/4430) - The Rerun Viewer can now consume from stdin: - Standard input/output support 1: stream RRD data from stdin [#4511](https://github.com/rerun-io/rerun/pull/4511) - Standard input/output support 2: Rust SDK stdout impl/examples/docs [#4512](https://github.com/rerun-io/rerun/pull/4512) @@ -560,7 +558,7 @@ Check out our [migration guide](https://www.rerun.io/docs/reference/migration/mi - `DataLoader`s 6: first-class support for `Incompatible` [#4565](https://github.com/rerun-io/rerun/pull/4565) - `DataLoader`s 7: support for custom `DataLoader`s [#4566](https://github.com/rerun-io/rerun/pull/4566) - 3D->2D & 2D->3D selection visualizations stick now around on selection [#4587](https://github.com/rerun-io/rerun/pull/4587) -- The viewer now supports segmentation images logged natively as floats [#4585](https://github.com/rerun-io/rerun/pull/4585) +- The Viewer now supports segmentation images logged natively as floats [#4585](https://github.com/rerun-io/rerun/pull/4585) - Fix incorrect bounding box calculation for camera view parts [#4640](https://github.com/rerun-io/rerun/pull/4640) #### πŸš€ Performance improvements @@ -594,7 +592,7 @@ Check out our [migration guide](https://www.rerun.io/docs/reference/migration/mi - Show e2e latency in metric ui in top panel [#4502](https://github.com/rerun-io/rerun/pull/4502) - Show leading slash when formatting entity paths [#4537](https://github.com/rerun-io/rerun/pull/4537) - Improve entity size stats: include whole subtree [#4542](https://github.com/rerun-io/rerun/pull/4542) -- Add support for modal windows to `re_ui` and use it for the Space View entity picker [#4577](https://github.com/rerun-io/rerun/pull/4577) +- Add support for modal Windows to `re_ui` and use it for the Space View entity picker [#4577](https://github.com/rerun-io/rerun/pull/4577) - Show entity path parts (entity "folder" names) unescaped in UI [#4603](https://github.com/rerun-io/rerun/pull/4603) - Improve Rerun Menu with link to Rerun Discord [#4661](https://github.com/rerun-io/rerun/pull/4661) - Introduce container icons and update space views and UI icons [#4663](https://github.com/rerun-io/rerun/pull/4663) @@ -647,7 +645,6 @@ Check out our [migration guide](https://www.rerun.io/docs/reference/migration/mi ## [0.11.0](https://github.com/rerun-io/rerun/compare/0.10.1...0.11.0) - C++ improvements & better Visible History - 2023-11-28 -### ✨ Overview & highlights ### ✨ Overview & highlights - 🌊 C++ SDK improvements @@ -659,7 +656,7 @@ Check out our [migration guide](https://www.rerun.io/docs/reference/migration/mi - πŸ“ˆ Visual History -> Visual Time Range - Time series plots can now limit its query to a range - Much more powerful UI, allowing query ranges relative to time cursor -- πŸ•ΈοΈ The viewer can now be easily embedded in your web apps via our [npm package](https://www.npmjs.com/package/@rerun-io/web-viewer) +- πŸ•ΈοΈ The Viewer can now be easily embedded in your web apps via our [npm package](https://www.npmjs.com/package/@rerun-io/web-viewer) - 🐍 ⚠️ Legacy Python API now removed, check the [migration guide](https://github.com/rerun-io/rerun/issues/723) if you're not using `rr.log` yet - πŸ¦€ The new `StoreSubscriber` trait allows to be notified of all changes in the datastore. This can be used to build custom indices and trigger systems, and serves as a foundation for upcoming performance improvements. Check out [our example](examples/rust/custom_store_subscriber/README.md) for more information. @@ -669,7 +666,6 @@ Check out our [migration guide](https://www.rerun.io/docs/reference/migration/mi Special thanks to @dvad & @dangush for contributing! -### πŸ”Ž Details ### πŸ”Ž Details #### 🌊 C++ SDK @@ -682,13 +678,13 @@ Special thanks to @dvad & @dangush for contributing! - Doxygen documentation & many doc improvements [#4191](https://github.com/rerun-io/rerun/pull/4191) - Rename `rerun::ComponentBatch` to `rerun::Collection` (and related constructs) [#4236](https://github.com/rerun-io/rerun/pull/4236) - Use `rerun::Collection` almost everywhere we'd use `std::vector` before [#4247](https://github.com/rerun-io/rerun/pull/4247) -- Significantly improve C++ logging performance by using C FFI instead of arrow IPC [#4273](https://github.com/rerun-io/rerun/pull/4273) +- Significantly improve C++ logging performance by using C FFI instead of Arrow IPC [#4273](https://github.com/rerun-io/rerun/pull/4273) - Further improve C++ logging for many individual log calls by introducing a component type registry [#4296](https://github.com/rerun-io/rerun/pull/4296) - All C++ datatypes & components now implement a new Loggable trait [#4305](https://github.com/rerun-io/rerun/pull/4305) - Add C++ Custom Component example [#4309](https://github.com/rerun-io/rerun/pull/4309) - Expose Rerun source/include dir in CMakeLists.txt (`RERUN_CPP_SOURCE_DIR`) [#4313](https://github.com/rerun-io/rerun/pull/4313) - Support cmake install [#4326](https://github.com/rerun-io/rerun/pull/4326) -- Export TensorBuffer & TensorDimension to rerun namespace [#4331](https://github.com/rerun-io/rerun/pull/4331) +- Export TensorBuffer & TensorDimension to Rerun namespace [#4331](https://github.com/rerun-io/rerun/pull/4331) - C++ SDK sanity checks now header/source version against rerun_c binary version [#4330](https://github.com/rerun-io/rerun/pull/4330) - Allow creating Image/Tensor/DepthImage/SegmentationImage directly from shape & pointer [#4345](https://github.com/rerun-io/rerun/pull/4345) @@ -722,9 +718,9 @@ Special thanks to @dvad & @dangush for contributing! #### πŸ§‘β€πŸ’» Dev-experience - Simple logging benchmarks for C++ & Rust [#4181](https://github.com/rerun-io/rerun/pull/4181) - New debug option to show the blueprint in the streams view [#4189](https://github.com/rerun-io/rerun/pull/4189) -- Use pixi over setup scripts on CI + local dev [#4302](https://github.com/rerun-io/rerun/pull/4302) +- Use Pixi over setup scripts on CI + local dev [#4302](https://github.com/rerun-io/rerun/pull/4302) - Run deploy docs jobs serially [#4232](https://github.com/rerun-io/rerun/pull/4232) -- fix windows test config on main [#4242](https://github.com/rerun-io/rerun/pull/4242) +- fix Windows test config on main [#4242](https://github.com/rerun-io/rerun/pull/4242) #### πŸ—£ Refactors - `StoreView` -> `StoreSubscriber` [#4234](https://github.com/rerun-io/rerun/pull/4234) @@ -734,12 +730,11 @@ Special thanks to @dvad & @dangush for contributing! ## [0.10.1](https://github.com/rerun-io/rerun/compare/0.10.0...0.10.1) - 2023-11-02 -### ✨ Overview & highlights ### ✨ Overview & highlights This is a small release primarily to tie up some loose ends for our C++ SDK. #### 🌊 C++ SDK -- Avoid possible link/symbol errors but defaulting all OSes to static linking of arrow [#4101](https://github.com/rerun-io/rerun/pull/4101) +- Avoid possible link/symbol errors but defaulting all OSes to static linking of Arrow [#4101](https://github.com/rerun-io/rerun/pull/4101) - Fix compilation errors with C++20 [#4098](https://github.com/rerun-io/rerun/pull/4098) - Improve C++ SDK perf 5x by respecting CMAKE_BUILD_TYPE and enabling mimalloc [#4094](https://github.com/rerun-io/rerun/pull/4094) - Reduce amount of cmake log from building & downloading libArrow [#4103](https://github.com/rerun-io/rerun/pull/4103) @@ -759,7 +754,6 @@ This is a small release primarily to tie up some loose ends for our C++ SDK. Release blog post: -### ✨ Overview & highlights ### ✨ Overview & highlights * The C++ SDK is finally here! ```cpp @@ -773,7 +767,7 @@ Release blog post: } ``` -* Add an integrated getting-started guide into the viewer splash screen +* Add an integrated getting-started guide into the Viewer splash screen * Add a new and improved `spawn` method in the Rust SDK * Add support for NV12-encoded images [#3541](https://github.com/rerun-io/rerun/pull/3541) (thanks [@zrezke](https://github.com/zrezke)!) * We now publish pre-built binaries for each release at @@ -790,7 +784,7 @@ Release blog post: - Python: remove unconditional sleep on `spawn` [#4010](https://github.com/rerun-io/rerun/pull/4010) - Support `pathlib.Path` for `rr.save` [#4036](https://github.com/rerun-io/rerun/pull/4036) - Add `disable_timeline` function [#4068](https://github.com/rerun-io/rerun/pull/4068) -- Support fast install of the rerun viewer with `cargo binstall rerun-cli` thanks to [`cargo binstall`](https://github.com/cargo-bins/cargo-binstall) +- Support fast install of the Rerun Viewer with `cargo binstall rerun-cli` thanks to [`cargo binstall`](https://github.com/cargo-bins/cargo-binstall) #### πŸ¦€ Rust SDK - Introduce `re_types_core` [#3878](https://github.com/rerun-io/rerun/pull/3878) @@ -802,7 +796,7 @@ Release blog post: #### πŸͺ³ Bug fixes - Fix grayscale images being too dark [#3999](https://github.com/rerun-io/rerun/pull/3999) -- Prevent badly sized tensors from crashing the viewer [#4005](https://github.com/rerun-io/rerun/pull/4005) +- Prevent badly sized tensors from crashing the Viewer [#4005](https://github.com/rerun-io/rerun/pull/4005) - Fix selection history right-click menu not working [#3819](https://github.com/rerun-io/rerun/pull/3819) #### 🌁 Viewer improvements @@ -835,7 +829,7 @@ Release blog post: - CI: Rerun CLI as a release asset [#3959](https://github.com/rerun-io/rerun/pull/3959) - Add script to generate RRD vs. screenshots comparisons [#3946](https://github.com/rerun-io/rerun/pull/3946) - Add a new build Environment option for CondaBuild to improve conda-built artifacts [#4015](https://github.com/rerun-io/rerun/pull/4015) -- Lock python in CI to 3.11 [#4033](https://github.com/rerun-io/rerun/pull/4033) +- Lock Python in CI to 3.11 [#4033](https://github.com/rerun-io/rerun/pull/4033) - Changed `spawn()` and the `rerun` script to call into `rerun_bindings` (12x startup time improvement) [#4053](https://github.com/rerun-io/rerun/pull/4053) @@ -847,7 +841,6 @@ Release blog post: * Rust: `cargo add rerun` and `cargo install rerun-cli` * Online demo: -### ✨ Overview & highlights ### ✨ Overview & highlights - A bunch of bug fixes - Fix big performance regression when hovering images @@ -910,7 +903,6 @@ Release blog post: * Online demo: -### ✨ Overview & highlights ### ✨ Overview & highlights Rerun 0.9.0 is a big release, that introduces a brand new logging API. This API is code-generated from a common definition, meaning the Python and Rust SDKs are very similar now. @@ -939,7 +931,7 @@ Other highlights: ### Some select details #### 🐍 Python SDK -- Handle older numpy versions / py 3.8 in `VecND` extensions [#2896](https://github.com/rerun-io/rerun/pull/2896) +- Handle older Numpy versions / py 3.8 in `VecND` extensions [#2896](https://github.com/rerun-io/rerun/pull/2896) - Add default value for `info` argument of `ClassDescription` [#3017](https://github.com/rerun-io/rerun/pull/3017) - Run all Python doc examples in CI [#3172](https://github.com/rerun-io/rerun/pull/3172) - Create objects for delegating components [#3303](https://github.com/rerun-io/rerun/pull/3303) @@ -965,7 +957,7 @@ Other highlights: - Fix post-GC purging of streams view time histogram [#3364](https://github.com/rerun-io/rerun/pull/3364) - 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 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) #### 🌁 Viewer improvements @@ -978,7 +970,7 @@ Other highlights: - Click `recording://entity/path` links in markdown [#3442](https://github.com/rerun-io/rerun/pull/3442) - Allow showing image shaped tensors in the tensor view [#3583](https://github.com/rerun-io/rerun/pull/3583) - Add option to display timestamps in the local system timezone [#3530](https://github.com/rerun-io/rerun/pull/3530) (thanks [@jparismorgan](https://github.com/jparismorgan)!) -- Add obj mesh support to viewer [#3670](https://github.com/rerun-io/rerun/pull/3670) +- Add obj mesh support to Viewer [#3670](https://github.com/rerun-io/rerun/pull/3670) #### πŸš€ Performance improvements - Pass through strings using arrow2::Buffers [#2931](https://github.com/rerun-io/rerun/pull/2931) @@ -993,7 +985,7 @@ Other highlights: - Add "rerun_example_" prefix to all our user-visible app-ids [#3112](https://github.com/rerun-io/rerun/pull/3112) - Add paper visualizations to examples [#3020](https://github.com/rerun-io/rerun/pull/3020) (thanks [@roym899](https://github.com/roym899)!) - API examples overhaul & roundtrip tests [#3204](https://github.com/rerun-io/rerun/pull/3204) -- Generate manifest for examples page in viewer [#3332](https://github.com/rerun-io/rerun/pull/3332) +- Generate manifest for examples page in Viewer [#3332](https://github.com/rerun-io/rerun/pull/3332) - Fix `transform3d_simple` and reenable roundtrip test [#3401](https://github.com/rerun-io/rerun/pull/3401) - Update import path for HuggingFace's `randn_tensor` [#3506](https://github.com/rerun-io/rerun/pull/3506) (thanks [@hu-po](https://github.com/hu-po)!) - Add ControlNet example [#3568](https://github.com/rerun-io/rerun/pull/3568) (thanks [@roym899](https://github.com/roym899)!) @@ -1004,7 +996,7 @@ Other highlights: - Support `\example` in codegen [#3378](https://github.com/rerun-io/rerun/pull/3378) - Docs codegen [#3445](https://github.com/rerun-io/rerun/pull/3445) - Generate component/datatype docs [#3535](https://github.com/rerun-io/rerun/pull/3535) -- Update the python API docs site for the new APIs [#3565](https://github.com/rerun-io/rerun/pull/3565) +- Update the Python API docs site for the new APIs [#3565](https://github.com/rerun-io/rerun/pull/3565) - Add a how-to guide for using Rerun with custom data [#3634](https://github.com/rerun-io/rerun/pull/3634) #### πŸ–Ό UI improvements @@ -1039,7 +1031,7 @@ Other highlights: - Add Examples page to the Welcome Screen [#3191](https://github.com/rerun-io/rerun/pull/3191) - `Welcome Page` refresh [#3219](https://github.com/rerun-io/rerun/pull/3219) - Show currently loading recordings in Recordings menu [#3307](https://github.com/rerun-io/rerun/pull/3307) -- Update to latest egui + use new Image api [#3311](https://github.com/rerun-io/rerun/pull/3311) +- Update to latest egui + use new Image API [#3311](https://github.com/rerun-io/rerun/pull/3311) - Hide stream view and selection view in welcome app [#3333](https://github.com/rerun-io/rerun/pull/3333) - Tighter UI for Pinhole and when hovering images [#3579](https://github.com/rerun-io/rerun/pull/3579) - Improve viewport tile behavior [#3295](https://github.com/rerun-io/rerun/pull/3295) @@ -1115,7 +1107,7 @@ Other highlights: ## [0.8.1](https://github.com/rerun-io/rerun/compare/0.8.0...0.8.1) - Bug fixes - 2023-08-17 #### 🐍 Python SDK -- Add a warning category and stacklevel to rerun warnings.warn calls [#2985](https://github.com/rerun-io/rerun/pull/2985) +- Add a warning category and stacklevel to Rerun warnings.warn calls [#2985](https://github.com/rerun-io/rerun/pull/2985) #### πŸͺ³ Bug fixes - Fix always redrawing in the presence of a 3D space view [#2900](https://github.com/rerun-io/rerun/pull/2900) @@ -1141,7 +1133,6 @@ Other highlights: * Online demo: -### ✨ Overview & highlights ### ✨ Overview & highlights - `log_pinhole` is now easier to use in simple cases and supports non-RDF camera coordinates. [#2614](https://github.com/rerun-io/rerun/pull/2614) - You only need to set focal length and optional principal point instead of setting the full 3x3 matrix. @@ -1280,7 +1271,7 @@ for use-cases like real-time video feeds. [#2220](https://github.com/rerun-io/re - Run clippy on public API too [#2596](https://github.com/rerun-io/rerun/pull/2596) - Bump all `py-lint`-related package versions [#2600](https://github.com/rerun-io/rerun/pull/2600) - Crates publishing script [#2604](https://github.com/rerun-io/rerun/pull/2604) -- Fix rust docs deploy [#2615](https://github.com/rerun-io/rerun/pull/2615) +- Fix Rust docs deploy [#2615](https://github.com/rerun-io/rerun/pull/2615) - Add support for .gitignore to scripts/lint.py [#2666](https://github.com/rerun-io/rerun/pull/2666) #### πŸ—£ Refactors @@ -1353,9 +1344,9 @@ for use-cases like real-time video feeds. [#2220](https://github.com/rerun-io/re - Fix out-of-sync codegen hash [#2567](https://github.com/rerun-io/rerun/pull/2567) - Python backport: add `log_any()` [#2581](https://github.com/rerun-io/rerun/pull/2581) - Integrate unit examples into codegen stack [#2590](https://github.com/rerun-io/rerun/pull/2590) -- Disable codegen on windows [#2592](https://github.com/rerun-io/rerun/pull/2592) +- Disable codegen on Windows [#2592](https://github.com/rerun-io/rerun/pull/2592) - Python codegen: big cleaning and paving the way towards transforms [#2603](https://github.com/rerun-io/rerun/pull/2603) -- Automatically assume arrow transparency for components [#2608](https://github.com/rerun-io/rerun/pull/2608) +- Automatically assume Arrow transparency for components [#2608](https://github.com/rerun-io/rerun/pull/2608) - Fix wrong path being `rerun_if_changed()` in `compute_dir_hash` [#2612](https://github.com/rerun-io/rerun/pull/2612) - Support transparency at the semantic layer [#2611](https://github.com/rerun-io/rerun/pull/2611) - Don't use builtin `required` anymore, introduce `nullable` instead [#2619](https://github.com/rerun-io/rerun/pull/2619) @@ -1368,10 +1359,10 @@ for use-cases like real-time video feeds. [#2220](https://github.com/rerun-io/re - Seed of C and C++ SDKs [#2594](https://github.com/rerun-io/rerun/pull/2594) - Move C++ SDK to own folder [#2624](https://github.com/rerun-io/rerun/pull/2624) - C++ codegen [#2678](https://github.com/rerun-io/rerun/pull/2678) -- C++ codegen for reporting arrow data type for structs [#2756](https://github.com/rerun-io/rerun/pull/2756) +- C++ codegen for reporting Arrow data type for structs [#2756](https://github.com/rerun-io/rerun/pull/2756) - Don't inline recursive datatypes in C++ backend [#2765](https://github.com/rerun-io/rerun/pull/2765) - C++ codegen to_arrow_data_type for unions [#2766](https://github.com/rerun-io/rerun/pull/2766) -- C++ codegen arrow serialize non-union components/datatypes without nested rerun types [#2820](https://github.com/rerun-io/rerun/pull/2820) +- C++ codegen Arrow serialize non-union components/datatypes without nested Rerun types [#2820](https://github.com/rerun-io/rerun/pull/2820) - C++ codegen of structs and unions [#2707](https://github.com/rerun-io/rerun/pull/2707) - Fix cpp formatter differences [#2773](https://github.com/rerun-io/rerun/pull/2773) @@ -1380,13 +1371,12 @@ for use-cases like real-time video feeds. [#2220](https://github.com/rerun-io/re - test_api: set different app_id based on what test is run [#2599](https://github.com/rerun-io/rerun/pull/2599) - Introduce `rerun compare` to check whether 2 rrd files are functionally equivalent [#2597](https://github.com/rerun-io/rerun/pull/2597) - Remove `files.exclude` in vscode settings [#2621](https://github.com/rerun-io/rerun/pull/2621) -- Support feature-gated rust attributes [#2813](https://github.com/rerun-io/rerun/pull/2813) +- Support feature-gated Rust attributes [#2813](https://github.com/rerun-io/rerun/pull/2813) ## [0.7.0](https://github.com/rerun-io/rerun/compare/0.6.0...0.7.0) - improved transforms, better color mapping, bug & doc fixes - 2023-06-16 -### ✨ Overview & highlights ### ✨ Overview & highlights While we're working on significant updates around interfaces and customizability, @@ -1394,7 +1384,7 @@ here's a smaller release packed with useful improvements πŸŽ‰ * Much more powerful transformation logging * any affine transforms works now! - * supports many more formats and shows them in the viewer as-is + * supports many more formats and shows them in the Viewer as-is * Better color mapping range detection for images and tensors * Many small improvements to samples & documentation @@ -1444,13 +1434,13 @@ here's a smaller release packed with useful improvements πŸŽ‰ - Add `site_url` to `mkdocs.yml` [#2326](https://github.com/rerun-io/rerun/pull/2326) - Add `log_cleared` to the common index [#2400](https://github.com/rerun-io/rerun/pull/2400) - Use forked `mkdocs-redirects` [#2404](https://github.com/rerun-io/rerun/pull/2404) -- Add support for classes to generated python common API index [#2401](https://github.com/rerun-io/rerun/pull/2401) +- Add support for classes to generated Python common API index [#2401](https://github.com/rerun-io/rerun/pull/2401) - Added support for creating multi-resolution stacks with upload_image.py [#2411](https://github.com/rerun-io/rerun/pull/2411) - Document annotation context in manual [#2453](https://github.com/rerun-io/rerun/pull/2453) #### πŸ•ΈοΈ Web - Update `wasm-bindgen` to 0.2.87 [#2406](https://github.com/rerun-io/rerun/pull/2406) -- When loading on web, match style and show a progress indicator while wasm is loading [#2421](https://github.com/rerun-io/rerun/pull/2421) +- When loading on web, match style and show a progress indicator while Wasm is loading [#2421](https://github.com/rerun-io/rerun/pull/2421) #### πŸ“ˆ Analytics - Add crash retriever script [#2168](https://github.com/rerun-io/rerun/pull/2168) @@ -1462,7 +1452,7 @@ here's a smaller release packed with useful improvements πŸŽ‰ - Add instructions on how to fix weird `gsutil` crash [#2278](https://github.com/rerun-io/rerun/pull/2278) - Link to preview of latest commit in PR body [#2287](https://github.com/rerun-io/rerun/pull/2287) - CI: Retry `linkinator` [#2299](https://github.com/rerun-io/rerun/pull/2299) -- Remove long dead code python unit test [#2356](https://github.com/rerun-io/rerun/pull/2356) +- Remove long dead code Python unit test [#2356](https://github.com/rerun-io/rerun/pull/2356) - Added gcloud project name to `upload_image.py` [#2381](https://github.com/rerun-io/rerun/pull/2381) - Fix typo in `run_all.py` [#2441](https://github.com/rerun-io/rerun/pull/2441) - Small changelog improvements [#2442](https://github.com/rerun-io/rerun/pull/2442) @@ -1479,7 +1469,6 @@ here's a smaller release packed with useful improvements πŸŽ‰ ## [0.6.0](https://github.com/rerun-io/rerun/compare/v0.5.1...0.6.0) - 3D in 2D and SDK batching - 2023-05-26 -### ✨ Overview & highlights ### ✨ Overview & highlights - You can now show 3D objects in 2D views connected by Pinhole transforms [#2008](https://github.com/rerun-io/rerun/pull/2008) @@ -1518,7 +1507,7 @@ here's a smaller release packed with useful improvements πŸŽ‰ #### 🌁 Viewer improvements - Support projecting 3D entities in 2D views [#2008](https://github.com/rerun-io/rerun/pull/2008) -- Set Rerun viewer native app icon using eframe [#1976](https://github.com/rerun-io/rerun/pull/1976) +- Set Rerun Viewer native app icon using eframe [#1976](https://github.com/rerun-io/rerun/pull/1976) - Use `alt` key again for rolling camera in 3D views [#2066](https://github.com/rerun-io/rerun/pull/2066) - Show tensors shaped [H, W, 1, 1] as images (and more!) [#2075](https://github.com/rerun-io/rerun/pull/2075) - Show meshes and images with `rerun foo.obj bar.png` [#2060](https://github.com/rerun-io/rerun/pull/2060) @@ -1531,8 +1520,8 @@ here's a smaller release packed with useful improvements πŸŽ‰ - Fix incorrect memory usage stats for destroyed on-creation-mapped buffers [#1963](https://github.com/rerun-io/rerun/pull/1963) - Fix: don't starve web-socket decoding task [#1977](https://github.com/rerun-io/rerun/pull/1977) - When hovering a 3D view in the presence of images, fix previously incorrect depth shown in 2D view [#2009](https://github.com/rerun-io/rerun/pull/2009) -- Fix: use the mac icon on mac [#2023](https://github.com/rerun-io/rerun/pull/2023) -- SDK batching/revamp 2.2: homegrown arrow size estimation routines [#2002](https://github.com/rerun-io/rerun/pull/2002) +- Fix: use the Mac icon on Mac [#2023](https://github.com/rerun-io/rerun/pull/2023) +- SDK batching/revamp 2.2: homegrown Arrow size estimation routines [#2002](https://github.com/rerun-io/rerun/pull/2002) - Fix twice as wide alpha-to-coverage edge on circles, leading to artifacts [#2053](https://github.com/rerun-io/rerun/pull/2053) - Bugfix: allow hovered items to be clicked to set selection [#2057](https://github.com/rerun-io/rerun/pull/2057) - Detect, warn and gracefully handle corrupt cells in `lookup_arrow` [#2055](https://github.com/rerun-io/rerun/pull/2055) @@ -1565,7 +1554,7 @@ here's a smaller release packed with useful improvements πŸŽ‰ #### πŸ§‘β€πŸ« Examples - Join threads at end of multi-threading example [#1934](https://github.com/rerun-io/rerun/pull/1934) - Add argument parsing to the rerun_demo [#1925](https://github.com/rerun-io/rerun/pull/1925) -- Use zipfile python library instead of `unzip` command in arkitscene [#1936](https://github.com/rerun-io/rerun/pull/1936) +- Use zipfile Python library instead of `unzip` command in arkitscene [#1936](https://github.com/rerun-io/rerun/pull/1936) - Fix backslashes in arkitscene rigid transformation path [#1938](https://github.com/rerun-io/rerun/pull/1938) - Fix mp_pose example 2D points having incorrectly interpreted depth [#2034](https://github.com/rerun-io/rerun/pull/2034) - SDK batching/revamp 2.1: `clock` example for Rust [#2000](https://github.com/rerun-io/rerun/pull/2000) @@ -1626,10 +1615,10 @@ here's a smaller release packed with useful improvements πŸŽ‰ - If there's a `{{ pr-build-summary }}` in the PR description, update it. [#1971](https://github.com/rerun-io/rerun/pull/1971) - Run the cube notebook on PR [#1972](https://github.com/rerun-io/rerun/pull/1972) - Add ability to manually run a web build to upload to an adhoc name [#1966](https://github.com/rerun-io/rerun/pull/1966) -- Limit ipython to 8.12 in the jupyter example [#2001](https://github.com/rerun-io/rerun/pull/2001) +- Limit ipython to 8.12 in the Jupyter example [#2001](https://github.com/rerun-io/rerun/pull/2001) - New manual job to publish a release based on pre-built wheels [#2025](https://github.com/rerun-io/rerun/pull/2025) -- Use the correct rust analyzer settings [#2028](https://github.com/rerun-io/rerun/pull/2028) -- New helper for sticking Serde-encodable data into arrow [#2004](https://github.com/rerun-io/rerun/pull/2004) +- Use the correct Rust analyzer settings [#2028](https://github.com/rerun-io/rerun/pull/2028) +- New helper for sticking Serde-encodable data into Arrow [#2004](https://github.com/rerun-io/rerun/pull/2004) - Fix `taplo-cli` failing to install [#2068](https://github.com/rerun-io/rerun/pull/2068) - `run_all.py`: add `--fast`, `--separate`, and `--close` [#2054](https://github.com/rerun-io/rerun/pull/2054) - Remove `Clipboard::set_text` [#2078](https://github.com/rerun-io/rerun/pull/2078) @@ -1678,7 +1667,6 @@ here's a smaller release packed with useful improvements πŸŽ‰ ## [0.5.1](https://github.com/rerun-io/rerun/compare/v0.5.1...v0.5.0) - Patch Release - 2023-05-01 -### ✨ Overview & highlights ### ✨ Overview & highlights This Release fixes a few small bugs on top of the v0.5.0 release. @@ -1692,7 +1680,6 @@ This Release fixes a few small bugs on top of the v0.5.0 release. ## [0.5.0](https://github.com/rerun-io/rerun/compare/v0.4.0...v0.5.0) - Jupyter MVP, GPU-based picking & colormapping, new datastore! - 2023-04-20 -### ✨ Overview & highlights ### ✨ Overview & highlights This new release adds MVP support for embedding Rerun in Jupyter notebooks, and brings significant performance improvements across all layers of the stack. @@ -1736,7 +1723,7 @@ This new release adds MVP support for embedding Rerun in Jupyter notebooks, and - Allow re-use of `RowId`s if no conflict is possible [#1832](https://github.com/rerun-io/rerun/pull/1832) - Reduce memory used by staging belts on Web [#1836](https://github.com/rerun-io/rerun/pull/1836) - Test and handle all tensor dtypes as images [#1840](https://github.com/rerun-io/rerun/pull/1840) -- Fix the python build when running without `web_viewer` enabled [#1856](https://github.com/rerun-io/rerun/pull/1856) +- Fix the Python build when running without `web_viewer` enabled [#1856](https://github.com/rerun-io/rerun/pull/1856) - Error instead of `expect` inside `msg_encode` [#1857](https://github.com/rerun-io/rerun/pull/1857) - Fix shutdown race condition in `re_sdk_comms` client [#1861](https://github.com/rerun-io/rerun/pull/1861) - Fix broken instance picking in presence of images [#1876](https://github.com/rerun-io/rerun/pull/1876) @@ -1746,7 +1733,7 @@ This new release adds MVP support for embedding Rerun in Jupyter notebooks, and - Fix picking entities with image + another object (or label) twice [#1908](https://github.com/rerun-io/rerun/pull/1908) - Fix double clicking camera no longer focusing on said camera [#1911](https://github.com/rerun-io/rerun/pull/1911) - Fix annotation images sometimes drawn in the background [#1933](https://github.com/rerun-io/rerun/pull/1933) -- Use `zipfile` python library instead of `unzip` command in `arkitscene` demo [#1936](https://github.com/rerun-io/rerun/pull/1936) +- Use `zipfile` Python library instead of `unzip` command in `arkitscene` demo [#1936](https://github.com/rerun-io/rerun/pull/1936) - Fix backslashes in `arkitscene` rigid transformation path [#1938](https://github.com/rerun-io/rerun/pull/1938) - Fix hover/select highlights when picking single points in a scene with multiple point clouds [#1942](https://github.com/rerun-io/rerun/pull/1942) - Fix hovering depth clouds [#1943](https://github.com/rerun-io/rerun/pull/1943) @@ -1841,9 +1828,9 @@ This new release adds MVP support for embedding Rerun in Jupyter notebooks, and - Refactor: Add new helper crate `re_log_encoding` [#1772](https://github.com/rerun-io/rerun/pull/1772) - `setup_web.sh` supports pacman package manager [#1797](https://github.com/rerun-io/rerun/pull/1797) (thanks [@urholaukkarinen](https://github.com/urholaukkarinen)!) - Add `rerun --strict`: crash if any warning or error is logged [#1812](https://github.com/rerun-io/rerun/pull/1812) -- End-to-end testing of python logging -> store ingestion [#1817](https://github.com/rerun-io/rerun/pull/1817) +- End-to-end testing of Python logging -> store ingestion [#1817](https://github.com/rerun-io/rerun/pull/1817) - Fix e2e test on CI: Don't try to re-build `rerun-sdk` [#1821](https://github.com/rerun-io/rerun/pull/1821) -- Install the rerun-sdk in CI using `--no-index` and split out linux wheel build to run first [#1838](https://github.com/rerun-io/rerun/pull/1838) +- Install the rerun-sdk in CI using `--no-index` and split out Linux wheel build to run first [#1838](https://github.com/rerun-io/rerun/pull/1838) - Remove more unused dependencies [#1863](https://github.com/rerun-io/rerun/pull/1863) - Improve end-to-end testing slightly [#1862](https://github.com/rerun-io/rerun/pull/1862) - Turn off benchmarks comment in each PR [#1872](https://github.com/rerun-io/rerun/pull/1872) @@ -1866,7 +1853,6 @@ This new release adds MVP support for embedding Rerun in Jupyter notebooks, and https://user-images.githubusercontent.com/1220815/228241887-03b311e2-80e9-4541-9281-6d334a15ab04.mp4 -### ✨ Overview & highlights ### ✨ Overview & highlights * Add support for mesh vertex colors [#1671](https://github.com/rerun-io/rerun/pull/1671) * Lower memory use [#1535](https://github.com/rerun-io/rerun/pull/1535) @@ -1898,7 +1884,7 @@ We now host an experimental and unpolished web-viewer at #### πŸͺ³ Bug fixes - datastore: disable compaction (fixes 2x memory issue) [#1535](https://github.com/rerun-io/rerun/pull/1535) - Fix garbage collection [#1560](https://github.com/rerun-io/rerun/pull/1560) -- Avoid using undefined extern "C" on windows [#1577](https://github.com/rerun-io/rerun/pull/1577) +- Avoid using undefined extern "C" on Windows [#1577](https://github.com/rerun-io/rerun/pull/1577) - Fix crash on decoding old .rrd files [#1579](https://github.com/rerun-io/rerun/pull/1579) - datastore: stabilize dataframe sorts [#1549](https://github.com/rerun-io/rerun/pull/1549) - Stop using infinities in wgsl shaders [#1594](https://github.com/rerun-io/rerun/pull/1594) @@ -1910,7 +1896,7 @@ We now host an experimental and unpolished web-viewer at - Handle ctrl+c to gracefully shutdown the server(s) [#1613](https://github.com/rerun-io/rerun/pull/1613) - Fix crash on serve exit, second attempt [#1633](https://github.com/rerun-io/rerun/pull/1633) - Fix wrong remove-tooltip for entities and groups [#1637](https://github.com/rerun-io/rerun/pull/1637) -- Fix requiring focus for shutdown via ctrl+c when starting viewer from command line [#1646](https://github.com/rerun-io/rerun/pull/1646) +- Fix requiring focus for shutdown via ctrl+c when starting Viewer from command line [#1646](https://github.com/rerun-io/rerun/pull/1646) - Fix eye spin after eye reset [#1652](https://github.com/rerun-io/rerun/pull/1652) - Fix crash on negative radii by instead warning [#1654](https://github.com/rerun-io/rerun/pull/1654) - Fix crash when trying to listen on a taken TCP port [#1650](https://github.com/rerun-io/rerun/pull/1650) @@ -1972,7 +1958,7 @@ We now host an experimental and unpolished web-viewer at - Implement outlines for line renderer & use them for select & hover of "line-like" primitives in Viewer [#1553](https://github.com/rerun-io/rerun/pull/1553) - Load .rrd file over HTTP [#1600](https://github.com/rerun-io/rerun/pull/1600) - Revert "Handle ctrl+c to gracefully shutdown the server(s)" [#1632](https://github.com/rerun-io/rerun/pull/1632) -- More eager GC, and remove `--fast-math` optimization for wasm [#1656](https://github.com/rerun-io/rerun/pull/1656) +- More eager GC, and remove `--fast-math` optimization for Wasm [#1656](https://github.com/rerun-io/rerun/pull/1656) - Detect failure to install GUI log callback [#1655](https://github.com/rerun-io/rerun/pull/1655) - Warn when most of the RAM has been used up by Rerun [#1651](https://github.com/rerun-io/rerun/pull/1651) - Apply color maps to all types of depth tensors [#1686](https://github.com/rerun-io/rerun/pull/1686) @@ -2029,7 +2015,7 @@ We now host an experimental and unpolished web-viewer at - Run clippy for wasm, with own clippy.toml config file [#1628](https://github.com/rerun-io/rerun/pull/1628) - Update tokio v1.24.1 -> v1.26.0 [#1635](https://github.com/rerun-io/rerun/pull/1635) - Add a workflow input for running benchmarks manually [#1698](https://github.com/rerun-io/rerun/pull/1698) -- Add missing } to fix rust workflow [#1700](https://github.com/rerun-io/rerun/pull/1700) +- Add missing } to fix Rust workflow [#1700](https://github.com/rerun-io/rerun/pull/1700) - Fix `lint.py` [#1719](https://github.com/rerun-io/rerun/pull/1719) - Add a script that generates a changelog from recent PRs and their labels [#1718](https://github.com/rerun-io/rerun/pull/1718) @@ -2041,12 +2027,11 @@ We now host an experimental and unpolished web-viewer at ## [0.3.1](https://github.com/rerun-io/rerun/compare/v0.3.0...v0.3.1) - Remove potentially sensitive analytics - 2023-03-13 -Remove potentially sensitive analytics, including path to rerun source code on panics, and rerun branch name when building from source [#1563](https://github.com/rerun-io/rerun/pull/1563) +Remove potentially sensitive analytics, including path to Rerun source code on panics, and Rerun branch name when building from source [#1563](https://github.com/rerun-io/rerun/pull/1563) ## [0.3.0](https://github.com/rerun-io/rerun/compare/v0.2.0...v0.3.0) - 2023-03-07 ### ✨ Overview & highlights -### ✨ Overview & highlights After a successful launch a couple of weeks ago, we're back with our second release! With a few exceptions this release focuses on internal refactors & improving our processes. @@ -2066,7 +2051,7 @@ Other highlights: * Improved formatting of date-times in plots [#1356](https://github.com/rerun-io/rerun/pull/1356) * Labels for 3D objects have now a color can now be selected & hovered [#1438](https://github.com/rerun-io/rerun/pull/1438) * Scale factor is saved across sessions and more persistent between screens [#1448](https://github.com/rerun-io/rerun/pull/1448) - * Showing tensors in the viewer is now faster + * Showing tensors in the Viewer is now faster * SDK * Python packages now work with Ubuntu-20.04 [#1334](https://github.com/rerun-io/rerun/pull/1334) * u8 segmentation stay u8 now (they converted to u16 before) [#1376](https://github.com/rerun-io/rerun/pull/1376) @@ -2124,7 +2109,7 @@ Meanwhile, we did a bunch of improvements to our manual. If you had trouble runn * Fix crash due to always expecting Rgba8Unorm backbuffer on Web & Bgra8Unorm on native [#1413](https://github.com/rerun-io/rerun/pull/1413) * Allow controlling the graphics backend & power preference through standard wgpu env vars [#1332](https://github.com/rerun-io/rerun/pull/1332) * Heuristic for camera frustum length is now based on scene size [#1433](https://github.com/rerun-io/rerun/pull/1433) -* Fix python type signature for tensor names [#1443](https://github.com/rerun-io/rerun/pull/1443) +* Fix Python type signature for tensor names [#1443](https://github.com/rerun-io/rerun/pull/1443) * Don't convert u8 segmentation images to u16 [#1376](https://github.com/rerun-io/rerun/pull/1376) * Docs (excluding the manual) * Improve the docs of `connect` and `serve` [#1450](https://github.com/rerun-io/rerun/pull/1450) @@ -2143,7 +2128,7 @@ Meanwhile, we did a bunch of improvements to our manual. If you had trouble runn * register SDK language and data source [#1371](https://github.com/rerun-io/rerun/pull/1371) * Refactor analytics [#1368](https://github.com/rerun-io/rerun/pull/1368) * Versioned log streams [#1420](https://github.com/rerun-io/rerun/pull/1420) -* Fix path issues when running debug viewer within workspace [#1341](https://github.com/rerun-io/rerun/pull/1341) +* Fix path issues when running debug Viewer within workspace [#1341](https://github.com/rerun-io/rerun/pull/1341) * Detailed errors for re_renderer `include_file!` [#1339](https://github.com/rerun-io/rerun/pull/1339) * Limit logging in web-viewer to `warn` in order to workaround a crash issue (and reduce log spam) [1514](https://github.com/rerun-io/rerun/pull/1514) * Fix disabling API through `init` not working [#1517](https://github.com/rerun-io/rerun/pull/1517) @@ -2156,14 +2141,14 @@ Meanwhile, we did a bunch of improvements to our manual. If you had trouble runn * Replace `reqwest` with `ureq` [#1407](https://github.com/rerun-io/rerun/pull/1407) * Remove derive_more dependency [#1406](https://github.com/rerun-io/rerun/pull/1406) * Use different artifact names for wasm/js in debug builds [#1428](https://github.com/rerun-io/rerun/pull/1428) -* Separate mac wheels & trigger wheel build from ui [#1499](https://github.com/rerun-io/rerun/pull/1499) +* Separate Mac wheels & trigger wheel build from ui [#1499](https://github.com/rerun-io/rerun/pull/1499) * Add spell checking to CI [#1492](https://github.com/rerun-io/rerun/pull/1492) * Repo size * Always create new orphaned branch for gh-pages [#1490](https://github.com/rerun-io/rerun/pull/1490) * GitHub Action to prevent large files [#1478](https://github.com/rerun-io/rerun/pull/1478) * Python - * Remove the python job path filters [#1452](https://github.com/rerun-io/rerun/pull/1452) - * Use ruff for our python lints [#1378](https://github.com/rerun-io/rerun/pull/1378) + * Remove the Python job path filters [#1452](https://github.com/rerun-io/rerun/pull/1452) + * Use ruff for our Python lints [#1378](https://github.com/rerun-io/rerun/pull/1378) * Use python3 in the jobs that weren't tested in PR [#1348](https://github.com/rerun-io/rerun/pull/1348) * Testing * Add a test of memory use when logging a lot of big images [#1372](https://github.com/rerun-io/rerun/pull/1372) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a5c17e6645e8a..5577d31e1cc7a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -114,10 +114,9 @@ cargo run -p rerun -- --help ## Tools We use the [`pixi`](https://prefix.dev/) for managing dev-tool versioning, download and task running. To see available tasks, use `pixi task list`. -# TODO(andreas): This doesn't list tasks from the different environments. Asked [here](https://discord.com/channels/1082332781146800168/1227563080934756475/1227563080934756475) if there's a way to do that. - -We use [cargo deny](https://github.com/EmbarkStudios/cargo-deny) to check our dependency tree for copy-left licenses, duplicate dependencies and [rustsec advisories](https://rustsec.org/advisories). You can configure it in `deny.toml`. Usage: `cargo deny check`. +TODO(andreas): This doesn't list tasks from all Pixi environments. There's no way to this so far, see also [here](https://discord.com/channels/1082332781146800168/1227563080934756475/1227563080934756475). +We use [cargo deny](https://github.com/EmbarkStudios/cargo-deny) to check our dependency tree for copy-left licenses, duplicate dependencies and [rustsec advisories](https://rustsec.org/advisories). You can configure it in `deny.toml`. Usage: `cargo deny check` Configure your editor to run `cargo fmt` on save. Also configure it to strip trailing whitespace, and to end each file with a newline. Settings for VSCode can be found in the `.vscode` folder and should be applied automatically. If you are using another editor, consider adding good setting to this repository! Depending on the changes you made run `cargo test --all-targets --all-features`, `pixi run py-test` and `pixi run cpp-test` locally. @@ -127,7 +126,7 @@ Prior to pushing changes to a PR, at a minimum, you should always run `pixi run in a few seconds and should catch the more trivial issues to avoid wasting CI time. ### Hooks -We recommend adding the rerun pre-push hook to your local checkout, which among other-things will run +We recommend adding the Rerun pre-push hook to your local checkout, which among other-things will run `pixi run fast-lint` for you. To install the hooks, simply copy them into the `.git/hooks` directory of your local checkout. @@ -141,7 +140,7 @@ git config core.hooksPath hooks ``` ### Optional -You can use [bacon](https://github.com/Canop/bacon) to automatically check your code on each save. For instance, running just `bacon` will re-run `cargo clippy` each time you change a rust file. See [`bacon.toml`](bacon.toml) for more. +You can use [bacon](https://github.com/Canop/bacon) to automatically check your code on each save. For instance, running just `bacon` will re-run `cargo clippy` each time you change a Rust file. See [`bacon.toml`](bacon.toml) for more. You can set up [`sccache`](https://github.com/mozilla/sccache) to speed up re-compilation (e.g. when switching branches). You can control the size of the cache with `export SCCACHE_CACHE_SIZE="256G"`. diff --git a/README.md b/README.md index 85f2879e051d6..a1037aafbce72 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ rr.connect() # Connect to a remote viewer # rr.save("recording.rrd") # Stream all logs to disk # Associate subsequent data with 42 on the β€œframe” timeline -rr.set_time_sequence("frame", 42)) +rr.set_time_sequence("frame", 42) # Log colored 3D points to the entity at `path/to/points` rr.log("path/to/points", rr.Points3D(positions, colors=colors)) @@ -48,14 +48,14 @@ rr.log("path/to/points", rr.Points3D(positions, colors=colors))

## Getting started -* **C++**: [Guide](https://www.rerun.io/docs/getting-started/quick-start/cpp) -* **Python**: `pip install rerun-sdk` or on [`conda`](https://github.com/conda-forge/rerun-sdk-feedstock) -* **Rust**: `cargo add rerun` - -### Rerun Viewer binary -Both the Python and Rust library can start the Rerun Viewer, but to stream log data over the network or load our `.rrd` data files you also need the `rerun` binary. +* [**C++**](https://www.rerun.io/docs/getting-started/quick-start/cpp) +* [**Python**](https://www.rerun.io/docs/getting-started/quick-start/python): `pip install rerun-sdk` or on [`conda`](https://github.com/conda-forge/rerun-sdk-feedstock) +* [**Rust**](https://www.rerun.io/docs/getting-started/quick-start/rust): `cargo add rerun` +### Installing the Rerun Viewer binary +To stream log data over the network or load our `.rrd` data files you also need the `rerun` binary. It can be installed with `pip install rerun-sdk` or with `cargo install rerun-cli`. +Note that only the Python SDK comes bundled with the Viewer whereas C++ & Rust always rely on a separate install. You should now be able to run `rerun --help` in any terminal. @@ -147,12 +147,12 @@ facilitates the tool's discovery by other researchers. # Development * [`ARCHITECTURE.md`](ARCHITECTURE.md) -* [`BUILD.md`](BUILD.md) -* [`rerun_py/README.md`](rerun_py/README.md) - build instructions for Python SDK * [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md) * [`CODE_STYLE.md`](CODE_STYLE.md) * [`CONTRIBUTING.md`](CONTRIBUTING.md) -* [`RELEASES.md`](RELEASES.md) +* [`BUILD.md`](BUILD.md) +* [`rerun_py/README.md`](rerun_py/README.md) - instructions for Python SDK +* [`rerun_cpp/README.md`](rerun_cpp/README.md) - instructions for C++ SDK ## Installing a pre-release Python SDK diff --git a/RELEASES.md b/RELEASES.md index 749582aefec7c..92b9a5cfee636 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -16,7 +16,7 @@ New Rerun versions are released approximately once every month. Sometimes we do ## Library versioning and release cadence Each release include new versions of: -* All rust crates +* All Rust crates * The Python SDK * The Rust SDK * The C++ SDK @@ -39,7 +39,7 @@ Our Minimum Supported Rust Version (MSRV) is always _at least_ one minor release ## Data and communication versioning We have not yet committed to any backwards or forwards compatibility. -We tag all data files (`.rrd` files) and communication protocols with the rerun version number. If there is a version mismatch, a warning is logged, but an attempt is still made to load the older or newer data. +We tag all data files (`.rrd` files) and communication protocols with the Rerun version number. If there is a version mismatch, a warning is logged, but an attempt is still made to load the older or newer data. ## Releases diff --git a/crates/re_dev_tools/README.md b/crates/re_dev_tools/README.md index 5fc1e45446957..1a4c549218516 100644 --- a/crates/re_dev_tools/README.md +++ b/crates/re_dev_tools/README.md @@ -2,7 +2,7 @@ Crate that combines several development utilities. To get an overview over all tools run `pixi run dev-tools --help`. -We keep all smaller rust "scripts" in this single crate so we don't needlessly +We keep all smaller Rust "scripts" in this single crate so we don't needlessly increase the number of such utility crates and to make it easy to get an overview over all build tooling written in Rust. diff --git a/crates/re_renderer/README.md b/crates/re_renderer/README.md index c523011183875..a3adadb3d911b 100644 --- a/crates/re_renderer/README.md +++ b/crates/re_renderer/README.md @@ -23,7 +23,7 @@ Goals & philosophy: * Automatic resource re-use & caching * Lazy loading whenever possible for best startup performance * Run great both on the desktop and web -* No dependencies on `re_viewer` or rerun data store libraries +* No dependencies on `re_viewer` or Rerun data store libraries ## Debugging diff --git a/crates/re_tuid/README.md b/crates/re_tuid/README.md index d75c7961c2fc4..0a2feb0c0b258 100644 --- a/crates/re_tuid/README.md +++ b/crates/re_tuid/README.md @@ -1,4 +1,4 @@ -# TUID: Time-based Unique Identifier +# TUID: time-based unique identifier Part of the [`rerun`](https://github.com/rerun-io/rerun) family of crates. diff --git a/crates/re_types/definitions/rerun/datatypes/class_description.fbs b/crates/re_types/definitions/rerun/datatypes/class_description.fbs index 7196dd0085dd4..0024aedbdfe5d 100644 --- a/crates/re_types/definitions/rerun/datatypes/class_description.fbs +++ b/crates/re_types/definitions/rerun/datatypes/class_description.fbs @@ -9,7 +9,7 @@ namespace rerun.datatypes; /// The description of a semantic Class. /// -/// If an entity is annotated with a corresponding `ClassId`, rerun will use +/// If an entity is annotated with a corresponding `ClassId`, Rerun will use /// the attached `AnnotationInfo` to derive labels and colors. /// /// Keypoints within an annotation class can similarly be annotated with a diff --git a/crates/re_types/definitions/rerun/datatypes/quaternion.fbs b/crates/re_types/definitions/rerun/datatypes/quaternion.fbs index c3908e9bd2ef1..4cd2235e3cecc 100644 --- a/crates/re_types/definitions/rerun/datatypes/quaternion.fbs +++ b/crates/re_types/definitions/rerun/datatypes/quaternion.fbs @@ -9,7 +9,7 @@ namespace rerun.datatypes; /// A Quaternion represented by 4 real numbers. /// /// Note: although the x,y,z,w components of the quaternion will be passed through to the -/// datastore as provided, when used in the viewer Quaternions will always be normalized. +/// datastore as provided, when used in the Viewer Quaternions will always be normalized. // // Expectations: struct Quaternion ( diff --git a/crates/re_types/src/datatypes/class_description.rs b/crates/re_types/src/datatypes/class_description.rs index 31e19ea8ec6d2..9ddf1fa785f3d 100644 --- a/crates/re_types/src/datatypes/class_description.rs +++ b/crates/re_types/src/datatypes/class_description.rs @@ -24,7 +24,7 @@ use ::re_types_core::{DeserializationError, DeserializationResult}; /// **Datatype**: The description of a semantic Class. /// -/// If an entity is annotated with a corresponding `ClassId`, rerun will use +/// If an entity is annotated with a corresponding `ClassId`, Rerun will use /// the attached `AnnotationInfo` to derive labels and colors. /// /// Keypoints within an annotation class can similarly be annotated with a diff --git a/crates/re_types/src/datatypes/quaternion.rs b/crates/re_types/src/datatypes/quaternion.rs index 60a457f09cb3d..2471257a4b07b 100644 --- a/crates/re_types/src/datatypes/quaternion.rs +++ b/crates/re_types/src/datatypes/quaternion.rs @@ -25,7 +25,7 @@ use ::re_types_core::{DeserializationError, DeserializationResult}; /// **Datatype**: A Quaternion represented by 4 real numbers. /// /// Note: although the x,y,z,w components of the quaternion will be passed through to the -/// datastore as provided, when used in the viewer Quaternions will always be normalized. +/// datastore as provided, when used in the Viewer Quaternions will always be normalized. #[derive(Clone, Debug, Copy, PartialEq, PartialOrd)] pub struct Quaternion(pub [f32; 4usize]); diff --git a/crates/re_viewer/README.md b/crates/re_viewer/README.md index 1f0c3a088d8f6..13dfb89fe4042 100644 --- a/crates/re_viewer/README.md +++ b/crates/re_viewer/README.md @@ -1,4 +1,4 @@ -# The Rerun viewer +# The Rerun Viewer Part of the [`rerun`](https://github.com/rerun-io/rerun) family of crates. diff --git a/crates/re_viewer/data/quick_start_guides/cpp_connect.md b/crates/re_viewer/data/quick_start_guides/cpp_connect.md index 43eef06297b56..6fe268cf12469 100644 --- a/crates/re_viewer/data/quick_start_guides/cpp_connect.md +++ b/crates/re_viewer/data/quick_start_guides/cpp_connect.md @@ -1,6 +1,6 @@ # C++ quick start -## Installing the Rerun viewer +## Installing the Rerun Viewer The Rerun C++ SDK works by connecting to an awaiting Rerun Viewer over TCP. If you need to install the viewer, follow the [installation guide](https://www.rerun.io/docs/getting-started/installing-viewer). Two of the more common ways to install the Rerun are: @@ -35,7 +35,7 @@ Put the following code to your `main.cpp`: ${EXAMPLE_CODE_CPP_CONNECT} ``` -Start the rerun viewer (`rerun`) and then build and run your C++ program. +Start the Rerun Viewer (`rerun`) and then build and run your C++ program. You should see the points in this viewer: diff --git a/crates/re_viewer/data/quick_start_guides/cpp_spawn.md b/crates/re_viewer/data/quick_start_guides/cpp_spawn.md index 7063ffe05cb57..748e416f40b34 100644 --- a/crates/re_viewer/data/quick_start_guides/cpp_spawn.md +++ b/crates/re_viewer/data/quick_start_guides/cpp_spawn.md @@ -1,6 +1,6 @@ # C++ quick start -## Installing the Rerun viewer +## Installing the Rerun Viewer The Rerun C++ SDK works by connecting to an awaiting Rerun Viewer over TCP. If you need to install the viewer, follow the [installation guide](https://www.rerun.io/docs/getting-started/installing-viewer). Two of the more common ways to install the Rerun are: diff --git a/crates/re_viewer/data/quick_start_guides/python_spawn.md b/crates/re_viewer/data/quick_start_guides/python_spawn.md index a4dbbc67a909e..9e608cb9be125 100644 --- a/crates/re_viewer/data/quick_start_guides/python_spawn.md +++ b/crates/re_viewer/data/quick_start_guides/python_spawn.md @@ -18,7 +18,7 @@ Copy and paste the following snippet in a new Python file and execute it to crea ${EXAMPLE_CODE_PYTHON_SPAWN} ``` -This will spawn a new viewer and open a new recording that looks like this: +This will spawn a new Viewer and open a new recording that looks like this: ![Demo recording](https://static.rerun.io/quickstart2_simple_cube/632a8f1c79f70a2355fad294fe085291fcf3a8ae/768w.png) diff --git a/crates/re_viewer/data/quick_start_guides/rust_spawn.md b/crates/re_viewer/data/quick_start_guides/rust_spawn.md index a59fb322c5d03..fc9cfc1c6edd3 100644 --- a/crates/re_viewer/data/quick_start_guides/rust_spawn.md +++ b/crates/re_viewer/data/quick_start_guides/rust_spawn.md @@ -2,7 +2,7 @@ ## Installing Rerun -After you have [installed the viewer](https://www.rerun.io/docs/getting-started/installing-viewer) you can simply add [the rerun crate](https://crates.io/crates/rerun) to your project with `cargo add rerun`. +After you have [installed the viewer](https://www.rerun.io/docs/getting-started/installing-viewer) you can simply add [the Rerun crate](https://crates.io/crates/rerun) to your project with `cargo add rerun`. Let's try it out in a brand-new Rust project: @@ -26,7 +26,7 @@ You can now run your application: cargo run ``` -Once everything finishes compiling, a new viewer will start displaying these points: +Once everything finishes compiling, a new Viewer will start displaying these points: ![Demo recording](https://static.rerun.io/intro_rust_result/cc780eb9bf014d8b1a68fac174b654931f92e14f/768w.png) diff --git a/crates/re_viewer_context/README.md b/crates/re_viewer_context/README.md index e78ca9c9268b6..26832a576ebe7 100644 --- a/crates/re_viewer_context/README.md +++ b/crates/re_viewer_context/README.md @@ -9,4 +9,4 @@ Part of the [`rerun`](https://github.com/rerun-io/rerun) family of crates. Basic building blocks for the different modules of the Rerun viewer. -Most prominently, contains a context object that the viewer uses to share global data with each module. +Most prominently, contains a context object that the Viewer uses to share global data with each module. diff --git a/design/batching.md b/design/batching.md index 7b5d844b560d8..ee33fd1a95c14 100644 --- a/design/batching.md +++ b/design/batching.md @@ -353,7 +353,7 @@ For example, if you need to iterate through 100k values, you would need to run 1 The current garbage collection mechanism was put together as a quick fix for the `MsgId`-mismatch issue, and it is largely unreliable. -The algorithm works as follows: it finds the oldest component bucket based on the insertion order from the datastore, which doesn't make much semantic sense, and drops it. Then, it drops all component buckets that roughly cover the same time range. Finally, it returns all the `MsgId`s to the viewer so that it can in turn clear its own data structures. +The algorithm works as follows: it finds the oldest component bucket based on the insertion order from the datastore, which doesn't make much semantic sense, and drops it. Then, it drops all component buckets that roughly cover the same time range. Finally, it returns all the `MsgId`s to the Viewer so that it can in turn clear its own data structures. This process is repeated in a loop until a sufficient amount of data has been dropped. Beyond these hacks, the logic in and of itself is fundamentally broken right now. Consider the following log calls: @@ -400,7 +400,7 @@ The current terms `ComponentBundle` and `MsgBundle` are vague, so let's use more * `DataRow`: an event, a list of cells associated with an event ID, entity path, timepoint, and number of instances. Corresponds to a single SDK log call. * `DataTable`: a batch; a list of rows associated with a batch ID. -Juggling between native and arrow data interchangeably can be a cumbersome task in our current implementation. While we have some helper functions to facilitate this, the process is not as smooth as it could be. +Juggling between native and Arrow data interchangeably can be a cumbersome task in our current implementation. While we have some helper functions to facilitate this, the process is not as smooth as it could be. This is partly due to limitations in `arrow2-convert`, but also because some of our APIs are simply not optimized for this use case (yet). So, considering all the reasons above, here are all the new types involved. @@ -559,7 +559,7 @@ Only when a `DataTable` gets transformed into a `ArrowMsg` does serialization ac ### Transport -`ArrowMsg` stays roughly the same in spirit: it's the fully serialized arrow representation of a `DataTable`: +`ArrowMsg` stays roughly the same in spirit: it's the fully serialized Arrow representation of a `DataTable`: ```rust pub struct ArrowMsg { /// Auto-generated [`TUID`], uniquely identifying this batch of data and keeping track of the @@ -687,12 +687,12 @@ We already have `zstd` in place for that. ### Storage -One of the major change storage-wise is the complete removal of component tables: index tables now reference the arrow data directly. -With the new design, the arrow buffers now store multiple rows of data. To reference a specific row, each index row must point to _a unit-length slice_ in a shared batch of arrow data. +One of the major change storage-wise is the complete removal of component tables: index tables now reference the Arrow data directly. +With the new design, the Arrow buffers now store multiple rows of data. To reference a specific row, each index row must point to _a unit-length slice_ in a shared batch of Arrow data. That is the reason why sorting the batch on the client's end improves performance: it improves data locality in the store by making the shared batches follow the layout of the final buckets more closely. -Assuming the following syntax for arrow slices: `ArrowSlice()`, indices should now look roughly like the following, sorted by the timeline (`frame_nr`): +Assuming the following syntax for Arrow slices: `ArrowSlice()`, indices should now look roughly like the following, sorted by the timeline (`frame_nr`): ``` IndexTable { timeline: frame_nr @@ -741,7 +741,7 @@ IndexTable { Worth noticing: - `event_id` and `num_instances` are deserialized and stored natively, as they play a crucial role in many storage and query features. -- In this example, `rerun.instance_key` consistently references the same slice of arrow data. This is because they are auto-generated in this case. +- In this example, `rerun.instance_key` consistently references the same slice of Arrow data. This is because they are auto-generated in this case. In addition to storing the indices themselves, we also require a bunch of auxiliary datastructures. @@ -758,10 +758,10 @@ Overall this is a much simpler design, and while it still isn't optimal for time ### Write path -For each row in the batch, we create a bunch of unit-length arrow slices that point to the right place in the shared buffer, and then it's all pretty much the same as before. +For each row in the batch, we create a bunch of unit-length Arrow slices that point to the right place in the shared buffer, and then it's all pretty much the same as before. -The major difference is we now directly store arrow buffers (which are really arrow slices under the hood) rather than indices into component tables. -Everything else is the same: get (or create) the appropriate index (`EntityPath` + `Timeline`), find the right bucket using a binsearch, and insert those arrow slices +The major difference is we now directly store Arrow buffers (which are really Arrow slices under the hood) rather than indices into component tables. +Everything else is the same: get (or create) the appropriate index (`EntityPath` + `Timeline`), find the right bucket using a binsearch, and insert those Arrow slices We also actually deserialize the `event_id` and `num_instances` columns into native types as we're going to need those for the store to function: - `event_id`s are needed to maintain our auxiliary datastructures (GC, save-to-file) @@ -769,7 +769,7 @@ We also actually deserialize the `event_id` and `num_instances` columns into nat ### Read path -The major difference is we now directly return arrow buffers (which are really arrow slices under the hood), which means `get` queries are gone… which means latest-at queries should get a bit faster and range queries should get much faster. +The major difference is we now directly return Arrow buffers (which are really Arrow slices under the hood), which means `get` queries are gone… which means latest-at queries should get a bit faster and range queries should get much faster. Everything else is the same: grab the right index (`EntityPath` + `Timeline`), binsearch for the right bucket, walk backwards if you need to, and you're done. @@ -791,8 +791,8 @@ We want to garbage collect in `event_id` order (reminder: `EventId` is a `TUID`, - We iterate over all `EventId`s in their natural order - For every one of them: - - Find all index rows that match this `event_id` and replace the arrow slice with a tombstone, this has 2 effects: - 1. This decrements the internal refcount of the overall arrow buffer, which might deallocate it if this happens to be the last one standing + - Find all index rows that match this `event_id` and replace the Arrow slice with a tombstone, this has 2 effects: + 1. This decrements the internal refcount of the overall Arrow buffer, which might deallocate it if this happens to be the last one standing 2. This lets the read path knows it should ignore this row (and maybe not look any further?) - Check if the bucket now only contains tombstones, and drop it entirely if that's the case - Remove the freshly dropped `event_id` from all our auxiliary datastructures @@ -835,7 +835,7 @@ We should already be 95% of the way there at this point. No actual batching features nor any kind of behavior changes of any sort: just define the new types and use them everywhere. 1. Pass entity path as a column rather than as metadata -Replace the current entity_path that is passed in the metadata map with an actual column instead. This will also requires us to make `EntityPath` a proper arrow datatype (..datatype, not component!!). +Replace the current entity_path that is passed in the metadata map with an actual column instead. This will also requires us to make `EntityPath` a proper Arrow datatype (..datatype, not component!!). 1. Implement explicit number of instances Introduce a new column for `num_instances`, integrate it in the store index and expose it in the store APIs. @@ -867,7 +867,7 @@ Reminder: the timeline widget keeps track of timepoints directly, not events. 1. Rebatch aggressively while dumping to disk -1. Use arrow extension types to carry around component names +1. Use Arrow extension types to carry around component names 1. Drop `log_time` We currently store the logging time twice: once in the `MsgId` (soon `EventId`) and once injected by the SDK (and they don't even match!). @@ -961,7 +961,7 @@ I.e. a GC request of the form `DropAfter(("frame_nr", 41))`, rather than the oth ### The DataStore is its own server -The datastore won't run as part of the viewer forever. +The datastore won't run as part of the Viewer forever. ### Data might be a reference to an external storage system @@ -1012,7 +1012,7 @@ timepoint: Vec, entity_path: Vec, num_instances: Vec, ``` -None of these are components however, they are merely arrow datatypes. +None of these are components however, they are merely Arrow datatypes. Everything else is just a component, and as such is passed as a `DataCell`. diff --git a/design/blueprint_store.md b/design/blueprint_store.md index 077b24aa045ae..fd954676a8ef1 100644 --- a/design/blueprint_store.md +++ b/design/blueprint_store.md @@ -28,13 +28,13 @@ give users explicit control over the details of how data is displayed in the vie ## Proposal ### Blueprint lifecycle -In order to simplify many edge cases, custom blueprints will only be able to be sent to the viewer in their entirety as -part of viewer startup. This limits blueprint control to: `rr.spawn()` (launch a native app), `rr.serve()` (launch a -hosted web-app), and `rr.show()` (embed a viewer in a notebook). Additionally a blueprint file will be able to be -provided to the viewer via the CLI at launch, or opened via the file-menu. +In order to simplify many edge cases, custom blueprints will only be able to be sent to the Viewer in their entirety as +part of Viewer startup. This limits blueprint control to: `rr.spawn()` (launch a native app), `rr.serve()` (launch a +hosted web-app), and `rr.show()` (embed a Viewer in a notebook). Additionally a blueprint file will be able to be +provided to the Viewer via the CLI at launch, or opened via the file-menu. Blueprints will not otherwise be able to be sent via `rr.connect()`, which is reserved for only transmitting log-data to -an existing live viewer instance, where a relevant blueprint is assumed to be loaded. +an existing live Viewer instance, where a relevant blueprint is assumed to be loaded. ### Blueprint APIs @@ -63,7 +63,7 @@ App: … ``` -A theoretical python API might look like: +A theoretical Python API might look like: ```python blueprint = rrb.App( expand_panels=False, @@ -219,7 +219,7 @@ is simply stored at an "anonymous" entity path within the blueprint store and wi The blueprint store has exactly one timeline: `ui_time` which is the local time of the application. This can then be used for undo and redo. ## Viewer -Any configurable viewer state will be driven by the blueprint store and the data store. Each frame we will +Any configurable Viewer state will be driven by the blueprint store and the data store. Each frame we will query the blueprint store about the current state of the blueprint, which will then drive the layout of the UI. In turn any user-interactions that modify the layout will be saved back to the blueprint store and queried again on the next frame. diff --git a/design/component_datatypes.md b/design/component_datatypes.md index 32b935d4b5ca1..3b7fb1bfdac93 100644 --- a/design/component_datatypes.md +++ b/design/component_datatypes.md @@ -1,4 +1,4 @@ -# 2023-03-15 Component type conversions +# 2023-03-15 component type conversions Status: pre-proposal (not ready to be implemented) ## Summary diff --git a/design/space_views.md b/design/space_views.md index 1cfe8252cbcc4..58271b5367396 100644 --- a/design/space_views.md +++ b/design/space_views.md @@ -92,8 +92,8 @@ First of all 3D data is only viewable in 2D if combined with a suitable projecti Second, the expectations around how to navigate a 2D visualization are quite different from how I expect to navigate a 3D visualization. ### Registering -Registration happens on startup in the viewer owned `SpaceViewClassRegistry`. -The viewer registers all builtin Space View Classes and users may add new types at any point in time. +Registration happens on startup in the Viewer owned `SpaceViewClassRegistry`. +The Viewer registers all builtin Space View Classes and users may add new types at any point in time. ### Systems diff --git a/docs/README.md b/docs/README.md index 5a2bd6173fa39..ff63007da85a5 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,4 +1,4 @@ -This is the high-level documentation for rerun that is hosted at https://www.rerun.io/docs +This is the high-level documentation for Rerun that is hosted at https://www.rerun.io/docs ## Other documentation API-level documentation is built from source-code. Python lives at [rerun_py](https://github.com/rerun-io/rerun/tree/main/rerun_py) and Rust in the individual [crates](https://github.com/rerun-io/rerun/tree/main/crates). diff --git a/docs/content/concepts/annotation-context.md b/docs/content/concepts/annotation-context.md index 1f53c7a79a504..cd89d4cee311c 100644 --- a/docs/content/concepts/annotation-context.md +++ b/docs/content/concepts/annotation-context.md @@ -33,7 +33,7 @@ In that case, the entire detected pose/skeleton is assigned a Class ID and each To help you more with this (and similar) use-case(s), you can also define connections between keypoints as part of your annotation class description. -The viewer will draw the connecting lines for all connected keypoints whenever that class is used. +The Viewer will draw the connecting lines for all connected keypoints whenever that class is used. Just as with labels and colors this allows you to use the same connection information on any instance that class in your scene. Keypoints are currently only applicable to 2D and 3D points. diff --git a/docs/content/concepts/apps-and-recordings.md b/docs/content/concepts/apps-and-recordings.md index a336b8788e28c..4cc5115f0aca1 100644 --- a/docs/content/concepts/apps-and-recordings.md +++ b/docs/content/concepts/apps-and-recordings.md @@ -4,10 +4,10 @@ order: 500 --- ## Application ID -When you initialize rerun with [`rr.init`](https://ref.rerun.io/docs/python/stable/common/initialization_functions/#rerun.init) you need to set an Application ID. +When you initialize Rerun with [`rr.init`](https://ref.rerun.io/docs/python/stable/common/initialization_functions/#rerun.init) you need to set an Application ID. Your Rerun Viewer will store the Blueprint based on this Application ID. -This means that you can run your app and set up the viewer to your liking, +This means that you can run your app and set up the Viewer to your liking, and then when you run the app again the Rerun Viewer will remember how you set up your Space Views etc. ## Recording ID diff --git a/docs/content/concepts/batches.md b/docs/content/concepts/batches.md index 8348c8a3563c8..ecca02d3b3c31 100644 --- a/docs/content/concepts/batches.md +++ b/docs/content/concepts/batches.md @@ -37,7 +37,7 @@ When using batched entities there are a few restrictions: Rerun lets you choose which components in an entity you want to log at any point in time. If you don't log to a component, then in general it is not updated. For example, if you log a point cloud with positions and colors and then -later log just new positions, when the viewer displays that point cloud it will still look up the *last* colors that +later log just new positions, when the Viewer displays that point cloud it will still look up the *last* colors that were logged (we refer to this as the *latest at* semantics). This can be quite convenient since updating different components at different times puts far fewer restrictions on the diff --git a/docs/content/concepts/blueprint.md b/docs/content/concepts/blueprint.md index 6b8668facefe2..5dd6d40c3fb3e 100644 --- a/docs/content/concepts/blueprint.md +++ b/docs/content/concepts/blueprint.md @@ -17,9 +17,9 @@ combine to produce what you see: the "recording" and the "blueprint." Both of these pieces are crucial -- without the recording there is nothing to show, and without the blueprint there is no way to show it. Even if you have -used Rerun before without explicitly loading a blueprint, the viewer was +used Rerun before without explicitly loading a blueprint, the Viewer was actually creating one for you. Without a blueprint, there is literally nothing -for the viewer to display. +for the Viewer to display. ## Loose coupling @@ -35,7 +35,7 @@ data in different ways. ## What the blueprint controls -Every aspect of what the viewer displays is controlled by the blueprint. This +Every aspect of what the Viewer displays is controlled by the blueprint. This includes the type and content of the different views, the organization and layout of the different containers, and the configuration and styling properties of the individual data visualizers. @@ -52,7 +52,7 @@ all state to the blueprint.) Blueprints may originate from multiple sources. -- The "current blueprint" for a given application ID is the one that is used by the viewer to display data at any given time. It is updated for each change made to the visualization within the viewer, and may be saved to a blueprint file at any time. +- The "current blueprint" for a given application ID is the one that is used by the Viewer to display data at any given time. It is updated for each change made to the visualization within the viewer, and may be saved to a blueprint file at any time. - The "default blueprint" is a snapshot that is set or updated when a blueprint is received from code or loaded from a file. The current blueprint may be reset to default blueprint at any time by using the "reset" button in the blueprint panel's header. - The "heuristic blueprint" is an automatically-produced blueprint based on the recording data. When no default blueprint is available, the heuristic blueprint is used when resetting the current blueprint. It is also possible to reset to the heuristic blueprint in the selection panel after selecting an application. @@ -69,18 +69,18 @@ Although the Rerun APIs for working with blueprint may look different from the regular logging APIs, they are really just syntactic sugar for logging a collection of blueprint-specific archetypes to a separate blueprint stream. -Furthermore, when you make any change to the viewer in the UI, what is actually -happening is the viewer is creating a new blueprint event and adding it to the +Furthermore, when you make any change to the Viewer in the UI, what is actually +happening is the Viewer is creating a new blueprint event and adding it to the end of the blueprint timeline in the blueprint store. ## Viewer operation Outside of caching that exists primarily for performance reasons, the viewer persists very little state frame-to-frame. The goal is for the output of the -viewer to be a deterministic function of the blueprint and the recording. +Viewer to be a deterministic function of the blueprint and the recording. -Every frame, the viewer starts with a minimal context of an "active" blueprint, -and an "active" recording. The viewer then uses the current revision on the +Every frame, the Viewer starts with a minimal context of an "active" blueprint, +and an "active" recording. The Viewer then uses the current revision on the blueprint timeline to query the container and space-view archetypes from the blueprint store. The space-view archetypes, in turn, specify the paths types that need to be queried from the recording store in order to render the views. @@ -91,12 +91,12 @@ the blueprint using the next revision on the blueprint timeline. ## Blueprint architecture motivation Although this architecture adds some complexity and indirection, the fact that -the viewer stores all of its meaningful frame-to-frame state in a structured +the Viewer stores all of its meaningful frame-to-frame state in a structured blueprint data-store has several advantages: -- Anything you modify in the viewer can be saved and shared as a blueprint. +- Anything you modify in the Viewer can be saved and shared as a blueprint. - A blueprint can be produced programmatically using just the Rerun SDK without - a dependency on the viewer libraries. + a dependency on the Viewer libraries. - The blueprint is capable of representing any data that a recording can represent. This means in the future, blueprint-sourced data overrides will be just as expressive as any logged data. diff --git a/docs/content/concepts/entity-component.md b/docs/content/concepts/entity-component.md index 00681be14c342..16554660a7c18 100644 --- a/docs/content/concepts/entity-component.md +++ b/docs/content/concepts/entity-component.md @@ -22,7 +22,7 @@ Additionally, the Rerun SDKs expose two additional concepts: ### Logging and viewing data -All the data that you log within rerun is mapped to the concepts of entities and components. +All the data that you log within Rerun is mapped to the concepts of entities and components. For example, consider the case of logging a point: ```python @@ -35,15 +35,15 @@ Internally, this archetype builds a set of, in this case, two components: [`Posi Later, the Space View for spatial types queries the data store for all the entities that have a `Position2D` component. In this case it would find the "my_point" entity. This query additionally returns the `Color` component because that -component is associated with the same entity. These two components are recognized as corresponding to the `Points2D` archetype, which informs the viewer on how to display the corresponding entity. +component is associated with the same entity. These two components are recognized as corresponding to the `Points2D` archetype, which informs the Viewer on how to display the corresponding entity. See the [Types](../reference/types.md) reference for a list of archetypes, components, and datatypes. ### Adding custom data Although both the SDKs' archetype objects and the space view are based on the same archetype definition (and are actually implemented using code that is automatically generated based on that definition), they both operate on arbitrary collection -of components. Neither the SDKs nor the viewer enforce or require that an entity should contain a *specific* set of component. -The Rerun viewer will display any data in a generic form, but its space views will only work on sets of components it can +of components. Neither the SDKs nor the Viewer enforce or require that an entity should contain a *specific* set of component. +The Rerun Viewer will display any data in a generic form, but its space views will only work on sets of components it can make sense of. Your entity could have any number of additional components as well. This isn't a problem. Any components that @@ -71,4 +71,4 @@ of one or more components associated with that entity. ## ECS systems There is a third concept we haven't touched on: *systems* are processes which operate on the entities based on the components they possess. -Rerun is still settling on the exact form of formalized systems and outside of Rust viewer code it is not yet possible to write your own systems. However, space views work under the hood using a variety of systems. For more information see the [Extend the Viewer in Rust](../howto/extend/extend-ui.md) section. +Rerun is still settling on the exact form of formalized systems and outside of Rust Viewer code it is not yet possible to write your own systems. However, space views work under the hood using a variety of systems. For more information see the [Extend the Viewer in Rust](../howto/extend/extend-ui.md) section. diff --git a/docs/content/concepts/entity-path.md b/docs/content/concepts/entity-path.md index b80c9cf013364..7de4f37414c4c 100644 --- a/docs/content/concepts/entity-path.md +++ b/docs/content/concepts/entity-path.md @@ -8,7 +8,7 @@ As mentioned in the [Entity Component](entity-component.md) overview, all entiti The first argument to the `log()` function is this path. Each time you log to a specific entity path you will update the entity, i.e. log a new instance of it along the timeline. -It is possible to log multiple types of archetypes on the same entity path, but you should generally avoid mixing different kinds of geometric primitive. For example, logging a [`Points3D`](../reference/types/archetypes/points3d.md) point cloud on an entity path where a [`Mesh3D`](../reference/types/archetypes/mesh3d.md) was previously logged would overwrite the mesh's [`Position3D`](../reference/types/components/position3d.md) component with the point cloud's, but would leave the `triangle_indices` component untouched. The Rerun viewer would likely be unable to display the result. See the [Entity Component](entity-component.md) section for more information. +It is possible to log multiple types of archetypes on the same entity path, but you should generally avoid mixing different kinds of geometric primitive. For example, logging a [`Points3D`](../reference/types/archetypes/points3d.md) point cloud on an entity path where a [`Mesh3D`](../reference/types/archetypes/mesh3d.md) was previously logged would overwrite the mesh's [`Position3D`](../reference/types/components/position3d.md) component with the point cloud's, but would leave the `triangle_indices` component untouched. The Rerun Viewer would likely be unable to display the result. See the [Entity Component](entity-component.md) section for more information. There _are_ valid reasons to logs different kinds of archetypes to the same entity path, though. For example, it's common to log a [`Transform3D`](../reference/types/archetypes/transform3d.md) along with some geometry it relates to (see the [Spaces and Transforms](spaces-and-transforms.md) for more info). diff --git a/docs/content/getting-started/configure-the-viewer.md b/docs/content/getting-started/configure-the-viewer.md index 28425ffba7cec..5c8ea41b716af 100644 --- a/docs/content/getting-started/configure-the-viewer.md +++ b/docs/content/getting-started/configure-the-viewer.md @@ -3,13 +3,13 @@ title: Configure the viewer order: 600 --- -By default, the Rerun viewer uses heuristics to automatically determine an appropriate +By default, the Rerun Viewer uses heuristics to automatically determine an appropriate layout given the data that you provide. However, there will always be situations where the heuristic results don't match the needs of a particular use-case. -Fortunately, almost all aspects of the viewer can be configured via the [Blueprint](../reference/viewer/blueprint.md). +Fortunately, almost all aspects of the Viewer can be configured via the [Blueprint](../reference/viewer/blueprint.md). -The viewer Blueprint completely determines: +The Viewer Blueprint completely determines: - What contents are included in each view - The type of view used to visualize the data diff --git a/docs/content/getting-started/configure-the-viewer/interactively.md b/docs/content/getting-started/configure-the-viewer/interactively.md index ae8ea12049ed9..9dba5de2562d4 100644 --- a/docs/content/getting-started/configure-the-viewer/interactively.md +++ b/docs/content/getting-started/configure-the-viewer/interactively.md @@ -1,5 +1,5 @@ --- -title: Configure the viewer interactively +title: Configure the Viewer interactively order: 1 --- @@ -18,15 +18,15 @@ The Rerun Viewer is configurable directly through the UI itself. The central part is known as the viewport and contains the various views displaying the data. -The left panel of the viewer is the "Blueprint Panel". It shows a visual tree view representing +The left panel of the Viewer is the "Blueprint Panel". It shows a visual tree view representing the contents of the current blueprint. -The right panel of the viewer is the "Selection Panel" this panel allows you to configure +The right panel of the Viewer is the "Selection Panel" this panel allows you to configure specific blueprint properties of the currently selected element. The blueprint defines the structure, the type of views, and their content in the viewport. Changing the content of the viewport is done by editing the blueprint. -After editing the viewer you may want to [save or share the blueprint](./save-and-load.md). +After editing the Viewer you may want to [save or share the blueprint](./save-and-load.md). ## Configuring the view hierarchy diff --git a/docs/content/getting-started/configure-the-viewer/save-and-load.md b/docs/content/getting-started/configure-the-viewer/save-and-load.md index 8f57af96fff09..2a37826fc90aa 100644 --- a/docs/content/getting-started/configure-the-viewer/save-and-load.md +++ b/docs/content/getting-started/configure-the-viewer/save-and-load.md @@ -1,9 +1,9 @@ --- -title: Save and load viewer configuration files +title: Save and load Viewer configuration files order: 2 --- -If you have made changes to the viewer and you would like to save or share them, +If you have made changes to the Viewer and you would like to save or share them, you can do so by saving your blueprint to an `.rbl` file. ## Saving a blueprint diff --git a/docs/content/getting-started/configure-the-viewer/through-code-tutorial.md b/docs/content/getting-started/configure-the-viewer/through-code-tutorial.md index dcd6ce83518f5..be972848a8cb7 100644 --- a/docs/content/getting-started/configure-the-viewer/through-code-tutorial.md +++ b/docs/content/getting-started/configure-the-viewer/through-code-tutorial.md @@ -1,5 +1,5 @@ --- -title: Configure the viewer through code +title: Configure the Viewer through code order: 3 --- @@ -29,7 +29,7 @@ we will completely change the way the data is presented. We start by creating a new virtual environment and installing the Rerun SDK along with the dependencies we will use in this example. -On linux or mac: +On Linux or mac: ```bash mkdir stocks_example @@ -356,7 +356,7 @@ When you run the script you will see that the data from the peaks subtree is no ### Programmatic layouts -Since these layouts are created by executing python code, they can also be generated programmatically. +Since these layouts are created by executing Python code, they can also be generated programmatically. For example, we can create a create a separate view for every piece of data we were interested in. Setting this up by hand would be extremely tedious. diff --git a/docs/content/getting-started/data-in/cpp.md b/docs/content/getting-started/data-in/cpp.md index 127f8a4a6ea79..7ece1ef081a3e 100644 --- a/docs/content/getting-started/data-in/cpp.md +++ b/docs/content/getting-started/data-in/cpp.md @@ -29,7 +29,7 @@ And then to run it on Linux/Mac: ./build/example_dna ``` -and windows respectively: +and Windows respectively: ``` build\Debug\example_dna.exe @@ -92,7 +92,7 @@ To get going we want to create a [`RecordingStream`](https://github.com/rerun-io When creating the `RecordingStream` we also need to specify the name of the application we're working on by setting it's `ApplicationId`. -We then use the stream to spawn a new rerun viewer via [`spawn`](https://github.com/rerun-io/rerun/blob/d962b34b07775bbacf14883d683cca6746852b6a/rerun_cpp/src/rerun/recording_stream.hpp#L151). +We then use the stream to spawn a new Rerun Viewer via [`spawn`](https://github.com/rerun-io/rerun/blob/d962b34b07775bbacf14883d683cca6746852b6a/rerun_cpp/src/rerun/recording_stream.hpp#L151). Add our initial `main` to `main.cpp`: @@ -117,7 +117,7 @@ cmake --build build -j ./build/example_dna ``` -When everything finishes compiling, an empty Rerun viewer should be spawned: +When everything finishes compiling, an empty Rerun Viewer should be spawned: @@ -184,7 +184,7 @@ Under the hood, the Rerun C++ SDK logs individual _components_ like positions, c and radii. Archetypes are just one high-level, convenient way of building such collections of components. For advanced use cases, it's possible to add custom components to archetypes, or even log entirely custom sets of components, bypassing archetypes altogether. -For more information on how the rerun data model works, refer to our section on [Entities and Components](../../concepts/entity-component.md). +For more information on how the Rerun data model works, refer to our section on [Entities and Components](../../concepts/entity-component.md). Notably, the [`RecordingStream::log`](https://github.com/rerun-io/rerun/blob/d962b34b07775bbacf14883d683cca6746852b6a/rerun_cpp/src/rerun/recording_stream.hpp#L236) method will handle any data type that implements the [`AsComponents`](https://github.com/rerun-io/rerun/blob/latest/rerun_cpp/src/rerun/as_components.hpp) trait, making it easy to add your own data. diff --git a/docs/content/getting-started/data-in/python.md b/docs/content/getting-started/data-in/python.md index a1c537128b185..6387b5f918ade 100644 --- a/docs/content/getting-started/data-in/python.md +++ b/docs/content/getting-started/data-in/python.md @@ -44,7 +44,7 @@ Among other things, a stable [`ApplicationId`](https://ref.rerun.io/docs/python/ Check out the reference to learn more about how Rerun deals with [applications and recordings](../../concepts/apps-and-recordings.md). -## Starting the viewer +## Starting the Viewer Next up, we want to spawn the [Rerun Viewer](../../reference/viewer/overview.md) itself. @@ -54,7 +54,7 @@ To do this, you can add the line: rr.spawn() ``` -Now you can run your application just as you would any other python script: +Now you can run your application just as you would any other Python script: ``` (venv) $ python dna_example.py @@ -70,8 +70,8 @@ And with that, we're ready to start sending out data: -By default, the SDK will start a viewer in another process and automatically pipe the data through. -There are other means of sending data to a viewer as we'll see at the end of this section, but for now this default will work great as we experiment. +By default, the SDK will start a Viewer in another process and automatically pipe the data through. +There are other means of sending data to a Viewer as we'll see at the end of this section, but for now this default will work great as we experiment. ## Logging our first points @@ -81,7 +81,7 @@ Add the following to your file: ```python NUM_POINTS = 100 -# points and colors are both np.array((NUM_POINTS, 3)) +# Points and colors are both np.array((NUM_POINTS, 3)) points1, colors1 = build_color_spiral(NUM_POINTS) points2, colors2 = build_color_spiral(NUM_POINTS, angular_offset=tau*0.5) @@ -90,7 +90,7 @@ rr.log("dna/structure/right", rr.Points3D(points2, colors=colors2, radii=0.08)) ``` Run your script once again and you should now see this scene in the viewer. -Note that if the viewer was still running, Rerun will simply connect to this existing session and replace the data with this new [_recording_](../../concepts/apps-and-recordings.md). +Note that if the Viewer was still running, Rerun will simply connect to this existing session and replace the data with this new [_recording_](../../concepts/apps-and-recordings.md). @@ -119,7 +119,7 @@ and radii. Archetypes are just one high-level, convenient way of building such c cases, it's possible to add custom components to archetypes, or even log entirely custom sets of components, bypassing archetypes altogether. -For more information on how the rerun data model works, refer to our section on [Entities and Components](../../concepts/entity-component.md). +For more information on how the Rerun data model works, refer to our section on [Entities and Components](../../concepts/entity-component.md). Our [Python SDK](https://ref.rerun.io/docs/python) integrates with the rest of the Python ecosystem: the points and colors returned by [`build_color_spiral`](https://ref.rerun.io/docs/python/stable/common/demo_utilities/#rerun.utilities.data.build_color_spiral) in this example are vanilla `numpy` arrays. Rerun takes care of mapping those arrays to actual Rerun components depending on the context (e.g. we're calling [`rr.Points3D`](https://ref.rerun.io/docs/python/stable/common/archetypes/#rerun.archetypes.Points3D) in this case). @@ -286,7 +286,7 @@ Rerun offers several solutions for such use cases. ### Logging data over the network -At any time, you can start a Rerun Viewer by running `rerun`. This viewer is in fact a server that's ready to accept data over TCP (it's listening on `0.0.0.0:9876` by default). +At any time, you can start a Rerun Viewer by running `rerun`. This Viewer is in fact a server that's ready to accept data over TCP (it's listening on `0.0.0.0:9876` by default). On the logger side, simply use [`rr.connect`](https://ref.rerun.io/docs/python/stable/common/initialization_functions/#rerun.connect) instead of [`rr.spawn`](https://ref.rerun.io/docs/python/stable/common/initialization_functions/#rerun.spawn) to start sending the data over to any TCP address. diff --git a/docs/content/getting-started/data-in/rust.md b/docs/content/getting-started/data-in/rust.md index 222e5183bbc4d..dce8946990b0a 100644 --- a/docs/content/getting-started/data-in/rust.md +++ b/docs/content/getting-started/data-in/rust.md @@ -43,9 +43,9 @@ use rerun::{ }; ``` -## Starting the viewer +## Starting the Viewer -Just run `rerun` to start the [Rerun Viewer](../../reference/viewer/overview.md). It will wait for your application to log some data to it. This viewer is in fact a server that's ready to accept data over TCP (it's listening on `0.0.0.0:9876` by default). +Just run `rerun` to start the [Rerun Viewer](../../reference/viewer/overview.md). It will wait for your application to log some data to it. This Viewer is in fact a server that's ready to accept data over TCP (it's listening on `0.0.0.0:9876` by default). Checkout `rerun --help` for more options. @@ -61,7 +61,7 @@ Checkout `rerun --help` for more options. To get going we want to create a [`RecordingStream`](https://docs.rs/rerun/latest/rerun/struct.RecordingStream.html): We can do all of this with the [`rerun::RecordingStreamBuilder::new`](https://docs.rs/rerun/latest/rerun/struct.RecordingStreamBuilder.html#method.new) function which allows us to name the dataset we're working on by setting its [`ApplicationId`](https://docs.rs/rerun/latest/rerun/struct.ApplicationId.html). -We then connect it to the already running viewer via [`connect`](https://docs.rs/rerun/latest/rerun/struct.RecordingStreamBuilder.html#method.connect), returning the `RecordingStream` upon success. +We then connect it to the already running Viewer via [`connect`](https://docs.rs/rerun/latest/rerun/struct.RecordingStreamBuilder.html#method.connect), returning the `RecordingStream` upon success. ```rust fn main() -> Result<(), Box> { @@ -131,7 +131,7 @@ Under the hood, the Rerun [Rust SDK](https://ref.rerun.io/docs/rust) logs indivi and radii. Archetypes are just one high-level, convenient way of building such collections of components. For advanced use cases, it's possible to add custom components to archetypes, or even log entirely custom sets of components, bypassing archetypes altogether. -For more information on how the rerun data model works, refer to our section on [Entities and Components](../../concepts/entity-component.md). +For more information on how the Rerun data model works, refer to our section on [Entities and Components](../../concepts/entity-component.md). Notably, the [`RecordingStream::log`](https://docs.rs/rerun/latest/rerun/struct.RecordingStream.html#method.log) method @@ -341,10 +341,10 @@ You can also save a recording (or a portion of it) as you're visualizing it, dir ⚠️ [RRD files don't yet handle versioning!](https://github.com/rerun-io/rerun/issues/873) ⚠️ -### Spawning the viewer from your process +### Spawning the Viewer from your process -If the Rerun Viewer is [installed](../installing-viewer.md) and available in your `PATH`, you can use [`RecordingStream::spawn`](https://docs.rs/rerun/latest/rerun/struct.RecordingStream.html#method.spawn) to automatically start a viewer in a new process and connect to it over TCP. -If an external viewer was already running, `spawn` will connect to that one instead of spawning a new one. +If the Rerun Viewer is [installed](../installing-viewer.md) and available in your `PATH`, you can use [`RecordingStream::spawn`](https://docs.rs/rerun/latest/rerun/struct.RecordingStream.html#method.spawn) to automatically start a Viewer in a new process and connect to it over TCP. +If an external Viewer was already running, `spawn` will connect to that one instead of spawning a new one. ```rust fn main() -> Result<(), Box> { @@ -357,7 +357,7 @@ fn main() -> Result<(), Box> { } ``` -Alternatively, you can use [`rerun::native_viewer::show`](https://docs.rs/rerun/latest/rerun/native_viewer/fn.show.html) to start a viewer on the main thread (for platform-compatibility reasons) and feed it data from memory. +Alternatively, you can use [`rerun::native_viewer::show`](https://docs.rs/rerun/latest/rerun/native_viewer/fn.show.html) to start a Viewer on the main thread (for platform-compatibility reasons) and feed it data from memory. This requires the `native_viewer` feature to be enabled in `Cargo.toml`: ```toml @@ -376,7 +376,7 @@ let (rec, storage) = rerun::RecordingStreamBuilder::new("rerun_example_dna_abacu rerun::native_viewer::show(storage.take())?; ``` -The viewer will block the main thread until it is closed. +The Viewer will block the main thread until it is closed. ### Closing diff --git a/docs/content/getting-started/installing-viewer.md b/docs/content/getting-started/installing-viewer.md index f224ae489cd7d..985e7320b54ec 100644 --- a/docs/content/getting-started/installing-viewer.md +++ b/docs/content/getting-started/installing-viewer.md @@ -24,13 +24,13 @@ You'll additionally need to install the Viewer, see [below](#installing-the-view - `pip install rerun-sdk` via pip - `conda install -c conda-forge rerun-sdk` via Conda -Either way this includes both the SDK & the viewer and you're ready to go! +Either way this includes both the SDK & the Viewer and you're ready to go! ### Rust Add the [Rerun crate](https://crates.io/crates/rerun) using `cargo add rerun`. You'll additionally need to install the Viewer, see [below](#installing-the-viewer). -## Installing the viewer +## Installing the Viewer The [Viewer](../reference/viewer/overview.md) can be installed independent of the library language you're using. Make sure that your library version matches the version of the Viewer you're using. diff --git a/docs/content/getting-started/navigating-the-viewer.md b/docs/content/getting-started/navigating-the-viewer.md index 080e41865d464..b0953330ebef0 100644 --- a/docs/content/getting-started/navigating-the-viewer.md +++ b/docs/content/getting-started/navigating-the-viewer.md @@ -6,10 +6,10 @@ order: 500 This guide will familiarize you with the basics of using the Rerun Viewer with an example dataset. By the end you should be comfortable with the following topics: -- [Launching the demo](#launching-the-demo) -- [The viewer panels](#the-viewer-panels) -- [Exploring data](#exploring-data) -- [Navigating the timeline](#navigating-the-timeline) +* [Launching the demo](#launching-the-demo) +* [The Viewer panels](#the-viewer-panels) +* [Exploring data](#exploring-data) +* [Navigating the timeline](#navigating-the-timeline) Here is a preview of the dataset that we will be working with: @@ -75,7 +75,7 @@ Click on the "View Examples" button, and then chose the "Structure from Motion" Depending on your display size, the panels may have a different arrangements. This does not yet look like the initial preview, but the remainder of this guide will walk you through how to configure the Viewer to meet your needs. -## The viewer panels +## The Viewer panels There are 4 main parts to this window: @@ -197,7 +197,7 @@ playback the Rerun data as you might with a video file. Try out the following: -- Use the arrow buttons (or arrow keys on your keyboard) to step forward and backwards by a single frame +- Use the arrow buttons (or Arrow keys on your keyboard) to step forward and backwards by a single frame - Click play to watch the data update on its own - Hit space bar to stop and start the playback - Hold shift and drag in the timeline to select a region diff --git a/docs/content/getting-started/quick-start.md b/docs/content/getting-started/quick-start.md index ee1083987d328..7dc9f45ebdf5d 100644 --- a/docs/content/getting-started/quick-start.md +++ b/docs/content/getting-started/quick-start.md @@ -6,7 +6,7 @@ order: 200 Rerun is an SDK and engine for visualizing and interacting with multimodal data streams. -The primary way to get data into the Rerun viewer is to write code in +The primary way to get data into the Rerun Viewer is to write code in one of the supported languages. To learn more about installing Rerun and the basics of getting started, choose your language: diff --git a/docs/content/getting-started/quick-start/cpp.md b/docs/content/getting-started/quick-start/cpp.md index ca6a580ec582b..baafcbc5ad7d0 100644 --- a/docs/content/getting-started/quick-start/cpp.md +++ b/docs/content/getting-started/quick-start/cpp.md @@ -105,7 +105,7 @@ cmake --build build -j ./build/example_minimal ``` -Once everything finishes compiling, the application will spawn the rerun viewer and send the data to it: +Once everything finishes compiling, the application will spawn the Rerun Viewer and send the data to it: @@ -115,7 +115,7 @@ Once everything finishes compiling, the application will spawn the rerun viewer -## Using the viewer +## Using the Viewer Try out the following to interact with the viewer: diff --git a/docs/content/getting-started/quick-start/python.md b/docs/content/getting-started/quick-start/python.md index 0c051713e2094..c70a6d999e5f1 100644 --- a/docs/content/getting-started/quick-start/python.md +++ b/docs/content/getting-started/quick-start/python.md @@ -15,7 +15,7 @@ $ pip3 install rerun-sdk You are now ready to start logging and visualizing data. -## Trying out the viewer +## Trying out the Viewer Rerun comes packaged with integrated examples to make it easy to explore the viewer. Launch it with: @@ -55,7 +55,7 @@ would like._ - [open an issue](https://github.com/rerun-io/rerun/issues/new/choose). - Or [join the Discord server](https://discord.gg/PXtCgFBSmH). -## Using the viewer +## Using the Viewer Try out the following to interact with the viewer: @@ -75,7 +75,7 @@ more detail later in the [Viewer Walkthrough](../navigating-the-viewer.md) After exploring a built-in example, let's create some data ourselves. We will start with an extremely simplified version of this dataset that just logs 1 dimension of points instead of 3. -Create a new python script with the following code: +Create a new Python script with the following code: ```python import rerun as rr # NOTE: `rerun`, not `rerun-sdk`! diff --git a/docs/content/getting-started/quick-start/rust.md b/docs/content/getting-started/quick-start/rust.md index 217ae3674c344..45d1beb1a86a5 100644 --- a/docs/content/getting-started/quick-start/rust.md +++ b/docs/content/getting-started/quick-start/rust.md @@ -7,7 +7,7 @@ order: 3 The Rerun SDK for Rust requires a working installation of Rust 1.76+. -After you have [installed the viewer](../installing-viewer.md#installing-the-viewer) you can simply add [the rerun crate](https://crates.io/crates/rerun) to your project with `cargo add rerun`. +After you have [installed the viewer](../installing-viewer.md#installing-the-viewer) you can simply add [the Rerun crate](https://crates.io/crates/rerun) to your project with `cargo add rerun`. Let's try it out in a brand new Rust project: @@ -57,7 +57,7 @@ Once everything finishes compiling, you will see the points in the Rerun Viewer: -## Using the viewer +## Using the Viewer Try out the following to interact with the viewer: diff --git a/docs/content/getting-started/what-is-rerun.md b/docs/content/getting-started/what-is-rerun.md index bf6eac4e8aa50..949480a4af516 100644 --- a/docs/content/getting-started/what-is-rerun.md +++ b/docs/content/getting-started/what-is-rerun.md @@ -3,7 +3,7 @@ title: What is Rerun? order: 0 --- -Rerun is an SDK and viewer for visualizing and interacting with multimodal data streams. +Rerun is an SDK and Viewer for visualizing and interacting with multimodal data streams. The SDK lets you send data from anywhere, and the viewer, which consists of an in-memory database and a visualization engine, collects the data and aligns it so that you can scroll back and forth in time to understand what happened. diff --git a/docs/content/howto.md b/docs/content/howto.md index 30450315f36bd..b20aa50baa96f 100644 --- a/docs/content/howto.md +++ b/docs/content/howto.md @@ -4,7 +4,7 @@ order: 1 --- Guides for using Rerun in more advanced ways. - - [Configure the viewer through code](howto/configure-viewer-through-code.md) + - [Configure the Viewer through code](howto/configure-viewer-through-code.md) - [Create a fixed-window plot](howto/fixed-window-plot.md) - [Limit memory usage](howto/limit-ram.md) - [Share recordings across multiple processes](howto/shared-recordings.md) diff --git a/docs/content/howto/configure-viewer-through-code.md b/docs/content/howto/configure-viewer-through-code.md index 8664db4a3bd9f..624937df54f42 100644 --- a/docs/content/howto/configure-viewer-through-code.md +++ b/docs/content/howto/configure-viewer-through-code.md @@ -1,5 +1,5 @@ --- -title: Configure the viewer through code +title: Configure the Viewer through code order: 100 --- @@ -11,16 +11,16 @@ Future releases will add support for the full scope of blueprint. See issues: [# ## Blueprint API overview -All blueprint APIs are in the [`rerun.blueprint`](https://ref.rerun.io/docs/python/stable/common/blueprint_apis/) namespace. In our python examples, we typically import this using the `rrb` alias: +All blueprint APIs are in the [`rerun.blueprint`](https://ref.rerun.io/docs/python/stable/common/blueprint_apis/) namespace. In our Python examples, we typically import this using the `rrb` alias: ```python import rerun.blueprint as rrb ``` -The python blueprint API is declarative and object-centric. There are 3 main types of blueprint objects you will +The Python blueprint API is declarative and object-centric. There are 3 main types of blueprint objects you will encounter: -- `Blueprint`: The root object that represents the entire viewer layout. +- `Blueprint`: The root object that represents the entire Viewer layout. - `Container`: A layout object that contains other containers or views. - `SpaceView`: A view object that represents a single view of the data. @@ -30,7 +30,7 @@ Both containers and spaceviews should be used via typed subclasses instead.: - `SpaceView` has subclasses: `BarChartView`, `Spatial2DView`, `Spatial3DView`, `TensorView`, `TextDocumentView`, `TextLogView`, and `TimeSeriesView`. -These paths can be combined hierarchically to create a complex viewer layout. +These paths can be combined hierarchically to create a complex Viewer layout. For example: @@ -46,7 +46,7 @@ my_blueprint = rrb.Blueprint( ) ``` -## Sending the blueprint to the viewer +## Sending the blueprint to the Viewer To provide a blueprint, simply pass it to either `init` or `connect` using the `default_blueprint` parameter. @@ -73,7 +73,7 @@ rr.connect(default_blueprint=my_blueprint) ## Activating the default blueprint -Just like the viewer can store many different recordings internally, it can also +Just like the Viewer can store many different recordings internally, it can also store many different blueprints. For each `application_id` in the viewer, are two particularly important blueprints: the "default blueprint" and the "active blueprint". @@ -253,12 +253,12 @@ rrb.Blueprint( The blueprint has two additional parameters that influence the behavior of the viewer: -- `auto_space_views` controls whether the viewer will automatically create space views for entities that are not explicitly included in the blueprint. -- `auto_layout` controls whether the viewer should automatically layout the containers when introducing new space-views. +- `auto_space_views` controls whether the Viewer will automatically create space views for entities that are not explicitly included in the blueprint. +- `auto_layout` controls whether the Viewer should automatically layout the containers when introducing new space-views. If you pass in your own `SpaceView` or `Container` objects, these will both default to `False` so that the Blueprint you get is exactly what you specify. Otherwise they will default to `True` so that you will still get content (this -matches the default behavior of the viewer if no blueprint is provided). +matches the default behavior of the Viewer if no blueprint is provided). This means that: diff --git a/docs/content/howto/embed-rerun-viewer.md b/docs/content/howto/embed-rerun-viewer.md index 428af8305a713..3d8c461c5fe50 100644 --- a/docs/content/howto/embed-rerun-viewer.md +++ b/docs/content/howto/embed-rerun-viewer.md @@ -23,9 +23,9 @@ For instance: ``` -## Using the JavaScript Package +## Using the JavaScript package -We offer JavaScript bindings to the Rerun Viewer via NPM. This method provides control over the viewer but requires a JavaScript web application setup with a bundler. +We offer JavaScript bindings to the Rerun Viewer via NPM. This method provides control over the Viewer but requires a JavaScript web application setup with a bundler. Various packages are available: - [@rerun-io/web-viewer](https://www.npmjs.com/package/@rerun-io/web-viewer): Suitable for JS apps without a framework or frameworks without dedicated packages. @@ -33,7 +33,7 @@ Various packages are available: > ℹ️ Note: The stability of the `rrd` format is still evolving, so the package version corresponds to the supported Rerun SDK version. Therefore, `@rerun-io/web-viewer@0.10.0` can only connect to a data source (`.rrd` file, WebSocket connection, etc.) originating from a Rerun SDK with version `0.10.0`! -### Basic Example +### Basic example To begin, install the package ([@rerun-io/web-viewer](https://www.npmjs.com/package/@rerun-io/web-viewer)) from NPM: @@ -55,7 +55,7 @@ const viewer = new WebViewer(); await viewer.start(rrdUrl, parentElement); ``` -The viewer creates a `` on the provided `parentElement` and executes within it. +The Viewer creates a `` on the provided `parentElement` and executes within it. The first argument for `start` determines the recordings to open in the viewer. It can be: - `null` for an initially empty viewer diff --git a/docs/content/howto/extend/extend-ui.md b/docs/content/howto/extend/extend-ui.md index 5b3cae728e338..5e7272c3028ac 100644 --- a/docs/content/howto/extend/extend-ui.md +++ b/docs/content/howto/extend/extend-ui.md @@ -4,7 +4,7 @@ order: 2 description: How to extend the Rerun Viewer UI using Rust and egui --- -## Custom UI embedding the viewer +## Embedding custom UI in the Viewer ![The Rerun Viewer, extended with a custom panel to the right](https://github.com/rerun-io/rerun/assets/1148717/cbbad63e-9b18-4e54-bafe-b6ffd723f63e) diff --git a/docs/content/howto/limit-ram.md b/docs/content/howto/limit-ram.md index 52d49df008a97..c6c80264618f0 100644 --- a/docs/content/howto/limit-ram.md +++ b/docs/content/howto/limit-ram.md @@ -1,7 +1,7 @@ --- title: Limit memory usage order: 200 -description: How to limit the memory used by the Rerun viewer so that it doesn't run out of RAM. +description: How to limit the memory used by the Rerun Viewer so that it doesn't run out of RAM. --- ### --memory-limit diff --git a/docs/content/howto/notebook.md b/docs/content/howto/notebook.md index dc320b32047d7..321cf4f94dd6e 100644 --- a/docs/content/howto/notebook.md +++ b/docs/content/howto/notebook.md @@ -4,7 +4,7 @@ order: 600 description: How to embed Rerun in notebooks like Jupyter or Colab --- -Starting with version 0.15.1, Rerun has improved support for embedding the Rerun viewer directly within IPython-style +Starting with version 0.15.1, Rerun has improved support for embedding the Rerun Viewer directly within IPython-style notebooks. This makes it easy to iterate on API calls as well as to share data with others. Rerun has been tested with: @@ -20,7 +20,7 @@ When using the Rerun logging APIs, by default, the logged messages are buffered you send them to a sink such as via `rr.connect()` or `rr.save()`. When using Rerun in a notebook, rather than using the other sinks, you have the option to use a helper method: [`rr.notebook_show()`](https://ref.rerun.io/docs/python/stable/common/initialization_functions/#rerun.notebook_show). This method takes any buffered messages and converts them into an HTML snipped including -the inlined data along with an instance of the viewer in an iframe. +the inlined data along with an instance of the Viewer in an iframe. ## The APIs @@ -59,7 +59,7 @@ this memory buffer as the sink for future logging calls. Note that the output cell is essentially a fixed snapshot of the current state of the recording at the time that `notebook_show()` is called. Rerun does not yet -support live incremental streaming from the jupyter kernel into the embedded viewer. +support live incremental streaming from the Jupyter kernel into the embedded viewer. Messages will continue to be buffered incrementally, and each call to `notebook_show()` will display all messages that have been logged since the last call to `rr.init()`. @@ -72,7 +72,7 @@ The `notebook_show()` method also takes optional arguments for specifying the wi rr.notebook_show(width=400, height=400) ``` -## Working with Blueprints +## Working with blueprints [Blueprints](./configure-viewer-through-code.md) can also be used with `notebook_show()` by providing a `blueprint` parameter. @@ -148,7 +148,7 @@ After running this cell you will need to restart the Runtime for the Rerun packa ## Sharing your notebook -Because the Rerun viewer in the notebook is just an embedded HTML snippet it also works with +Because the Rerun Viewer in the notebook is just an embedded HTML snippet it also works with tools like nbconvert. You can convert the notebook to HTML using the following command: diff --git a/docs/content/howto/ros2-nav-turtlebot.md b/docs/content/howto/ros2-nav-turtlebot.md index 9e33bb160ecb9..dd585c39565df 100644 --- a/docs/content/howto/ros2-nav-turtlebot.md +++ b/docs/content/howto/ros2-nav-turtlebot.md @@ -2,11 +2,11 @@ title: Use Rerun with ROS 2 order: 500 ogImageUrl: /docs-media/og-howto-ros.jpg -description: Rerun does not yet have native ROS support, but many of the concepts in ROS and Rerun line up fairly well. In this guide, you will learn how to write a simple ROS 2 python node that subscribes to some common ROS topics and logs them to Rerun. +description: Rerun does not yet have native ROS support, but many of the concepts in ROS and Rerun line up fairly well. In this guide, you will learn how to write a simple ROS 2 Python node that subscribes to some common ROS topics and logs them to Rerun. --- Rerun does not yet have native ROS support, but many of the concepts in ROS and Rerun -line up fairly well. In this guide, you will learn how to write a simple ROS 2 python node +line up fairly well. In this guide, you will learn how to write a simple ROS 2 Python node that subscribes to some common ROS topics and logs them to Rerun. For information on future plans to enable more native ROS support @@ -60,7 +60,7 @@ running in the background for the remainder of the guide. ### Additional dependencies -The code for this guide is in the `rerun` repository. If you do not already have rerun cloned, +The code for this guide is in the `rerun` repository. If you do not already have Rerun cloned, you should do so now: ```bash @@ -102,7 +102,7 @@ You should see a window similar to: Initial window layout of Rerun 3D view of ROS 2 turtlebot3 navigation demo -Use rviz to send a new navigation goal and confirm that rerun updates with new data as turtlebot drives around +Use rviz to send a new navigation goal and confirm that Rerun updates with new data as turtlebot drives around the environment. ### Overview @@ -287,15 +287,15 @@ def image_callback(self, img: Image) -> None: The ROS [PointCloud2](https://github.com/ros2/common_interfaces/blob/humble/sensor_msgs/msg/PointCloud2.msg) message is stored as a binary blob that needs to be reinterpreted using the details about its fields. Each field is a named collection of offsets into the data buffer, and datatypes. The `sensor_msgs_py` package includes a `point_cloud2` -reader, which can be used to convert to a Rerun-compatible numpy array. +reader, which can be used to convert to a Rerun-compatible Numpy array. -These fields are initially returned as numpy structured arrays, whereas Rerun currently expects an unstructured +These fields are initially returned as Numpy structured arrays, whereas Rerun currently expects an unstructured array of Nx3 floats. Color is extracted in a similar way, although the realsense gazebo driver does not provide the correct offsets for the r,g,b channels, requiring us to patch the field values. -After extracting the positions and colors as numpy arrays, the entire cloud can be logged as a batch with `rr.Points3D` +After extracting the positions and colors as Numpy arrays, the entire cloud can be logged as a batch with `rr.Points3D` ```python def points_callback(self, points: PointCloud2) -> None: @@ -341,7 +341,7 @@ the sake of this demo, we wanted to instead log a laser scan as a bunch of lines in a similar fashion to how it is depicted in gazebo. We generate a second matching set of points for each ray projected out 0.3m from -the origin and then interlace the two sets of points using numpy hstack and reshape. +the origin and then interlace the two sets of points using Numpy hstack and reshape. This results in a set of alternating points defining rays from the origin to each laser scan result, which is the format expected by `rr.LineStrips3D`: @@ -403,7 +403,7 @@ its scale applied to it. This seems like a bug in either `yourdfpy` or `pycollad not respecting the scale hint. To accommodate this, we manually re-scale the camera link. -Once we have correctly re-scaled the camera component, we can send the whole scene to rerun with +Once we have correctly re-scaled the camera component, we can send the whole scene to Rerun with `rerun_urdf.log_scene`. ```python diff --git a/docs/content/howto/short-lived-entities.md b/docs/content/howto/short-lived-entities.md index b7fbe47dc5203..42177d77c480b 100644 --- a/docs/content/howto/short-lived-entities.md +++ b/docs/content/howto/short-lived-entities.md @@ -44,7 +44,7 @@ for frame in sensors.read(): # same frequency as the input data and thus look strange rr.log("input/detections", rr.Rect2D(detection.bounds)) ``` -You could fix this example by logging `rr.Clear`, but in this case it makes more sense to change what you log to better express what is happening. Re-logging the image to another namespace on only the frames where the detection runs makes it explicit which frame was used as the input to the detector. This will create a second view in the viewer that always allows you to see the frame that was used for the current detection input. +You could fix this example by logging `rr.Clear`, but in this case it makes more sense to change what you log to better express what is happening. Re-logging the image to another namespace on only the frames where the detection runs makes it explicit which frame was used as the input to the detector. This will create a second view in the Viewer that always allows you to see the frame that was used for the current detection input. Here is an example fix: ```python diff --git a/docs/content/reference/about.md b/docs/content/reference/about.md index 96e6c76192178..7b48f5d688e51 100644 --- a/docs/content/reference/about.md +++ b/docs/content/reference/about.md @@ -20,8 +20,8 @@ We depend on a number of third party libraries, most notably: * [Apache Arrow](https://arrow.apache.org/) for our data store * [wgpu](https://wgpu.rs/) for rendering * [egui](https://github.com/emilk/egui) for UI -* [PyO3](https://github.com/PyO3/pyo3) for python bindings +* [PyO3](https://github.com/PyO3/pyo3) for Python bindings -If you want to learn more about the different parts of the SDK & viewer and how they work, check out +If you want to learn more about the different parts of the SDK & Viewer and how they work, check out [this architecture overview](https://github.com/rerun-io/rerun/blob/latest/ARCHITECTURE.md) for an introduction. diff --git a/docs/content/reference/data-loaders/overview.md b/docs/content/reference/data-loaders/overview.md index 0426c523f1324..d5db0c03a997e 100644 --- a/docs/content/reference/data-loaders/overview.md +++ b/docs/content/reference/data-loaders/overview.md @@ -37,7 +37,7 @@ The Rerun Viewer/SDK will then automatically load the data streamed to the exter Like any other `DataLoader`, an external loader will be notified of all file openings, unconditionally. To indicate that it does not support a given file, the loader has to exit with a [dedicated status code](https://docs.rs/rerun/latest/rerun/constant.EXTERNAL_DATA_LOADER_INCOMPATIBLE_EXIT_CODE.html). -When the viewer and/or SDK executes an external loader, it will pass to it a set of recommended settings in the form of CLI parameters (in addition to the file path to be loaded, which is passed as the one and only positional argument): +When the Viewer and/or SDK executes an external loader, it will pass to it a set of recommended settings in the form of CLI parameters (in addition to the file path to be loaded, which is passed as the one and only positional argument): * `--application-id ` diff --git a/docs/content/reference/entity-queries.md b/docs/content/reference/entity-queries.md index 4a86288f256e3..958858d845426 100644 --- a/docs/content/reference/entity-queries.md +++ b/docs/content/reference/entity-queries.md @@ -44,7 +44,7 @@ Consider the following example: - The last rule matching `/world` is `- /world`, so it is excluded. - The last rule matching `/world/house` is `+ /world/**`, so it is included. -## In the viewer +## In the Viewer In the viewer, an entity query is typically displayed as a multi-line edit box, with each query expression shown on its own line. You can find the diff --git a/docs/content/reference/migration/migration-0-13.md b/docs/content/reference/migration/migration-0-13.md index bc1f9ac2b619c..1f62440f0286a 100644 --- a/docs/content/reference/migration/migration-0-13.md +++ b/docs/content/reference/migration/migration-0-13.md @@ -16,7 +16,7 @@ line series via [SeriesLine](../types/archetypes/series_line.md). ## Changes in space view creation heuristics -The overhaul of automatic Space View creation makes the viewer faster and +The overhaul of automatic Space View creation makes the Viewer faster and more predictable but comes with a few changes on how paths are expected to be structured: * When working with images of different resolutions, the image entities will end up defining the root of the created spaces. diff --git a/docs/content/reference/roadmap.md b/docs/content/reference/roadmap.md index 24547d74dcb52..d676b33245726 100644 --- a/docs/content/reference/roadmap.md +++ b/docs/content/reference/roadmap.md @@ -16,12 +16,12 @@ This page is meant to give an high level overview of ongoing and planned work. ## Roadmap of major feature areas -### Early April 2024: Release 0.15 +### Early April 2024: release 0.15 - Layout and viewport content from code (blueprint part 1) - Data-loader plugins callable from the SDK - Linux ARM64 support in pre-built artifacts -### Near term: Now - end of Q2 2024 +### Near term: now - end of Q2 2024 - Property overrides from code (blueprint part 2) - Includes setting visible time range from code - Broader coverage of robotics and spatial computing data types diff --git a/docs/content/reference/sdk-operating-modes.md b/docs/content/reference/sdk-operating-modes.md index 45d048a61e831..72ebf64199470 100644 --- a/docs/content/reference/sdk-operating-modes.md +++ b/docs/content/reference/sdk-operating-modes.md @@ -3,7 +3,7 @@ title: SDK Operating Modes order: 800 --- -There are many different ways of sending data to the Rerun Viewer depending on what you're trying to achieve and whether the viewer is running in the same process as your code, in another process, or even as a separate web application. +There are many different ways of sending data to the Rerun Viewer depending on what you're trying to achieve and whether the Viewer is running in the same process as your code, in another process, or even as a separate web application. In the [official examples](/examples), these different modes of operation are exposed via a standardized set of flags that we'll cover below. We will also demonstrate how you can achieve the same behavior in your own code. @@ -19,20 +19,20 @@ All four of them are optional: when none of these modes are active, the client w This is the default behavior you get when running all of our C++/Python/Rust examples, and is generally the most convenient when you're experimenting. #### C++ -`RecordingStream::spawn` spawns a new Rerun Viewer process using an executable available in your PATH, then streams all the data to it via TCP. If an external viewer was already running, `spawn` will connect to that one instead of spawning a new one. +`RecordingStream::spawn` spawns a new Rerun Viewer process using an executable available in your PATH, then streams all the data to it via TCP. If an external Viewer was already running, `spawn` will connect to that one instead of spawning a new one. #### Python -Call [`rr.spawn`](https://ref.rerun.io/docs/python/stable/common/initialization_functions/#rerun.spawn) once at the start of your program to start a Rerun Viewer in an external process and stream all the data to it via TCP. If an external viewer was already running, `spawn` will connect to that one instead of spawning a new one. +Call [`rr.spawn`](https://ref.rerun.io/docs/python/stable/common/initialization_functions/#rerun.spawn) once at the start of your program to start a Rerun Viewer in an external process and stream all the data to it via TCP. If an external Viewer was already running, `spawn` will connect to that one instead of spawning a new one. #### Rust -[`RecordingStream::spawn`](https://docs.rs/rerun/latest/rerun/struct.RecordingStream.html#method.spawn) spawns a new Rerun Viewer process using an executable available in your PATH, then streams all the data to it via TCP. If an external viewer was already running, `spawn` will connect to that one instead of spawning a new one. +[`RecordingStream::spawn`](https://docs.rs/rerun/latest/rerun/struct.RecordingStream.html#method.spawn) spawns a new Rerun Viewer process using an executable available in your PATH, then streams all the data to it via TCP. If an external Viewer was already running, `spawn` will connect to that one instead of spawning a new one. ## Connect Connects to a remote Rerun Viewer and streams all the data via TCP. -You will need to start a stand-alone viewer first by typing `rerun` in your terminal. +You will need to start a stand-alone Viewer first by typing `rerun` in your terminal. #### C++ `RecordingStream::connect` diff --git a/docs/content/reference/types/datatypes/class_description.md b/docs/content/reference/types/datatypes/class_description.md index e256dc09b6f97..9c34c8c2e856c 100644 --- a/docs/content/reference/types/datatypes/class_description.md +++ b/docs/content/reference/types/datatypes/class_description.md @@ -4,7 +4,7 @@ title: "ClassDescription" The description of a semantic Class. -If an entity is annotated with a corresponding `ClassId`, rerun will use +If an entity is annotated with a corresponding `ClassId`, Rerun will use the attached `AnnotationInfo` to derive labels and colors. Keypoints within an annotation class can similarly be annotated with a diff --git a/docs/content/reference/types/datatypes/quaternion.md b/docs/content/reference/types/datatypes/quaternion.md index 768313a04eaf0..d3d0c42376dab 100644 --- a/docs/content/reference/types/datatypes/quaternion.md +++ b/docs/content/reference/types/datatypes/quaternion.md @@ -5,7 +5,7 @@ title: "Quaternion" A Quaternion represented by 4 real numbers. Note: although the x,y,z,w components of the quaternion will be passed through to the -datastore as provided, when used in the viewer Quaternions will always be normalized. +datastore as provided, when used in the Viewer Quaternions will always be normalized. ## Fields diff --git a/docs/content/reference/viewer/overview.md b/docs/content/reference/viewer/overview.md index 2bc57a519ac0b..48a960996d081 100644 --- a/docs/content/reference/viewer/overview.md +++ b/docs/content/reference/viewer/overview.md @@ -4,15 +4,15 @@ order: 0 --- The following sections give an overview of the basic ui concepts and where to find which functionality. -Generally, the viewer tries to be as self-explaining as possible - most items in the ui show a tooltip upon hovering which should give additional information. +Generally, the Viewer tries to be as self-explaining as possible - most items in the ui show a tooltip upon hovering which should give additional information. If you are missing a piece of information, don't hesitate to [file an issue](https://github.com/rerun-io/rerun/issues/new/choose)! Overview -------------------------- -![screenshot of the viewer with different parts annotated](https://static.rerun.io/a5e708e4bbd2c0b182f7f9103ab42c85e55f8982_viewer-overview.png) +![screenshot of the Viewer with different parts annotated](https://static.rerun.io/a5e708e4bbd2c0b182f7f9103ab42c85e55f8982_viewer-overview.png) ### [Blueprint](blueprint.md) -The Blueprint view is where you see and edit the Blueprint for the whole viewer, i.e. what is shown in the viewer (and how it is shown). +The Blueprint view is where you see and edit the Blueprint for the whole viewer, i.e. what is shown in the Viewer (and how it is shown). ### [Selection](selection.md) The Selection view let's you see details and edit configurations of the current selection(s). diff --git a/docs/content/reference/viewer/viewport.md b/docs/content/reference/viewer/viewport.md index d10517cf3944b..891d3f2f2e852 100644 --- a/docs/content/reference/viewer/viewport.md +++ b/docs/content/reference/viewer/viewport.md @@ -45,4 +45,4 @@ Rerun distinguishes various Space Views classes: Which class is used is determined upon creation of a Space View. The Space View class determines which Entities it can display, how it displays them and the way they can be interacted with. -To learn more about the _internals_ of how Space View classes work, check the [guide on viewer extensions](../../howto/extend.md). +To learn more about the _internals_ of how Space View classes work, check the [guide on Viewer extensions](../../howto/extend.md). diff --git a/examples/c/spawn_viewer/README.md b/examples/c/spawn_viewer/README.md index 348e018aee117..3c2f034e6a401 100644 --- a/examples/c/spawn_viewer/README.md +++ b/examples/c/spawn_viewer/README.md @@ -1,5 +1,5 @@ diff --git a/examples/cpp/spawn_viewer/README.md b/examples/cpp/spawn_viewer/README.md index 585ee37133a7f..03f8047861b32 100644 --- a/examples/cpp/spawn_viewer/README.md +++ b/examples/cpp/spawn_viewer/README.md @@ -1,5 +1,5 @@ diff --git a/examples/python/README.md b/examples/python/README.md index f563175b4501e..e0302b57c2b0a 100644 --- a/examples/python/README.md +++ b/examples/python/README.md @@ -21,7 +21,7 @@ pip install -e examples/python/minimal **Note**: it is import to install example in editable mode, which is done using the `-e` flag (short for `--editable`). -Once installed, the example can be run as a regular python module: +Once installed, the example can be run as a regular Python module: ```shell python -m minimal @@ -43,11 +43,11 @@ For most examples you can instead save the log data to an `.rrd` file using `plo NOTE: `.rrd` files do not yet guarantee any backwards or forwards compatibility. One version of Rerun will likely not be able to open an `.rrd` file generated by another Rerun version. -## Running examples with pixi +## Running examples with Pixi -The Rerun project makes extensive use of [pixi](https://pixi.sh/latest/) for various developer tasks, and pixi can be used to run examples as well. For this, you need to install pixi as per the installation instructions on their website. +The Rerun project makes extensive use of [pixi](https://pixi.sh/latest/) for various developer tasks, and Pixi can be used to run examples as well. For this, you need to install Pixi as per the installation instructions on their website. -Then, install a suitable version of the Rerun SDK in the pixi environment. For the Rerun examples, the `examples` environment must be used, which is why the following commands all include `-e examples`. +Then, install a suitable version of the Rerun SDK in the Pixi environment. For the Rerun examples, the `examples` environment must be used, which is why the following commands all include `-e examples`. For the released version of the SDK, use: ```shell diff --git a/examples/python/_empty_rerun_sdk/README.md b/examples/python/_empty_rerun_sdk/README.md index 213f2d0c31914..92c4bb6428ead 100644 --- a/examples/python/_empty_rerun_sdk/README.md +++ b/examples/python/_empty_rerun_sdk/README.md @@ -2,4 +2,4 @@ This is fake, empty `rerun-sdk` package used as a (default) dependency in our `pixi.toml`. -TODO(ab): cleanup when pixi fixes https://github.com/prefix-dev/pixi/issues/1233 +TODO(ab): cleanup when Pixi fixes https://github.com/prefix-dev/pixi/issues/1233 diff --git a/examples/python/all_examples/README.md b/examples/python/all_examples/README.md index 1c7caa2d72b19..01ff9d01625db 100644 --- a/examples/python/all_examples/README.md +++ b/examples/python/all_examples/README.md @@ -1,8 +1,8 @@ -# Example meta-project +## Example meta-project TODO(ab): this is largely WIP with unclear path to actual usefulness. -## Dynamically depend on all examples +### Dynamically depend on all examples This project dynamically depend on all examples. @@ -24,11 +24,11 @@ uv pip install -e path/to/rerun/examples/python/all_examples # ok?? The dynamic dependency list is achieved in `hatch_build.py`, which is registered as a hook. This hook adds [environment marker](https://packaging.python.org/en/latest/specifications/dependency-specifiers/#environment-markers) to mark Python version or platform restrictions. -## List examples +### List examples Running `python -m all_examples list` prints a list of all examples, suitable for copy-pasting to the `pixi.toml` file. -## Configuration +### Configuration `all_examples` can be configured via the `[tool.rerun-example]` table from the `pyproject.toml` file. It currently supports the following parameters: diff --git a/examples/python/arkit_scenes/README.md b/examples/python/arkit_scenes/README.md index 3a1764f9d35dc..767a12e66310f 100644 --- a/examples/python/arkit_scenes/README.md +++ b/examples/python/arkit_scenes/README.md @@ -73,14 +73,6 @@ for i, label_info in enumerate(annotation["data"]): timeless=True, ) ``` - - ### Setting up the default blueprint @@ -121,7 +113,6 @@ In particular, we want to reproject 3D annotations onto the 2D camera views. To To run this example, make sure you have the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun diff --git a/examples/python/clock/README.md b/examples/python/clock/README.md index d1d318efb23fd..9e9fa236144c8 100644 --- a/examples/python/clock/README.md +++ b/examples/python/clock/README.md @@ -16,11 +16,11 @@ thumbnail_dimensions = [480, 480] An example visualizing an analog clock with hour, minute and seconds hands using Rerun Arrow3D primitives. -# Used Rerun types +## Used Rerun types [`Boxes3D`](https://www.rerun.io/docs/reference/types/archetypes/boxes3d), [`Points3D`](https://www.rerun.io/docs/reference/types/archetypes/points3d), [`Arrows3D`](https://www.rerun.io/docs/reference/types/archetypes/arrows3d) -# Logging and visualizing with Rerun +## Logging and visualizing with Rerun The visualizations in this example were created with the following Rerun code: @@ -54,10 +54,9 @@ for step in range(steps): rr.log("world/hours_hand", rr.Arrows3D(vectors=point_h, colors=color_h, radii=WIDTH_H)) ``` -# Run the code +## Run the code To run this example, make sure you have the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun diff --git a/examples/python/controlnet/README.md b/examples/python/controlnet/README.md index b579d47b79ab1..a330765676ccc 100644 --- a/examples/python/controlnet/README.md +++ b/examples/python/controlnet/README.md @@ -68,7 +68,6 @@ Finally we log the output image generated by ControlNet. To run this example, make sure you have the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun diff --git a/examples/python/depth_guided_stable_diffusion/README.md b/examples/python/depth_guided_stable_diffusion/README.md index 1fb459e2d510c..ec1f6651a9431 100644 --- a/examples/python/depth_guided_stable_diffusion/README.md +++ b/examples/python/depth_guided_stable_diffusion/README.md @@ -83,7 +83,6 @@ rr.log("image/diffused", rr.Image(image_8)) To run this example, make sure you have the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun diff --git a/examples/python/detect_and_track_objects/README.md b/examples/python/detect_and_track_objects/README.md index 79dfffe86c899..bbb2acf76b935 100644 --- a/examples/python/detect_and_track_objects/README.md +++ b/examples/python/detect_and_track_objects/README.md @@ -146,12 +146,11 @@ def main() -> None: setup_logging() # setup logging track_objects(video_path, max_frame_count=args.max_frame) # start tracking ``` -In the viewer you can adjust the filter level and look at the messages time-synchronized with respect to other logged data. +In the Viewer you can adjust the filter level and look at the messages time-synchronized with respect to other logged data. ## Run the code To run this example, make sure you have the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun diff --git a/examples/python/dicom_mri/README.md b/examples/python/dicom_mri/README.md index ccd191240180d..81e61a3f832c5 100644 --- a/examples/python/dicom_mri/README.md +++ b/examples/python/dicom_mri/README.md @@ -32,7 +32,7 @@ rr.log("tensor", rr.Tensor(voxels_volume_u16, dim_names=["right", "back", "up"]) A `numpy.array` named `voxels_volume_u16` representing volumetric MRI intensities with a shape of `(512, 512, 512)`. To visualize this data effectively in Rerun, we can log the `numpy.array` as [`Tensor`](https://www.rerun.io/docs/reference/types/archetypes/tensor) to the `tensor` entity. -In the Rerun viewer you can also inspect the data in detail. The `dim_names` provided in the above call to `rr.log` help to +In the Rerun Viewer you can also inspect the data in detail. The `dim_names` provided in the above call to `rr.log` help to give semantic meaning to each axis. After selecting the tensor view, you can adjust various settings in the Blueprint settings on the right-hand side. For example, you can adjust the color map, the brightness, which dimensions to show as an image and which to select from, and more. @@ -40,7 +40,6 @@ an image and which to select from, and more. ## Run the code To run this example, make sure you have the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun diff --git a/examples/python/face_tracking/README.md b/examples/python/face_tracking/README.md index 9380de046fd8c..8b173a8bfd187 100644 --- a/examples/python/face_tracking/README.md +++ b/examples/python/face_tracking/README.md @@ -172,7 +172,6 @@ for blendshape in blendshapes: ## Run the code To run this example, make sure you have the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun diff --git a/examples/python/gesture_detection/README.md b/examples/python/gesture_detection/README.md index 61a5203bf0231..aab44d7cc1c66 100644 --- a/examples/python/gesture_detection/README.md +++ b/examples/python/gesture_detection/README.md @@ -16,7 +16,7 @@ track hands and recognize gestures in images, video, and camera stream. -## Used rerun types +## Used Rerun types [`Image`](https://www.rerun.io/docs/reference/types/archetypes/image), [`Points2D`](https://www.rerun.io/docs/reference/types/archetypes/points2d), [`Points3D`](https://www.rerun.io/docs/reference/types/archetypes/points3d), [`LineStrips2D`](https://www.rerun.io/docs/reference/types/archetypes/line_strips2d), [`ClassDescription`](https://www.rerun.io/docs/reference/types/datatypes/class_description), [`AnnotationContext`](https://www.rerun.io/docs/reference/types/archetypes/annotation_context), [`TextDocument`](https://www.rerun.io/docs/reference/types/archetypes/text_document) ## Background @@ -80,14 +80,14 @@ rr.log("Hand3D", rr.ViewCoordinates.LEFT_HAND_Y_DOWN, static=True) #### 2D points ```python -# Log points to the image and Hand Entity +# Log points to the image and Hand entity for log_key in ["Media/Points", "Hand/Points"]: rr.log( log_key, rr.Points2D(points, radii=10, colors=[255, 0, 0]) ) -# Log connections to the image and Hand Entity [128, 128, 128] +# Log connections to the image and Hand entity [128, 128, 128] for log_key in ["Media/Connections", "Hand/Connections"]: rr.log( log_key, @@ -124,7 +124,6 @@ rr.log( ## Run the code To run this example, make sure you have the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun diff --git a/examples/python/human_pose_tracking/README.md b/examples/python/human_pose_tracking/README.md index 57c4f56275642..0578cb7a7c63b 100644 --- a/examples/python/human_pose_tracking/README.md +++ b/examples/python/human_pose_tracking/README.md @@ -129,7 +129,6 @@ rr.log( To run this example, make sure you have the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun diff --git a/examples/python/lidar/README.md b/examples/python/lidar/README.md index b7097a6eaa5ac..7fee9d82c5617 100644 --- a/examples/python/lidar/README.md +++ b/examples/python/lidar/README.md @@ -41,7 +41,6 @@ In the following code, we first establish the desired time frame and then procee ## Run the code To run this example, make sure you have the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun diff --git a/examples/python/live_camera_edge_detection/README.md b/examples/python/live_camera_edge_detection/README.md index 3fc0b64d5635c..98e8259dff47e 100644 --- a/examples/python/live_camera_edge_detection/README.md +++ b/examples/python/live_camera_edge_detection/README.md @@ -57,7 +57,6 @@ rr.log("image/canny", rr.Image(canny)) ## Run the code To run this example, make sure you have the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun diff --git a/examples/python/live_depth_sensor/README.md b/examples/python/live_depth_sensor/README.md index 5833128ec7ade..515fdb380685e 100644 --- a/examples/python/live_depth_sensor/README.md +++ b/examples/python/live_depth_sensor/README.md @@ -94,7 +94,6 @@ rr.log("realsense/depth/image", rr.DepthImage(depth_image, meter=1.0 / depth_uni ## Run the code To run this example, make sure you have the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun diff --git a/examples/python/live_scrolling_plot/README.md b/examples/python/live_scrolling_plot/README.md index 277455419ed79..d6e2f80c861e8 100644 --- a/examples/python/live_scrolling_plot/README.md +++ b/examples/python/live_scrolling_plot/README.md @@ -1,5 +1,5 @@ -Demonstrates how rerun can work with the python `multiprocessing` library. +Demonstrates how Rerun can work with the Python `multiprocessing` library. @@ -15,10 +15,10 @@ Demonstrates how rerun can work with the python `multiprocessing` library. -# Used Rerun types +## Used Rerun types [`Boxes2D`](https://www.rerun.io/docs/reference/types/archetypes/boxes2d), [`TextLog`](https://www.rerun.io/docs/reference/types/archetypes/text_log) -# Logging and visualizing with Rerun +## Logging and visualizing with Rerun This example demonstrates how to use the Rerun SDK with `multiprocessing` to log data from multiple processes to the same Rerun viewer. It starts with the definition of the function for logging, the `task`, followed by typical usage of Python's `multiprocessing` library. @@ -51,7 +51,7 @@ def task(child_index: int) -> None: ) ``` -The main function initializes rerun with a specific application ID and manages the multiprocessing processes for logging data to the Rerun viewer. +The main function initializes Rerun with a specific application ID and manages the multiprocessing processes for logging data to the Rerun viewer. > Caution: Ensure that the `recording id` specified in the main function matches the one used in the logging functions ```python @@ -59,7 +59,7 @@ def main() -> None: # … existing code … rr.init("rerun_example_multiprocessing") - rr.spawn(connect=False) # this is the viewer that each child process will connect to + rr.spawn(connect=False) # this is the Viewer that each child process will connect to task(0) @@ -69,10 +69,9 @@ def main() -> None: p.join() ``` -# Run the code +## Run the code To run this example, make sure you have the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun diff --git a/examples/python/multithreading/README.md b/examples/python/multithreading/README.md index bc6142c282a21..223abd17507c9 100644 --- a/examples/python/multithreading/README.md +++ b/examples/python/multithreading/README.md @@ -15,10 +15,10 @@ Demonstration of logging to Rerun from multiple threads. Multithreading example screenshot -# Used Rerun types +## Used Rerun types [`Boxes2D`](https://www.rerun.io/docs/reference/types/archetypes/boxes2d) -# Logging and visualizing with Rerun +## Logging and visualizing with Rerun This example showcases logging from multiple threads, starting with the definition of the function for logging, the `rect_logger`, followed by typical usage of Python's `threading` module in the main function. ```python @@ -48,10 +48,9 @@ def main() -> None: # … existing code … ``` -# Run the code +## Run the code To run this example, make sure you have the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun diff --git a/examples/python/notebook/README.md b/examples/python/notebook/README.md index 039e2ece8f668..42e6a3dd84282 100644 --- a/examples/python/notebook/README.md +++ b/examples/python/notebook/README.md @@ -1,10 +1,10 @@ -# Overview +## Overview Rerun has limited support for direct embedding within a [Jupyter](https://jupyter.org/) notebook. Many additional environments beyond Jupyter are supported such as [Google Colab](https://colab.research.google.com/) or [VSCode](https://code.visualstudio.com/blogs/2021/08/05/notebooks). -In order to show a rerun viewer inline within the notebook, you can call: +In order to show a Rerun Viewer inline within the notebook, you can call: ```python rr.init("rerun_example_notebook") @@ -28,7 +28,7 @@ rec.log(...) rr.notebook_show(recording=rec) ``` -# Running in Jupyter +## Running in Jupyter The easiest way to get a feel for working with notebooks is to use it: diff --git a/examples/python/nuscenes_dataset/README.md b/examples/python/nuscenes_dataset/README.md index dc2c20bea7f81..cd1b5899e310e 100644 --- a/examples/python/nuscenes_dataset/README.md +++ b/examples/python/nuscenes_dataset/README.md @@ -135,7 +135,6 @@ We programmatically create one view per sensor and arrange them in a grid layout ## Run the code To run this example, make sure you have Python version at least 3.9, the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun diff --git a/examples/python/objectron/README.md b/examples/python/objectron/README.md index fa2d86ba56456..38492e1b80300 100644 --- a/examples/python/objectron/README.md +++ b/examples/python/objectron/README.md @@ -3,7 +3,7 @@ title = "Objectron" tags = ["2D", "3D", "Object detection", "Pinhole camera", "Blueprint"] thumbnail = "https://static.rerun.io/objectron/b645ef3c8eff33fbeaefa6d37e0f9711be15b202/480w.png" thumbnail_dimensions = [480, 480] -# channel = "release" - Disabled because it sometimes have bad first-frame heuristics +# Channel = "release" - disabled because it sometimes have bad first-frame heuristics build_args = ["--frames=150"] --> @@ -109,7 +109,6 @@ In particular, we want to reproject the points and the 3D annotation box in the ## Run the code To run this example, make sure you have Python version at least 3.9, the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun diff --git a/examples/python/open_photogrammetry_format/README.md b/examples/python/open_photogrammetry_format/README.md index 7fc6b4dca9bc6..88a174f7810d7 100644 --- a/examples/python/open_photogrammetry_format/README.md +++ b/examples/python/open_photogrammetry_format/README.md @@ -1,5 +1,5 @@ -A minimal example of creating a ROS node that subscribes to topics and converts the messages to rerun log calls. +A minimal example of creating a ROS node that subscribes to topics and converts the messages to Rerun log calls. The solution here is mostly a toy example to show how ROS concepts can be mapped to Rerun. @@ -17,23 +17,23 @@ The solution here is mostly a toy example to show how ROS concepts can be mapped -# Used Rerun types +## Used Rerun types [`Image`](https://www.rerun.io/docs/reference/types/archetypes/image), [`Pinhole`](https://www.rerun.io/docs/reference/types/archetypes/pinhole), [`Transform3D`](https://www.rerun.io/docs/reference/types/archetypes/transform3d), [`Boxes3D`](https://www.rerun.io/docs/reference/types/archetypes/boxes3d), [`Points3D`](https://www.rerun.io/docs/reference/types/archetypes/points3d), [`LineStrips3D`](https://www.rerun.io/docs/reference/types/archetypes/line_strips3d), [`Scalar`](https://www.rerun.io/docs/reference/types/archetypes/scalar) -# Background +## Background The [Robot Operating System (ROS)](https://www.ros.org) helps build robot applications through software libraries and tools. Although Rerun doesn't have native ROS support, you can easily create a basic ROS 2 Python node to subscribe to common ROS topics and log them to Rerun. In this example, Rerun visualizes simulation data, including robot pose, images, camera position, laser scans, point clouds, and velocities, as the [Turtlebot](http://wiki.ros.org/turtlebot3) navigates the environment. -# Logging and visualizing with Rerun +## Logging and visualizing with Rerun Find the detailed code walkthrough and explanation for visualizing this example here: [Using Rerun with ROS 2](https://www.rerun.io/docs/howto/ros2-nav-turtlebot). For more information on future improved ROS support, see tracking issue: [#1527](https://github.com/rerun-io/rerun/issues/1537) -# Run the code +## Run the code -## Dependencies +### Dependencies > NOTE: Unlike many of the other examples, this example requires a system installation of ROS in addition to the packages from requirements.txt. @@ -48,7 +48,6 @@ sudo apt install ros-humble-desktop gazebo ros-humble-navigation2 ros-humble-tur Make sure you have the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun @@ -66,7 +65,7 @@ source venv/bin/active source /opt/ros/humble/setup.bash ``` -## Run the code +### Run the code First, in one terminal launch the nav2 turtlebot demo: ``` diff --git a/examples/python/rrt_star/README.md b/examples/python/rrt_star/README.md index 7744880ffa2ee..6dd5a8f7ec8ec 100644 --- a/examples/python/rrt_star/README.md +++ b/examples/python/rrt_star/README.md @@ -16,10 +16,10 @@ This example visualizes the path finding algorithm RRT\* in a simple environment -# Used Rerun types +## Used Rerun types [`LineStrips2D`](https://www.rerun.io/docs/reference/types/archetypes/line_strips2d), [`Points2D`](https://www.rerun.io/docs/reference/types/archetypes/points2d), [`TextDocument`](https://www.rerun.io/docs/reference/types/archetypes/text_document) -# Background +## Background The algorithm finds a path between two points by randomly expanding a tree from the start point. After it has added a random edge to the tree it looks at nearby nodes to check if it's faster to reach them through this new edge instead, and if so it changes the parent of these nodes. This ensures that the algorithm will converge to the optimal path given enough time. @@ -29,77 +29,76 @@ Karaman, S. Frazzoli, S. 2011. "Sampling-based algorithms for optimal motion pla or in [this medium article](https://theclassytim.medium.com/robotic-path-planning-rrt-and-rrt-212319121378) -# Logging and visualizing with Rerun +## Logging and visualizing with Rerun All points are logged using the [`Points2D`](https://www.rerun.io/docs/reference/types/archetypes/points2d) archetype, while the lines are logged using the LineStrips2D [`LineStrips2D`](https://www.rerun.io/docs/reference/types/archetypes/line_strips2d). The visualizations in this example were created with the following Rerun code: -## Map +### Map -### Starting point +#### Starting point ```python rr.log("map/start", rr.Points2D([start_point], radii=0.02, colors=[[255, 255, 255, 255]])) ``` -### Destination point +#### Destination point ```python rr.log("map/destination", rr.Points2D([end_point], radii=0.02, colors=[[255, 255, 0, 255]])) ``` -### Obstacles +#### Obstacles ```python rr.log("map/obstacles", rr.LineStrips2D(self.obstacles)) ``` -## RRT tree +### RRT tree -### Edges +#### Edges ```python rr.log("map/tree/edges", rr.LineStrips2D(tree.segments(), radii=0.0005, colors=[0, 0, 255, 128])) ``` -### New edges +#### New edges ```python rr.log("map/new/new_edge", rr.LineStrips2D([(closest_node.pos, new_point)], colors=[color], radii=0.001)) ``` -### Vertices +#### Vertices ```python rr.log("map/tree/vertices", rr.Points2D([node.pos for node in tree], radii=0.002), rr.AnyValues(cost=[float(node.cost) for node in tree])) ``` -### Close nodes +#### Close nodes ```python rr.log("map/new/close_nodes", rr.Points2D([node.pos for node in close_nodes])) ``` -### Closest node +#### Closest node ```python rr.log("map/new/closest_node", rr.Points2D([closest_node.pos], radii=0.008)) ``` -### Random points +#### Random points ```python rr.log("map/new/random_point", rr.Points2D([random_point], radii=0.008)) ``` -### New points +#### New points ```python rr.log("map/new/new_point", rr.Points2D([new_point], radii=0.008)) ``` -### Path +#### Path ```python rr.log("map/path", rr.LineStrips2D(segments, radii=0.002, colors=[0, 255, 255, 255])) ``` -# Run the code +## Run the code To run this example, make sure you have the Rerun repository checked out and the latest SDK installed: ```bash -# Setup pip install --upgrade rerun-sdk # install the latest Rerun SDK git clone git@github.com:rerun-io/rerun.git # Clone the repository cd rerun diff --git a/examples/python/segment_anything_model/README.md b/examples/python/segment_anything_model/README.md index b5ad77a617c12..28cc8c365b6cd 100644 --- a/examples/python/segment_anything_model/README.md +++ b/examples/python/segment_anything_model/README.md @@ -1,5 +1,5 @@ This is an example template. It is not a real example. You can duplicate the directory and use it as a starting point for writing a real example. diff --git a/examples/python/tfrecord_loader/README.md b/examples/python/tfrecord_loader/README.md index 8d7ffe487943f..3b5e9ab9c1488 100644 --- a/examples/python/tfrecord_loader/README.md +++ b/examples/python/tfrecord_loader/README.md @@ -17,7 +17,7 @@ thumbnail_dimensions = [480, 480] ## Overview -This is an example data-loader plugin that lets you view a TFRecord of Events (i.e., Tensorboard log files). It uses the [external data loader mechanism](https://www.rerun.io/docs/reference/data-loaders/overview#external-dataloaders) to add this capability to the Rerun viewer without modifying the viewer itself. +This is an example data-loader plugin that lets you view a TFRecord of Events (i.e., Tensorboard log files). It uses the [external data loader mechanism](https://www.rerun.io/docs/reference/data-loaders/overview#external-dataloaders) to add this capability to the Rerun Viewer without modifying the Viewer itself. This example is written in Python, and uses [TensorFlow](https://www.tensorflow.org/) to read the files. The events are then logged to Rerun. @@ -42,7 +42,7 @@ To try the plug-in, first download an example `xxx.tfevents.xxx` file: curl -OL https://github.com/rerun-io/rerun-loader-python-example-tfrecord/raw/main/events.tfevents.example ``` -Then you can open the viewer and open the file using drag-and-drop or the open dialog, or you can open it directly from the terminal: +Then you can open the Viewer and open the file using drag-and-drop or the open dialog, or you can open it directly from the terminal: ```bash rerun events.tfevents.example diff --git a/examples/python/urdf_loader/README.md b/examples/python/urdf_loader/README.md index 49f48b2112319..7d619f1518124 100644 --- a/examples/python/urdf_loader/README.md +++ b/examples/python/urdf_loader/README.md @@ -17,7 +17,7 @@ thumbnail_dimensions = [480, 480] ## Overview -This is an example data-loader plugin that lets you view [URDF](https://wiki.ros.org/urdf) files. It uses the [external data loader mechanism](https://www.rerun.io/docs/reference/data-loaders/overview#external-dataloaders) to add this capability to the Rerun viewer without modifying the viewer itself. +This is an example data-loader plugin that lets you view [URDF](https://wiki.ros.org/urdf) files. It uses the [external data loader mechanism](https://www.rerun.io/docs/reference/data-loaders/overview#external-dataloaders) to add this capability to the Rerun Viewer without modifying the Viewer itself. This example is written in Python, and uses [urdf_parser_py](https://github.com/ros/urdf_parser_py/tree/ros2) to read the files. ROS package-relative paths support both ROS 1 and ROS 2-based resolving. @@ -39,7 +39,7 @@ To try the plug-in, first download the provided example URDF: curl -OL https://github.com/rerun-io/rerun-loader-python-example-urdf/raw/main/example.urdf ``` -Then you can open the viewer and open the file using drag-and-drop or the open dialog, or you can open it directly from the terminal: +Then you can open the Viewer and open the file using drag-and-drop or the open dialog, or you can open it directly from the terminal: ```bash rerun example.urdf diff --git a/examples/rust/README.md b/examples/rust/README.md index 2d1e54cbc2f8a..78a5550007012 100644 --- a/examples/rust/README.md +++ b/examples/rust/README.md @@ -18,7 +18,7 @@ Most examples come with a set of predefined Rerun flags and optionally a number Use e.g. `cargo run -p objectron -- --help` for a detailed listing. The predefined Rerun flags go as follow and are all mutually exclusive: -- `--spawn`: start a viewer and feed it data in real-time (default behavior) +- `--spawn`: start a Viewer and feed it data in real-time (default behavior) - `--save `: saves the data to an rrd file rather than visualizing it immediately - `--connect [IP:PORT]`: connects and sends the logged data to a remote Rerun viewer - `--serve`: connects and sends the data to a web-based Rerun viewer. @@ -26,7 +26,7 @@ The predefined Rerun flags go as follow and are all mutually exclusive: ## Datasets Some examples require small datasets to be downloaded before they run. -These datasets can be downloaded by running the homonymous python examples (each example that requires it will tell you how to). +These datasets can be downloaded by running the homonymous Python examples (each example that requires it will tell you how to). The datasets will be added to a subdir called `dataset`, which is in the repo-wide `.gitignore`. diff --git a/examples/rust/extend_viewer_ui/README.md b/examples/rust/extend_viewer_ui/README.md index 4b83ead99fcd5..ca90fed23b5a3 100644 --- a/examples/rust/extend_viewer_ui/README.md +++ b/examples/rust/extend_viewer_ui/README.md @@ -1,5 +1,5 @@ diff --git a/examples/rust/revy/README.md b/examples/rust/revy/README.md index d9d79c5ec3eca..bb883399ba391 100644 --- a/examples/rust/revy/README.md +++ b/examples/rust/revy/README.md @@ -75,7 +75,7 @@ For more information, check out the [Revy repository](https://github.com/rerun-i 2. Add `revy` to your dependencies: ```toml - revy = "0.15" # always matches the rerun version + revy = "0.15" # always matches the Rerun version ``` 3. Initialize the `rerun` plugin: diff --git a/examples/rust/spawn_viewer/README.md b/examples/rust/spawn_viewer/README.md index a6f3bef980c71..d3a07e8d64e43 100644 --- a/examples/rust/spawn_viewer/README.md +++ b/examples/rust/spawn_viewer/README.md @@ -1,5 +1,5 @@ diff --git a/examples/rust/template/README.md b/examples/rust/template/README.md index 27bd60d1854de..f062f32d8297b 100644 --- a/examples/rust/template/README.md +++ b/examples/rust/template/README.md @@ -3,7 +3,7 @@ title = "Template" tags = ["Human case", "Comma", "Separated", "ACRONYM", "Respect brand names", "Hugging Face", "Coca-Cola"] thumbnail = "https://static.rerun.io/template/f53a939567970272cf7c740f1efe5c72f20de7ab/480w.png" thumbnail_dimensions = [480, 359] -# channel = "main" # uncomment if this example can be run fast an easily +# Channel = "main" # uncomment if this example can be run fast an easily --> This is an example template. It is not a real example. You can duplicate the directory and use it as a starting point for writing a real example. diff --git a/hooks/README.md b/hooks/README.md index ccb565c425c0d..bd8ff4a8eeabf 100644 --- a/hooks/README.md +++ b/hooks/README.md @@ -1,5 +1,5 @@ ## Hooks -This folder contains the official rerun githooks. +This folder contains the official Rerun githooks. Each hook is designed to call through to a corresponding hook in the scripts directory. - `pre-push` -> `scripts/pre-push.sh` diff --git a/rerun_cpp/arrow_cpp_install.md b/rerun_cpp/arrow_cpp_install.md index bf483342fc34c..f522e5a4ac56e 100644 --- a/rerun_cpp/arrow_cpp_install.md +++ b/rerun_cpp/arrow_cpp_install.md @@ -2,7 +2,7 @@ \tableofcontents -## Automatically download & build arrow from source (default) +## Automatically download & build Arrow from source (default) By default, the Rerun C++ SDK's CMake script (which is part of the SDK's zip artifact that can be fetched via `FetchContent`) will download a known compatible version of Arrow from GitHub and add it to the build. @@ -21,7 +21,7 @@ fact, Rerun uses it for our own internal development dependency management, and of our external examples. Make sure to use `-DRERUN_DOWNLOAD_AND_BUILD_ARROW=OFF` when building, otherwise Rerun's CMake script -will download & build arrow instead, ignoring your Pixi install. +will download & build Arrow instead, ignoring your Pixi install. The advantage of using Pixi is that you can rely on pre-built artifacts rather than adding Arrows build to your own. Also, Pixi is of course also useful for managing other dependencies like Eigen or OpenCV, as well as fr pinning the version of your build tooling. @@ -49,7 +49,7 @@ If you want to use `pixi` to manage dependencies in your own project, you can si project folder. This will create a `pixi.toml` file that manages the project. After that you can run `pixi add arrow-cpp==10.0.1` to add arrow-cpp as a dependency to your project. -Now, any pixi tasks added to your project will have access to the `arrow-cpp` library. +Now, any Pixi tasks added to your project will have access to the `arrow-cpp` library. Even without tasks, you can run `pixi shell` to create a shell environment where all your project dependencies (including `arrow-cpp`) will be available. You can use this `pixi shell` to run you project's build commands. @@ -61,7 +61,7 @@ Check out the [pixi docs](https://prefix.dev/docs/pixi/basic_usage) for more inf The rerun-cpp example: ships with a `pixi.toml` file to manage its dependencies, as well as a set of tasks to simplify running it. -If you have pixi installed, all you need to do to run the example is: +If you have Pixi installed, all you need to do to run the example is: ``` git clone https://github.com/rerun-io/cpp-example-opencv-eigen cd cpp-example-opencv-eigen @@ -71,9 +71,9 @@ pixi run example ### Known issues ⚠️ [#4050](https://github.com/rerun-io/rerun/issues/4050) `arrow-cpp` needs to be held back to 10.0.1 to avoid conflicts -with the `rerun-sdk` package when installed in the same pixi environment. +with the `rerun-sdk` package when installed in the same Pixi environment. -⚠️ On Windows pixi only downloads release binaries which are **not** compatible with debug builds, causing runtime crashes. +⚠️ On Windows Pixi only downloads release binaries which are **not** compatible with debug builds, causing runtime crashes. For debug builds you have to build Arrow yourself, see [Building Arrow C++](https://arrow.apache.org/docs/developers/cpp/building.html) or stick with `RERUN_DOWNLOAD_AND_BUILD_ARROW=ON`. diff --git a/rerun_cpp/cmake_setup_in_detail.md b/rerun_cpp/cmake_setup_in_detail.md index 030acaee1ae15..73732e1fa5a0c 100644 --- a/rerun_cpp/cmake_setup_in_detail.md +++ b/rerun_cpp/cmake_setup_in_detail.md @@ -72,7 +72,7 @@ This is generally only recommended for more advanced CMake setups. As mentioned previously, by default Rerun's CMake script will download and build Arrow during its build. Unless configured otherwise (see below) the resulting libraries are part of the `rerun_sdk` install. -⚠️ This does currently not work for dynamic arrow libraries, i.e. if either one of +⚠️ This does currently not work for dynamic Arrow libraries, i.e. if either one of `RERUN_DOWNLOAD_AND_BUILD_ARROW=OFF` or `RERUN_ARROW_LINK_SHARED=ON` is set, the install will use `find_package(Arrow)` to locate the Arrow library on your system. @@ -114,7 +114,7 @@ is expected to be found in the Rerun C++ SDK distribution zip. ## RERUN_CPP_SOURCE_DIR Path to the Rerun include and source directory, i.e. the directory that contains `rerun.hpp`. -Note that rerun does not have separate folders for header (\*.hpp) and source (\*.cpp) files, +Note that Rerun does not have separate folders for header (\*.hpp) and source (\*.cpp) files, both are found inside `RERUN_CPP_SOURCE_DIR`. By default is set to an absolute path that is determined by the location of Rerun's `CMakeLists.txt` itself. diff --git a/rerun_cpp/src/rerun/datatypes/class_description.hpp b/rerun_cpp/src/rerun/datatypes/class_description.hpp index 8d6db97d26668..1c63fc2b510c5 100644 --- a/rerun_cpp/src/rerun/datatypes/class_description.hpp +++ b/rerun_cpp/src/rerun/datatypes/class_description.hpp @@ -20,7 +20,7 @@ namespace arrow { namespace rerun::datatypes { /// **Datatype**: The description of a semantic Class. /// - /// If an entity is annotated with a corresponding `ClassId`, rerun will use + /// If an entity is annotated with a corresponding `ClassId`, Rerun will use /// the attached `AnnotationInfo` to derive labels and colors. /// /// Keypoints within an annotation class can similarly be annotated with a diff --git a/rerun_cpp/src/rerun/datatypes/quaternion.hpp b/rerun_cpp/src/rerun/datatypes/quaternion.hpp index 6aee78a89490d..f5e9f65438da0 100644 --- a/rerun_cpp/src/rerun/datatypes/quaternion.hpp +++ b/rerun_cpp/src/rerun/datatypes/quaternion.hpp @@ -20,7 +20,7 @@ namespace rerun::datatypes { /// **Datatype**: A Quaternion represented by 4 real numbers. /// /// Note: although the x,y,z,w components of the quaternion will be passed through to the - /// datastore as provided, when used in the viewer Quaternions will always be normalized. + /// datastore as provided, when used in the Viewer Quaternions will always be normalized. struct Quaternion { std::array xyzw; diff --git a/rerun_js/web-viewer-react/README.md b/rerun_js/web-viewer-react/README.md index e889006674b72..e28c27662670f 100644 --- a/rerun_js/web-viewer-react/README.md +++ b/rerun_js/web-viewer-react/README.md @@ -21,8 +21,8 @@ $ npm i @rerun-io/web-viewer-react ``` ℹ️ Note: -The package version is equal to the supported rerun SDK version. -This means that `@rerun-io/web-viewer-react@0.10.0` can only connect to a data source (`.rrd` file, websocket connection, etc.) that originates from a rerun SDK with version `0.10.0`! +The package version is equal to the supported Rerun SDK version. +This means that `@rerun-io/web-viewer-react@0.10.0` can only connect to a data source (`.rrd` file, websocket connection, etc.) that originates from a Rerun SDK with version `0.10.0`! ## Usage @@ -38,7 +38,7 @@ The `rrd` in the snippet above should be a URL pointing to either: - A hosted `.rrd` file, such as - A WebSocket connection to the SDK opened via the [`serve`](https://www.rerun.io/docs/reference/sdk-operating-modes#serve) API -If `rrd` is not set, the viewer will display the same welcome screen as . +If `rrd` is not set, the Viewer will display the same welcome screen as . ℹ️ Note: This package only targets recent versions of browsers. diff --git a/rerun_js/web-viewer/README.md b/rerun_js/web-viewer/README.md index 0cd3162908920..579b5e6fffb1c 100644 --- a/rerun_js/web-viewer/README.md +++ b/rerun_js/web-viewer/README.md @@ -21,8 +21,8 @@ $ npm i @rerun-io/web-viewer ``` ℹ️ Note: -The package version is equal to the supported rerun SDK version. -This means that `@rerun-io/web-viewer@0.10.0` can only connect to a data source (`.rrd` file, websocket connection, etc.) that originates from a rerun SDK with version `0.10.0`! +The package version is equal to the supported Rerun SDK version. +This means that `@rerun-io/web-viewer@0.10.0` can only connect to a data source (`.rrd` file, websocket connection, etc.) that originates from a Rerun SDK with version `0.10.0`! ## Usage @@ -44,7 +44,7 @@ The `rrd` in the snippet above should be a URL pointing to either: - A hosted `.rrd` file, such as - A WebSocket connection to the SDK opened via the [`serve`](https://www.rerun.io/docs/reference/sdk-operating-modes#serve) API -If `rrd` is not set, the viewer will display the same welcome screen as . +If `rrd` is not set, the Viewer will display the same welcome screen as . For a full example, see https://github.com/rerun-io/web-viewer-example. You can open the example via CodeSandbox: https://codesandbox.io/s/github/rerun-io/web-viewer-example diff --git a/rerun_py/ARCHITECTURE.md b/rerun_py/ARCHITECTURE.md index 294f36c6e6a73..c09279db9d968 100644 --- a/rerun_py/ARCHITECTURE.md +++ b/rerun_py/ARCHITECTURE.md @@ -49,11 +49,11 @@ TODO(ab) ## Code generation -Keeping the various SDKs in sync with the Rerun viewer requires automation to be tractable. The Python SDK is no exception, and large parts of its implementation is generated using the `re_types` and `re_types_builder` crates, based on the object definitions found in `crates/re_types/definitions` and the generation code found in `crates/re_types_builder/src/codegen/python.rs`. +Keeping the various SDKs in sync with the Rerun Viewer requires automation to be tractable. The Python SDK is no exception, and large parts of its implementation is generated using the `re_types` and `re_types_builder` crates, based on the object definitions found in `crates/re_types/definitions` and the generation code found in `crates/re_types_builder/src/codegen/python.rs`. #### Archetype -In terms of code generation, archetypes are the simplest object. They consist of a native object whose fields are the various components that make up the archetype. The components are stored in their Arrow extension array form, such that they are ready to be sent to the Rerun viewer or saved to a `.rrd` file. The fields always use the respective component's extension array `from_similar()` method as converter. +In terms of code generation, archetypes are the simplest object. They consist of a native object whose fields are the various components that make up the archetype. The components are stored in their Arrow extension array form, such that they are ready to be sent to the Rerun Viewer or saved to a `.rrd` file. The fields always use the respective component's extension array `from_similar()` method as converter. The archetype native objects are the primary user-facing API of the Rerun SDK. @@ -120,10 +120,10 @@ See `components/color_ext.py` for an example. #### Native object Numpy conversion method (`__array__()`) -If an object can be natively converted to a numpy array it should implement the `__array__()` method, which in turn +If an object can be natively converted to a Numpy array it should implement the `__array__()` method, which in turn allows Numpy to automatically ingest instances of that class in a controlled way. -By default, this will be generated automatically for types which only contain a single field which is a numpy array. However, +By default, this will be generated automatically for types which only contain a single field which is a Numpy array. However, other types can still implement this method on the extension class directly, in which case the default implementation will be skipped. diff --git a/rerun_py/README.md b/rerun_py/README.md index 0601a0a4b36d1..34a9172f2808a 100644 --- a/rerun_py/README.md +++ b/rerun_py/README.md @@ -40,9 +40,9 @@ rr.log("points3d", rr.Points3D(positions, colors=colors)) ## Logging and viewing in different processes -You can run the viewer and logger in different processes. +You can run the Viewer and logger in different processes. -In one terminal, start up a viewer with a server that the SDK can connect to: +In one terminal, start up a Viewer with a server that the SDK can connect to: ```sh python3 -m rerun ``` @@ -61,9 +61,9 @@ We use the [`pixi`](https://prefix.dev/) for managing dev-tool versioning, downl ```sh pixi run py-build --release ``` -To build SDK & viewer for python (or `pixi run py-build` for a debug build) and install it in the pixi environment. +To build SDK & Viewer for Python (or `pixi run py-build` for a debug build) and install it in the Pixi environment. -You can then run examples from the repository, either by making the pixi shell active with `pixi shell` and then running python or by using `pixi run`, e.g. `pixi run python examples/python/minimal/minimal.py`. +You can then run examples from the repository, either by making the Pixi shell active with `pixi shell` and then running Python or by using `pixi run`, e.g. `pixi run python examples/python/minimal/minimal.py`. Respectively, to build a wheel instead for manual install use: ```sh diff --git a/rerun_py/docs/writing_docs.md b/rerun_py/docs/writing_docs.md index 59e78e0f757d4..fcc6029a6b840 100644 --- a/rerun_py/docs/writing_docs.md +++ b/rerun_py/docs/writing_docs.md @@ -1,6 +1,6 @@ # Python docs -A high-level overview of writing and previewing the Rerun python documentation. +A high-level overview of writing and previewing the Rerun Python documentation. ## Getting started with docs diff --git a/rerun_py/rerun_sdk/rerun/datatypes/class_description.py b/rerun_py/rerun_sdk/rerun/datatypes/class_description.py index bb366ff0e3ee5..adf45829ed73b 100644 --- a/rerun_py/rerun_sdk/rerun/datatypes/class_description.py +++ b/rerun_py/rerun_sdk/rerun/datatypes/class_description.py @@ -28,7 +28,7 @@ class ClassDescription(ClassDescriptionExt): """ **Datatype**: The description of a semantic Class. - If an entity is annotated with a corresponding `ClassId`, rerun will use + If an entity is annotated with a corresponding `ClassId`, Rerun will use the attached `AnnotationInfo` to derive labels and colors. Keypoints within an annotation class can similarly be annotated with a diff --git a/rerun_py/rerun_sdk/rerun/datatypes/quaternion.py b/rerun_py/rerun_sdk/rerun/datatypes/quaternion.py index 83b3b72998f43..b489b61e4b816 100644 --- a/rerun_py/rerun_sdk/rerun/datatypes/quaternion.py +++ b/rerun_py/rerun_sdk/rerun/datatypes/quaternion.py @@ -27,7 +27,7 @@ class Quaternion(QuaternionExt): **Datatype**: A Quaternion represented by 4 real numbers. Note: although the x,y,z,w components of the quaternion will be passed through to the - datastore as provided, when used in the viewer Quaternions will always be normalized. + datastore as provided, when used in the Viewer Quaternions will always be normalized. """ # __init__ can be found in quaternion_ext.py diff --git a/scripts/lint.py b/scripts/lint.py index cdf8f82456a13..6e764a7036ea6 100755 --- a/scripts/lint.py +++ b/scripts/lint.py @@ -661,45 +661,115 @@ def lint_workspace_lints(cargo_file_content: str) -> str | None: # ----------------------------------------------------------------------------- +force_capitalized = [ + "2D", + "3D", + "Apache", + "API", + "APIs", + "April", + "Bevy", + "C", + "C++", + "C++17,", # easier than coding up a special case + "C++17", + "Colab", + "Google", + "Jupyter", + "Linux", + "Mac", + "Numpy", + "nuScenes", + "Pixi", + "Python", + "Q1", + "Q2", + "Q3", + "Q4", + "Rerun", + "Rust", + "SAM", + "Wasm", + # "Arrow", # Would be nice to capitalize in the right context, but it's a too common word. + # "Windows", # Consider "multiple plot windows" +] + +allow_capitalized = [ + "Viewer", # Referring to the Rerun Viewer as just "the Viewer" is fine, but not all mentions of "viewer" are capitalized. + "Arrow", # Referring to the Apache Arrow project as just "Arrow" is fine, but not all mentions of "arrow" are capitalized. +] + +force_capitalized_as_lower = [word.lower() for word in force_capitalized] +allow_capitalized_as_lower = [word.lower() for word in allow_capitalized] -def fix_header_casing(s: str) -> str: - allowed_title_words = [ - "Apache", - "APIs", - "Arrow", - "C", - "C++", - "Colab", - "Google", - "Jupyter", - "Linux", - "Numpy", - "Pixi", - "Python", - "Rerun", - "Rust", - "Wasm", - "Windows", - ] +def fix_header_casing(s: str) -> str: def is_acronym_or_pascal_case(s: str) -> bool: return sum(1 for c in s if c.isupper()) > 1 - new_words = [] + new_words: list[str] = [] + last_punctuation = None + inline_code_block = False + + words = s.strip().split(" ") - for i, word in enumerate(s.strip().split(" ")): + for i, word in enumerate(words): if word == "": continue - if word.lower() in ("2d", "3d"): - word = word.upper() - elif is_acronym_or_pascal_case(word) or any(c in ("_", "(", ".") for c in word): - pass # acroym, PascalCase, code, … - elif i == 0: - # First word: + + if word.startswith("`"): + inline_code_block = True + if word.endswith("`"): + inline_code_block = False + + if last_punctuation: word = word.capitalize() - else: - if word not in allowed_title_words: + last_punctuation = None + elif not inline_code_block and not word.startswith("`") and not word.startswith('"'): + try: + idx = force_capitalized_as_lower.index(word.lower()) + except ValueError: + idx = None + + if word.endswith("?") or word.endswith("!") or word.endswith("."): + last_punctuation = word[-1] + word = word[:-1] + elif idx is not None: + word = force_capitalized[idx] + elif is_acronym_or_pascal_case(word) or any(c in ("_", "(", ".") for c in word): + pass # acroym, PascalCase, code, … + elif word.lower() in allow_capitalized_as_lower: + pass + elif i == 0: + # First word: + word = word.capitalize() + else: word = word.lower() + + new_words.append((word + last_punctuation) if last_punctuation else word) + + return " ".join(new_words) + + +def fix_enforced_upper_case(s: str) -> str: + new_words: list[str] = [] + inline_code_block = False + + for i, word in enumerate(s.split(" ")): + if word.startswith("`"): + inline_code_block = True + if word.endswith("`"): + inline_code_block = False + + if word.strip() != "" and not inline_code_block and not word.startswith("`"): + try: + idx = force_capitalized_as_lower.index(word.lower()) + except ValueError: + idx = None + + if idx is not None: + word = force_capitalized[idx] + new_words.append(word) return " ".join(new_words) @@ -711,14 +781,23 @@ def lint_markdown(filepath: str, lines_in: list[str]) -> tuple[list[str], list[s errors = [] lines_out = [] - in_example_readme = "/examples/python/" in filepath and filepath.endswith("README.md") + in_example_readme = ( + "/examples/python/" in filepath + and filepath.endswith("README.md") + and not filepath.endswith("/examples/python/README.md") + ) + in_changelog = filepath.endswith("CHANGELOG.md") + in_code_of_conduct = filepath.endswith("CODE_OF_CONDUCT.md") + + if in_code_of_conduct: + return errors, lines_in in_code_block = False in_frontmatter = False for line_nr, line in enumerate(lines_in): line_nr = line_nr + 1 - if line.startswith("```"): + if line.strip().startswith("```"): in_code_block = not in_code_block if line.startswith(""): in_frontmatter = False - # Check the casing on markdown headers - if m := re.match(r"(\#+ )(.*)", line): - new_header = fix_header_casing(m.group(2)) - if new_header != m.group(2): - errors.append(f"{line_nr}: Markdown headers should NOT be title cased. This should be '{new_header}'.") - line = m.group(1) + new_header + "\n" - - # Check the casing on `title = "…"` frontmatter - if m := re.match(r'title\s*\=\s*"(.*)"', line): - new_title = fix_header_casing(m.group(1)) - if new_title != m.group(1): - errors.append(f"{line_nr}: Titles should NOT be title cased. This should be '{new_title}'.") - line = f'title = "{new_title}"\n' - - if in_example_readme and not in_code_block and not in_frontmatter: - # Check that

is not used in example READMEs - if line.startswith("#") and not line.startswith("##"): - errors.append( - f"{line_nr}: Do not use top-level headers in example READMEs, they are reserved for page title." - ) + if not in_code_block: + # Check the casing on markdown headers + if not in_changelog and (m := re.match(r"(\#+ )(.*)", line)): + new_header = fix_header_casing(m.group(2)) + if new_header != m.group(2): + errors.append( + f"{line_nr}: Markdown headers should NOT be title cased, except certain words which are always capitalized. This should be '{new_header}'." + ) + line = m.group(1) + new_header + "\n" + + # Check the casing on `title = "…"` frontmatter + elif m := re.match(r'title\s*\=\s*"(.*)"', line): + new_title = fix_header_casing(m.group(1)) + if new_title != m.group(1): + errors.append( + f"{line_nr}: Titles should NOT be title cased, except certain words which are always capitalized. This should be '{new_title}'." + ) + line = f'title = "{new_title}"\n' + + # Enforce capitalization on certain words in the main text. + else: + new_line = fix_enforced_upper_case(line) + if new_line != line: + errors.append(f"{line_nr}: Certain words should be capitalized. This should be '{new_line}'.") + line = new_line + + if in_example_readme and not in_frontmatter: + # Check that

is not used in example READMEs + if line.startswith("#") and not line.startswith("##"): + errors.append( + f"{line_nr}: Do not use top-level headers in example READMEs, they are reserved for page title." + ) lines_out.append(line) @@ -936,7 +1027,7 @@ def lint_file(filepath: str, args: Any) -> int: if args.fix: source.rewrite(lines_out) - if filepath.endswith(".md") and args.extra: + if filepath.endswith(".md"): errors, lines_out = lint_markdown(filepath, source.lines) for error in errors: @@ -1063,6 +1154,7 @@ def main() -> None: exclude_paths = ( "./.github/workflows/reusable_checks.yml", # zombie TODO hunting job + "./.pytest_cache", "./CODE_STYLE.md", "./crates/re_types_builder/src/reflection.rs", # auto-generated "./examples/assets", @@ -1073,6 +1165,7 @@ def main() -> None: "./rerun_cpp/docs/html", "./rerun_cpp/src/rerun/c/arrow_c_data_interface.h", # Not our code "./rerun_cpp/src/rerun/third_party/cxxopts.hpp", # vendored + "./rerun_py/.pytest_cache/", "./rerun_py/site/", # is in `.gitignore` which this script doesn't fully respect "./run_wasm/README.md", # Has a "2d" lowercase example in a code snippet "./scripts/lint.py", # we contain all the patterns we are linting against diff --git a/tests/README.md b/tests/README.md index a91d9cb52420c..3e09d34504c81 100644 --- a/tests/README.md +++ b/tests/README.md @@ -1 +1 @@ -Uses of the rerun SDK designed to test different things. +Uses of the Rerun SDK designed to test different things. From 74998a4594c6531f9f9fe3dd14e968cbbd94df33 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Tue, 14 May 2024 21:29:08 +0200 Subject: [PATCH 05/40] Documentation for archetype and views references each other (#6319) ### What * Fixes: #6082 * Based on: #6304 --- * Archetype link now to view that they show up in * Views now link to archetypes that they support * View page now lists properties with argument name and argument documentation instead of type docs * I also tried linking to the type's reference page but it got too much! * changed name of 'link' section Note to reviewer: Mind `Large diffs are not rendered by default.`! image image ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6319?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6319?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6319) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- .github/workflows/reusable_checks.yml | 2 +- .../re_types/definitions/docs/attributes.fbs | 10 + .../rerun/archetypes/annotation_context.fbs | 3 +- .../definitions/rerun/archetypes/arrows2d.fbs | 3 +- .../definitions/rerun/archetypes/arrows3d.fbs | 3 +- .../definitions/rerun/archetypes/asset3d.fbs | 3 +- .../rerun/archetypes/bar_chart.fbs | 3 +- .../definitions/rerun/archetypes/boxes2d.fbs | 3 +- .../definitions/rerun/archetypes/boxes3d.fbs | 3 +- .../definitions/rerun/archetypes/clear.fbs | 3 +- .../rerun/archetypes/depth_image.fbs | 3 +- .../rerun/archetypes/disconnected_space.fbs | 3 +- .../definitions/rerun/archetypes/image.fbs | 3 +- .../rerun/archetypes/line_strips2d.fbs | 3 +- .../rerun/archetypes/line_strips3d.fbs | 3 +- .../definitions/rerun/archetypes/mesh3d.fbs | 3 +- .../definitions/rerun/archetypes/pinhole.fbs | 3 +- .../definitions/rerun/archetypes/points2d.fbs | 3 +- .../definitions/rerun/archetypes/points3d.fbs | 3 +- .../definitions/rerun/archetypes/scalar.fbs | 3 +- .../rerun/archetypes/segmentation_image.fbs | 3 +- .../rerun/archetypes/series_line.fbs | 3 +- .../rerun/archetypes/series_point.fbs | 3 +- .../definitions/rerun/archetypes/tensor.fbs | 3 +- .../rerun/archetypes/text_document.fbs | 3 +- .../definitions/rerun/archetypes/text_log.fbs | 3 +- .../rerun/archetypes/transform3d.fbs | 3 +- .../rerun/archetypes/view_coordinates.fbs | 3 +- .../blueprint/archetypes/plot_legend.fbs | 1 + .../blueprint/archetypes/scalar_axis.fbs | 1 + .../archetypes/visible_time_ranges.fbs | 1 + .../blueprint/archetypes/visual_bounds.fbs | 1 + .../rerun/blueprint/views/bar_chart.fbs | 1 + .../rerun/blueprint/views/spatial2d.fbs | 3 +- .../rerun/blueprint/views/spatial3d.fbs | 3 +- .../rerun/blueprint/views/tensor.fbs | 1 + .../rerun/blueprint/views/text_document.fbs | 1 + .../rerun/blueprint/views/text_log.fbs | 1 + .../rerun/blueprint/views/time_series.fbs | 1 + .../definitions/rerun/components/range1d.fbs | 1 + .../definitions/rerun/components/range2d.fbs | 1 + .../rerun/components/triangle_indices.fbs | 1 + .../definitions/rerun/datatypes/range1d.fbs | 1 + .../definitions/rerun/datatypes/range2d.fbs | 1 + .../rerun/datatypes/visible_time_range.fbs | 3 + .../src/blueprint/views/spatial2d_view.rs | 2 +- .../src/blueprint/views/spatial3d_view.rs | 2 +- .../re_types_builder/src/codegen/docs/mod.rs | 337 ++++++++++++------ crates/re_types_builder/src/lib.rs | 1 + docs/content/howto/ros2-nav-turtlebot.md | 4 +- docs/content/reference/types/archetypes.md | 3 +- .../types/archetypes/annotation_context.md | 7 +- .../reference/types/archetypes/arrows2d.md | 7 +- .../reference/types/archetypes/arrows3d.md | 7 +- .../reference/types/archetypes/asset3d.md | 7 +- .../reference/types/archetypes/bar_chart.md | 6 +- .../reference/types/archetypes/boxes2d.md | 7 +- .../reference/types/archetypes/boxes3d.md | 7 +- .../reference/types/archetypes/clear.md | 8 +- .../reference/types/archetypes/depth_image.md | 7 +- .../types/archetypes/disconnected_space.md | 7 +- .../reference/types/archetypes/image.md | 7 +- .../types/archetypes/line_strips2d.md | 7 +- .../types/archetypes/line_strips3d.md | 7 +- .../reference/types/archetypes/mesh3d.md | 7 +- .../reference/types/archetypes/pinhole.md | 7 +- .../reference/types/archetypes/points2d.md | 7 +- .../reference/types/archetypes/points3d.md | 7 +- .../reference/types/archetypes/scalar.md | 6 +- .../types/archetypes/segmentation_image.md | 7 +- .../reference/types/archetypes/series_line.md | 6 +- .../types/archetypes/series_point.md | 6 +- .../reference/types/archetypes/tensor.md | 7 +- .../types/archetypes/text_document.md | 6 +- .../reference/types/archetypes/text_log.md | 6 +- .../reference/types/archetypes/transform3d.md | 7 +- .../types/archetypes/view_coordinates.md | 6 +- docs/content/reference/types/components.md | 1 - .../types/components/annotation_context.md | 3 +- .../reference/types/components/blob.md | 3 +- .../reference/types/components/class_id.md | 3 +- .../types/components/clear_is_recursive.md | 3 +- .../reference/types/components/color.md | 3 +- .../reference/types/components/depth_meter.md | 3 +- .../types/components/disconnected_space.md | 3 +- .../reference/types/components/draw_order.md | 3 +- .../types/components/half_sizes2d.md | 3 +- .../types/components/half_sizes3d.md | 3 +- .../reference/types/components/keypoint_id.md | 3 +- .../types/components/line_strip2d.md | 3 +- .../types/components/line_strip3d.md | 3 +- .../types/components/marker_shape.md | 3 +- .../reference/types/components/marker_size.md | 3 +- .../reference/types/components/material.md | 3 +- .../reference/types/components/media_type.md | 3 +- .../reference/types/components/name.md | 3 +- .../components/out_of_tree_transform3d.md | 3 +- .../types/components/pinhole_projection.md | 3 +- .../reference/types/components/position2d.md | 3 +- .../reference/types/components/position3d.md | 3 +- .../reference/types/components/radius.md | 3 +- .../reference/types/components/range1d.md | 9 +- .../reference/types/components/range2d.md | 9 +- .../reference/types/components/resolution.md | 3 +- .../reference/types/components/rotation3d.md | 3 +- .../reference/types/components/scalar.md | 3 +- .../types/components/scalar_scattering.md | 3 +- .../types/components/stroke_width.md | 3 +- .../reference/types/components/tensor_data.md | 3 +- .../reference/types/components/texcoord2d.md | 3 +- .../reference/types/components/text.md | 3 +- .../types/components/text_log_level.md | 3 +- .../reference/types/components/transform3d.md | 3 +- .../types/components/triangle_indices.md | 9 +- .../reference/types/components/vector2d.md | 3 +- .../reference/types/components/vector3d.md | 3 +- .../types/components/view_coordinates.md | 3 +- .../types/components/visualizer_overrides.md | 3 +- docs/content/reference/types/datatypes.md | 1 - .../reference/types/datatypes/angle.md | 3 +- .../types/datatypes/annotation_info.md | 3 +- .../content/reference/types/datatypes/bool.md | 3 +- .../types/datatypes/class_description.md | 3 +- .../datatypes/class_description_map_elem.md | 3 +- .../reference/types/datatypes/class_id.md | 3 +- .../reference/types/datatypes/entity_path.md | 3 +- .../reference/types/datatypes/float32.md | 3 +- .../reference/types/datatypes/keypoint_id.md | 3 +- .../types/datatypes/keypoint_pair.md | 3 +- .../reference/types/datatypes/mat3x3.md | 3 +- .../reference/types/datatypes/mat4x4.md | 3 +- .../reference/types/datatypes/material.md | 3 +- .../reference/types/datatypes/quaternion.md | 3 +- .../reference/types/datatypes/range1d.md | 13 +- .../reference/types/datatypes/range2d.md | 11 +- .../reference/types/datatypes/rgba32.md | 3 +- .../reference/types/datatypes/rotation3d.md | 3 +- .../types/datatypes/rotation_axis_angle.md | 3 +- .../reference/types/datatypes/scale3d.md | 3 +- .../types/datatypes/tensor_buffer.md | 3 +- .../reference/types/datatypes/tensor_data.md | 3 +- .../types/datatypes/tensor_dimension.md | 3 +- .../reference/types/datatypes/time_int.md | 5 +- .../reference/types/datatypes/time_range.md | 11 +- .../types/datatypes/time_range_boundary.md | 11 +- .../reference/types/datatypes/transform3d.md | 3 +- .../types/datatypes/translation_and_mat3x3.md | 3 +- .../datatypes/translation_rotation_scale3d.md | 3 +- .../reference/types/datatypes/uint32.md | 3 +- .../reference/types/datatypes/uint64.md | 3 +- .../content/reference/types/datatypes/utf8.md | 5 +- .../content/reference/types/datatypes/uuid.md | 3 +- .../reference/types/datatypes/uvec2d.md | 3 +- .../reference/types/datatypes/uvec3d.md | 5 +- .../reference/types/datatypes/uvec4d.md | 3 +- .../reference/types/datatypes/vec2d.md | 3 +- .../reference/types/datatypes/vec3d.md | 3 +- .../reference/types/datatypes/vec4d.md | 3 +- .../types/datatypes/visible_time_range.md | 9 +- docs/content/reference/types/views.md | 1 - .../reference/types/views/bar_chart_view.md | 11 +- .../reference/types/views/spatial2d_view.md | 58 +-- .../reference/types/views/spatial3d_view.md | 50 ++- .../reference/types/views/tensor_view.md | 10 +- .../types/views/text_document_view.md | 10 +- .../reference/types/views/text_log_view.md | 10 +- .../reference/types/views/time_series_view.md | 44 +-- examples/python/face_tracking/README.md | 2 +- examples/python/gesture_detection/README.md | 2 +- examples/python/ros_node/README.md | 2 +- .../rerun/blueprint/views/spatial2d_view.py | 2 +- .../rerun/blueprint/views/spatial3d_view.py | 2 +- 172 files changed, 790 insertions(+), 358 deletions(-) diff --git a/.github/workflows/reusable_checks.yml b/.github/workflows/reusable_checks.yml index 905f17d07cf51..316c2e440d820 100644 --- a/.github/workflows/reusable_checks.yml +++ b/.github/workflows/reusable_checks.yml @@ -203,4 +203,4 @@ jobs: # When given a directory, lychee checks only markdown, html and text files, everything else we have to glob in manually. # Pass --verbose, so that all considered links are printed, making it easier to debug. args: | - --verbose --base . "**/*.rs" "**/*.toml" "**/*.hpp" "**/*.cpp" "**/CMakeLists.txt" "**/*.py" "**/*.yml" + --verbose --base . "**/*.md" "**/*.rs" "**/*.toml" "**/*.hpp" "**/*.cpp" "**/CMakeLists.txt" "**/*.py" "**/*.yml" diff --git a/crates/re_types/definitions/docs/attributes.fbs b/crates/re_types/definitions/docs/attributes.fbs index 60dd49b482ee9..850005c0a2808 100644 --- a/crates/re_types/definitions/docs/attributes.fbs +++ b/crates/re_types/definitions/docs/attributes.fbs @@ -9,3 +9,13 @@ attribute "attr.docs.unreleased"; /// Apply to an archetype to set its category used in the docs. attribute "attr.docs.category"; + +/// Apply to an archetype to document which viewer support showing it. +/// +/// This is expected to be a comma separated list of viewer types names. +/// If additional information about the circumstances under which a viewer supports the archetype is needed, +/// add it after a colon. +/// +/// E.g.: +/// "attr.docs.view_types": "Spatial2DView, Spatial3DView: if logged under a projection" +attribute "attr.docs.view_types"; diff --git a/crates/re_types/definitions/rerun/archetypes/annotation_context.fbs b/crates/re_types/definitions/rerun/archetypes/annotation_context.fbs index 33e672494679c..bf557da5adb03 100644 --- a/crates/re_types/definitions/rerun/archetypes/annotation_context.fbs +++ b/crates/re_types/definitions/rerun/archetypes/annotation_context.fbs @@ -21,7 +21,8 @@ namespace rerun.archetypes; /// \example archetypes/annotation_context_segmentation title="Segmentation" image="https://static.rerun.io/annotation_context_segmentation/0e21c0a04e456fec41d16b0deaa12c00cddf2d9b/1200w.png" /// \example archetypes/annotation_context_connections !api title="Connections" image="https://static.rerun.io/annotation_context_connections/4a8422bc154699c5334f574ff01b55c5cd1748e3/1200w.png" table AnnotationContext ( - "attr.rust.derive": "Eq, PartialEq" + "attr.rust.derive": "Eq, PartialEq", + "attr.docs.view_types": "Spatial2DView, Spatial3DView" ) { /// List of class descriptions, mapping class indices to class names, colors etc. context: rerun.components.AnnotationContext ("attr.rerun.component_required", order: 1000); diff --git a/crates/re_types/definitions/rerun/archetypes/arrows2d.fbs b/crates/re_types/definitions/rerun/archetypes/arrows2d.fbs index 4a0406a20392c..ffb73ee73de72 100644 --- a/crates/re_types/definitions/rerun/archetypes/arrows2d.fbs +++ b/crates/re_types/definitions/rerun/archetypes/arrows2d.fbs @@ -16,7 +16,8 @@ table Arrows2D ( "attr.rust.derive": "PartialEq", "attr.rust.new_pub_crate", "attr.cpp.no_field_ctors", - "attr.docs.category": "Spatial 2D" + "attr.docs.category": "Spatial 2D", + "attr.docs.view_types": "Spatial2DView, Spatial3DView: if logged under a projection" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/arrows3d.fbs b/crates/re_types/definitions/rerun/archetypes/arrows3d.fbs index 08440745f651d..6168e0497e69d 100644 --- a/crates/re_types/definitions/rerun/archetypes/arrows3d.fbs +++ b/crates/re_types/definitions/rerun/archetypes/arrows3d.fbs @@ -16,7 +16,8 @@ table Arrows3D ( "attr.rust.derive": "PartialEq", "attr.rust.new_pub_crate", "attr.cpp.no_field_ctors", - "attr.docs.category": "Spatial 3D" + "attr.docs.category": "Spatial 3D", + "attr.docs.view_types": "Spatial3DView, Spatial2DView: if logged above active projection" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/asset3d.fbs b/crates/re_types/definitions/rerun/archetypes/asset3d.fbs index cf399cb3bf63d..b660bd04a8106 100644 --- a/crates/re_types/definitions/rerun/archetypes/asset3d.fbs +++ b/crates/re_types/definitions/rerun/archetypes/asset3d.fbs @@ -16,7 +16,8 @@ namespace rerun.archetypes; /// \example archetypes/asset3d_out_of_tree !api title="3D asset with out-of-tree transform" table Asset3D ( "attr.rust.derive": "PartialEq", - "attr.docs.category": "Spatial 3D" + "attr.docs.category": "Spatial 3D", + "attr.docs.view_types": "Spatial3DView, Spatial2DView: if logged above active projection" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/bar_chart.fbs b/crates/re_types/definitions/rerun/archetypes/bar_chart.fbs index 6a73aa9364029..7df87e0dc91f7 100644 --- a/crates/re_types/definitions/rerun/archetypes/bar_chart.fbs +++ b/crates/re_types/definitions/rerun/archetypes/bar_chart.fbs @@ -13,7 +13,8 @@ namespace rerun.archetypes; /// \example archetypes/bar_chart title="Simple bar chart" image="https://static.rerun.io/barchart_simple/cf6014b18265edfcaa562c06526c0716b296b193/1200w.png" table BarChart ( "attr.rust.derive": "PartialEq", - "attr.docs.category": "Plotting" + "attr.docs.category": "Plotting", + "attr.docs.view_types": "BarChartView" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/boxes2d.fbs b/crates/re_types/definitions/rerun/archetypes/boxes2d.fbs index d1437506c4530..2f5fe36574e45 100644 --- a/crates/re_types/definitions/rerun/archetypes/boxes2d.fbs +++ b/crates/re_types/definitions/rerun/archetypes/boxes2d.fbs @@ -16,7 +16,8 @@ table Boxes2D ( "attr.rust.derive": "PartialEq", "attr.rust.new_pub_crate", "attr.cpp.no_field_ctors", - "attr.docs.category": "Spatial 2D" + "attr.docs.category": "Spatial 2D", + "attr.docs.view_types": "Spatial2DView, Spatial3DView: if logged under a projection" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/boxes3d.fbs b/crates/re_types/definitions/rerun/archetypes/boxes3d.fbs index bd0a904049129..a7f6141c5ad62 100644 --- a/crates/re_types/definitions/rerun/archetypes/boxes3d.fbs +++ b/crates/re_types/definitions/rerun/archetypes/boxes3d.fbs @@ -17,7 +17,8 @@ table Boxes3D ( "attr.rust.derive": "PartialEq", "attr.rust.new_pub_crate", "attr.cpp.no_field_ctors", - "attr.docs.category": "Spatial 3D" + "attr.docs.category": "Spatial 3D", + "attr.docs.view_types": "Spatial3DView, Spatial2DView: if logged above active projection" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/clear.fbs b/crates/re_types/definitions/rerun/archetypes/clear.fbs index 076808f0cc2c0..d01938216e96f 100644 --- a/crates/re_types/definitions/rerun/archetypes/clear.fbs +++ b/crates/re_types/definitions/rerun/archetypes/clear.fbs @@ -23,7 +23,8 @@ namespace rerun.archetypes; /// \example archetypes/clear_recursive !api "Recursive" table Clear ( "attr.rust.derive": "PartialEq, Eq", - "attr.rust.override_crate": "re_types_core" + "attr.rust.override_crate": "re_types_core", + "attr.docs.view_types": "Spatial2DView, Spatial3DView, TimeSeriesView" ) { is_recursive: rerun.components.ClearIsRecursive ("attr.rerun.component_required", order: 100); } diff --git a/crates/re_types/definitions/rerun/archetypes/depth_image.fbs b/crates/re_types/definitions/rerun/archetypes/depth_image.fbs index aa93255941086..4737428d30463 100644 --- a/crates/re_types/definitions/rerun/archetypes/depth_image.fbs +++ b/crates/re_types/definitions/rerun/archetypes/depth_image.fbs @@ -20,7 +20,8 @@ namespace rerun.archetypes; table DepthImage ( "attr.rust.derive": "PartialEq", "attr.cpp.no_field_ctors", - "attr.docs.category": "Image & tensor" + "attr.docs.category": "Image & tensor", + "attr.docs.view_types": "Spatial2DView, Spatial3DView: if logged under a projection" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/disconnected_space.fbs b/crates/re_types/definitions/rerun/archetypes/disconnected_space.fbs index 2b55aca049d68..a80e382a67837 100644 --- a/crates/re_types/definitions/rerun/archetypes/disconnected_space.fbs +++ b/crates/re_types/definitions/rerun/archetypes/disconnected_space.fbs @@ -14,7 +14,8 @@ namespace rerun.archetypes; /// /// \example archetypes/disconnected_space title="Disconnected space" image="https://static.rerun.io/disconnected_space/b8f95b0e32359de625a765247c84935146c1fba9/1200w.png" table DisconnectedSpace ( - "attr.rust.derive": "Copy, PartialEq, Eq" + "attr.rust.derive": "Copy, PartialEq, Eq", + "attr.docs.view_types": "Spatial2DView, Spatial3DView" ) { /// Whether the entity path at which this is logged is disconnected from its parent. disconnected_space: rerun.components.DisconnectedSpace ("attr.rerun.component_required", order: 1000); diff --git a/crates/re_types/definitions/rerun/archetypes/image.fbs b/crates/re_types/definitions/rerun/archetypes/image.fbs index d41f699dcd7f1..9ff65cec7d84d 100644 --- a/crates/re_types/definitions/rerun/archetypes/image.fbs +++ b/crates/re_types/definitions/rerun/archetypes/image.fbs @@ -35,7 +35,8 @@ namespace rerun.archetypes; table Image ( "attr.rust.derive": "PartialEq", "attr.cpp.no_field_ctors", - "attr.docs.category": "Image & tensor" + "attr.docs.category": "Image & tensor", + "attr.docs.view_types": "Spatial2DView, Spatial3DView: if logged under a projection" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/line_strips2d.fbs b/crates/re_types/definitions/rerun/archetypes/line_strips2d.fbs index 1566c801a2a71..74f340e838a26 100644 --- a/crates/re_types/definitions/rerun/archetypes/line_strips2d.fbs +++ b/crates/re_types/definitions/rerun/archetypes/line_strips2d.fbs @@ -14,7 +14,8 @@ namespace rerun.archetypes; /// \example archetypes/line_strip2d_batch image="https://static.rerun.io/line_strip2d_batch/d8aae7ca3d6c3b0e3b636de60b8067fa2f0b6db9/1200w.png" table LineStrips2D ( "attr.rust.derive": "PartialEq", - "attr.docs.category": "Spatial 2D" + "attr.docs.category": "Spatial 2D", + "attr.docs.view_types": "Spatial2DView, Spatial3DView: if logged under a projection" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/line_strips3d.fbs b/crates/re_types/definitions/rerun/archetypes/line_strips3d.fbs index 68240203cbf40..f3beb59956723 100644 --- a/crates/re_types/definitions/rerun/archetypes/line_strips3d.fbs +++ b/crates/re_types/definitions/rerun/archetypes/line_strips3d.fbs @@ -14,7 +14,8 @@ namespace rerun.archetypes; /// \example archetypes/line_strip3d_batch title="Many strips" image="https://static.rerun.io/line_strip3d_batch/102e5ec5271475657fbc76b469267e4ec8e84337/1200w.png" table LineStrips3D ( "attr.rust.derive": "PartialEq", - "attr.docs.category": "Spatial 3D" + "attr.docs.category": "Spatial 3D", + "attr.docs.view_types": "Spatial3DView, Spatial2DView: if logged above active projection" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/mesh3d.fbs b/crates/re_types/definitions/rerun/archetypes/mesh3d.fbs index 14810ef5ff0c2..eec6ce93c5dd1 100644 --- a/crates/re_types/definitions/rerun/archetypes/mesh3d.fbs +++ b/crates/re_types/definitions/rerun/archetypes/mesh3d.fbs @@ -16,7 +16,8 @@ namespace rerun.archetypes; /// \example archetypes/mesh3d_partial_updates !api title="3D mesh with partial updates" image="https://static.rerun.io/mesh3d_partial_updates/a11e4accb0257dcd9531867b7e1d6fd5e3bee5c3/1200w.png" table Mesh3D ( "attr.rust.derive": "PartialEq", - "attr.docs.category": "Spatial 2D" + "attr.docs.category": "Spatial 3D", + "attr.docs.view_types": "Spatial3DView, Spatial2DView: if logged above active projection" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/pinhole.fbs b/crates/re_types/definitions/rerun/archetypes/pinhole.fbs index 942b69afe735a..4bceb23156178 100644 --- a/crates/re_types/definitions/rerun/archetypes/pinhole.fbs +++ b/crates/re_types/definitions/rerun/archetypes/pinhole.fbs @@ -12,7 +12,8 @@ namespace rerun.archetypes; /// \example archetypes/pinhole_perspective title="Perspective pinhole camera" image="https://static.rerun.io/pinhole_perspective/d0bd02a0cf354a5c8eafb79a84fe8674335cab98/1200w.png" table Pinhole ( "attr.rust.derive": "PartialEq", - "attr.docs.category": "Spatial 3D" + "attr.docs.category": "Spatial 3D", + "attr.docs.view_types": "Spatial2DView, Spatial2DView" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/points2d.fbs b/crates/re_types/definitions/rerun/archetypes/points2d.fbs index 5dff7facde008..b42087b5fa548 100644 --- a/crates/re_types/definitions/rerun/archetypes/points2d.fbs +++ b/crates/re_types/definitions/rerun/archetypes/points2d.fbs @@ -15,7 +15,8 @@ namespace rerun.archetypes; /// \example archetypes/point2d_random title="Randomly distributed 2D points with varying color and radius" image="https://static.rerun.io/point2d_random/8e8ac75373677bd72bd3f56a15e44fcab309a168/1200w.png" table Points2D ( "attr.rust.derive": "PartialEq", - "attr.docs.category": "Spatial 2D" + "attr.docs.category": "Spatial 2D", + "attr.docs.view_types": "Spatial2DView, Spatial3DView: if logged under a projection" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/points3d.fbs b/crates/re_types/definitions/rerun/archetypes/points3d.fbs index 91219710405fb..f7034145be4eb 100644 --- a/crates/re_types/definitions/rerun/archetypes/points3d.fbs +++ b/crates/re_types/definitions/rerun/archetypes/points3d.fbs @@ -13,7 +13,8 @@ namespace rerun.archetypes; /// \example archetypes/point3d_random title="Randomly distributed 3D points with varying color and radius" image="https://static.rerun.io/point3d_random/7e94e1806d2c381943748abbb3bedb68d564de24/1200w.png" table Points3D ( "attr.rust.derive": "PartialEq", - "attr.docs.category": "Spatial 3D" + "attr.docs.category": "Spatial 3D", + "attr.docs.view_types": "Spatial3DView, Spatial2DView: if logged above active projection" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/scalar.fbs b/crates/re_types/definitions/rerun/archetypes/scalar.fbs index 4997fcd5c996d..e6b6831b499bd 100644 --- a/crates/re_types/definitions/rerun/archetypes/scalar.fbs +++ b/crates/re_types/definitions/rerun/archetypes/scalar.fbs @@ -25,7 +25,8 @@ namespace rerun.archetypes; /// \example archetypes/scalar_multiple_plots !api title="Multiple time series plots" image="https://static.rerun.io/scalar_multiple/15845c2a348f875248fbd694e03eabd922741c4c/1200w.png" table Scalar ( "attr.rust.derive": "PartialEq", - "attr.docs.category": "Plotting" + "attr.docs.category": "Plotting", + "attr.docs.view_types": "TimeSeriesView" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/segmentation_image.fbs b/crates/re_types/definitions/rerun/archetypes/segmentation_image.fbs index 6386fa6734156..7018f8c206a2b 100644 --- a/crates/re_types/definitions/rerun/archetypes/segmentation_image.fbs +++ b/crates/re_types/definitions/rerun/archetypes/segmentation_image.fbs @@ -28,7 +28,8 @@ namespace rerun.archetypes; table SegmentationImage ( "attr.rust.derive": "PartialEq", "attr.cpp.no_field_ctors", - "attr.docs.category": "Image & tensor" + "attr.docs.category": "Image & tensor", + "attr.docs.view_types": "Spatial2DView, Spatial3DView: if logged under a projection" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/series_line.fbs b/crates/re_types/definitions/rerun/archetypes/series_line.fbs index bb5cc846a2569..ca2ca96525623 100644 --- a/crates/re_types/definitions/rerun/archetypes/series_line.fbs +++ b/crates/re_types/definitions/rerun/archetypes/series_line.fbs @@ -19,7 +19,8 @@ namespace rerun.archetypes; /// /// \example archetypes/series_line_style title="Line series" image="https://static.rerun.io/series_line_style/d2616d98b1e46bdb85849b8669154fdf058e3453/1200w.png" table SeriesLine ( - "attr.docs.category": "Plotting" + "attr.docs.category": "Plotting", + "attr.docs.view_types": "TimeSeriesView" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/series_point.fbs b/crates/re_types/definitions/rerun/archetypes/series_point.fbs index 736c25d9cc208..b40d982adec21 100644 --- a/crates/re_types/definitions/rerun/archetypes/series_point.fbs +++ b/crates/re_types/definitions/rerun/archetypes/series_point.fbs @@ -19,7 +19,8 @@ namespace rerun.archetypes; /// /// \example archetypes/series_point_style title="Point series" image="https://static.rerun.io/series_point_style/82207a705da6c086b28ce161db1db9e8b12258b7/1200w.png" table SeriesPoint ( - "attr.docs.category": "Plotting" + "attr.docs.category": "Plotting", + "attr.docs.view_types": "TimeSeriesView" ) { // --- Required --- diff --git a/crates/re_types/definitions/rerun/archetypes/tensor.fbs b/crates/re_types/definitions/rerun/archetypes/tensor.fbs index aebf81ac56690..94ddff21d2658 100644 --- a/crates/re_types/definitions/rerun/archetypes/tensor.fbs +++ b/crates/re_types/definitions/rerun/archetypes/tensor.fbs @@ -15,7 +15,8 @@ namespace rerun.archetypes; /// \example archetypes/tensor_simple title="Simple tensor" image="https://static.rerun.io/tensor_simple/baacb07712f7b706e3c80e696f70616c6c20b367/1200w.png" table Tensor ( "attr.rust.derive": "PartialEq", - "attr.docs.category": "Image & tensor" + "attr.docs.category": "Image & tensor", + "attr.docs.view_types": "TensorView, BarChartView: for 1D tensors" ) { /// The tensor data data: rerun.components.TensorData ("attr.rerun.component_required", order: 1000); diff --git a/crates/re_types/definitions/rerun/archetypes/text_document.fbs b/crates/re_types/definitions/rerun/archetypes/text_document.fbs index b80c001d09e63..6bdade3db2ce7 100644 --- a/crates/re_types/definitions/rerun/archetypes/text_document.fbs +++ b/crates/re_types/definitions/rerun/archetypes/text_document.fbs @@ -14,7 +14,8 @@ namespace rerun.archetypes; /// \example archetypes/text_document title="Markdown text document" image="https://static.rerun.io/textdocument/babda19558ee32ed8d730495b595aee7a5e2c174/1200w.png" table TextDocument ( "attr.rust.derive": "PartialEq, Eq", - "attr.docs.category": "Text" + "attr.docs.category": "Text", + "attr.docs.view_types": "TextDocumentView" ) { /// Contents of the text document. text: rerun.components.Text ("attr.rerun.component_required", order: 100); diff --git a/crates/re_types/definitions/rerun/archetypes/text_log.fbs b/crates/re_types/definitions/rerun/archetypes/text_log.fbs index 53f87d5b0907c..85faebb7fdceb 100644 --- a/crates/re_types/definitions/rerun/archetypes/text_log.fbs +++ b/crates/re_types/definitions/rerun/archetypes/text_log.fbs @@ -12,7 +12,8 @@ namespace rerun.archetypes; /// \example archetypes/text_log_integration text="Logging text directly or via a logger" image="https://static.rerun.io/text_log_integration/9737d0c986325802a9885499d6fcc773b1736488/1200w.png" table TextLog ( "attr.rust.derive": "PartialEq, Eq", - "attr.docs.category": "Text" + "attr.docs.category": "Text", + "attr.docs.view_types": "TextLogView" ) { /// The body of the message. text: rerun.components.Text ("attr.rerun.component_required", order: 100); diff --git a/crates/re_types/definitions/rerun/archetypes/transform3d.fbs b/crates/re_types/definitions/rerun/archetypes/transform3d.fbs index 25d81d275e0b0..9df36ae4dd87a 100644 --- a/crates/re_types/definitions/rerun/archetypes/transform3d.fbs +++ b/crates/re_types/definitions/rerun/archetypes/transform3d.fbs @@ -11,7 +11,8 @@ namespace rerun.archetypes; /// \example archetypes/transform3d_simple title="Variety of 3D transforms" image="https://static.rerun.io/transform3d_simple/141368b07360ce3fcb1553079258ae3f42bdb9ac/1200w.png" table Transform3D ( "attr.rust.derive": "PartialEq", - "attr.docs.category": "Spatial 3D" + "attr.docs.category": "Spatial 3D", + "attr.docs.view_types": "Spatial3DView, Spatial2DView: if logged above active projection" ) { /// The transform transform: rerun.components.Transform3D ("attr.rerun.component_required", order: 1000); diff --git a/crates/re_types/definitions/rerun/archetypes/view_coordinates.fbs b/crates/re_types/definitions/rerun/archetypes/view_coordinates.fbs index 3d6932800b51c..7c9ebaf85d38a 100644 --- a/crates/re_types/definitions/rerun/archetypes/view_coordinates.fbs +++ b/crates/re_types/definitions/rerun/archetypes/view_coordinates.fbs @@ -19,7 +19,8 @@ namespace rerun.archetypes; table ViewCoordinates ( "attr.rust.derive": "Copy, PartialEq, Eq, bytemuck::Pod, bytemuck::Zeroable", "attr.rust.repr": "transparent", - "attr.docs.category": "Spatial 3D" + "attr.docs.category": "Spatial 3D", + "attr.docs.view_types": "Spatial3DView" ) { /// The directions of the [x, y, z] axes. xyz: rerun.components.ViewCoordinates ("attr.rerun.component_required", required, order: 1000); diff --git a/crates/re_types/definitions/rerun/blueprint/archetypes/plot_legend.fbs b/crates/re_types/definitions/rerun/blueprint/archetypes/plot_legend.fbs index 0ddfb7164c67b..e3c0f01c77a02 100644 --- a/crates/re_types/definitions/rerun/blueprint/archetypes/plot_legend.fbs +++ b/crates/re_types/definitions/rerun/blueprint/archetypes/plot_legend.fbs @@ -12,6 +12,7 @@ namespace rerun.blueprint.archetypes; /// Configuration for the legend of a plot. table PlotLegend ( + "attr.docs.unreleased", "attr.rerun.scope": "blueprint", "attr.rust.derive": "Default", "attr.python.aliases": "blueprint_components.Corner2D" diff --git a/crates/re_types/definitions/rerun/blueprint/archetypes/scalar_axis.fbs b/crates/re_types/definitions/rerun/blueprint/archetypes/scalar_axis.fbs index a6585d0bf8aaf..0ed7fedfa4c2c 100644 --- a/crates/re_types/definitions/rerun/blueprint/archetypes/scalar_axis.fbs +++ b/crates/re_types/definitions/rerun/blueprint/archetypes/scalar_axis.fbs @@ -12,6 +12,7 @@ namespace rerun.blueprint.archetypes; /// Configuration for the scalar axis of a plot. table ScalarAxis ( + "attr.docs.unreleased", "attr.rerun.scope": "blueprint", "attr.rust.derive": "Default" ) { diff --git a/crates/re_types/definitions/rerun/blueprint/archetypes/visible_time_ranges.fbs b/crates/re_types/definitions/rerun/blueprint/archetypes/visible_time_ranges.fbs index 8f8b44cdd6d61..b20d0723c467c 100644 --- a/crates/re_types/definitions/rerun/blueprint/archetypes/visible_time_ranges.fbs +++ b/crates/re_types/definitions/rerun/blueprint/archetypes/visible_time_ranges.fbs @@ -19,6 +19,7 @@ namespace rerun.blueprint.archetypes; /// - For time series views, the default is to show the entire timeline. /// - For any other view, the default is to apply latest-at semantics. table VisibleTimeRanges ( + "attr.docs.unreleased", "attr.rerun.scope": "blueprint", "attr.rust.derive": "Default", "attr.python.aliases": "datatypes.VisibleTimeRangeLike, Sequence[datatypes.VisibleTimeRangeLike]" diff --git a/crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds.fbs b/crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds.fbs index bf25d96411886..ce68bde907491 100644 --- a/crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds.fbs +++ b/crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds.fbs @@ -10,6 +10,7 @@ namespace rerun.blueprint.archetypes; /// Controls the visual bounds of a 2D space view. table VisualBounds ( + "attr.docs.unreleased", "attr.rerun.scope": "blueprint", "attr.rust.derive": "Copy" ) { diff --git a/crates/re_types/definitions/rerun/blueprint/views/bar_chart.fbs b/crates/re_types/definitions/rerun/blueprint/views/bar_chart.fbs index b32ae55bcfc7a..30ad9f824a1c7 100644 --- a/crates/re_types/definitions/rerun/blueprint/views/bar_chart.fbs +++ b/crates/re_types/definitions/rerun/blueprint/views/bar_chart.fbs @@ -6,6 +6,7 @@ namespace rerun.blueprint.views; /// /// \example views/bar_chart title="Use a blueprint to create a BarChartView." image="https://static.rerun.io/bar_chart_view/74fa45af3c7310b51cd283c37439ed8f8ca9356d/1200w.png" table BarChartView ( + "attr.docs.unreleased", "attr.rerun.view_identifier": "BarChart" ) { } diff --git a/crates/re_types/definitions/rerun/blueprint/views/spatial2d.fbs b/crates/re_types/definitions/rerun/blueprint/views/spatial2d.fbs index 315d2a232738b..dde4566c65646 100644 --- a/crates/re_types/definitions/rerun/blueprint/views/spatial2d.fbs +++ b/crates/re_types/definitions/rerun/blueprint/views/spatial2d.fbs @@ -6,9 +6,10 @@ namespace rerun.blueprint.views; /// /// \example views/spatial2d title="Use a blueprint to customize a Spatial2DView." image="https://static.rerun.io/spatial2d/074c0822870325d6502c9f51c165c1181a20e83f/1200w.png" table Spatial2DView ( + "attr.docs.unreleased", "attr.rerun.view_identifier": "2D" ) { - /// Configuration for the background of the space view. + /// Configuration for the background of the view. background: rerun.blueprint.archetypes.Background (order: 1000); /// The visible parts of the scene, in the coordinate space of the scene. diff --git a/crates/re_types/definitions/rerun/blueprint/views/spatial3d.fbs b/crates/re_types/definitions/rerun/blueprint/views/spatial3d.fbs index e7aad9f55e44a..78e83aaf31665 100644 --- a/crates/re_types/definitions/rerun/blueprint/views/spatial3d.fbs +++ b/crates/re_types/definitions/rerun/blueprint/views/spatial3d.fbs @@ -6,9 +6,10 @@ namespace rerun.blueprint.views; /// /// \example views/spatial3d title="Use a blueprint to customize a Spatial3DView." image="https://static.rerun.io/spatial3d/4816694fc4176cc284ff30d9c8f06c936a625ac9/1200w.png" table Spatial3DView ( + "attr.docs.unreleased", "attr.rerun.view_identifier": "3D" ) { - /// Configuration for the background of the space view. + /// Configuration for the background of the view. background: rerun.blueprint.archetypes.Background (order: 1000); /// Configures which range on each timeline is shown by this view (unless specified differently per entity). diff --git a/crates/re_types/definitions/rerun/blueprint/views/tensor.fbs b/crates/re_types/definitions/rerun/blueprint/views/tensor.fbs index 1abe8f13820ad..d65274632d5d4 100644 --- a/crates/re_types/definitions/rerun/blueprint/views/tensor.fbs +++ b/crates/re_types/definitions/rerun/blueprint/views/tensor.fbs @@ -6,6 +6,7 @@ namespace rerun.blueprint.views; /// /// \example views/tensor title="Use a blueprint to create a TensorView." image="https://static.rerun.io/tensor_view/3b452ace3cdb29ada1a613eae8e8e8e165a1d396/1200w.png" table TensorView ( + "attr.docs.unreleased", "attr.rerun.view_identifier": "Tensor" ) { } diff --git a/crates/re_types/definitions/rerun/blueprint/views/text_document.fbs b/crates/re_types/definitions/rerun/blueprint/views/text_document.fbs index ebfeac2fc3e48..1a405fe3f49fe 100644 --- a/crates/re_types/definitions/rerun/blueprint/views/text_document.fbs +++ b/crates/re_types/definitions/rerun/blueprint/views/text_document.fbs @@ -6,6 +6,7 @@ namespace rerun.blueprint.views; /// /// \example views/text_document title="Use a blueprint to show a text document." image="https://static.rerun.io/text_log/27f15235fe9639ff42b6ea0d2f0ce580685c021c/1200w.png" table TextDocumentView ( + "attr.docs.unreleased", "attr.rerun.view_identifier": "TextDocument" ) { } diff --git a/crates/re_types/definitions/rerun/blueprint/views/text_log.fbs b/crates/re_types/definitions/rerun/blueprint/views/text_log.fbs index baba4b31efc9e..fbf1e7a6db1da 100644 --- a/crates/re_types/definitions/rerun/blueprint/views/text_log.fbs +++ b/crates/re_types/definitions/rerun/blueprint/views/text_log.fbs @@ -6,6 +6,7 @@ namespace rerun.blueprint.views; /// /// \example views/text_log title="Use a blueprint to show a TextLogView." image="https://static.rerun.io/text_log/457ab91ec42a481bacae4146c0fc01eee397bb86/1200w.png" table TextLogView ( + "attr.docs.unreleased", "attr.rerun.view_identifier": "TextLog" ) { } diff --git a/crates/re_types/definitions/rerun/blueprint/views/time_series.fbs b/crates/re_types/definitions/rerun/blueprint/views/time_series.fbs index f34ac48b9fa81..c253d14c3970c 100644 --- a/crates/re_types/definitions/rerun/blueprint/views/time_series.fbs +++ b/crates/re_types/definitions/rerun/blueprint/views/time_series.fbs @@ -6,6 +6,7 @@ namespace rerun.blueprint.views; /// /// \example views/timeseries title="Use a blueprint to customize a TimeSeriesView." image="https://static.rerun.io/timeseries_view/c87150647feb413627fdb8563afe33b39d7dbf57/1200w.png" table TimeSeriesView ( + "attr.docs.unreleased", "attr.rerun.view_identifier": "TimeSeries" ) { /// Configures the vertical axis of the plot. diff --git a/crates/re_types/definitions/rerun/components/range1d.fbs b/crates/re_types/definitions/rerun/components/range1d.fbs index dff9586fbb51e..abd8f8dac53cb 100644 --- a/crates/re_types/definitions/rerun/components/range1d.fbs +++ b/crates/re_types/definitions/rerun/components/range1d.fbs @@ -11,6 +11,7 @@ namespace rerun.components; /// A 1D range, specifying a lower and upper bound. struct Range1D ( + "attr.docs.unreleased", "attr.rust.derive": "Copy, PartialEq, bytemuck::Pod, bytemuck::Zeroable", "attr.rust.repr": "transparent" ) { diff --git a/crates/re_types/definitions/rerun/components/range2d.fbs b/crates/re_types/definitions/rerun/components/range2d.fbs index 83f8f33741fd4..4a02119f5f5dc 100644 --- a/crates/re_types/definitions/rerun/components/range2d.fbs +++ b/crates/re_types/definitions/rerun/components/range2d.fbs @@ -11,6 +11,7 @@ namespace rerun.components; /// An Axis-Aligned Bounding Box in 2D space. struct Range2D ( + "attr.docs.unreleased", "attr.rust.derive": "Copy, PartialEq, bytemuck::Pod, bytemuck::Zeroable", "attr.rust.repr": "transparent" ) { diff --git a/crates/re_types/definitions/rerun/components/triangle_indices.fbs b/crates/re_types/definitions/rerun/components/triangle_indices.fbs index 9aec0cc423dee..bf6fe972af981 100644 --- a/crates/re_types/definitions/rerun/components/triangle_indices.fbs +++ b/crates/re_types/definitions/rerun/components/triangle_indices.fbs @@ -11,6 +11,7 @@ namespace rerun.components; /// The three indices of a triangle mesh. struct TriangleIndices ( + "attr.docs.unreleased", "attr.rust.derive": "Copy, PartialEq, Eq, bytemuck::Pod, bytemuck::Zeroable", "attr.rust.repr": "transparent" ) { diff --git a/crates/re_types/definitions/rerun/datatypes/range1d.fbs b/crates/re_types/definitions/rerun/datatypes/range1d.fbs index 451fd24527fe3..ecd8a7c96d3af 100644 --- a/crates/re_types/definitions/rerun/datatypes/range1d.fbs +++ b/crates/re_types/definitions/rerun/datatypes/range1d.fbs @@ -11,6 +11,7 @@ namespace rerun.datatypes; /// A 1D range, specifying a lower and upper bound. struct Range1D ( + "attr.docs.unreleased", "attr.arrow.transparent", "attr.python.aliases": "npt.NDArray[Any], npt.ArrayLike, Sequence[float], slice", "attr.python.array_aliases": "npt.NDArray[Any], npt.ArrayLike, Sequence[Sequence[float]], Sequence[float]", diff --git a/crates/re_types/definitions/rerun/datatypes/range2d.fbs b/crates/re_types/definitions/rerun/datatypes/range2d.fbs index afc340d21d644..df8fbbbea0f68 100644 --- a/crates/re_types/definitions/rerun/datatypes/range2d.fbs +++ b/crates/re_types/definitions/rerun/datatypes/range2d.fbs @@ -12,6 +12,7 @@ namespace rerun.datatypes; /// An Axis-Aligned Bounding Box in 2D space, implemented as the minimum and maximum corners. struct Range2D ( + "attr.docs.unreleased", "attr.rust.derive": "Default, Copy, PartialEq, bytemuck::Pod, bytemuck::Zeroable", "attr.rust.repr": "C" ) { diff --git a/crates/re_types/definitions/rerun/datatypes/visible_time_range.fbs b/crates/re_types/definitions/rerun/datatypes/visible_time_range.fbs index 8ce18d1f93d51..2cdb3789b576e 100644 --- a/crates/re_types/definitions/rerun/datatypes/visible_time_range.fbs +++ b/crates/re_types/definitions/rerun/datatypes/visible_time_range.fbs @@ -12,6 +12,7 @@ namespace rerun.datatypes; /// Left or right boundary of a time range. union TimeRangeBoundary ( + "attr.docs.unreleased", "attr.rust.derive": "Copy, PartialEq, Eq", "attr.rust.override_crate": "re_types_core" ) { @@ -28,6 +29,7 @@ union TimeRangeBoundary ( /// Visible time range bounds for a specific timeline. // Has to be a table because flatbuffer doesn't support strings in structs. table TimeRange ( + "attr.docs.unreleased", "attr.rust.derive": "PartialEq, Eq", "attr.rust.override_crate": "re_types_core" ) { @@ -42,6 +44,7 @@ table TimeRange ( /// Visible time range bounds for a specific timeline. // Has to be a table because flatbuffer doesn't support strings in structs. table VisibleTimeRange ( + "attr.docs.unreleased", "attr.rust.derive": "PartialEq, Eq", "attr.rust.override_crate": "re_types_core" ) { diff --git a/crates/re_types/src/blueprint/views/spatial2d_view.rs b/crates/re_types/src/blueprint/views/spatial2d_view.rs index 3d7be20b0cc2a..06fdae7b4bbfe 100644 --- a/crates/re_types/src/blueprint/views/spatial2d_view.rs +++ b/crates/re_types/src/blueprint/views/spatial2d_view.rs @@ -25,7 +25,7 @@ use ::re_types_core::{DeserializationError, DeserializationResult}; /// **View**: A Spatial 2D view. #[derive(Clone, Debug)] pub struct Spatial2DView { - /// Configuration for the background of the space view. + /// Configuration for the background of the view. pub background: crate::blueprint::archetypes::Background, /// The visible parts of the scene, in the coordinate space of the scene. diff --git a/crates/re_types/src/blueprint/views/spatial3d_view.rs b/crates/re_types/src/blueprint/views/spatial3d_view.rs index cbc039e986b63..4aff252cfe276 100644 --- a/crates/re_types/src/blueprint/views/spatial3d_view.rs +++ b/crates/re_types/src/blueprint/views/spatial3d_view.rs @@ -25,7 +25,7 @@ use ::re_types_core::{DeserializationError, DeserializationResult}; /// **View**: A Spatial 3D view. #[derive(Clone, Debug)] pub struct Spatial3DView { - /// Configuration for the background of the space view. + /// Configuration for the background of the view. pub background: crate::blueprint::archetypes::Background, /// Configures which range on each timeline is shown by this view (unless specified differently per entity). diff --git a/crates/re_types_builder/src/codegen/docs/mod.rs b/crates/re_types_builder/src/codegen/docs/mod.rs index 18a7341184f43..397992e89a755 100644 --- a/crates/re_types_builder/src/codegen/docs/mod.rs +++ b/crates/re_types_builder/src/codegen/docs/mod.rs @@ -1,4 +1,4 @@ -use std::fmt::Write; +use std::{collections::BTreeMap, fmt::Write}; use camino::Utf8PathBuf; use itertools::Itertools; @@ -6,10 +6,11 @@ use itertools::Itertools; use crate::{ codegen::{autogen_warning, common::ExampleInfo}, objects::FieldKind, - CodeGenerator, GeneratedFiles, Object, ObjectKind, Objects, Reporter, Type, + CodeGenerator, GeneratedFiles, Object, ObjectField, ObjectKind, Objects, Reporter, Type, + ATTR_DOCS_VIEW_TYPES, }; -type ObjectMap = std::collections::BTreeMap; +type ObjectMap = BTreeMap; macro_rules! putln { ($o:ident) => ( writeln!($o).ok() ); @@ -28,6 +29,14 @@ impl DocsCodeGenerator { } } +struct ViewReference { + /// Typename of the view. Not a fully qualified name, just the name as specified on the attribute. + view_name: String, + explanation: Option, +} + +type ViewsPerArchetype = BTreeMap>; + impl CodeGenerator for DocsCodeGenerator { fn generate( &mut self, @@ -39,6 +48,9 @@ impl CodeGenerator for DocsCodeGenerator { let mut files_to_write = GeneratedFiles::default(); + // Gather view type mapping per object. + let views_per_archetype = collect_view_types_per_archetype(objects); + let (mut archetypes, mut components, mut datatypes, mut views) = (Vec::new(), Vec::new(), Vec::new(), Vec::new()); let object_map = &objects.objects; @@ -60,7 +72,7 @@ impl CodeGenerator for DocsCodeGenerator { ObjectKind::View => views.push(object), } - let page = object_page(reporter, object, object_map); + let page = object_page(reporter, object, object_map, &views_per_archetype); let path = self.docs_dir.join(format!( "{}/{}.md", object.kind.plural_snake_case(), @@ -112,14 +124,36 @@ on [Entities and Components](../../concepts/entity-component.md).", } } +fn collect_view_types_per_archetype(objects: &Objects) -> ViewsPerArchetype { + let mut view_types_per_object = ViewsPerArchetype::new(); + for object in objects.objects.values() { + let Some(view_types) = object.try_get_attr::(ATTR_DOCS_VIEW_TYPES) else { + continue; + }; + + let view_types = view_types + .split(',') + .map(|view_type| { + let mut parts = view_type.splitn(2, ':'); + let view_name = parts.next().unwrap().trim().to_owned(); + let explanation = parts.next().map(|s| s.trim().to_owned()); + ViewReference { + view_name, + explanation, + } + }) + .collect(); + view_types_per_object.insert(object.fqname.clone(), view_types); + } + + view_types_per_object +} + fn index_page(kind: ObjectKind, order: u64, prelude: &str, objects: &[&Object]) -> String { let mut page = String::new(); write_frontmatter(&mut page, kind.plural_name(), Some(order)); putln!(page); - // Can't put the autogen warning before the frontmatter, stuff breaks down then. - putln!(page, "", autogen_warning!()); - putln!(page); putln!(page, "{prelude}"); putln!(page); @@ -174,7 +208,12 @@ fn index_page(kind: ObjectKind, order: u64, prelude: &str, objects: &[&Object]) page } -fn object_page(reporter: &Reporter, object: &Object, object_map: &ObjectMap) -> String { +fn object_page( + reporter: &Reporter, + object: &Object, + object_map: &ObjectMap, + views_per_archetype: &ViewsPerArchetype, +) -> String { let is_unreleased = object.is_attr_set(crate::ATTR_DOCS_UNRELEASED); let top_level_docs = object.docs.untagged(); @@ -218,79 +257,17 @@ fn object_page(reporter: &Reporter, object: &Object, object_map: &ObjectMap) -> ObjectKind::Datatype | ObjectKind::Component => { write_fields(&mut page, object, object_map); } - ObjectKind::Archetype => write_archetype_fields(&mut page, object, object_map), + ObjectKind::Archetype => { + write_archetype_fields(&mut page, object, object_map, views_per_archetype); + } ObjectKind::View => { - // TODO(#6082): Views should include the archetypes they know how to show write_view_properties(reporter, &mut page, object, object_map); } } - { - let speculative_marker = if is_unreleased { - "?speculative-link" - } else { - "" - }; - - putln!(page); - putln!(page, "## Links"); - - if object.kind == ObjectKind::View { - // More complicated link due to scope - putln!( - page, - " * 🐍 [Python API docs for `{}`](https://ref.rerun.io/docs/python/stable/common/{}_{}{}#rerun.{}.{}.{})", - object.name, - object.scope().unwrap_or_default(), - object.kind.plural_snake_case(), - speculative_marker, - object.scope().unwrap_or_default(), - object.kind.plural_snake_case(), - object.name - ); - } else { - let cpp_link = if object.is_enum() { - // Can't link to enums directly 🀷 - format!( - "https://ref.rerun.io/docs/cpp/stable/namespacererun_1_1{}.html", - object.kind.plural_snake_case() - ) - } else { - // `_1` is doxygen's replacement for ':' - // https://github.com/doxygen/doxygen/blob/Release_1_9_8/src/util.cpp#L3532 - format!( - "https://ref.rerun.io/docs/cpp/stable/structrerun_1_1{}_1_1{}.html", - object.kind.plural_snake_case(), - object.name - ) - }; - - // In alphabetical order by language. - putln!( - page, - " * 🌊 [C++ API docs for `{}`]({cpp_link}{speculative_marker})", - object.name, - ); - putln!( - page, - " * 🐍 [Python API docs for `{}`](https://ref.rerun.io/docs/python/stable/common/{}{}#rerun.{}.{})", - object.name, - object.kind.plural_snake_case(), - speculative_marker, - object.kind.plural_snake_case(), - object.name - ); - - putln!( - page, - " * πŸ¦€ [Rust API docs for `{}`](https://docs.rs/rerun/latest/rerun/{}/{}.{}.html{speculative_marker})", - object.name, - object.kind.plural_snake_case(), - if object.is_struct() { "struct" } else { "enum" }, - object.name, - ); - } - } + putln!(page); + putln!(page, "## Api reference links"); + list_links(is_unreleased, &mut page, object); putln!(page); write_example_list(&mut page, &examples); @@ -314,13 +291,85 @@ fn object_page(reporter: &Reporter, object: &Object, object_map: &ObjectMap) -> } } ObjectKind::View => { - // TODO(#6082): Implement view docs generation. + putln!(page); + write_visualized_archetypes( + reporter, + &mut page, + object, + object_map, + views_per_archetype, + ); } } page } +fn list_links(is_unreleased: bool, page: &mut String, object: &Object) { + let speculative_marker = if is_unreleased { + "?speculative-link" + } else { + "" + }; + + if object.kind == ObjectKind::View { + // More complicated link due to scope + putln!( + page, + " * 🐍 [Python API docs for `{}`](https://ref.rerun.io/docs/python/stable/common/{}_{}{}#rerun.{}.{}.{})", + object.name, + object.scope().unwrap_or_default(), + object.kind.plural_snake_case(), + speculative_marker, + object.scope().unwrap_or_default(), + object.kind.plural_snake_case(), + object.name + ); + } else { + let cpp_link = if object.is_enum() { + // Can't link to enums directly 🀷 + format!( + "https://ref.rerun.io/docs/cpp/stable/namespacererun_1_1{}.html", + object.kind.plural_snake_case() + ) + } else { + // `_1` is doxygen's replacement for ':' + // https://github.com/doxygen/doxygen/blob/Release_1_9_8/src/util.cpp#L3532 + format!( + "https://ref.rerun.io/docs/cpp/stable/structrerun_1_1{}_1_1{}.html", + object.kind.plural_snake_case(), + object.name + ) + }; + + // In alphabetical order by language. + putln!( + page, + " * 🌊 [C++ API docs for `{}`]({cpp_link}{speculative_marker})", + object.name, + ); + + putln!( + page, + " * 🐍 [Python API docs for `{}`](https://ref.rerun.io/docs/python/stable/common/{}{}#rerun.{}.{})", + object.name, + object.module_name().replace('/', "_"), // E.g. `blueprint_archetypes` + speculative_marker, + object.module_name().replace('/', "."), // E.g. `blueprint.archetypes` + object.name + ); + + putln!( + page, + " * πŸ¦€ [Rust API docs for `{}`](https://docs.rs/rerun/latest/rerun/{}/{}.{}.html{speculative_marker})", + object.name, + object.kind.plural_snake_case(), + if object.is_struct() { "struct" } else { "enum" }, + object.name, + ); + } +} + fn write_frontmatter(o: &mut String, title: &str, order: Option) { putln!(o, "---"); putln!(o, "title: {title:?}"); @@ -329,6 +378,8 @@ fn write_frontmatter(o: &mut String, title: &str, order: Option) { putln!(o, "order: {order}"); } putln!(o, "---"); + // Can't put the autogen warning before the frontmatter, stuff breaks down then. + putln!(o, "", autogen_warning!()); } fn write_fields(o: &mut String, object: &Object, object_map: &ObjectMap) { @@ -453,7 +504,12 @@ fn write_used_by(o: &mut String, reporter: &Reporter, object: &Object, object_ma } } -fn write_archetype_fields(o: &mut String, object: &Object, object_map: &ObjectMap) { +fn write_archetype_fields( + page: &mut String, + object: &Object, + object_map: &ObjectMap, + view_per_archetype: &ViewsPerArchetype, +) { if object.fields.is_empty() { return; } @@ -485,87 +541,146 @@ fn write_archetype_fields(o: &mut String, object: &Object, object_map: &ObjectMa return; } - putln!(o, "## Components"); + putln!(page, "## Components"); if !required.is_empty() { - putln!(o); - putln!(o, "**Required**: {}", required.join(", ")); + putln!(page); + putln!(page, "**Required**: {}", required.join(", ")); } if !recommended.is_empty() { - putln!(o); - putln!(o, "**Recommended**: {}", recommended.join(", ")); + putln!(page); + putln!(page, "**Recommended**: {}", recommended.join(", ")); } if !optional.is_empty() { - putln!(o); - putln!(o, "**Optional**: {}", optional.join(", ")); + putln!(page); + putln!(page, "**Optional**: {}", optional.join(", ")); + } + + if let Some(view_types) = view_per_archetype.get(&object.fqname) { + putln!(page); + putln!(page, "## Shown in"); + for ViewReference { + view_name, + explanation, + } in view_types + { + page.push_str(&format!( + "* [{view_name}](../views/{}.md)", + crate::to_snake_case(view_name) + )); + if let Some(explanation) = explanation { + page.push_str(&format!(" ({explanation})")); + } + putln!(page); + } } } +fn write_visualized_archetypes( + reporter: &Reporter, + page: &mut String, + view: &Object, + object_map: &ObjectMap, + views_per_archetype: &ViewsPerArchetype, +) { + let mut archetype_fqnames = Vec::new(); + for (fqname, reference) in views_per_archetype { + for ViewReference { + view_name, + explanation, + } in reference + { + if view_name == &view.name { + archetype_fqnames.push((fqname.clone(), explanation)); + } + } + } + + if archetype_fqnames.is_empty() { + reporter.error(&view.virtpath, &view.fqname, "No archetypes use this view."); + return; + } + + // Put the archetypes in alphabetical order but put the ones with extra explanation last. + archetype_fqnames.sort_by_key(|(fqname, explanation)| (explanation.is_some(), fqname.clone())); + + putln!(page, "## Visualized archetypes"); + putln!(page); + for (fqname, explanation) in archetype_fqnames { + let object = &object_map[&fqname]; + page.push_str(&format!( + "* [`{}`](../{}/{}.md)", + object.name, + object.kind.plural_snake_case(), + object.snake_case_name() + )); + if let Some(explanation) = explanation { + page.push_str(&format!(" ({explanation})")); + } + putln!(page); + } + putln!(page); +} + fn write_view_properties( reporter: &Reporter, - o: &mut String, - object: &Object, + page: &mut String, + view: &Object, object_map: &ObjectMap, ) { - if object.fields.is_empty() { + if view.fields.is_empty() { return; } - putln!(o, "## Properties"); - putln!(o); + putln!(page, "## Properties"); + putln!(page); // Each field in a view should be a property - for field in &object.fields { - let Some(fqname) = field.typ.fqname() else { - continue; - }; - let Some(ty) = object_map.get(fqname) else { - continue; - }; - write_view_property(reporter, o, ty, object_map); + for field in &view.fields { + write_view_property(reporter, page, field, object_map); } } fn write_view_property( reporter: &Reporter, o: &mut String, - object: &Object, - _object_map: &ObjectMap, + field: &ObjectField, + object_map: &ObjectMap, ) { - putln!(o, "### `{}`", object.name); + putln!(o, "### `{}`", field.name); - let top_level_docs = object.docs.untagged(); + let top_level_docs = field.docs.untagged(); if top_level_docs.is_empty() { - reporter.error( - &object.virtpath, - &object.fqname, - "Undocumented view property", - ); + reporter.error(&field.virtpath, &field.fqname, "Undocumented view property"); } for line in top_level_docs { putln!(o, "{line}"); } - if object.fields.is_empty() { + // If there's more than one fields on this type, list them: + let Some(field_fqname) = field.typ.fqname() else { return; - } + }; + let object = &object_map[field_fqname]; let mut fields = Vec::new(); for field in &object.fields { fields.push(format!( - "* {}: {}", + "* `{}`: {}", field.name, field.docs.first_line().unwrap_or_default() )); } - if !fields.is_empty() { + if fields.len() > 1 { putln!(o); for field in fields { putln!(o, "{field}"); } } + + // Note that we don't list links to reference docs for this type since this causes a lot of clutter. } fn write_example_list(o: &mut String, examples: &[ExampleInfo<'_>]) { diff --git a/crates/re_types_builder/src/lib.rs b/crates/re_types_builder/src/lib.rs index 8bd05dfa86ef9..0c20ccc1a199b 100644 --- a/crates/re_types_builder/src/lib.rs +++ b/crates/re_types_builder/src/lib.rs @@ -196,6 +196,7 @@ pub const ATTR_CPP_NO_FIELD_CTORS: &str = "attr.cpp.no_field_ctors"; pub const ATTR_DOCS_UNRELEASED: &str = "attr.docs.unreleased"; pub const ATTR_DOCS_CATEGORY: &str = "attr.docs.category"; +pub const ATTR_DOCS_VIEW_TYPES: &str = "attr.docs.view_types"; // --- Entrypoints --- diff --git a/docs/content/howto/ros2-nav-turtlebot.md b/docs/content/howto/ros2-nav-turtlebot.md index dd585c39565df..a70ec8f2f77e2 100644 --- a/docs/content/howto/ros2-nav-turtlebot.md +++ b/docs/content/howto/ros2-nav-turtlebot.md @@ -36,7 +36,7 @@ Other relevant tutorials: ### ROS 2 & navigation You will need to have installed [ROS 2 Humble Hawksbill](https://docs.ros.org/en/humble/index.html) -and the [turtlebot3 navigation getting-started example](https://navigation.ros.org/getting_started/index.html). +and the [turtlebot3 navigation getting-started example](https://docs.nav2.org/getting_started/index.html). Installing ROS is outside the scope of this guide, but you will need the equivalent of the following packages: @@ -46,7 +46,7 @@ $ sudo apt install ros-humble-desktop gazebo ros-humble-navigation2 ros-humble-t If you don't already have ROS installed, we recommend trying [RoboStack](https://robostack.github.io/) for setting up your installation. -Before proceeding, you should follow the [navigation example](https://navigation.ros.org/getting_started/index.html) +Before proceeding, you should follow the [navigation example](https://docs.nav2.org/getting_started/index.html) and confirm that you can successfully run: ```bash diff --git a/docs/content/reference/types/archetypes.md b/docs/content/reference/types/archetypes.md index f6d6a75eb7f6c..01feee9e34556 100644 --- a/docs/content/reference/types/archetypes.md +++ b/docs/content/reference/types/archetypes.md @@ -2,7 +2,6 @@ title: "Archetypes" order: 1 --- - Archetypes are bundles of components. This page lists all built-in components. @@ -26,7 +25,6 @@ Archetypes are bundles of components. This page lists all built-in components. * [`Arrows2D`](archetypes/arrows2d.md): 2D arrows with optional colors, radii, labels, etc. * [`Boxes2D`](archetypes/boxes2d.md): 2D boxes with half-extents and optional center, rotations, rotations, colors etc. * [`LineStrips2D`](archetypes/line_strips2d.md): 2D line strips with positions and optional colors, radii, labels, etc. -* [`Mesh3D`](archetypes/mesh3d.md): A 3D triangle mesh as specified by its per-mesh and per-vertex properties. * [`Points2D`](archetypes/points2d.md): A 2D point cloud with positions and optional colors, radii, labels, etc. ## Spatial 3D @@ -35,6 +33,7 @@ Archetypes are bundles of components. This page lists all built-in components. * [`Asset3D`](archetypes/asset3d.md): A prepacked 3D asset (`.gltf`, `.glb`, `.obj`, `.stl`, etc.). * [`Boxes3D`](archetypes/boxes3d.md): 3D boxes with half-extents and optional center, rotations, rotations, colors etc. * [`LineStrips3D`](archetypes/line_strips3d.md): 3D line strips with positions and optional colors, radii, labels, etc. +* [`Mesh3D`](archetypes/mesh3d.md): A 3D triangle mesh as specified by its per-mesh and per-vertex properties. * [`Pinhole`](archetypes/pinhole.md): Camera perspective projection (a.k.a. intrinsics). * [`Points3D`](archetypes/points3d.md): A 3D point cloud with positions and optional colors, radii, labels, etc. * [`Transform3D`](archetypes/transform3d.md): A 3D transform. diff --git a/docs/content/reference/types/archetypes/annotation_context.md b/docs/content/reference/types/archetypes/annotation_context.md index eb5531b169d55..0c609de38af62 100644 --- a/docs/content/reference/types/archetypes/annotation_context.md +++ b/docs/content/reference/types/archetypes/annotation_context.md @@ -1,6 +1,7 @@ --- title: "AnnotationContext" --- + The `AnnotationContext` provides additional information on how to display entities. @@ -14,7 +15,11 @@ path. **Required**: [`AnnotationContext`](../components/annotation_context.md) -## Links +## Shown in +* [Spatial2DView](../views/spatial2d_view.md) +* [Spatial3DView](../views/spatial3d_view.md) + +## Api reference links * 🌊 [C++ API docs for `AnnotationContext`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1AnnotationContext.html) * 🐍 [Python API docs for `AnnotationContext`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.AnnotationContext) * πŸ¦€ [Rust API docs for `AnnotationContext`](https://docs.rs/rerun/latest/rerun/archetypes/struct.AnnotationContext.html) diff --git a/docs/content/reference/types/archetypes/arrows2d.md b/docs/content/reference/types/archetypes/arrows2d.md index ffb2c804e478c..13512e8e11a5e 100644 --- a/docs/content/reference/types/archetypes/arrows2d.md +++ b/docs/content/reference/types/archetypes/arrows2d.md @@ -1,6 +1,7 @@ --- title: "Arrows2D" --- + 2D arrows with optional colors, radii, labels, etc. @@ -12,7 +13,11 @@ title: "Arrows2D" **Optional**: [`Radius`](../components/radius.md), [`Color`](../components/color.md), [`Text`](../components/text.md), [`ClassId`](../components/class_id.md) -## Links +## Shown in +* [Spatial2DView](../views/spatial2d_view.md) +* [Spatial3DView](../views/spatial3d_view.md) (if logged under a projection) + +## Api reference links * 🌊 [C++ API docs for `Arrows2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Arrows2D.html) * 🐍 [Python API docs for `Arrows2D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Arrows2D) * πŸ¦€ [Rust API docs for `Arrows2D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Arrows2D.html) diff --git a/docs/content/reference/types/archetypes/arrows3d.md b/docs/content/reference/types/archetypes/arrows3d.md index 12b5905fbce93..0ed60ffd48a09 100644 --- a/docs/content/reference/types/archetypes/arrows3d.md +++ b/docs/content/reference/types/archetypes/arrows3d.md @@ -1,6 +1,7 @@ --- title: "Arrows3D" --- + 3D arrows with optional colors, radii, labels, etc. @@ -12,7 +13,11 @@ title: "Arrows3D" **Optional**: [`Radius`](../components/radius.md), [`Color`](../components/color.md), [`Text`](../components/text.md), [`ClassId`](../components/class_id.md) -## Links +## Shown in +* [Spatial3DView](../views/spatial3d_view.md) +* [Spatial2DView](../views/spatial2d_view.md) (if logged above active projection) + +## Api reference links * 🌊 [C++ API docs for `Arrows3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Arrows3D.html) * 🐍 [Python API docs for `Arrows3D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Arrows3D) * πŸ¦€ [Rust API docs for `Arrows3D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Arrows3D.html) diff --git a/docs/content/reference/types/archetypes/asset3d.md b/docs/content/reference/types/archetypes/asset3d.md index 4f3d70dd212ad..fab6f7f0cfcbb 100644 --- a/docs/content/reference/types/archetypes/asset3d.md +++ b/docs/content/reference/types/archetypes/asset3d.md @@ -1,6 +1,7 @@ --- title: "Asset3D" --- + A prepacked 3D asset (`.gltf`, `.glb`, `.obj`, `.stl`, etc.). @@ -12,7 +13,11 @@ A prepacked 3D asset (`.gltf`, `.glb`, `.obj`, `.stl`, etc.). **Optional**: [`OutOfTreeTransform3D`](../components/out_of_tree_transform3d.md) -## Links +## Shown in +* [Spatial3DView](../views/spatial3d_view.md) +* [Spatial2DView](../views/spatial2d_view.md) (if logged above active projection) + +## Api reference links * 🌊 [C++ API docs for `Asset3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Asset3D.html) * 🐍 [Python API docs for `Asset3D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Asset3D) * πŸ¦€ [Rust API docs for `Asset3D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Asset3D.html) diff --git a/docs/content/reference/types/archetypes/bar_chart.md b/docs/content/reference/types/archetypes/bar_chart.md index 4f53af5f0e1b8..cb25d9ec68fc1 100644 --- a/docs/content/reference/types/archetypes/bar_chart.md +++ b/docs/content/reference/types/archetypes/bar_chart.md @@ -1,6 +1,7 @@ --- title: "BarChart" --- + A bar chart. @@ -12,7 +13,10 @@ The x values will be the indices of the array, and the bar heights will be the p **Optional**: [`Color`](../components/color.md) -## Links +## Shown in +* [BarChartView](../views/bar_chart_view.md) + +## Api reference links * 🌊 [C++ API docs for `BarChart`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1BarChart.html) * 🐍 [Python API docs for `BarChart`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.BarChart) * πŸ¦€ [Rust API docs for `BarChart`](https://docs.rs/rerun/latest/rerun/archetypes/struct.BarChart.html) diff --git a/docs/content/reference/types/archetypes/boxes2d.md b/docs/content/reference/types/archetypes/boxes2d.md index 31653dc1749e5..d200524839411 100644 --- a/docs/content/reference/types/archetypes/boxes2d.md +++ b/docs/content/reference/types/archetypes/boxes2d.md @@ -1,6 +1,7 @@ --- title: "Boxes2D" --- + 2D boxes with half-extents and optional center, rotations, rotations, colors etc. @@ -12,7 +13,11 @@ title: "Boxes2D" **Optional**: [`Radius`](../components/radius.md), [`Text`](../components/text.md), [`DrawOrder`](../components/draw_order.md), [`ClassId`](../components/class_id.md) -## Links +## Shown in +* [Spatial2DView](../views/spatial2d_view.md) +* [Spatial3DView](../views/spatial3d_view.md) (if logged under a projection) + +## Api reference links * 🌊 [C++ API docs for `Boxes2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Boxes2D.html) * 🐍 [Python API docs for `Boxes2D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Boxes2D) * πŸ¦€ [Rust API docs for `Boxes2D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Boxes2D.html) diff --git a/docs/content/reference/types/archetypes/boxes3d.md b/docs/content/reference/types/archetypes/boxes3d.md index c8cad6e987f36..0f4fac3ee5182 100644 --- a/docs/content/reference/types/archetypes/boxes3d.md +++ b/docs/content/reference/types/archetypes/boxes3d.md @@ -1,6 +1,7 @@ --- title: "Boxes3D" --- + 3D boxes with half-extents and optional center, rotations, rotations, colors etc. @@ -12,7 +13,11 @@ title: "Boxes3D" **Optional**: [`Radius`](../components/radius.md), [`Text`](../components/text.md), [`ClassId`](../components/class_id.md) -## Links +## Shown in +* [Spatial3DView](../views/spatial3d_view.md) +* [Spatial2DView](../views/spatial2d_view.md) (if logged above active projection) + +## Api reference links * 🌊 [C++ API docs for `Boxes3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Boxes3D.html) * 🐍 [Python API docs for `Boxes3D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Boxes3D) * πŸ¦€ [Rust API docs for `Boxes3D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Boxes3D.html) diff --git a/docs/content/reference/types/archetypes/clear.md b/docs/content/reference/types/archetypes/clear.md index 60ec5ca659f6e..17aab4e71e0d3 100644 --- a/docs/content/reference/types/archetypes/clear.md +++ b/docs/content/reference/types/archetypes/clear.md @@ -1,6 +1,7 @@ --- title: "Clear" --- + Empties all the components of an entity. @@ -18,7 +19,12 @@ data (i.e. discontinuous lines). **Required**: [`ClearIsRecursive`](../components/clear_is_recursive.md) -## Links +## Shown in +* [Spatial2DView](../views/spatial2d_view.md) +* [Spatial3DView](../views/spatial3d_view.md) +* [TimeSeriesView](../views/time_series_view.md) + +## Api reference links * 🌊 [C++ API docs for `Clear`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Clear.html) * 🐍 [Python API docs for `Clear`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Clear) * πŸ¦€ [Rust API docs for `Clear`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Clear.html) diff --git a/docs/content/reference/types/archetypes/depth_image.md b/docs/content/reference/types/archetypes/depth_image.md index 3685387641bbf..32d31e5bcd8c0 100644 --- a/docs/content/reference/types/archetypes/depth_image.md +++ b/docs/content/reference/types/archetypes/depth_image.md @@ -1,6 +1,7 @@ --- title: "DepthImage" --- + A depth image. @@ -13,7 +14,11 @@ Each pixel corresponds to a depth value in units specified by `meter`. **Optional**: [`DepthMeter`](../components/depth_meter.md), [`DrawOrder`](../components/draw_order.md) -## Links +## Shown in +* [Spatial2DView](../views/spatial2d_view.md) +* [Spatial3DView](../views/spatial3d_view.md) (if logged under a projection) + +## Api reference links * 🌊 [C++ API docs for `DepthImage`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1DepthImage.html) * 🐍 [Python API docs for `DepthImage`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.DepthImage) * πŸ¦€ [Rust API docs for `DepthImage`](https://docs.rs/rerun/latest/rerun/archetypes/struct.DepthImage.html) diff --git a/docs/content/reference/types/archetypes/disconnected_space.md b/docs/content/reference/types/archetypes/disconnected_space.md index 2cf5e111409bc..2ba2f259fd835 100644 --- a/docs/content/reference/types/archetypes/disconnected_space.md +++ b/docs/content/reference/types/archetypes/disconnected_space.md @@ -1,6 +1,7 @@ --- title: "DisconnectedSpace" --- + Spatially disconnect this entity from its parent. @@ -13,7 +14,11 @@ This is useful for specifying that a subgraph is independent of the rest of the **Required**: [`DisconnectedSpace`](../components/disconnected_space.md) -## Links +## Shown in +* [Spatial2DView](../views/spatial2d_view.md) +* [Spatial3DView](../views/spatial3d_view.md) + +## Api reference links * 🌊 [C++ API docs for `DisconnectedSpace`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1DisconnectedSpace.html) * 🐍 [Python API docs for `DisconnectedSpace`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.DisconnectedSpace) * πŸ¦€ [Rust API docs for `DisconnectedSpace`](https://docs.rs/rerun/latest/rerun/archetypes/struct.DisconnectedSpace.html) diff --git a/docs/content/reference/types/archetypes/image.md b/docs/content/reference/types/archetypes/image.md index 9f423f5193604..0dab4e5689bef 100644 --- a/docs/content/reference/types/archetypes/image.md +++ b/docs/content/reference/types/archetypes/image.md @@ -1,6 +1,7 @@ --- title: "Image" --- + A monochrome or color image. @@ -25,7 +26,11 @@ Using these formats can save a lot of bandwidth and memory. **Optional**: [`DrawOrder`](../components/draw_order.md) -## Links +## Shown in +* [Spatial2DView](../views/spatial2d_view.md) +* [Spatial3DView](../views/spatial3d_view.md) (if logged under a projection) + +## Api reference links * 🌊 [C++ API docs for `Image`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Image.html) * 🐍 [Python API docs for `Image`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Image) * πŸ¦€ [Rust API docs for `Image`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Image.html) diff --git a/docs/content/reference/types/archetypes/line_strips2d.md b/docs/content/reference/types/archetypes/line_strips2d.md index 316997686dda6..5e53f6eab5d9a 100644 --- a/docs/content/reference/types/archetypes/line_strips2d.md +++ b/docs/content/reference/types/archetypes/line_strips2d.md @@ -1,6 +1,7 @@ --- title: "LineStrips2D" --- + 2D line strips with positions and optional colors, radii, labels, etc. @@ -12,7 +13,11 @@ title: "LineStrips2D" **Optional**: [`Text`](../components/text.md), [`DrawOrder`](../components/draw_order.md), [`ClassId`](../components/class_id.md) -## Links +## Shown in +* [Spatial2DView](../views/spatial2d_view.md) +* [Spatial3DView](../views/spatial3d_view.md) (if logged under a projection) + +## Api reference links * 🌊 [C++ API docs for `LineStrips2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1LineStrips2D.html) * 🐍 [Python API docs for `LineStrips2D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.LineStrips2D) * πŸ¦€ [Rust API docs for `LineStrips2D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.LineStrips2D.html) diff --git a/docs/content/reference/types/archetypes/line_strips3d.md b/docs/content/reference/types/archetypes/line_strips3d.md index eefa9fa457a6c..63484e839d1e9 100644 --- a/docs/content/reference/types/archetypes/line_strips3d.md +++ b/docs/content/reference/types/archetypes/line_strips3d.md @@ -1,6 +1,7 @@ --- title: "LineStrips3D" --- + 3D line strips with positions and optional colors, radii, labels, etc. @@ -12,7 +13,11 @@ title: "LineStrips3D" **Optional**: [`Text`](../components/text.md), [`ClassId`](../components/class_id.md) -## Links +## Shown in +* [Spatial3DView](../views/spatial3d_view.md) +* [Spatial2DView](../views/spatial2d_view.md) (if logged above active projection) + +## Api reference links * 🌊 [C++ API docs for `LineStrips3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1LineStrips3D.html) * 🐍 [Python API docs for `LineStrips3D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.LineStrips3D) * πŸ¦€ [Rust API docs for `LineStrips3D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.LineStrips3D.html) diff --git a/docs/content/reference/types/archetypes/mesh3d.md b/docs/content/reference/types/archetypes/mesh3d.md index 8c30fe65f691d..6ff8b88a96018 100644 --- a/docs/content/reference/types/archetypes/mesh3d.md +++ b/docs/content/reference/types/archetypes/mesh3d.md @@ -1,6 +1,7 @@ --- title: "Mesh3D" --- + A 3D triangle mesh as specified by its per-mesh and per-vertex properties. @@ -12,7 +13,11 @@ A 3D triangle mesh as specified by its per-mesh and per-vertex properties. **Optional**: [`Color`](../components/color.md), [`Texcoord2D`](../components/texcoord2d.md), [`Material`](../components/material.md), [`TensorData`](../components/tensor_data.md), [`ClassId`](../components/class_id.md) -## Links +## Shown in +* [Spatial3DView](../views/spatial3d_view.md) +* [Spatial2DView](../views/spatial2d_view.md) (if logged above active projection) + +## Api reference links * 🌊 [C++ API docs for `Mesh3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Mesh3D.html) * 🐍 [Python API docs for `Mesh3D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Mesh3D) * πŸ¦€ [Rust API docs for `Mesh3D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Mesh3D.html) diff --git a/docs/content/reference/types/archetypes/pinhole.md b/docs/content/reference/types/archetypes/pinhole.md index 6a4babbeeef99..847a1ca89da15 100644 --- a/docs/content/reference/types/archetypes/pinhole.md +++ b/docs/content/reference/types/archetypes/pinhole.md @@ -1,6 +1,7 @@ --- title: "Pinhole" --- + Camera perspective projection (a.k.a. intrinsics). @@ -12,7 +13,11 @@ Camera perspective projection (a.k.a. intrinsics). **Optional**: [`ViewCoordinates`](../components/view_coordinates.md) -## Links +## Shown in +* [Spatial2DView](../views/spatial2d_view.md) +* [Spatial2DView](../views/spatial2d_view.md) + +## Api reference links * 🌊 [C++ API docs for `Pinhole`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Pinhole.html) * 🐍 [Python API docs for `Pinhole`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Pinhole) * πŸ¦€ [Rust API docs for `Pinhole`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Pinhole.html) diff --git a/docs/content/reference/types/archetypes/points2d.md b/docs/content/reference/types/archetypes/points2d.md index 6230a50e53a11..a4a43a3cb8ef2 100644 --- a/docs/content/reference/types/archetypes/points2d.md +++ b/docs/content/reference/types/archetypes/points2d.md @@ -1,6 +1,7 @@ --- title: "Points2D" --- + A 2D point cloud with positions and optional colors, radii, labels, etc. @@ -12,7 +13,11 @@ A 2D point cloud with positions and optional colors, radii, labels, etc. **Optional**: [`Text`](../components/text.md), [`DrawOrder`](../components/draw_order.md), [`ClassId`](../components/class_id.md), [`KeypointId`](../components/keypoint_id.md) -## Links +## Shown in +* [Spatial2DView](../views/spatial2d_view.md) +* [Spatial3DView](../views/spatial3d_view.md) (if logged under a projection) + +## Api reference links * 🌊 [C++ API docs for `Points2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Points2D.html) * 🐍 [Python API docs for `Points2D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Points2D) * πŸ¦€ [Rust API docs for `Points2D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Points2D.html) diff --git a/docs/content/reference/types/archetypes/points3d.md b/docs/content/reference/types/archetypes/points3d.md index 9f0b1e59d4aa1..b234aa64d0801 100644 --- a/docs/content/reference/types/archetypes/points3d.md +++ b/docs/content/reference/types/archetypes/points3d.md @@ -1,6 +1,7 @@ --- title: "Points3D" --- + A 3D point cloud with positions and optional colors, radii, labels, etc. @@ -12,7 +13,11 @@ A 3D point cloud with positions and optional colors, radii, labels, etc. **Optional**: [`Text`](../components/text.md), [`ClassId`](../components/class_id.md), [`KeypointId`](../components/keypoint_id.md) -## Links +## Shown in +* [Spatial3DView](../views/spatial3d_view.md) +* [Spatial2DView](../views/spatial2d_view.md) (if logged above active projection) + +## Api reference links * 🌊 [C++ API docs for `Points3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Points3D.html) * 🐍 [Python API docs for `Points3D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Points3D) * πŸ¦€ [Rust API docs for `Points3D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Points3D.html) diff --git a/docs/content/reference/types/archetypes/scalar.md b/docs/content/reference/types/archetypes/scalar.md index 4b4e5314de58c..d8a68ad256807 100644 --- a/docs/content/reference/types/archetypes/scalar.md +++ b/docs/content/reference/types/archetypes/scalar.md @@ -1,6 +1,7 @@ --- title: "Scalar" --- + Log a double-precision scalar. @@ -16,7 +17,10 @@ the plot-specific archetypes through the blueprint. **Required**: [`Scalar`](../components/scalar.md) -## Links +## Shown in +* [TimeSeriesView](../views/time_series_view.md) + +## Api reference links * 🌊 [C++ API docs for `Scalar`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Scalar.html) * 🐍 [Python API docs for `Scalar`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Scalar) * πŸ¦€ [Rust API docs for `Scalar`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Scalar.html) diff --git a/docs/content/reference/types/archetypes/segmentation_image.md b/docs/content/reference/types/archetypes/segmentation_image.md index ac92838c8963a..831aa70f783ea 100644 --- a/docs/content/reference/types/archetypes/segmentation_image.md +++ b/docs/content/reference/types/archetypes/segmentation_image.md @@ -1,6 +1,7 @@ --- title: "SegmentationImage" --- + An image made up of integer class-ids. @@ -19,7 +20,11 @@ Leading and trailing unit-dimensions are ignored, so that **Optional**: [`DrawOrder`](../components/draw_order.md) -## Links +## Shown in +* [Spatial2DView](../views/spatial2d_view.md) +* [Spatial3DView](../views/spatial3d_view.md) (if logged under a projection) + +## Api reference links * 🌊 [C++ API docs for `SegmentationImage`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1SegmentationImage.html) * 🐍 [Python API docs for `SegmentationImage`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.SegmentationImage) * πŸ¦€ [Rust API docs for `SegmentationImage`](https://docs.rs/rerun/latest/rerun/archetypes/struct.SegmentationImage.html) diff --git a/docs/content/reference/types/archetypes/series_line.md b/docs/content/reference/types/archetypes/series_line.md index f2a7278dc8c72..1de8c454fb938 100644 --- a/docs/content/reference/types/archetypes/series_line.md +++ b/docs/content/reference/types/archetypes/series_line.md @@ -1,6 +1,7 @@ --- title: "SeriesLine" --- + Define the style properties for a line series in a chart. @@ -12,7 +13,10 @@ the `Scalar` archetype. **Optional**: [`Color`](../components/color.md), [`StrokeWidth`](../components/stroke_width.md), [`Name`](../components/name.md) -## Links +## Shown in +* [TimeSeriesView](../views/time_series_view.md) + +## Api reference links * 🌊 [C++ API docs for `SeriesLine`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1SeriesLine.html) * 🐍 [Python API docs for `SeriesLine`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.SeriesLine) * πŸ¦€ [Rust API docs for `SeriesLine`](https://docs.rs/rerun/latest/rerun/archetypes/struct.SeriesLine.html) diff --git a/docs/content/reference/types/archetypes/series_point.md b/docs/content/reference/types/archetypes/series_point.md index 6b5e35961f93e..feb0af8844c88 100644 --- a/docs/content/reference/types/archetypes/series_point.md +++ b/docs/content/reference/types/archetypes/series_point.md @@ -1,6 +1,7 @@ --- title: "SeriesPoint" --- + Define the style properties for a point series in a chart. @@ -12,7 +13,10 @@ the `Scalar` archetype. **Optional**: [`Color`](../components/color.md), [`MarkerShape`](../components/marker_shape.md), [`Name`](../components/name.md), [`MarkerSize`](../components/marker_size.md) -## Links +## Shown in +* [TimeSeriesView](../views/time_series_view.md) + +## Api reference links * 🌊 [C++ API docs for `SeriesPoint`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1SeriesPoint.html) * 🐍 [Python API docs for `SeriesPoint`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.SeriesPoint) * πŸ¦€ [Rust API docs for `SeriesPoint`](https://docs.rs/rerun/latest/rerun/archetypes/struct.SeriesPoint.html) diff --git a/docs/content/reference/types/archetypes/tensor.md b/docs/content/reference/types/archetypes/tensor.md index a72a338fefa61..320ebd7b3e904 100644 --- a/docs/content/reference/types/archetypes/tensor.md +++ b/docs/content/reference/types/archetypes/tensor.md @@ -1,6 +1,7 @@ --- title: "Tensor" --- + A generic n-dimensional Tensor. @@ -8,7 +9,11 @@ A generic n-dimensional Tensor. **Required**: [`TensorData`](../components/tensor_data.md) -## Links +## Shown in +* [TensorView](../views/tensor_view.md) +* [BarChartView](../views/bar_chart_view.md) (for 1D tensors) + +## Api reference links * 🌊 [C++ API docs for `Tensor`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Tensor.html) * 🐍 [Python API docs for `Tensor`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Tensor) * πŸ¦€ [Rust API docs for `Tensor`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Tensor.html) diff --git a/docs/content/reference/types/archetypes/text_document.md b/docs/content/reference/types/archetypes/text_document.md index 01b2b81de2263..d13bb5825a06b 100644 --- a/docs/content/reference/types/archetypes/text_document.md +++ b/docs/content/reference/types/archetypes/text_document.md @@ -1,6 +1,7 @@ --- title: "TextDocument" --- + A text element intended to be displayed in its own text-box. @@ -12,7 +13,10 @@ Supports raw text and markdown. **Optional**: [`MediaType`](../components/media_type.md) -## Links +## Shown in +* [TextDocumentView](../views/text_document_view.md) + +## Api reference links * 🌊 [C++ API docs for `TextDocument`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1TextDocument.html) * 🐍 [Python API docs for `TextDocument`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.TextDocument) * πŸ¦€ [Rust API docs for `TextDocument`](https://docs.rs/rerun/latest/rerun/archetypes/struct.TextDocument.html) diff --git a/docs/content/reference/types/archetypes/text_log.md b/docs/content/reference/types/archetypes/text_log.md index 485860603c171..7e4deb88ce2a8 100644 --- a/docs/content/reference/types/archetypes/text_log.md +++ b/docs/content/reference/types/archetypes/text_log.md @@ -1,6 +1,7 @@ --- title: "TextLog" --- + A log entry in a text log, comprised of a text body and its log level. @@ -12,7 +13,10 @@ A log entry in a text log, comprised of a text body and its log level. **Optional**: [`Color`](../components/color.md) -## Links +## Shown in +* [TextLogView](../views/text_log_view.md) + +## Api reference links * 🌊 [C++ API docs for `TextLog`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1TextLog.html) * 🐍 [Python API docs for `TextLog`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.TextLog) * πŸ¦€ [Rust API docs for `TextLog`](https://docs.rs/rerun/latest/rerun/archetypes/struct.TextLog.html) diff --git a/docs/content/reference/types/archetypes/transform3d.md b/docs/content/reference/types/archetypes/transform3d.md index 37419a44a4a50..dce2c974b2c53 100644 --- a/docs/content/reference/types/archetypes/transform3d.md +++ b/docs/content/reference/types/archetypes/transform3d.md @@ -1,6 +1,7 @@ --- title: "Transform3D" --- + A 3D transform. @@ -8,7 +9,11 @@ A 3D transform. **Required**: [`Transform3D`](../components/transform3d.md) -## Links +## Shown in +* [Spatial3DView](../views/spatial3d_view.md) +* [Spatial2DView](../views/spatial2d_view.md) (if logged above active projection) + +## Api reference links * 🌊 [C++ API docs for `Transform3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Transform3D.html) * 🐍 [Python API docs for `Transform3D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Transform3D) * πŸ¦€ [Rust API docs for `Transform3D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Transform3D.html) diff --git a/docs/content/reference/types/archetypes/view_coordinates.md b/docs/content/reference/types/archetypes/view_coordinates.md index 51c0ae3aea859..c42fdcb0ce640 100644 --- a/docs/content/reference/types/archetypes/view_coordinates.md +++ b/docs/content/reference/types/archetypes/view_coordinates.md @@ -1,6 +1,7 @@ --- title: "ViewCoordinates" --- + How we interpret the coordinate system of an entity/space. @@ -15,7 +16,10 @@ down, and the Z axis points forward. **Required**: [`ViewCoordinates`](../components/view_coordinates.md) -## Links +## Shown in +* [Spatial3DView](../views/spatial3d_view.md) + +## Api reference links * 🌊 [C++ API docs for `ViewCoordinates`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1ViewCoordinates.html) * 🐍 [Python API docs for `ViewCoordinates`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.ViewCoordinates) * πŸ¦€ [Rust API docs for `ViewCoordinates`](https://docs.rs/rerun/latest/rerun/archetypes/struct.ViewCoordinates.html) diff --git a/docs/content/reference/types/components.md b/docs/content/reference/types/components.md index 3320739bcb602..278637b827fab 100644 --- a/docs/content/reference/types/components.md +++ b/docs/content/reference/types/components.md @@ -2,7 +2,6 @@ title: "Components" order: 2 --- - Components are the fundamental unit of logging in Rerun. This page lists all built-in components. diff --git a/docs/content/reference/types/components/annotation_context.md b/docs/content/reference/types/components/annotation_context.md index cf55f4b54ae96..89546b32cfe67 100644 --- a/docs/content/reference/types/components/annotation_context.md +++ b/docs/content/reference/types/components/annotation_context.md @@ -1,6 +1,7 @@ --- title: "AnnotationContext" --- + The `AnnotationContext` provides additional information on how to display entities. @@ -14,7 +15,7 @@ path. * class_map: list of [`ClassDescriptionMapElem`](../datatypes/class_description_map_elem.md) -## Links +## Api reference links * 🌊 [C++ API docs for `AnnotationContext`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1AnnotationContext.html) * 🐍 [Python API docs for `AnnotationContext`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.AnnotationContext) * πŸ¦€ [Rust API docs for `AnnotationContext`](https://docs.rs/rerun/latest/rerun/components/struct.AnnotationContext.html) diff --git a/docs/content/reference/types/components/blob.md b/docs/content/reference/types/components/blob.md index 219a8e4af9230..b03e8c404d55f 100644 --- a/docs/content/reference/types/components/blob.md +++ b/docs/content/reference/types/components/blob.md @@ -1,6 +1,7 @@ --- title: "Blob" --- + A binary blob of data. @@ -8,7 +9,7 @@ A binary blob of data. * data: list of `u8` -## Links +## Api reference links * 🌊 [C++ API docs for `Blob`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Blob.html) * 🐍 [Python API docs for `Blob`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Blob) * πŸ¦€ [Rust API docs for `Blob`](https://docs.rs/rerun/latest/rerun/components/struct.Blob.html) diff --git a/docs/content/reference/types/components/class_id.md b/docs/content/reference/types/components/class_id.md index a02b9934f606e..116bc5bba4449 100644 --- a/docs/content/reference/types/components/class_id.md +++ b/docs/content/reference/types/components/class_id.md @@ -1,6 +1,7 @@ --- title: "ClassId" --- + A 16-bit ID representing a type of semantic class. @@ -8,7 +9,7 @@ A 16-bit ID representing a type of semantic class. * id: [`ClassId`](../datatypes/class_id.md) -## Links +## Api reference links * 🌊 [C++ API docs for `ClassId`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1ClassId.html) * 🐍 [Python API docs for `ClassId`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.ClassId) * πŸ¦€ [Rust API docs for `ClassId`](https://docs.rs/rerun/latest/rerun/components/struct.ClassId.html) diff --git a/docs/content/reference/types/components/clear_is_recursive.md b/docs/content/reference/types/components/clear_is_recursive.md index f654557597a41..c8f324a59cd60 100644 --- a/docs/content/reference/types/components/clear_is_recursive.md +++ b/docs/content/reference/types/components/clear_is_recursive.md @@ -1,6 +1,7 @@ --- title: "ClearIsRecursive" --- + Configures how a clear operation should behave - recursive or not. @@ -8,7 +9,7 @@ Configures how a clear operation should behave - recursive or not. * recursive: `bool` -## Links +## Api reference links * 🌊 [C++ API docs for `ClearIsRecursive`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1ClearIsRecursive.html) * 🐍 [Python API docs for `ClearIsRecursive`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.ClearIsRecursive) * πŸ¦€ [Rust API docs for `ClearIsRecursive`](https://docs.rs/rerun/latest/rerun/components/struct.ClearIsRecursive.html) diff --git a/docs/content/reference/types/components/color.md b/docs/content/reference/types/components/color.md index d412ebb62db40..0d5db37b32544 100644 --- a/docs/content/reference/types/components/color.md +++ b/docs/content/reference/types/components/color.md @@ -1,6 +1,7 @@ --- title: "Color" --- + An RGBA color with unmultiplied/separate alpha, in sRGB gamma space with linear alpha. @@ -11,7 +12,7 @@ byte is `R` and the least significant byte is `A`. * rgba: [`Rgba32`](../datatypes/rgba32.md) -## Links +## Api reference links * 🌊 [C++ API docs for `Color`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Color.html) * 🐍 [Python API docs for `Color`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Color) * πŸ¦€ [Rust API docs for `Color`](https://docs.rs/rerun/latest/rerun/components/struct.Color.html) diff --git a/docs/content/reference/types/components/depth_meter.md b/docs/content/reference/types/components/depth_meter.md index 01d0889852280..53a5902a7c5c3 100644 --- a/docs/content/reference/types/components/depth_meter.md +++ b/docs/content/reference/types/components/depth_meter.md @@ -1,6 +1,7 @@ --- title: "DepthMeter" --- + A component indicating how long a meter is, expressed in native units. @@ -8,7 +9,7 @@ A component indicating how long a meter is, expressed in native units. * value: `f32` -## Links +## Api reference links * 🌊 [C++ API docs for `DepthMeter`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1DepthMeter.html) * 🐍 [Python API docs for `DepthMeter`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.DepthMeter) * πŸ¦€ [Rust API docs for `DepthMeter`](https://docs.rs/rerun/latest/rerun/components/struct.DepthMeter.html) diff --git a/docs/content/reference/types/components/disconnected_space.md b/docs/content/reference/types/components/disconnected_space.md index d7faa63c706af..48193d8fbd3d0 100644 --- a/docs/content/reference/types/components/disconnected_space.md +++ b/docs/content/reference/types/components/disconnected_space.md @@ -1,6 +1,7 @@ --- title: "DisconnectedSpace" --- + Spatially disconnect this entity from its parent. @@ -13,7 +14,7 @@ This is useful for specifying that a subgraph is independent of the rest of the * is_disconnected: `bool` -## Links +## Api reference links * 🌊 [C++ API docs for `DisconnectedSpace`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1DisconnectedSpace.html) * 🐍 [Python API docs for `DisconnectedSpace`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.DisconnectedSpace) * πŸ¦€ [Rust API docs for `DisconnectedSpace`](https://docs.rs/rerun/latest/rerun/components/struct.DisconnectedSpace.html) diff --git a/docs/content/reference/types/components/draw_order.md b/docs/content/reference/types/components/draw_order.md index 6997c95b4e9f4..f1dbea93e2720 100644 --- a/docs/content/reference/types/components/draw_order.md +++ b/docs/content/reference/types/components/draw_order.md @@ -1,6 +1,7 @@ --- title: "DrawOrder" --- + Draw order used for the display order of 2D elements. @@ -14,7 +15,7 @@ Draw order for entities with the same draw order is generally undefined. * value: `f32` -## Links +## Api reference links * 🌊 [C++ API docs for `DrawOrder`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1DrawOrder.html) * 🐍 [Python API docs for `DrawOrder`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.DrawOrder) * πŸ¦€ [Rust API docs for `DrawOrder`](https://docs.rs/rerun/latest/rerun/components/struct.DrawOrder.html) diff --git a/docs/content/reference/types/components/half_sizes2d.md b/docs/content/reference/types/components/half_sizes2d.md index 3979fdce03b7a..0b0c7b692ddf7 100644 --- a/docs/content/reference/types/components/half_sizes2d.md +++ b/docs/content/reference/types/components/half_sizes2d.md @@ -1,6 +1,7 @@ --- title: "HalfSizes2D" --- + Half-sizes (extents) of a 2D box along its local axis, starting at its local origin/center. @@ -11,7 +12,7 @@ Negative sizes indicate that the box is flipped along the respective axis, but t * xy: [`Vec2D`](../datatypes/vec2d.md) -## Links +## Api reference links * 🌊 [C++ API docs for `HalfSizes2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1HalfSizes2D.html) * 🐍 [Python API docs for `HalfSizes2D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.HalfSizes2D) * πŸ¦€ [Rust API docs for `HalfSizes2D`](https://docs.rs/rerun/latest/rerun/components/struct.HalfSizes2D.html) diff --git a/docs/content/reference/types/components/half_sizes3d.md b/docs/content/reference/types/components/half_sizes3d.md index ff1e11f90157f..11876502972c9 100644 --- a/docs/content/reference/types/components/half_sizes3d.md +++ b/docs/content/reference/types/components/half_sizes3d.md @@ -1,6 +1,7 @@ --- title: "HalfSizes3D" --- + Half-sizes (extents) of a 3D box along its local axis, starting at its local origin/center. @@ -11,7 +12,7 @@ Negative sizes indicate that the box is flipped along the respective axis, but t * xyz: [`Vec3D`](../datatypes/vec3d.md) -## Links +## Api reference links * 🌊 [C++ API docs for `HalfSizes3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1HalfSizes3D.html) * 🐍 [Python API docs for `HalfSizes3D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.HalfSizes3D) * πŸ¦€ [Rust API docs for `HalfSizes3D`](https://docs.rs/rerun/latest/rerun/components/struct.HalfSizes3D.html) diff --git a/docs/content/reference/types/components/keypoint_id.md b/docs/content/reference/types/components/keypoint_id.md index 0571a566b9bef..c308091d309a4 100644 --- a/docs/content/reference/types/components/keypoint_id.md +++ b/docs/content/reference/types/components/keypoint_id.md @@ -1,6 +1,7 @@ --- title: "KeypointId" --- + A 16-bit ID representing a type of semantic keypoint within a class. @@ -8,7 +9,7 @@ A 16-bit ID representing a type of semantic keypoint within a class. * id: [`KeypointId`](../datatypes/keypoint_id.md) -## Links +## Api reference links * 🌊 [C++ API docs for `KeypointId`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1KeypointId.html) * 🐍 [Python API docs for `KeypointId`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.KeypointId) * πŸ¦€ [Rust API docs for `KeypointId`](https://docs.rs/rerun/latest/rerun/components/struct.KeypointId.html) diff --git a/docs/content/reference/types/components/line_strip2d.md b/docs/content/reference/types/components/line_strip2d.md index a060b839c9972..5dd0dad4afffe 100644 --- a/docs/content/reference/types/components/line_strip2d.md +++ b/docs/content/reference/types/components/line_strip2d.md @@ -1,6 +1,7 @@ --- title: "LineStrip2D" --- + A line strip in 2D space. @@ -19,7 +20,7 @@ The points will be connected in order, like so: * points: list of [`Vec2D`](../datatypes/vec2d.md) -## Links +## Api reference links * 🌊 [C++ API docs for `LineStrip2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1LineStrip2D.html) * 🐍 [Python API docs for `LineStrip2D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.LineStrip2D) * πŸ¦€ [Rust API docs for `LineStrip2D`](https://docs.rs/rerun/latest/rerun/components/struct.LineStrip2D.html) diff --git a/docs/content/reference/types/components/line_strip3d.md b/docs/content/reference/types/components/line_strip3d.md index 0483b9158ed3c..d470d5f768942 100644 --- a/docs/content/reference/types/components/line_strip3d.md +++ b/docs/content/reference/types/components/line_strip3d.md @@ -1,6 +1,7 @@ --- title: "LineStrip3D" --- + A line strip in 3D space. @@ -19,7 +20,7 @@ The points will be connected in order, like so: * points: list of [`Vec3D`](../datatypes/vec3d.md) -## Links +## Api reference links * 🌊 [C++ API docs for `LineStrip3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1LineStrip3D.html) * 🐍 [Python API docs for `LineStrip3D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.LineStrip3D) * πŸ¦€ [Rust API docs for `LineStrip3D`](https://docs.rs/rerun/latest/rerun/components/struct.LineStrip3D.html) diff --git a/docs/content/reference/types/components/marker_shape.md b/docs/content/reference/types/components/marker_shape.md index d902de3d51a31..660315ccf5baf 100644 --- a/docs/content/reference/types/components/marker_shape.md +++ b/docs/content/reference/types/components/marker_shape.md @@ -1,6 +1,7 @@ --- title: "MarkerShape" --- + Shape of a marker. @@ -17,7 +18,7 @@ Shape of a marker. * Right * Asterisk -## Links +## Api reference links * 🌊 [C++ API docs for `MarkerShape`](https://ref.rerun.io/docs/cpp/stable/namespacererun_1_1components.html) * 🐍 [Python API docs for `MarkerShape`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.MarkerShape) * πŸ¦€ [Rust API docs for `MarkerShape`](https://docs.rs/rerun/latest/rerun/components/enum.MarkerShape.html) diff --git a/docs/content/reference/types/components/marker_size.md b/docs/content/reference/types/components/marker_size.md index 17a5b96e700fa..bacbdf6d40fdd 100644 --- a/docs/content/reference/types/components/marker_size.md +++ b/docs/content/reference/types/components/marker_size.md @@ -1,6 +1,7 @@ --- title: "MarkerSize" --- + Size of a marker in UI points. @@ -8,7 +9,7 @@ Size of a marker in UI points. * value: `f32` -## Links +## Api reference links * 🌊 [C++ API docs for `MarkerSize`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1MarkerSize.html) * 🐍 [Python API docs for `MarkerSize`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.MarkerSize) * πŸ¦€ [Rust API docs for `MarkerSize`](https://docs.rs/rerun/latest/rerun/components/struct.MarkerSize.html) diff --git a/docs/content/reference/types/components/material.md b/docs/content/reference/types/components/material.md index c976e3cd31e05..7cf3664482aad 100644 --- a/docs/content/reference/types/components/material.md +++ b/docs/content/reference/types/components/material.md @@ -1,6 +1,7 @@ --- title: "Material" --- + Material properties of a mesh. @@ -8,7 +9,7 @@ Material properties of a mesh. * material: [`Material`](../datatypes/material.md) -## Links +## Api reference links * 🌊 [C++ API docs for `Material`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Material.html) * 🐍 [Python API docs for `Material`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Material) * πŸ¦€ [Rust API docs for `Material`](https://docs.rs/rerun/latest/rerun/components/struct.Material.html) diff --git a/docs/content/reference/types/components/media_type.md b/docs/content/reference/types/components/media_type.md index 9b8799bbdec6a..81a991e11c99f 100644 --- a/docs/content/reference/types/components/media_type.md +++ b/docs/content/reference/types/components/media_type.md @@ -1,6 +1,7 @@ --- title: "MediaType" --- + A standardized media type (RFC2046, formerly known as MIME types), encoded as a utf8 string. @@ -11,7 +12,7 @@ consulted at . * value: [`Utf8`](../datatypes/utf8.md) -## Links +## Api reference links * 🌊 [C++ API docs for `MediaType`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1MediaType.html) * 🐍 [Python API docs for `MediaType`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.MediaType) * πŸ¦€ [Rust API docs for `MediaType`](https://docs.rs/rerun/latest/rerun/components/struct.MediaType.html) diff --git a/docs/content/reference/types/components/name.md b/docs/content/reference/types/components/name.md index 01244b9dcb4a2..6eec0c1814735 100644 --- a/docs/content/reference/types/components/name.md +++ b/docs/content/reference/types/components/name.md @@ -1,6 +1,7 @@ --- title: "Name" --- + A display name, typically for an entity or a item like a plot series. @@ -8,7 +9,7 @@ A display name, typically for an entity or a item like a plot series. * value: [`Utf8`](../datatypes/utf8.md) -## Links +## Api reference links * 🌊 [C++ API docs for `Name`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Name.html) * 🐍 [Python API docs for `Name`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Name) * πŸ¦€ [Rust API docs for `Name`](https://docs.rs/rerun/latest/rerun/components/struct.Name.html) diff --git a/docs/content/reference/types/components/out_of_tree_transform3d.md b/docs/content/reference/types/components/out_of_tree_transform3d.md index ff6a70c37f9ff..7dcc210ca3c09 100644 --- a/docs/content/reference/types/components/out_of_tree_transform3d.md +++ b/docs/content/reference/types/components/out_of_tree_transform3d.md @@ -1,6 +1,7 @@ --- title: "OutOfTreeTransform3D" --- + An out-of-tree affine transform between two 3D spaces, represented in a given direction. @@ -10,7 +11,7 @@ An out-of-tree affine transform between two 3D spaces, represented in a given di * repr: [`Transform3D`](../datatypes/transform3d.md) -## Links +## Api reference links * 🌊 [C++ API docs for `OutOfTreeTransform3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1OutOfTreeTransform3D.html) * 🐍 [Python API docs for `OutOfTreeTransform3D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.OutOfTreeTransform3D) * πŸ¦€ [Rust API docs for `OutOfTreeTransform3D`](https://docs.rs/rerun/latest/rerun/components/struct.OutOfTreeTransform3D.html) diff --git a/docs/content/reference/types/components/pinhole_projection.md b/docs/content/reference/types/components/pinhole_projection.md index 7feb34f773fc9..13bfb04ef9255 100644 --- a/docs/content/reference/types/components/pinhole_projection.md +++ b/docs/content/reference/types/components/pinhole_projection.md @@ -1,6 +1,7 @@ --- title: "PinholeProjection" --- + Camera projection, from image coordinates to view coordinates. @@ -18,7 +19,7 @@ Example: * image_from_camera: [`Mat3x3`](../datatypes/mat3x3.md) -## Links +## Api reference links * 🌊 [C++ API docs for `PinholeProjection`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1PinholeProjection.html) * 🐍 [Python API docs for `PinholeProjection`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.PinholeProjection) * πŸ¦€ [Rust API docs for `PinholeProjection`](https://docs.rs/rerun/latest/rerun/components/struct.PinholeProjection.html) diff --git a/docs/content/reference/types/components/position2d.md b/docs/content/reference/types/components/position2d.md index 2d10f1fc88327..d70afa937b29f 100644 --- a/docs/content/reference/types/components/position2d.md +++ b/docs/content/reference/types/components/position2d.md @@ -1,6 +1,7 @@ --- title: "Position2D" --- + A position in 2D space. @@ -8,7 +9,7 @@ A position in 2D space. * xy: [`Vec2D`](../datatypes/vec2d.md) -## Links +## Api reference links * 🌊 [C++ API docs for `Position2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Position2D.html) * 🐍 [Python API docs for `Position2D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Position2D) * πŸ¦€ [Rust API docs for `Position2D`](https://docs.rs/rerun/latest/rerun/components/struct.Position2D.html) diff --git a/docs/content/reference/types/components/position3d.md b/docs/content/reference/types/components/position3d.md index eb40fd01307c5..30c1f030fac77 100644 --- a/docs/content/reference/types/components/position3d.md +++ b/docs/content/reference/types/components/position3d.md @@ -1,6 +1,7 @@ --- title: "Position3D" --- + A position in 3D space. @@ -8,7 +9,7 @@ A position in 3D space. * xyz: [`Vec3D`](../datatypes/vec3d.md) -## Links +## Api reference links * 🌊 [C++ API docs for `Position3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Position3D.html) * 🐍 [Python API docs for `Position3D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Position3D) * πŸ¦€ [Rust API docs for `Position3D`](https://docs.rs/rerun/latest/rerun/components/struct.Position3D.html) diff --git a/docs/content/reference/types/components/radius.md b/docs/content/reference/types/components/radius.md index 5e0f5ed7dd772..a7f6b58cad179 100644 --- a/docs/content/reference/types/components/radius.md +++ b/docs/content/reference/types/components/radius.md @@ -1,6 +1,7 @@ --- title: "Radius" --- + A Radius component. @@ -8,7 +9,7 @@ A Radius component. * value: `f32` -## Links +## Api reference links * 🌊 [C++ API docs for `Radius`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Radius.html) * 🐍 [Python API docs for `Radius`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Radius) * πŸ¦€ [Rust API docs for `Radius`](https://docs.rs/rerun/latest/rerun/components/struct.Radius.html) diff --git a/docs/content/reference/types/components/range1d.md b/docs/content/reference/types/components/range1d.md index 120e4d6624453..8d1e2325e840b 100644 --- a/docs/content/reference/types/components/range1d.md +++ b/docs/content/reference/types/components/range1d.md @@ -1,6 +1,7 @@ --- title: "Range1D" --- + A 1D range, specifying a lower and upper bound. @@ -8,9 +9,9 @@ A 1D range, specifying a lower and upper bound. * range: [`Range1D`](../datatypes/range1d.md) -## Links - * 🌊 [C++ API docs for `Range1D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Range1D.html) - * 🐍 [Python API docs for `Range1D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Range1D) - * πŸ¦€ [Rust API docs for `Range1D`](https://docs.rs/rerun/latest/rerun/components/struct.Range1D.html) +## Api reference links + * 🌊 [C++ API docs for `Range1D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Range1D.html?speculative-link) + * 🐍 [Python API docs for `Range1D`](https://ref.rerun.io/docs/python/stable/common/components?speculative-link#rerun.components.Range1D) + * πŸ¦€ [Rust API docs for `Range1D`](https://docs.rs/rerun/latest/rerun/components/struct.Range1D.html?speculative-link) diff --git a/docs/content/reference/types/components/range2d.md b/docs/content/reference/types/components/range2d.md index e17277fd873d8..509ef01373e0b 100644 --- a/docs/content/reference/types/components/range2d.md +++ b/docs/content/reference/types/components/range2d.md @@ -1,6 +1,7 @@ --- title: "Range2D" --- + An Axis-Aligned Bounding Box in 2D space. @@ -8,9 +9,9 @@ An Axis-Aligned Bounding Box in 2D space. * range2d: [`Range2D`](../datatypes/range2d.md) -## Links - * 🌊 [C++ API docs for `Range2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Range2D.html) - * 🐍 [Python API docs for `Range2D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Range2D) - * πŸ¦€ [Rust API docs for `Range2D`](https://docs.rs/rerun/latest/rerun/components/struct.Range2D.html) +## Api reference links + * 🌊 [C++ API docs for `Range2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Range2D.html?speculative-link) + * 🐍 [Python API docs for `Range2D`](https://ref.rerun.io/docs/python/stable/common/components?speculative-link#rerun.components.Range2D) + * πŸ¦€ [Rust API docs for `Range2D`](https://docs.rs/rerun/latest/rerun/components/struct.Range2D.html?speculative-link) diff --git a/docs/content/reference/types/components/resolution.md b/docs/content/reference/types/components/resolution.md index e789ccaed892c..ae1b2fcfe5060 100644 --- a/docs/content/reference/types/components/resolution.md +++ b/docs/content/reference/types/components/resolution.md @@ -1,6 +1,7 @@ --- title: "Resolution" --- + Pixel resolution width & height, e.g. of a camera sensor. @@ -10,7 +11,7 @@ Typically in integer units, but for some use cases floating point may be used. * resolution: [`Vec2D`](../datatypes/vec2d.md) -## Links +## Api reference links * 🌊 [C++ API docs for `Resolution`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Resolution.html) * 🐍 [Python API docs for `Resolution`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Resolution) * πŸ¦€ [Rust API docs for `Resolution`](https://docs.rs/rerun/latest/rerun/components/struct.Resolution.html) diff --git a/docs/content/reference/types/components/rotation3d.md b/docs/content/reference/types/components/rotation3d.md index 070d9f9945e6b..19444b6920688 100644 --- a/docs/content/reference/types/components/rotation3d.md +++ b/docs/content/reference/types/components/rotation3d.md @@ -1,6 +1,7 @@ --- title: "Rotation3D" --- + A 3D rotation, represented either by a quaternion or a rotation around axis. @@ -8,7 +9,7 @@ A 3D rotation, represented either by a quaternion or a rotation around axis. * repr: [`Rotation3D`](../datatypes/rotation3d.md) -## Links +## Api reference links * 🌊 [C++ API docs for `Rotation3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Rotation3D.html) * 🐍 [Python API docs for `Rotation3D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Rotation3D) * πŸ¦€ [Rust API docs for `Rotation3D`](https://docs.rs/rerun/latest/rerun/components/struct.Rotation3D.html) diff --git a/docs/content/reference/types/components/scalar.md b/docs/content/reference/types/components/scalar.md index 616d384d745b6..eacd528277b4b 100644 --- a/docs/content/reference/types/components/scalar.md +++ b/docs/content/reference/types/components/scalar.md @@ -1,6 +1,7 @@ --- title: "Scalar" --- + A double-precision scalar. @@ -10,7 +11,7 @@ Used for time series plots. * value: `f64` -## Links +## Api reference links * 🌊 [C++ API docs for `Scalar`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Scalar.html) * 🐍 [Python API docs for `Scalar`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Scalar) * πŸ¦€ [Rust API docs for `Scalar`](https://docs.rs/rerun/latest/rerun/components/struct.Scalar.html) diff --git a/docs/content/reference/types/components/scalar_scattering.md b/docs/content/reference/types/components/scalar_scattering.md index a2218a6bd86d2..e695abdac0325 100644 --- a/docs/content/reference/types/components/scalar_scattering.md +++ b/docs/content/reference/types/components/scalar_scattering.md @@ -1,6 +1,7 @@ --- title: "ScalarScattering" --- + If true, a scalar will be shown as individual point in a scatter plot. @@ -8,7 +9,7 @@ If true, a scalar will be shown as individual point in a scatter plot. * scattered: `bool` -## Links +## Api reference links * 🌊 [C++ API docs for `ScalarScattering`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1ScalarScattering.html) * 🐍 [Python API docs for `ScalarScattering`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.ScalarScattering) * πŸ¦€ [Rust API docs for `ScalarScattering`](https://docs.rs/rerun/latest/rerun/components/struct.ScalarScattering.html) diff --git a/docs/content/reference/types/components/stroke_width.md b/docs/content/reference/types/components/stroke_width.md index db91f5ef6c1cb..f093594fddcb2 100644 --- a/docs/content/reference/types/components/stroke_width.md +++ b/docs/content/reference/types/components/stroke_width.md @@ -1,6 +1,7 @@ --- title: "StrokeWidth" --- + The width of a stroke specified in UI points. @@ -8,7 +9,7 @@ The width of a stroke specified in UI points. * width: `f32` -## Links +## Api reference links * 🌊 [C++ API docs for `StrokeWidth`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1StrokeWidth.html) * 🐍 [Python API docs for `StrokeWidth`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.StrokeWidth) * πŸ¦€ [Rust API docs for `StrokeWidth`](https://docs.rs/rerun/latest/rerun/components/struct.StrokeWidth.html) diff --git a/docs/content/reference/types/components/tensor_data.md b/docs/content/reference/types/components/tensor_data.md index 3e18c84cab39f..cacf4708311e3 100644 --- a/docs/content/reference/types/components/tensor_data.md +++ b/docs/content/reference/types/components/tensor_data.md @@ -1,6 +1,7 @@ --- title: "TensorData" --- + A multi-dimensional `Tensor` of data. @@ -20,7 +21,7 @@ the shape has to be the shape of the decoded image. * data: [`TensorData`](../datatypes/tensor_data.md) -## Links +## Api reference links * 🌊 [C++ API docs for `TensorData`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1TensorData.html) * 🐍 [Python API docs for `TensorData`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.TensorData) * πŸ¦€ [Rust API docs for `TensorData`](https://docs.rs/rerun/latest/rerun/components/struct.TensorData.html) diff --git a/docs/content/reference/types/components/texcoord2d.md b/docs/content/reference/types/components/texcoord2d.md index 45ccd4ab4973b..0d7a1010c4956 100644 --- a/docs/content/reference/types/components/texcoord2d.md +++ b/docs/content/reference/types/components/texcoord2d.md @@ -1,6 +1,7 @@ --- title: "Texcoord2D" --- + A 2D texture UV coordinate. @@ -23,7 +24,7 @@ which places the origin at the bottom-left. * uv: [`Vec2D`](../datatypes/vec2d.md) -## Links +## Api reference links * 🌊 [C++ API docs for `Texcoord2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Texcoord2D.html) * 🐍 [Python API docs for `Texcoord2D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Texcoord2D) * πŸ¦€ [Rust API docs for `Texcoord2D`](https://docs.rs/rerun/latest/rerun/components/struct.Texcoord2D.html) diff --git a/docs/content/reference/types/components/text.md b/docs/content/reference/types/components/text.md index 980b18cf06fd8..f58599ac8b52c 100644 --- a/docs/content/reference/types/components/text.md +++ b/docs/content/reference/types/components/text.md @@ -1,6 +1,7 @@ --- title: "Text" --- + A string of text, e.g. for labels and text documents. @@ -8,7 +9,7 @@ A string of text, e.g. for labels and text documents. * value: [`Utf8`](../datatypes/utf8.md) -## Links +## Api reference links * 🌊 [C++ API docs for `Text`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Text.html) * 🐍 [Python API docs for `Text`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Text) * πŸ¦€ [Rust API docs for `Text`](https://docs.rs/rerun/latest/rerun/components/struct.Text.html) diff --git a/docs/content/reference/types/components/text_log_level.md b/docs/content/reference/types/components/text_log_level.md index 446e576fae6b9..f5b88fa84eb96 100644 --- a/docs/content/reference/types/components/text_log_level.md +++ b/docs/content/reference/types/components/text_log_level.md @@ -1,6 +1,7 @@ --- title: "TextLogLevel" --- + The severity level of a text log message. @@ -16,7 +17,7 @@ Recommended to be one of: * value: [`Utf8`](../datatypes/utf8.md) -## Links +## Api reference links * 🌊 [C++ API docs for `TextLogLevel`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1TextLogLevel.html) * 🐍 [Python API docs for `TextLogLevel`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.TextLogLevel) * πŸ¦€ [Rust API docs for `TextLogLevel`](https://docs.rs/rerun/latest/rerun/components/struct.TextLogLevel.html) diff --git a/docs/content/reference/types/components/transform3d.md b/docs/content/reference/types/components/transform3d.md index 1fa3db1979713..50f27c5b5743b 100644 --- a/docs/content/reference/types/components/transform3d.md +++ b/docs/content/reference/types/components/transform3d.md @@ -1,6 +1,7 @@ --- title: "Transform3D" --- + An affine transform between two 3D spaces, represented in a given direction. @@ -8,7 +9,7 @@ An affine transform between two 3D spaces, represented in a given direction. * repr: [`Transform3D`](../datatypes/transform3d.md) -## Links +## Api reference links * 🌊 [C++ API docs for `Transform3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Transform3D.html) * 🐍 [Python API docs for `Transform3D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Transform3D) * πŸ¦€ [Rust API docs for `Transform3D`](https://docs.rs/rerun/latest/rerun/components/struct.Transform3D.html) diff --git a/docs/content/reference/types/components/triangle_indices.md b/docs/content/reference/types/components/triangle_indices.md index 2509685ba74d4..430343cc5f4fa 100644 --- a/docs/content/reference/types/components/triangle_indices.md +++ b/docs/content/reference/types/components/triangle_indices.md @@ -1,6 +1,7 @@ --- title: "TriangleIndices" --- + The three indices of a triangle mesh. @@ -8,10 +9,10 @@ The three indices of a triangle mesh. * indices: [`UVec3D`](../datatypes/uvec3d.md) -## Links - * 🌊 [C++ API docs for `TriangleIndices`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1TriangleIndices.html) - * 🐍 [Python API docs for `TriangleIndices`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.TriangleIndices) - * πŸ¦€ [Rust API docs for `TriangleIndices`](https://docs.rs/rerun/latest/rerun/components/struct.TriangleIndices.html) +## Api reference links + * 🌊 [C++ API docs for `TriangleIndices`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1TriangleIndices.html?speculative-link) + * 🐍 [Python API docs for `TriangleIndices`](https://ref.rerun.io/docs/python/stable/common/components?speculative-link#rerun.components.TriangleIndices) + * πŸ¦€ [Rust API docs for `TriangleIndices`](https://docs.rs/rerun/latest/rerun/components/struct.TriangleIndices.html?speculative-link) ## Used by diff --git a/docs/content/reference/types/components/vector2d.md b/docs/content/reference/types/components/vector2d.md index d38e8f2f2ebbe..aee24277e6147 100644 --- a/docs/content/reference/types/components/vector2d.md +++ b/docs/content/reference/types/components/vector2d.md @@ -1,6 +1,7 @@ --- title: "Vector2D" --- + A vector in 2D space. @@ -8,7 +9,7 @@ A vector in 2D space. * vector: [`Vec2D`](../datatypes/vec2d.md) -## Links +## Api reference links * 🌊 [C++ API docs for `Vector2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Vector2D.html) * 🐍 [Python API docs for `Vector2D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Vector2D) * πŸ¦€ [Rust API docs for `Vector2D`](https://docs.rs/rerun/latest/rerun/components/struct.Vector2D.html) diff --git a/docs/content/reference/types/components/vector3d.md b/docs/content/reference/types/components/vector3d.md index 7c407913db2a3..f6445aab562df 100644 --- a/docs/content/reference/types/components/vector3d.md +++ b/docs/content/reference/types/components/vector3d.md @@ -1,6 +1,7 @@ --- title: "Vector3D" --- + A vector in 3D space. @@ -8,7 +9,7 @@ A vector in 3D space. * vector: [`Vec3D`](../datatypes/vec3d.md) -## Links +## Api reference links * 🌊 [C++ API docs for `Vector3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Vector3D.html) * 🐍 [Python API docs for `Vector3D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Vector3D) * πŸ¦€ [Rust API docs for `Vector3D`](https://docs.rs/rerun/latest/rerun/components/struct.Vector3D.html) diff --git a/docs/content/reference/types/components/view_coordinates.md b/docs/content/reference/types/components/view_coordinates.md index 006e9f373b247..5bcf0cd7479f1 100644 --- a/docs/content/reference/types/components/view_coordinates.md +++ b/docs/content/reference/types/components/view_coordinates.md @@ -1,6 +1,7 @@ --- title: "ViewCoordinates" --- + How we interpret the coordinate system of an entity/space. @@ -23,7 +24,7 @@ The following constants are used to represent the different directions: * coordinates: 3x `u8` -## Links +## Api reference links * 🌊 [C++ API docs for `ViewCoordinates`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1ViewCoordinates.html) * 🐍 [Python API docs for `ViewCoordinates`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.ViewCoordinates) * πŸ¦€ [Rust API docs for `ViewCoordinates`](https://docs.rs/rerun/latest/rerun/components/struct.ViewCoordinates.html) diff --git a/docs/content/reference/types/components/visualizer_overrides.md b/docs/content/reference/types/components/visualizer_overrides.md index f6056e17ed4b7..b6dc857500964 100644 --- a/docs/content/reference/types/components/visualizer_overrides.md +++ b/docs/content/reference/types/components/visualizer_overrides.md @@ -1,6 +1,7 @@ --- title: "VisualizerOverrides" --- + The name of a visualizer. @@ -8,7 +9,7 @@ The name of a visualizer. * value: list of `string` -## Links +## Api reference links * 🌊 [C++ API docs for `VisualizerOverrides`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1VisualizerOverrides.html) * 🐍 [Python API docs for `VisualizerOverrides`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.VisualizerOverrides) * πŸ¦€ [Rust API docs for `VisualizerOverrides`](https://docs.rs/rerun/latest/rerun/components/struct.VisualizerOverrides.html) diff --git a/docs/content/reference/types/datatypes.md b/docs/content/reference/types/datatypes.md index 88893278bad73..44da8f00e832d 100644 --- a/docs/content/reference/types/datatypes.md +++ b/docs/content/reference/types/datatypes.md @@ -2,7 +2,6 @@ title: "Datatypes" order: 3 --- - Data types are the lowest layer of the data model hierarchy. They are re-usable types used by the components. diff --git a/docs/content/reference/types/datatypes/angle.md b/docs/content/reference/types/datatypes/angle.md index 704281efc7b76..647b16e5f1d35 100644 --- a/docs/content/reference/types/datatypes/angle.md +++ b/docs/content/reference/types/datatypes/angle.md @@ -1,6 +1,7 @@ --- title: "Angle" --- + Angle in either radians or degrees. @@ -9,7 +10,7 @@ Angle in either radians or degrees. * Radians: `f32` * Degrees: `f32` -## Links +## Api reference links * 🌊 [C++ API docs for `Angle`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Angle.html) * 🐍 [Python API docs for `Angle`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Angle) * πŸ¦€ [Rust API docs for `Angle`](https://docs.rs/rerun/latest/rerun/datatypes/enum.Angle.html) diff --git a/docs/content/reference/types/datatypes/annotation_info.md b/docs/content/reference/types/datatypes/annotation_info.md index 54ae74e6291ed..9ec270159447b 100644 --- a/docs/content/reference/types/datatypes/annotation_info.md +++ b/docs/content/reference/types/datatypes/annotation_info.md @@ -1,6 +1,7 @@ --- title: "AnnotationInfo" --- + Annotation info annotating a class id or key-point id. @@ -13,7 +14,7 @@ The id refers either to a class or key-point id * label: [`Utf8`](../datatypes/utf8.md) * color: [`Rgba32`](../datatypes/rgba32.md) -## Links +## Api reference links * 🌊 [C++ API docs for `AnnotationInfo`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1AnnotationInfo.html) * 🐍 [Python API docs for `AnnotationInfo`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.AnnotationInfo) * πŸ¦€ [Rust API docs for `AnnotationInfo`](https://docs.rs/rerun/latest/rerun/datatypes/struct.AnnotationInfo.html) diff --git a/docs/content/reference/types/datatypes/bool.md b/docs/content/reference/types/datatypes/bool.md index 7d26b9286f604..f2d2e38eaff91 100644 --- a/docs/content/reference/types/datatypes/bool.md +++ b/docs/content/reference/types/datatypes/bool.md @@ -1,6 +1,7 @@ --- title: "Bool" --- + A single boolean. @@ -8,7 +9,7 @@ A single boolean. * value: `bool` -## Links +## Api reference links * 🌊 [C++ API docs for `Bool`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Bool.html) * 🐍 [Python API docs for `Bool`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Bool) * πŸ¦€ [Rust API docs for `Bool`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Bool.html) diff --git a/docs/content/reference/types/datatypes/class_description.md b/docs/content/reference/types/datatypes/class_description.md index 9c34c8c2e856c..b8b4852e8f053 100644 --- a/docs/content/reference/types/datatypes/class_description.md +++ b/docs/content/reference/types/datatypes/class_description.md @@ -1,6 +1,7 @@ --- title: "ClassDescription" --- + The description of a semantic Class. @@ -23,7 +24,7 @@ colored as described by the class's `AnnotationInfo`. * keypoint_annotations: list of [`AnnotationInfo`](../datatypes/annotation_info.md) * keypoint_connections: list of [`KeypointPair`](../datatypes/keypoint_pair.md) -## Links +## Api reference links * 🌊 [C++ API docs for `ClassDescription`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1ClassDescription.html) * 🐍 [Python API docs for `ClassDescription`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.ClassDescription) * πŸ¦€ [Rust API docs for `ClassDescription`](https://docs.rs/rerun/latest/rerun/datatypes/struct.ClassDescription.html) diff --git a/docs/content/reference/types/datatypes/class_description_map_elem.md b/docs/content/reference/types/datatypes/class_description_map_elem.md index 6c957bc6f04a3..7a6c959e8ea99 100644 --- a/docs/content/reference/types/datatypes/class_description_map_elem.md +++ b/docs/content/reference/types/datatypes/class_description_map_elem.md @@ -1,6 +1,7 @@ --- title: "ClassDescriptionMapElem" --- + A helper type for mapping class IDs to class descriptions. @@ -11,7 +12,7 @@ This is internal to the `AnnotationContext` structure. * class_id: [`ClassId`](../datatypes/class_id.md) * class_description: [`ClassDescription`](../datatypes/class_description.md) -## Links +## Api reference links * 🌊 [C++ API docs for `ClassDescriptionMapElem`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1ClassDescriptionMapElem.html) * 🐍 [Python API docs for `ClassDescriptionMapElem`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.ClassDescriptionMapElem) * πŸ¦€ [Rust API docs for `ClassDescriptionMapElem`](https://docs.rs/rerun/latest/rerun/datatypes/struct.ClassDescriptionMapElem.html) diff --git a/docs/content/reference/types/datatypes/class_id.md b/docs/content/reference/types/datatypes/class_id.md index 4a39ebf28ae96..8a628db578469 100644 --- a/docs/content/reference/types/datatypes/class_id.md +++ b/docs/content/reference/types/datatypes/class_id.md @@ -1,6 +1,7 @@ --- title: "ClassId" --- + A 16-bit ID representing a type of semantic class. @@ -8,7 +9,7 @@ A 16-bit ID representing a type of semantic class. * id: `u16` -## Links +## Api reference links * 🌊 [C++ API docs for `ClassId`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1ClassId.html) * 🐍 [Python API docs for `ClassId`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.ClassId) * πŸ¦€ [Rust API docs for `ClassId`](https://docs.rs/rerun/latest/rerun/datatypes/struct.ClassId.html) diff --git a/docs/content/reference/types/datatypes/entity_path.md b/docs/content/reference/types/datatypes/entity_path.md index 05441b6625f6c..a858b94803635 100644 --- a/docs/content/reference/types/datatypes/entity_path.md +++ b/docs/content/reference/types/datatypes/entity_path.md @@ -1,6 +1,7 @@ --- title: "EntityPath" --- + A path to an entity in the `DataStore`. @@ -8,7 +9,7 @@ A path to an entity in the `DataStore`. * path: `string` -## Links +## Api reference links * 🌊 [C++ API docs for `EntityPath`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1EntityPath.html) * 🐍 [Python API docs for `EntityPath`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.EntityPath) * πŸ¦€ [Rust API docs for `EntityPath`](https://docs.rs/rerun/latest/rerun/datatypes/struct.EntityPath.html) diff --git a/docs/content/reference/types/datatypes/float32.md b/docs/content/reference/types/datatypes/float32.md index e7b3811c6a589..a901c202ca827 100644 --- a/docs/content/reference/types/datatypes/float32.md +++ b/docs/content/reference/types/datatypes/float32.md @@ -1,6 +1,7 @@ --- title: "Float32" --- + A single-precision 32-bit IEEE 754 floating point number. @@ -8,7 +9,7 @@ A single-precision 32-bit IEEE 754 floating point number. * value: `f32` -## Links +## Api reference links * 🌊 [C++ API docs for `Float32`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Float32.html) * 🐍 [Python API docs for `Float32`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Float32) * πŸ¦€ [Rust API docs for `Float32`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Float32.html) diff --git a/docs/content/reference/types/datatypes/keypoint_id.md b/docs/content/reference/types/datatypes/keypoint_id.md index fd53dc3846bb4..e05e3b6a7beb9 100644 --- a/docs/content/reference/types/datatypes/keypoint_id.md +++ b/docs/content/reference/types/datatypes/keypoint_id.md @@ -1,6 +1,7 @@ --- title: "KeypointId" --- + A 16-bit ID representing a type of semantic keypoint within a class. @@ -8,7 +9,7 @@ A 16-bit ID representing a type of semantic keypoint within a class. * id: `u16` -## Links +## Api reference links * 🌊 [C++ API docs for `KeypointId`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1KeypointId.html) * 🐍 [Python API docs for `KeypointId`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.KeypointId) * πŸ¦€ [Rust API docs for `KeypointId`](https://docs.rs/rerun/latest/rerun/datatypes/struct.KeypointId.html) diff --git a/docs/content/reference/types/datatypes/keypoint_pair.md b/docs/content/reference/types/datatypes/keypoint_pair.md index a30c87d958b69..09eee06f870f7 100644 --- a/docs/content/reference/types/datatypes/keypoint_pair.md +++ b/docs/content/reference/types/datatypes/keypoint_pair.md @@ -1,6 +1,7 @@ --- title: "KeypointPair" --- + A connection between two `Keypoints`. @@ -9,7 +10,7 @@ A connection between two `Keypoints`. * keypoint0: [`KeypointId`](../datatypes/keypoint_id.md) * keypoint1: [`KeypointId`](../datatypes/keypoint_id.md) -## Links +## Api reference links * 🌊 [C++ API docs for `KeypointPair`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1KeypointPair.html) * 🐍 [Python API docs for `KeypointPair`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.KeypointPair) * πŸ¦€ [Rust API docs for `KeypointPair`](https://docs.rs/rerun/latest/rerun/datatypes/struct.KeypointPair.html) diff --git a/docs/content/reference/types/datatypes/mat3x3.md b/docs/content/reference/types/datatypes/mat3x3.md index 6f503138b5e68..b6c50eaaf654e 100644 --- a/docs/content/reference/types/datatypes/mat3x3.md +++ b/docs/content/reference/types/datatypes/mat3x3.md @@ -1,6 +1,7 @@ --- title: "Mat3x3" --- + A 3x3 Matrix. @@ -17,7 +18,7 @@ row 2 | flat_columns[2] flat_columns[5] flat_columns[8] * flat_columns: 9x `f32` -## Links +## Api reference links * 🌊 [C++ API docs for `Mat3x3`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Mat3x3.html) * 🐍 [Python API docs for `Mat3x3`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Mat3x3) * πŸ¦€ [Rust API docs for `Mat3x3`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Mat3x3.html) diff --git a/docs/content/reference/types/datatypes/mat4x4.md b/docs/content/reference/types/datatypes/mat4x4.md index 5a2b520578567..acdab3d4f5d44 100644 --- a/docs/content/reference/types/datatypes/mat4x4.md +++ b/docs/content/reference/types/datatypes/mat4x4.md @@ -1,6 +1,7 @@ --- title: "Mat4x4" --- + A 4x4 Matrix. @@ -18,7 +19,7 @@ row 3 | flat_columns[3] flat_columns[7] flat_columns[11] flat_columns[15] * flat_columns: 16x `f32` -## Links +## Api reference links * 🌊 [C++ API docs for `Mat4x4`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Mat4x4.html) * 🐍 [Python API docs for `Mat4x4`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Mat4x4) * πŸ¦€ [Rust API docs for `Mat4x4`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Mat4x4.html) diff --git a/docs/content/reference/types/datatypes/material.md b/docs/content/reference/types/datatypes/material.md index 3b2a1d1fd1f21..49e155e41b0f4 100644 --- a/docs/content/reference/types/datatypes/material.md +++ b/docs/content/reference/types/datatypes/material.md @@ -1,6 +1,7 @@ --- title: "Material" --- + Material properties of a mesh. @@ -8,7 +9,7 @@ Material properties of a mesh. * albedo_factor: [`Rgba32`](../datatypes/rgba32.md) -## Links +## Api reference links * 🌊 [C++ API docs for `Material`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Material.html) * 🐍 [Python API docs for `Material`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Material) * πŸ¦€ [Rust API docs for `Material`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Material.html) diff --git a/docs/content/reference/types/datatypes/quaternion.md b/docs/content/reference/types/datatypes/quaternion.md index d3d0c42376dab..1ba6ed3c658d2 100644 --- a/docs/content/reference/types/datatypes/quaternion.md +++ b/docs/content/reference/types/datatypes/quaternion.md @@ -1,6 +1,7 @@ --- title: "Quaternion" --- + A Quaternion represented by 4 real numbers. @@ -11,7 +12,7 @@ datastore as provided, when used in the Viewer Quaternions will always be normal * xyzw: 4x `f32` -## Links +## Api reference links * 🌊 [C++ API docs for `Quaternion`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Quaternion.html) * 🐍 [Python API docs for `Quaternion`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Quaternion) * πŸ¦€ [Rust API docs for `Quaternion`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Quaternion.html) diff --git a/docs/content/reference/types/datatypes/range1d.md b/docs/content/reference/types/datatypes/range1d.md index b60a94d78200a..2931f1d0daddb 100644 --- a/docs/content/reference/types/datatypes/range1d.md +++ b/docs/content/reference/types/datatypes/range1d.md @@ -1,6 +1,7 @@ --- title: "Range1D" --- + A 1D range, specifying a lower and upper bound. @@ -8,13 +9,13 @@ A 1D range, specifying a lower and upper bound. * range: 2x `f64` -## Links - * 🌊 [C++ API docs for `Range1D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Range1D.html) - * 🐍 [Python API docs for `Range1D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Range1D) - * πŸ¦€ [Rust API docs for `Range1D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Range1D.html) +## Api reference links + * 🌊 [C++ API docs for `Range1D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Range1D.html?speculative-link) + * 🐍 [Python API docs for `Range1D`](https://ref.rerun.io/docs/python/stable/common/datatypes?speculative-link#rerun.datatypes.Range1D) + * πŸ¦€ [Rust API docs for `Range1D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Range1D.html?speculative-link) ## Used by -* [`Range1D`](../components/range1d.md) -* [`Range2D`](../datatypes/range2d.md) +* [`Range1D`](../components/range1d.md?speculative-link) +* [`Range2D`](../datatypes/range2d.md?speculative-link) diff --git a/docs/content/reference/types/datatypes/range2d.md b/docs/content/reference/types/datatypes/range2d.md index 60d3c19d2e72a..09a0310168abe 100644 --- a/docs/content/reference/types/datatypes/range2d.md +++ b/docs/content/reference/types/datatypes/range2d.md @@ -1,6 +1,7 @@ --- title: "Range2D" --- + An Axis-Aligned Bounding Box in 2D space, implemented as the minimum and maximum corners. @@ -9,12 +10,12 @@ An Axis-Aligned Bounding Box in 2D space, implemented as the minimum and maximum * x_range: [`Range1D`](../datatypes/range1d.md) * y_range: [`Range1D`](../datatypes/range1d.md) -## Links - * 🌊 [C++ API docs for `Range2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Range2D.html) - * 🐍 [Python API docs for `Range2D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Range2D) - * πŸ¦€ [Rust API docs for `Range2D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Range2D.html) +## Api reference links + * 🌊 [C++ API docs for `Range2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Range2D.html?speculative-link) + * 🐍 [Python API docs for `Range2D`](https://ref.rerun.io/docs/python/stable/common/datatypes?speculative-link#rerun.datatypes.Range2D) + * πŸ¦€ [Rust API docs for `Range2D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Range2D.html?speculative-link) ## Used by -* [`Range2D`](../components/range2d.md) +* [`Range2D`](../components/range2d.md?speculative-link) diff --git a/docs/content/reference/types/datatypes/rgba32.md b/docs/content/reference/types/datatypes/rgba32.md index 6a9828df9ec42..34670954caa3b 100644 --- a/docs/content/reference/types/datatypes/rgba32.md +++ b/docs/content/reference/types/datatypes/rgba32.md @@ -1,6 +1,7 @@ --- title: "Rgba32" --- + An RGBA color with unmultiplied/separate alpha, in sRGB gamma space with linear alpha. @@ -11,7 +12,7 @@ byte is `R` and the least significant byte is `A`. * rgba: `u32` -## Links +## Api reference links * 🌊 [C++ API docs for `Rgba32`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Rgba32.html) * 🐍 [Python API docs for `Rgba32`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Rgba32) * πŸ¦€ [Rust API docs for `Rgba32`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Rgba32.html) diff --git a/docs/content/reference/types/datatypes/rotation3d.md b/docs/content/reference/types/datatypes/rotation3d.md index 44da41f2ad2e0..8ce3cd631cd44 100644 --- a/docs/content/reference/types/datatypes/rotation3d.md +++ b/docs/content/reference/types/datatypes/rotation3d.md @@ -1,6 +1,7 @@ --- title: "Rotation3D" --- + A 3D rotation. @@ -9,7 +10,7 @@ A 3D rotation. * Quaternion: [`Quaternion`](../datatypes/quaternion.md) * AxisAngle: [`RotationAxisAngle`](../datatypes/rotation_axis_angle.md) -## Links +## Api reference links * 🌊 [C++ API docs for `Rotation3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Rotation3D.html) * 🐍 [Python API docs for `Rotation3D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Rotation3D) * πŸ¦€ [Rust API docs for `Rotation3D`](https://docs.rs/rerun/latest/rerun/datatypes/enum.Rotation3D.html) diff --git a/docs/content/reference/types/datatypes/rotation_axis_angle.md b/docs/content/reference/types/datatypes/rotation_axis_angle.md index ca4e74e99dd8e..d4fad6a093c24 100644 --- a/docs/content/reference/types/datatypes/rotation_axis_angle.md +++ b/docs/content/reference/types/datatypes/rotation_axis_angle.md @@ -1,6 +1,7 @@ --- title: "RotationAxisAngle" --- + 3D rotation represented by a rotation around a given axis. @@ -9,7 +10,7 @@ title: "RotationAxisAngle" * axis: [`Vec3D`](../datatypes/vec3d.md) * angle: [`Angle`](../datatypes/angle.md) -## Links +## Api reference links * 🌊 [C++ API docs for `RotationAxisAngle`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1RotationAxisAngle.html) * 🐍 [Python API docs for `RotationAxisAngle`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.RotationAxisAngle) * πŸ¦€ [Rust API docs for `RotationAxisAngle`](https://docs.rs/rerun/latest/rerun/datatypes/struct.RotationAxisAngle.html) diff --git a/docs/content/reference/types/datatypes/scale3d.md b/docs/content/reference/types/datatypes/scale3d.md index 8dcbde3aa714e..fdb2abf8b1534 100644 --- a/docs/content/reference/types/datatypes/scale3d.md +++ b/docs/content/reference/types/datatypes/scale3d.md @@ -1,6 +1,7 @@ --- title: "Scale3D" --- + 3D scaling factor, part of a transform representation. @@ -9,7 +10,7 @@ title: "Scale3D" * ThreeD: [`Vec3D`](../datatypes/vec3d.md) * Uniform: `f32` -## Links +## Api reference links * 🌊 [C++ API docs for `Scale3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Scale3D.html) * 🐍 [Python API docs for `Scale3D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Scale3D) * πŸ¦€ [Rust API docs for `Scale3D`](https://docs.rs/rerun/latest/rerun/datatypes/enum.Scale3D.html) diff --git a/docs/content/reference/types/datatypes/tensor_buffer.md b/docs/content/reference/types/datatypes/tensor_buffer.md index 75cda7c503e33..3f1c5cdaa21ef 100644 --- a/docs/content/reference/types/datatypes/tensor_buffer.md +++ b/docs/content/reference/types/datatypes/tensor_buffer.md @@ -1,6 +1,7 @@ --- title: "TensorBuffer" --- + The underlying storage for a `Tensor`. @@ -23,7 +24,7 @@ Tensor elements are stored in a contiguous buffer of a single type. * NV12: list of `u8` * YUY2: list of `u8` -## Links +## Api reference links * 🌊 [C++ API docs for `TensorBuffer`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TensorBuffer.html) * 🐍 [Python API docs for `TensorBuffer`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.TensorBuffer) * πŸ¦€ [Rust API docs for `TensorBuffer`](https://docs.rs/rerun/latest/rerun/datatypes/enum.TensorBuffer.html) diff --git a/docs/content/reference/types/datatypes/tensor_data.md b/docs/content/reference/types/datatypes/tensor_data.md index 5a4d2ae0c6a0c..2f9307b3ebbc0 100644 --- a/docs/content/reference/types/datatypes/tensor_data.md +++ b/docs/content/reference/types/datatypes/tensor_data.md @@ -1,6 +1,7 @@ --- title: "TensorData" --- + A multi-dimensional `Tensor` of data. @@ -21,7 +22,7 @@ the shape has to be the shape of the decoded image. * shape: list of [`TensorDimension`](../datatypes/tensor_dimension.md) * buffer: [`TensorBuffer`](../datatypes/tensor_buffer.md) -## Links +## Api reference links * 🌊 [C++ API docs for `TensorData`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TensorData.html) * 🐍 [Python API docs for `TensorData`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.TensorData) * πŸ¦€ [Rust API docs for `TensorData`](https://docs.rs/rerun/latest/rerun/datatypes/struct.TensorData.html) diff --git a/docs/content/reference/types/datatypes/tensor_dimension.md b/docs/content/reference/types/datatypes/tensor_dimension.md index 0bd0833732832..45ccd6fc8a9d4 100644 --- a/docs/content/reference/types/datatypes/tensor_dimension.md +++ b/docs/content/reference/types/datatypes/tensor_dimension.md @@ -1,6 +1,7 @@ --- title: "TensorDimension" --- + A single dimension within a multi-dimensional tensor. @@ -9,7 +10,7 @@ A single dimension within a multi-dimensional tensor. * size: `u64` * name: `string` -## Links +## Api reference links * 🌊 [C++ API docs for `TensorDimension`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TensorDimension.html) * 🐍 [Python API docs for `TensorDimension`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.TensorDimension) * πŸ¦€ [Rust API docs for `TensorDimension`](https://docs.rs/rerun/latest/rerun/datatypes/struct.TensorDimension.html) diff --git a/docs/content/reference/types/datatypes/time_int.md b/docs/content/reference/types/datatypes/time_int.md index 6bf01b1efae64..c5116424b8b35 100644 --- a/docs/content/reference/types/datatypes/time_int.md +++ b/docs/content/reference/types/datatypes/time_int.md @@ -1,6 +1,7 @@ --- title: "TimeInt" --- + A 64-bit number describing either nanoseconds OR sequence numbers. @@ -8,7 +9,7 @@ A 64-bit number describing either nanoseconds OR sequence numbers. * value: `i64` -## Links +## Api reference links * 🌊 [C++ API docs for `TimeInt`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TimeInt.html) * 🐍 [Python API docs for `TimeInt`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.TimeInt) * πŸ¦€ [Rust API docs for `TimeInt`](https://docs.rs/rerun/latest/rerun/datatypes/struct.TimeInt.html) @@ -16,4 +17,4 @@ A 64-bit number describing either nanoseconds OR sequence numbers. ## Used by -* [`TimeRangeBoundary`](../datatypes/time_range_boundary.md) +* [`TimeRangeBoundary`](../datatypes/time_range_boundary.md?speculative-link) diff --git a/docs/content/reference/types/datatypes/time_range.md b/docs/content/reference/types/datatypes/time_range.md index 19c12f85e9f43..ea7d265626c2f 100644 --- a/docs/content/reference/types/datatypes/time_range.md +++ b/docs/content/reference/types/datatypes/time_range.md @@ -1,6 +1,7 @@ --- title: "TimeRange" --- + Visible time range bounds for a specific timeline. @@ -9,12 +10,12 @@ Visible time range bounds for a specific timeline. * start: [`TimeRangeBoundary`](../datatypes/time_range_boundary.md) * end: [`TimeRangeBoundary`](../datatypes/time_range_boundary.md) -## Links - * 🌊 [C++ API docs for `TimeRange`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TimeRange.html) - * 🐍 [Python API docs for `TimeRange`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.TimeRange) - * πŸ¦€ [Rust API docs for `TimeRange`](https://docs.rs/rerun/latest/rerun/datatypes/struct.TimeRange.html) +## Api reference links + * 🌊 [C++ API docs for `TimeRange`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TimeRange.html?speculative-link) + * 🐍 [Python API docs for `TimeRange`](https://ref.rerun.io/docs/python/stable/common/datatypes?speculative-link#rerun.datatypes.TimeRange) + * πŸ¦€ [Rust API docs for `TimeRange`](https://docs.rs/rerun/latest/rerun/datatypes/struct.TimeRange.html?speculative-link) ## Used by -* [`VisibleTimeRange`](../datatypes/visible_time_range.md) +* [`VisibleTimeRange`](../datatypes/visible_time_range.md?speculative-link) diff --git a/docs/content/reference/types/datatypes/time_range_boundary.md b/docs/content/reference/types/datatypes/time_range_boundary.md index bc3fe0c8dcfd0..77054f31c71ee 100644 --- a/docs/content/reference/types/datatypes/time_range_boundary.md +++ b/docs/content/reference/types/datatypes/time_range_boundary.md @@ -1,6 +1,7 @@ --- title: "TimeRangeBoundary" --- + Left or right boundary of a time range. @@ -10,12 +11,12 @@ Left or right boundary of a time range. * Absolute: [`TimeInt`](../datatypes/time_int.md) * Infinite -## Links - * 🌊 [C++ API docs for `TimeRangeBoundary`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TimeRangeBoundary.html) - * 🐍 [Python API docs for `TimeRangeBoundary`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.TimeRangeBoundary) - * πŸ¦€ [Rust API docs for `TimeRangeBoundary`](https://docs.rs/rerun/latest/rerun/datatypes/enum.TimeRangeBoundary.html) +## Api reference links + * 🌊 [C++ API docs for `TimeRangeBoundary`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TimeRangeBoundary.html?speculative-link) + * 🐍 [Python API docs for `TimeRangeBoundary`](https://ref.rerun.io/docs/python/stable/common/datatypes?speculative-link#rerun.datatypes.TimeRangeBoundary) + * πŸ¦€ [Rust API docs for `TimeRangeBoundary`](https://docs.rs/rerun/latest/rerun/datatypes/enum.TimeRangeBoundary.html?speculative-link) ## Used by -* [`TimeRange`](../datatypes/time_range.md) +* [`TimeRange`](../datatypes/time_range.md?speculative-link) diff --git a/docs/content/reference/types/datatypes/transform3d.md b/docs/content/reference/types/datatypes/transform3d.md index 547a3b144292a..4f2c325963dbb 100644 --- a/docs/content/reference/types/datatypes/transform3d.md +++ b/docs/content/reference/types/datatypes/transform3d.md @@ -1,6 +1,7 @@ --- title: "Transform3D" --- + Representation of a 3D affine transform. @@ -9,7 +10,7 @@ Representation of a 3D affine transform. * TranslationAndMat3x3: [`TranslationAndMat3x3`](../datatypes/translation_and_mat3x3.md) * TranslationRotationScale: [`TranslationRotationScale3D`](../datatypes/translation_rotation_scale3d.md) -## Links +## Api reference links * 🌊 [C++ API docs for `Transform3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Transform3D.html) * 🐍 [Python API docs for `Transform3D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Transform3D) * πŸ¦€ [Rust API docs for `Transform3D`](https://docs.rs/rerun/latest/rerun/datatypes/enum.Transform3D.html) diff --git a/docs/content/reference/types/datatypes/translation_and_mat3x3.md b/docs/content/reference/types/datatypes/translation_and_mat3x3.md index cfd9b02ba9c8c..d20c636dcd8b7 100644 --- a/docs/content/reference/types/datatypes/translation_and_mat3x3.md +++ b/docs/content/reference/types/datatypes/translation_and_mat3x3.md @@ -1,6 +1,7 @@ --- title: "TranslationAndMat3x3" --- + Representation of an affine transform via a 3x3 affine matrix paired with a translation. @@ -12,7 +13,7 @@ First applies the matrix, then the translation. * mat3x3: [`Mat3x3`](../datatypes/mat3x3.md) * from_parent: `bool` -## Links +## Api reference links * 🌊 [C++ API docs for `TranslationAndMat3x3`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TranslationAndMat3x3.html) * 🐍 [Python API docs for `TranslationAndMat3x3`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.TranslationAndMat3x3) * πŸ¦€ [Rust API docs for `TranslationAndMat3x3`](https://docs.rs/rerun/latest/rerun/datatypes/struct.TranslationAndMat3x3.html) diff --git a/docs/content/reference/types/datatypes/translation_rotation_scale3d.md b/docs/content/reference/types/datatypes/translation_rotation_scale3d.md index 44c72cab079c1..eba5e091d906c 100644 --- a/docs/content/reference/types/datatypes/translation_rotation_scale3d.md +++ b/docs/content/reference/types/datatypes/translation_rotation_scale3d.md @@ -1,6 +1,7 @@ --- title: "TranslationRotationScale3D" --- + Representation of an affine transform via separate translation, rotation & scale. @@ -11,7 +12,7 @@ Representation of an affine transform via separate translation, rotation & scale * scale: [`Scale3D`](../datatypes/scale3d.md) * from_parent: `bool` -## Links +## Api reference links * 🌊 [C++ API docs for `TranslationRotationScale3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TranslationRotationScale3D.html) * 🐍 [Python API docs for `TranslationRotationScale3D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.TranslationRotationScale3D) * πŸ¦€ [Rust API docs for `TranslationRotationScale3D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.TranslationRotationScale3D.html) diff --git a/docs/content/reference/types/datatypes/uint32.md b/docs/content/reference/types/datatypes/uint32.md index cdde6b626af68..855d772c3439c 100644 --- a/docs/content/reference/types/datatypes/uint32.md +++ b/docs/content/reference/types/datatypes/uint32.md @@ -1,6 +1,7 @@ --- title: "UInt32" --- + A 32bit unsigned integer. @@ -8,7 +9,7 @@ A 32bit unsigned integer. * value: `u32` -## Links +## Api reference links * 🌊 [C++ API docs for `UInt32`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1UInt32.html) * 🐍 [Python API docs for `UInt32`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.UInt32) * πŸ¦€ [Rust API docs for `UInt32`](https://docs.rs/rerun/latest/rerun/datatypes/struct.UInt32.html) diff --git a/docs/content/reference/types/datatypes/uint64.md b/docs/content/reference/types/datatypes/uint64.md index 66ad2a8528528..2651956b8f44c 100644 --- a/docs/content/reference/types/datatypes/uint64.md +++ b/docs/content/reference/types/datatypes/uint64.md @@ -1,6 +1,7 @@ --- title: "UInt64" --- + A 64bit unsigned integer. @@ -8,7 +9,7 @@ A 64bit unsigned integer. * value: `u64` -## Links +## Api reference links * 🌊 [C++ API docs for `UInt64`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1UInt64.html) * 🐍 [Python API docs for `UInt64`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.UInt64) * πŸ¦€ [Rust API docs for `UInt64`](https://docs.rs/rerun/latest/rerun/datatypes/struct.UInt64.html) diff --git a/docs/content/reference/types/datatypes/utf8.md b/docs/content/reference/types/datatypes/utf8.md index b9881136ad29f..ef1896fd32e87 100644 --- a/docs/content/reference/types/datatypes/utf8.md +++ b/docs/content/reference/types/datatypes/utf8.md @@ -1,6 +1,7 @@ --- title: "Utf8" --- + A string of text, encoded as UTF-8. @@ -8,7 +9,7 @@ A string of text, encoded as UTF-8. * value: `string` -## Links +## Api reference links * 🌊 [C++ API docs for `Utf8`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Utf8.html) * 🐍 [Python API docs for `Utf8`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Utf8) * πŸ¦€ [Rust API docs for `Utf8`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Utf8.html) @@ -21,4 +22,4 @@ A string of text, encoded as UTF-8. * [`Name`](../components/name.md) * [`TextLogLevel`](../components/text_log_level.md) * [`Text`](../components/text.md) -* [`VisibleTimeRange`](../datatypes/visible_time_range.md) +* [`VisibleTimeRange`](../datatypes/visible_time_range.md?speculative-link) diff --git a/docs/content/reference/types/datatypes/uuid.md b/docs/content/reference/types/datatypes/uuid.md index 1dc588838df78..604cbd898b204 100644 --- a/docs/content/reference/types/datatypes/uuid.md +++ b/docs/content/reference/types/datatypes/uuid.md @@ -1,6 +1,7 @@ --- title: "Uuid" --- + A 16-byte UUID. @@ -8,7 +9,7 @@ A 16-byte UUID. * bytes: 16x `u8` -## Links +## Api reference links * 🌊 [C++ API docs for `Uuid`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Uuid.html) * 🐍 [Python API docs for `Uuid`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Uuid) * πŸ¦€ [Rust API docs for `Uuid`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Uuid.html) diff --git a/docs/content/reference/types/datatypes/uvec2d.md b/docs/content/reference/types/datatypes/uvec2d.md index 20902a5dbea36..10dafc71f8b0e 100644 --- a/docs/content/reference/types/datatypes/uvec2d.md +++ b/docs/content/reference/types/datatypes/uvec2d.md @@ -1,6 +1,7 @@ --- title: "UVec2D" --- + A uint32 vector in 2D space. @@ -8,7 +9,7 @@ A uint32 vector in 2D space. * xy: 2x `u32` -## Links +## Api reference links * 🌊 [C++ API docs for `UVec2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1UVec2D.html) * 🐍 [Python API docs for `UVec2D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.UVec2D) * πŸ¦€ [Rust API docs for `UVec2D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.UVec2D.html) diff --git a/docs/content/reference/types/datatypes/uvec3d.md b/docs/content/reference/types/datatypes/uvec3d.md index f57c9effe4245..dd0b9789a5a54 100644 --- a/docs/content/reference/types/datatypes/uvec3d.md +++ b/docs/content/reference/types/datatypes/uvec3d.md @@ -1,6 +1,7 @@ --- title: "UVec3D" --- + A uint32 vector in 3D space. @@ -8,7 +9,7 @@ A uint32 vector in 3D space. * xyz: 3x `u32` -## Links +## Api reference links * 🌊 [C++ API docs for `UVec3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1UVec3D.html) * 🐍 [Python API docs for `UVec3D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.UVec3D) * πŸ¦€ [Rust API docs for `UVec3D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.UVec3D.html) @@ -16,4 +17,4 @@ A uint32 vector in 3D space. ## Used by -* [`TriangleIndices`](../components/triangle_indices.md) +* [`TriangleIndices`](../components/triangle_indices.md?speculative-link) diff --git a/docs/content/reference/types/datatypes/uvec4d.md b/docs/content/reference/types/datatypes/uvec4d.md index 5d14a1938fd12..2b6522ea2faa7 100644 --- a/docs/content/reference/types/datatypes/uvec4d.md +++ b/docs/content/reference/types/datatypes/uvec4d.md @@ -1,6 +1,7 @@ --- title: "UVec4D" --- + A uint vector in 4D space. @@ -8,7 +9,7 @@ A uint vector in 4D space. * xyzw: 4x `u32` -## Links +## Api reference links * 🌊 [C++ API docs for `UVec4D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1UVec4D.html) * 🐍 [Python API docs for `UVec4D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.UVec4D) * πŸ¦€ [Rust API docs for `UVec4D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.UVec4D.html) diff --git a/docs/content/reference/types/datatypes/vec2d.md b/docs/content/reference/types/datatypes/vec2d.md index 68aa0b665805c..a50b778904242 100644 --- a/docs/content/reference/types/datatypes/vec2d.md +++ b/docs/content/reference/types/datatypes/vec2d.md @@ -1,6 +1,7 @@ --- title: "Vec2D" --- + A vector in 2D space. @@ -8,7 +9,7 @@ A vector in 2D space. * xy: 2x `f32` -## Links +## Api reference links * 🌊 [C++ API docs for `Vec2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Vec2D.html) * 🐍 [Python API docs for `Vec2D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Vec2D) * πŸ¦€ [Rust API docs for `Vec2D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Vec2D.html) diff --git a/docs/content/reference/types/datatypes/vec3d.md b/docs/content/reference/types/datatypes/vec3d.md index d408e84903e6c..2b7ae8f316d16 100644 --- a/docs/content/reference/types/datatypes/vec3d.md +++ b/docs/content/reference/types/datatypes/vec3d.md @@ -1,6 +1,7 @@ --- title: "Vec3D" --- + A vector in 3D space. @@ -8,7 +9,7 @@ A vector in 3D space. * xyz: 3x `f32` -## Links +## Api reference links * 🌊 [C++ API docs for `Vec3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Vec3D.html) * 🐍 [Python API docs for `Vec3D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Vec3D) * πŸ¦€ [Rust API docs for `Vec3D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Vec3D.html) diff --git a/docs/content/reference/types/datatypes/vec4d.md b/docs/content/reference/types/datatypes/vec4d.md index bd080e8b792c9..8492adc6fe26c 100644 --- a/docs/content/reference/types/datatypes/vec4d.md +++ b/docs/content/reference/types/datatypes/vec4d.md @@ -1,6 +1,7 @@ --- title: "Vec4D" --- + A vector in 4D space. @@ -8,7 +9,7 @@ A vector in 4D space. * xyzw: 4x `f32` -## Links +## Api reference links * 🌊 [C++ API docs for `Vec4D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Vec4D.html) * 🐍 [Python API docs for `Vec4D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Vec4D) * πŸ¦€ [Rust API docs for `Vec4D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Vec4D.html) diff --git a/docs/content/reference/types/datatypes/visible_time_range.md b/docs/content/reference/types/datatypes/visible_time_range.md index 43bc78d499ced..ae0122438f447 100644 --- a/docs/content/reference/types/datatypes/visible_time_range.md +++ b/docs/content/reference/types/datatypes/visible_time_range.md @@ -1,6 +1,7 @@ --- title: "VisibleTimeRange" --- + Visible time range bounds for a specific timeline. @@ -9,9 +10,9 @@ Visible time range bounds for a specific timeline. * timeline: [`Utf8`](../datatypes/utf8.md) * range: [`TimeRange`](../datatypes/time_range.md) -## Links - * 🌊 [C++ API docs for `VisibleTimeRange`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1VisibleTimeRange.html) - * 🐍 [Python API docs for `VisibleTimeRange`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.VisibleTimeRange) - * πŸ¦€ [Rust API docs for `VisibleTimeRange`](https://docs.rs/rerun/latest/rerun/datatypes/struct.VisibleTimeRange.html) +## Api reference links + * 🌊 [C++ API docs for `VisibleTimeRange`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1VisibleTimeRange.html?speculative-link) + * 🐍 [Python API docs for `VisibleTimeRange`](https://ref.rerun.io/docs/python/stable/common/datatypes?speculative-link#rerun.datatypes.VisibleTimeRange) + * πŸ¦€ [Rust API docs for `VisibleTimeRange`](https://docs.rs/rerun/latest/rerun/datatypes/struct.VisibleTimeRange.html?speculative-link) diff --git a/docs/content/reference/types/views.md b/docs/content/reference/types/views.md index b9027b2f6187e..84fb95e6423df 100644 --- a/docs/content/reference/types/views.md +++ b/docs/content/reference/types/views.md @@ -2,7 +2,6 @@ title: "Views" order: 4 --- - Views are the panels shown in the viewer's viewport and the primary means of inspecting & visualizing previously logged data. This page lists all built-in views. diff --git a/docs/content/reference/types/views/bar_chart_view.md b/docs/content/reference/types/views/bar_chart_view.md index 5110d7c917f4c..51171f094174c 100644 --- a/docs/content/reference/types/views/bar_chart_view.md +++ b/docs/content/reference/types/views/bar_chart_view.md @@ -1,12 +1,13 @@ --- title: "BarChartView" --- + A bar chart view. -## Links - * 🐍 [Python API docs for `BarChartView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views#rerun.blueprint.views.BarChartView) +## Api reference links + * 🐍 [Python API docs for `BarChartView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.BarChartView) ## Example @@ -22,3 +23,9 @@ snippet: views/bar_chart + +## Visualized archetypes + +* [`BarChart`](../archetypes/bar_chart.md) +* [`Tensor`](../archetypes/tensor.md) (for 1D tensors) + diff --git a/docs/content/reference/types/views/spatial2d_view.md b/docs/content/reference/types/views/spatial2d_view.md index 4ce871692b052..463ef2947b3a2 100644 --- a/docs/content/reference/types/views/spatial2d_view.md +++ b/docs/content/reference/types/views/spatial2d_view.md @@ -1,35 +1,30 @@ --- title: "Spatial2DView" --- + A Spatial 2D view. ## Properties -### `Background` -Configuration for the background of a view. +### `background` +Configuration for the background of the view. -* kind: The type of the background. Defaults to BackgroundKind.GradientDark. -* color: Color used for BackgroundKind.SolidColor. -### `VisualBounds` -Controls the visual bounds of a 2D space view. +* `kind`: The type of the background. Defaults to BackgroundKind.GradientDark. +* `color`: Color used for BackgroundKind.SolidColor. +### `visual_bounds` +The visible parts of the scene, in the coordinate space of the scene. -* range2d: The visible parts of a 2D space view, in the coordinate space of the scene. -### `VisibleTimeRanges` -Configures what range of each timeline is shown on a view. +Everything within these bounds are guaranteed to be visible. +Somethings outside of these bounds may also be visible due to letterboxing. +### `time_ranges` +Configures which range on each timeline is shown by this view (unless specified differently per entity). -Whenever no visual time range applies, queries are done with "latest at" semantics. -This means that the view will, starting from the time cursor position, -query the latest data available for each component type. +If not specified, the default is to show the latest state of each component. +If a timeline is specified more than once, the first entry will be used. -The default visual time range depends on the type of view this property applies to: -- For time series views, the default is to show the entire timeline. -- For any other view, the default is to apply latest-at semantics. - -* ranges: The time ranges to show for each timeline unless specified otherwise on a per-entity basis. - -## Links - * 🐍 [Python API docs for `Spatial2DView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views#rerun.blueprint.views.Spatial2DView) +## Api reference links + * 🐍 [Python API docs for `Spatial2DView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.Spatial2DView) ## Example @@ -45,3 +40,26 @@ snippet: views/spatial2d + +## Visualized archetypes + +* [`AnnotationContext`](../archetypes/annotation_context.md) +* [`Arrows2D`](../archetypes/arrows2d.md) +* [`Boxes2D`](../archetypes/boxes2d.md) +* [`Clear`](../archetypes/clear.md) +* [`DepthImage`](../archetypes/depth_image.md) +* [`DisconnectedSpace`](../archetypes/disconnected_space.md) +* [`Image`](../archetypes/image.md) +* [`LineStrips2D`](../archetypes/line_strips2d.md) +* [`Pinhole`](../archetypes/pinhole.md) +* [`Pinhole`](../archetypes/pinhole.md) +* [`Points2D`](../archetypes/points2d.md) +* [`SegmentationImage`](../archetypes/segmentation_image.md) +* [`Arrows3D`](../archetypes/arrows3d.md) (if logged above active projection) +* [`Asset3D`](../archetypes/asset3d.md) (if logged above active projection) +* [`Boxes3D`](../archetypes/boxes3d.md) (if logged above active projection) +* [`LineStrips3D`](../archetypes/line_strips3d.md) (if logged above active projection) +* [`Mesh3D`](../archetypes/mesh3d.md) (if logged above active projection) +* [`Points3D`](../archetypes/points3d.md) (if logged above active projection) +* [`Transform3D`](../archetypes/transform3d.md) (if logged above active projection) + diff --git a/docs/content/reference/types/views/spatial3d_view.md b/docs/content/reference/types/views/spatial3d_view.md index 66329b917e78e..637b01099b996 100644 --- a/docs/content/reference/types/views/spatial3d_view.md +++ b/docs/content/reference/types/views/spatial3d_view.md @@ -1,31 +1,25 @@ --- title: "Spatial3DView" --- + A Spatial 3D view. ## Properties -### `Background` -Configuration for the background of a view. +### `background` +Configuration for the background of the view. -* kind: The type of the background. Defaults to BackgroundKind.GradientDark. -* color: Color used for BackgroundKind.SolidColor. -### `VisibleTimeRanges` -Configures what range of each timeline is shown on a view. +* `kind`: The type of the background. Defaults to BackgroundKind.GradientDark. +* `color`: Color used for BackgroundKind.SolidColor. +### `time_ranges` +Configures which range on each timeline is shown by this view (unless specified differently per entity). -Whenever no visual time range applies, queries are done with "latest at" semantics. -This means that the view will, starting from the time cursor position, -query the latest data available for each component type. +If not specified, the default is to show the latest state of each component. +If a timeline is specified more than once, the first entry will be used. -The default visual time range depends on the type of view this property applies to: -- For time series views, the default is to show the entire timeline. -- For any other view, the default is to apply latest-at semantics. - -* ranges: The time ranges to show for each timeline unless specified otherwise on a per-entity basis. - -## Links - * 🐍 [Python API docs for `Spatial3DView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views#rerun.blueprint.views.Spatial3DView) +## Api reference links + * 🐍 [Python API docs for `Spatial3DView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.Spatial3DView) ## Example @@ -41,3 +35,25 @@ snippet: views/spatial3d + +## Visualized archetypes + +* [`AnnotationContext`](../archetypes/annotation_context.md) +* [`Arrows3D`](../archetypes/arrows3d.md) +* [`Asset3D`](../archetypes/asset3d.md) +* [`Boxes3D`](../archetypes/boxes3d.md) +* [`Clear`](../archetypes/clear.md) +* [`DisconnectedSpace`](../archetypes/disconnected_space.md) +* [`LineStrips3D`](../archetypes/line_strips3d.md) +* [`Mesh3D`](../archetypes/mesh3d.md) +* [`Points3D`](../archetypes/points3d.md) +* [`Transform3D`](../archetypes/transform3d.md) +* [`ViewCoordinates`](../archetypes/view_coordinates.md) +* [`Arrows2D`](../archetypes/arrows2d.md) (if logged under a projection) +* [`Boxes2D`](../archetypes/boxes2d.md) (if logged under a projection) +* [`DepthImage`](../archetypes/depth_image.md) (if logged under a projection) +* [`Image`](../archetypes/image.md) (if logged under a projection) +* [`LineStrips2D`](../archetypes/line_strips2d.md) (if logged under a projection) +* [`Points2D`](../archetypes/points2d.md) (if logged under a projection) +* [`SegmentationImage`](../archetypes/segmentation_image.md) (if logged under a projection) + diff --git a/docs/content/reference/types/views/tensor_view.md b/docs/content/reference/types/views/tensor_view.md index 51e6b0d4b30d8..4bfea438bbfc2 100644 --- a/docs/content/reference/types/views/tensor_view.md +++ b/docs/content/reference/types/views/tensor_view.md @@ -1,12 +1,13 @@ --- title: "TensorView" --- + A tensor view. -## Links - * 🐍 [Python API docs for `TensorView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views#rerun.blueprint.views.TensorView) +## Api reference links + * 🐍 [Python API docs for `TensorView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.TensorView) ## Example @@ -22,3 +23,8 @@ snippet: views/tensor + +## Visualized archetypes + +* [`Tensor`](../archetypes/tensor.md) + diff --git a/docs/content/reference/types/views/text_document_view.md b/docs/content/reference/types/views/text_document_view.md index 8de14ec2eb75d..fca3005d059e6 100644 --- a/docs/content/reference/types/views/text_document_view.md +++ b/docs/content/reference/types/views/text_document_view.md @@ -1,12 +1,13 @@ --- title: "TextDocumentView" --- + A text document view. -## Links - * 🐍 [Python API docs for `TextDocumentView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views#rerun.blueprint.views.TextDocumentView) +## Api reference links + * 🐍 [Python API docs for `TextDocumentView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.TextDocumentView) ## Example @@ -22,3 +23,8 @@ snippet: views/text_document + +## Visualized archetypes + +* [`TextDocument`](../archetypes/text_document.md) + diff --git a/docs/content/reference/types/views/text_log_view.md b/docs/content/reference/types/views/text_log_view.md index 33180e9b673a5..d16dced194bb6 100644 --- a/docs/content/reference/types/views/text_log_view.md +++ b/docs/content/reference/types/views/text_log_view.md @@ -1,12 +1,13 @@ --- title: "TextLogView" --- + A text log view. -## Links - * 🐍 [Python API docs for `TextLogView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views#rerun.blueprint.views.TextLogView) +## Api reference links + * 🐍 [Python API docs for `TextLogView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.TextLogView) ## Example @@ -22,3 +23,8 @@ snippet: views/text_log + +## Visualized archetypes + +* [`TextLog`](../archetypes/text_log.md) + diff --git a/docs/content/reference/types/views/time_series_view.md b/docs/content/reference/types/views/time_series_view.md index 3efd8a6084aa9..186ccb312aba8 100644 --- a/docs/content/reference/types/views/time_series_view.md +++ b/docs/content/reference/types/views/time_series_view.md @@ -1,36 +1,30 @@ --- title: "TimeSeriesView" --- + A time series view. ## Properties -### `ScalarAxis` -Configuration for the scalar axis of a plot. +### `axis_y` +Configures the vertical axis of the plot. -* range: The range of the axis. -* lock_range_during_zoom: Whether to lock the range of the axis during zoom. -### `PlotLegend` -Configuration for the legend of a plot. +* `range`: The range of the axis. +* `lock_range_during_zoom`: Whether to lock the range of the axis during zoom. +### `plot_legend` +Configures the legend of the plot. -* corner: To what corner the legend is aligned. -* visible: Whether the legend is shown at all. -### `VisibleTimeRanges` -Configures what range of each timeline is shown on a view. +* `corner`: To what corner the legend is aligned. +* `visible`: Whether the legend is shown at all. +### `time_ranges` +Configures which range on each timeline is shown by this view (unless specified differently per entity). -Whenever no visual time range applies, queries are done with "latest at" semantics. -This means that the view will, starting from the time cursor position, -query the latest data available for each component type. +If not specified, the default is to show the entire timeline. +If a timeline is specified more than once, the first entry will be used. -The default visual time range depends on the type of view this property applies to: -- For time series views, the default is to show the entire timeline. -- For any other view, the default is to apply latest-at semantics. - -* ranges: The time ranges to show for each timeline unless specified otherwise on a per-entity basis. - -## Links - * 🐍 [Python API docs for `TimeSeriesView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views#rerun.blueprint.views.TimeSeriesView) +## Api reference links + * 🐍 [Python API docs for `TimeSeriesView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.TimeSeriesView) ## Example @@ -46,3 +40,11 @@ snippet: views/timeseries + +## Visualized archetypes + +* [`Clear`](../archetypes/clear.md) +* [`Scalar`](../archetypes/scalar.md) +* [`SeriesLine`](../archetypes/series_line.md) +* [`SeriesPoint`](../archetypes/series_point.md) + diff --git a/examples/python/face_tracking/README.md b/examples/python/face_tracking/README.md index 8b173a8bfd187..bf3be0780a6c1 100644 --- a/examples/python/face_tracking/README.md +++ b/examples/python/face_tracking/README.md @@ -5,7 +5,7 @@ thumbnail = "https://static.rerun.io/face-tracking/f798733b72c703ee82cc946df39f3 thumbnail_dimensions = [480, 480] --> -Use the [MediaPipe](https://google.github.io/mediapipe/) Face Detector and Landmarker solutions to detect and track a human face in image, video, and camera stream. +Use the [MediaPipe](https://github.com/google-ai-edge/mediapipe) Face Detector and Landmarker solutions to detect and track a human face in image, video, and camera stream. diff --git a/examples/python/gesture_detection/README.md b/examples/python/gesture_detection/README.md index aab44d7cc1c66..d879f7c5de63b 100644 --- a/examples/python/gesture_detection/README.md +++ b/examples/python/gesture_detection/README.md @@ -5,7 +5,7 @@ thumbnail = "https://static.rerun.io/hand-tracking-and-gesture-recognition/56d09 thumbnail_dimensions = [480, 480] --> -Use the [MediaPipe](https://google.github.io/mediapipe/) Hand Landmark and Gesture Detection solutions to +Use the [MediaPipe](https://github.com/google-ai-edge/mediapipe/) Hand Landmark and Gesture Detection solutions to track hands and recognize gestures in images, video, and camera stream. diff --git a/examples/python/ros_node/README.md b/examples/python/ros_node/README.md index 7226d715e485b..4714bbab1ecf0 100644 --- a/examples/python/ros_node/README.md +++ b/examples/python/ros_node/README.md @@ -39,7 +39,7 @@ For more information on future improved ROS support, see tracking issue: [#1527] in addition to the packages from requirements.txt. This example was developed and tested on top of [ROS2 Humble Hawksbill](https://docs.ros.org/en/humble/index.html) -and the [turtlebot3 navigation example](https://navigation.ros.org/getting_started/index.html). +and the [turtlebot3 navigation example](https://docs.nav2.org/getting_started/index.html). Installing ROS is outside the scope of this example, but you will need the equivalent of the following packages: ``` diff --git a/rerun_py/rerun_sdk/rerun/blueprint/views/spatial2d_view.py b/rerun_py/rerun_sdk/rerun/blueprint/views/spatial2d_view.py index a191b2889437a..dbc29d6ed133f 100644 --- a/rerun_py/rerun_sdk/rerun/blueprint/views/spatial2d_view.py +++ b/rerun_py/rerun_sdk/rerun/blueprint/views/spatial2d_view.py @@ -103,7 +103,7 @@ def __init__( Defaults to true if not specified. background: - Configuration for the background of the space view. + Configuration for the background of the view. visual_bounds: The visible parts of the scene, in the coordinate space of the scene. diff --git a/rerun_py/rerun_sdk/rerun/blueprint/views/spatial3d_view.py b/rerun_py/rerun_sdk/rerun/blueprint/views/spatial3d_view.py index cc8cdebc43b65..603453e726607 100644 --- a/rerun_py/rerun_sdk/rerun/blueprint/views/spatial3d_view.py +++ b/rerun_py/rerun_sdk/rerun/blueprint/views/spatial3d_view.py @@ -99,7 +99,7 @@ def __init__( Defaults to true if not specified. background: - Configuration for the background of the space view. + Configuration for the background of the view. time_ranges: Configures which range on each timeline is shown by this view (unless specified differently per entity). From 3805781ee53dec571bfef0b0c44d95e61fc690ca Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Tue, 14 May 2024 21:29:58 +0200 Subject: [PATCH 06/40] Cleanup of todos referring to closed tickets (#6323) ### What Make `pixi run python ./scripts/zombie_todos.py` happy. Removed some dead code in the process. Two tickets were opened to account for stuff that's actually not quite done: * https://github.com/rerun-io/rerun/issues/6321 * https://github.com/rerun-io/rerun/issues/6320 Commit by commit: I put everything noteworth into its own commit and put the general less deep cleanup last (still has various judgement calls) ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6323?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6323?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! * [x] Succeed a main pr check since the pyproject.toml change makes me nervous - [PR Build Summary](https://build.rerun.io/pr/6323) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- crates/re_data_loader/src/lib.rs | 1 - crates/re_data_ui/src/app_id.rs | 3 +- crates/re_data_ui/src/data_source.rs | 3 +- .../src/time_histogram_per_timeline.rs | 2 +- crates/re_log_types/src/data_row.rs | 2 - crates/re_log_types/src/data_table.rs | 2 - crates/re_log_types/src/time_point/mod.rs | 3 +- .../re_log_types/src/time_point/time_int.rs | 12 ---- crates/re_query/src/latest_at/helpers.rs | 4 +- .../src/space_view_3d.rs | 2 +- .../src/visualizers/assets3d.rs | 2 +- .../src/space_view_class.rs | 4 +- crates/re_time_panel/src/lib.rs | 55 ++----------------- crates/re_time_panel/src/time_selection_ui.rs | 16 +----- .../rerun/components/view_coordinates.fbs | 2 +- .../src/codegen/rust/deserializer.rs | 6 +- crates/re_types_builder/src/objects.rs | 36 +++++++----- crates/re_ui/src/list_item2/list_item.rs | 2 +- crates/re_viewer/src/app.rs | 1 - crates/re_viewer_context/src/time_control.rs | 7 +-- .../src/space_view_entity_picker.rs | 2 +- crates/re_viewport/src/viewport_blueprint.rs | 2 - docs/snippets/build.rs | 2 +- examples/cpp/incremental_logging/main.cpp | 5 +- .../pyproject.toml | 3 - .../incremental_logging.py | 6 +- examples/rust/incremental_logging/src/main.rs | 5 +- rerun_cpp/src/rerun/c/rerun.h | 2 +- .../roundtrips/visible_time_ranges/main.py | 1 - 29 files changed, 59 insertions(+), 134 deletions(-) diff --git a/crates/re_data_loader/src/lib.rs b/crates/re_data_loader/src/lib.rs index a2e65d70562d9..de466fef2e1b6 100644 --- a/crates/re_data_loader/src/lib.rs +++ b/crates/re_data_loader/src/lib.rs @@ -204,7 +204,6 @@ impl DataLoaderSettings { /// [Text files]: crate::SUPPORTED_TEXT_EXTENSIONS // // TODO(#4525): `DataLoader`s should support arbitrary URIs -// TODO(#4526): `DataLoader`s should be exposed to the SDKs // TODO(#4527): Web Viewer `?url` parameter should accept anything our `DataLoader`s support pub trait DataLoader: Send + Sync { /// Name of the [`DataLoader`]. diff --git a/crates/re_data_ui/src/app_id.rs b/crates/re_data_ui/src/app_id.rs index 326004cbf7723..57589dbdcd2b6 100644 --- a/crates/re_data_ui/src/app_id.rs +++ b/crates/re_data_ui/src/app_id.rs @@ -41,7 +41,8 @@ impl crate::DataUi for ApplicationId { .sorted_by_key(|entity_db| entity_db.store_info().map(|info| info.started)) .collect(); - //TODO(#6245): we should _not_ use interactive UI in code used for hover tooltip! + // Using the same content ui also for tooltips even if it can't be interacted with. + // (still displays the content we want) if !recordings.is_empty() { let content_ui = |ui: &mut egui::Ui| { ui.spacing_mut().item_spacing.y = 0.0; diff --git a/crates/re_data_ui/src/data_source.rs b/crates/re_data_ui/src/data_source.rs index cf2a5da2112b1..b9177885dfaf9 100644 --- a/crates/re_data_ui/src/data_source.rs +++ b/crates/re_data_ui/src/data_source.rs @@ -50,7 +50,8 @@ impl crate::DataUi for re_smart_channel::SmartChannelSource { recordings.sort_by_key(|entity_db| entity_db.store_info().map(|info| info.started)); blueprints.sort_by_key(|entity_db| entity_db.store_info().map(|info| info.started)); - //TODO(#6245): we should _not_ use interactive UI in code used for hover tooltip! + // Using the same content ui also for tooltips even if it can't be interacted with. + // (still displays the content we want) let content_ui = |ui: &mut egui::Ui| { if !recordings.is_empty() { ui.add_space(8.0); diff --git a/crates/re_entity_db/src/time_histogram_per_timeline.rs b/crates/re_entity_db/src/time_histogram_per_timeline.rs index b17432d2a801c..d7c38d07e0b23 100644 --- a/crates/re_entity_db/src/time_histogram_per_timeline.rs +++ b/crates/re_entity_db/src/time_histogram_per_timeline.rs @@ -90,7 +90,7 @@ impl TimeHistogramPerTimeline { .num_static_messages .checked_sub(n as u64) .unwrap_or_else(|| { - // TODO(#4355): hitting this on plots demo + // We used to hit this on plots demo, see https://github.com/rerun-io/rerun/issues/4355. re_log::debug!( current = self.num_static_messages, removed = n, diff --git a/crates/re_log_types/src/data_row.rs b/crates/re_log_types/src/data_row.rs index d7711c2224252..ad347d554c4fb 100644 --- a/crates/re_log_types/src/data_row.rs +++ b/crates/re_log_types/src/data_row.rs @@ -280,8 +280,6 @@ re_types_core::delegate_arrow_tuid!(RowId as "rerun.controls.RowId"); /// ).unwrap(); /// eprintln!("{row}"); /// ``` -// -// TODO(#5303): the Layout part will be outdated in the new key-less model #[derive(Debug, Clone)] pub struct DataRow { /// Auto-generated `TUID`, uniquely identifying this event and keeping track of the client's diff --git a/crates/re_log_types/src/data_table.rs b/crates/re_log_types/src/data_table.rs index fbe2f9ed2b514..9a843f2c7c77f 100644 --- a/crates/re_log_types/src/data_table.rs +++ b/crates/re_log_types/src/data_table.rs @@ -333,8 +333,6 @@ re_types_core::delegate_arrow_tuid!(TableId as "rerun.controls.TableId"); /// # /// # assert_eq!(table_in, table_out); /// ``` -// -// TODO(#5303): the Layout part will be outdated in the new key-less model #[derive(Debug, Clone, PartialEq)] pub struct DataTable { /// Auto-generated `TUID`, uniquely identifying this batch of data and keeping track of the diff --git a/crates/re_log_types/src/time_point/mod.rs b/crates/re_log_types/src/time_point/mod.rs index 337c75ae70300..6049e9602e07a 100644 --- a/crates/re_log_types/src/time_point/mod.rs +++ b/crates/re_log_types/src/time_point/mod.rs @@ -136,8 +136,7 @@ impl TimeType { let time_int = time_int.into(); match time_int { TimeInt::STATIC => "".into(), - // TODO(#5264): remove time panel hack once we migrate to the new static UI - TimeInt::MIN | TimeInt::MIN_TIME_PANEL => "-∞".into(), + TimeInt::MIN => "-∞".into(), TimeInt::MAX => "+∞".into(), _ => match self { Self::Time => Time::from(time_int).format(time_zone_for_timestamps), diff --git a/crates/re_log_types/src/time_point/time_int.rs b/crates/re_log_types/src/time_point/time_int.rs index 605831c2ad3de..db2147bcd82e5 100644 --- a/crates/re_log_types/src/time_point/time_int.rs +++ b/crates/re_log_types/src/time_point/time_int.rs @@ -38,18 +38,6 @@ impl std::fmt::Debug for TimeInt { } impl TimeInt { - /// Hack. - /// - /// Special value used to represent timeless data in the time panel. - /// - /// The reason we don't use i64::MIN is because in the time panel we need - /// to be able to pan to before the [`TimeInt::MIN`], and so we need - /// a bit of leeway. - // - // TODO(#5264): remove this once we migrate to the new static UI - #[doc(hidden)] - pub const MIN_TIME_PANEL: Self = Self(NonMinI64::new(i64::MIN / 2)); - /// Special value used to represent static data. /// /// It is illegal to create a [`TimeInt`] with that value in a temporal context. diff --git a/crates/re_query/src/latest_at/helpers.rs b/crates/re_query/src/latest_at/helpers.rs index adce7289eabb3..fb52a8ee08f04 100644 --- a/crates/re_query/src/latest_at/helpers.rs +++ b/crates/re_query/src/latest_at/helpers.rs @@ -164,7 +164,7 @@ impl LatestAtComponentResults { } PromiseResult::Ready(data) => { - // TODO(#5303): Figure out if/how we'd like to integrate clamping semantics into the + // TODO(#5259): Figure out if/how we'd like to integrate clamping semantics into the // selection panel. // // For now, we simply always clamp, which is the closest to the legacy behavior that the UI @@ -216,7 +216,7 @@ impl LatestAtComponentResults { PromiseResult::Ready(cell) => { let len = cell.num_instances() as usize; - // TODO(#5303): Figure out if/how we'd like to integrate clamping semantics into the + // TODO(#5259): Figure out if/how we'd like to integrate clamping semantics into the // selection panel. // // For now, we simply always clamp, which is the closest to the legacy behavior that the UI diff --git a/crates/re_space_view_spatial/src/space_view_3d.rs b/crates/re_space_view_spatial/src/space_view_3d.rs index 09dab4ba5e41f..d4254a96f5f3d 100644 --- a/crates/re_space_view_spatial/src/space_view_3d.rs +++ b/crates/re_space_view_spatial/src/space_view_3d.rs @@ -195,7 +195,7 @@ impl SpaceViewClass for SpatialSpaceView3D { // Note that if the root has `ViewCoordinates`, this will stop the root splitting heuristic // from splitting the root space into several subspaces. // - // TODO(andreas)/TODO(#4926): + // TODO(andreas): // It's tempting to add a visualizer for view coordinates so that it's already picked up via `entities_with_indicator_for_visualizer_kind`. // Is there a nicer way for this or do we want a visualizer for view coordinates anyways? // There's also a strong argument to be made that ViewCoordinates implies a 3D space, thus changing the SpacialTopology accordingly! diff --git a/crates/re_space_view_spatial/src/visualizers/assets3d.rs b/crates/re_space_view_spatial/src/visualizers/assets3d.rs index 66a524ed79425..34df140728f00 100644 --- a/crates/re_space_view_spatial/src/visualizers/assets3d.rs +++ b/crates/re_space_view_spatial/src/visualizers/assets3d.rs @@ -62,7 +62,7 @@ impl Asset3DVisualizer { let picking_instance_hash = re_entity_db::InstancePathHash::entity_all(entity_path); let outline_mask_ids = ent_context.highlight.index_outline_mask(Instance::ALL); - // TODO(#3232): this is subtly wrong, the key should actually be a hash of everything that got + // TODO(#5974): this is subtly wrong, the key should actually be a hash of everything that got // cached, which includes the media type… let mesh = ctx.cache.entry(|c: &mut MeshCache| { c.entry( diff --git a/crates/re_space_view_time_series/src/space_view_class.rs b/crates/re_space_view_time_series/src/space_view_class.rs index 8ebcf4679fc2c..950a2903b4d8a 100644 --- a/crates/re_space_view_time_series/src/space_view_class.rs +++ b/crates/re_space_view_time_series/src/space_view_class.rs @@ -220,7 +220,9 @@ It can greatly improve performance (and readability) in such situations as it pr // Spawn time series data at the root if there's time series data either // directly at the root or one of its children. - // TODO(#4926): This seems to be unnecessarily complicated. + // + // This is the last hold out of "child of root" spawning, which we removed otherwise + // (see https://github.com/rerun-io/rerun/issues/4926) let subtree_of_root_entity = &ctx.recording().tree().children; if indicated_entities.contains(&EntityPath::root()) || subtree_of_root_entity diff --git a/crates/re_time_panel/src/lib.rs b/crates/re_time_panel/src/lib.rs index 6520a39ba9aff..2d718f1183411 100644 --- a/crates/re_time_panel/src/lib.rs +++ b/crates/re_time_panel/src/lib.rs @@ -409,7 +409,6 @@ impl TimePanel { full_y_range, ); time_selection_ui::loop_selection_ui( - entity_db, time_ctrl, &self.time_ranges_ui, ui, @@ -860,7 +859,7 @@ impl TimePanel { ui, ); - current_time_ui(ctx, entity_db, ui, time_ctrl); + current_time_ui(ctx, ui, time_ctrl); ui.with_layout(egui::Layout::right_to_left(egui::Align::Center), |ui| { help_button(ui); @@ -878,7 +877,7 @@ impl TimePanel { .timeline_selector_ui(time_ctrl, times_per_timeline, ui); self.time_control_ui.playback_speed_ui(time_ctrl, ui); self.time_control_ui.fps_ui(time_ctrl, ui); - current_time_ui(ctx, entity_db, ui, time_ctrl); + current_time_ui(ctx, ui, time_ctrl); ui.with_layout(egui::Layout::right_to_left(egui::Align::Center), |ui| { help_button(ui); @@ -973,7 +972,7 @@ fn collapsed_time_marker_and_time( } } - current_time_ui(ctx, entity_db, ui, time_ctrl); + current_time_ui(ctx, ui, time_ctrl); } fn paint_range_highlight( @@ -1012,52 +1011,10 @@ fn help_button(ui: &mut egui::Ui) { ); } -/// A user can drag the time slider to between the timeless data and the first real data. -/// -/// The time interpolated there is really weird, as it goes from [`TimeInt::MIN_TIME_PANEL`] -/// (which is extremely long time ago) to whatever tim the user logged. -/// So we do not want to display these times to the user. -/// -/// This functions returns `true` iff the given time is safe to show. -// -// TODO(#5264): remove time panel hack once we migrate to the new static UI -fn is_time_safe_to_show( - entity_db: &re_entity_db::EntityDb, - timeline: &re_data_store::Timeline, - time: TimeReal, -) -> bool { - if entity_db.num_static_messages() == 0 { - return true; // no timeless messages, no problem - } - - if let Some(times) = entity_db.tree().subtree.time_histogram.get(timeline) { - if let Some(first_time) = times.min_key() { - let margin = match timeline.typ() { - re_data_store::TimeType::Time => TimeInt::from_seconds(10_000.try_into().unwrap()), - re_data_store::TimeType::Sequence => { - TimeInt::from_sequence(1_000.try_into().unwrap()) - } - }; - - return TimeInt::new_temporal(first_time) <= time + margin; - } - } - - TimeInt::MIN_TIME_PANEL < time -} - -fn current_time_ui( - ctx: &ViewerContext<'_>, - entity_db: &re_entity_db::EntityDb, - ui: &mut egui::Ui, - time_ctrl: &TimeControl, -) { +fn current_time_ui(ctx: &ViewerContext<'_>, ui: &mut egui::Ui, time_ctrl: &TimeControl) { if let Some(time_int) = time_ctrl.time_int() { - let timeline = time_ctrl.timeline(); - if is_time_safe_to_show(entity_db, timeline, time_int.into()) { - let time_type = time_ctrl.time_type(); - ui.monospace(time_type.format(time_int, ctx.app_options.time_zone)); - } + let time_type = time_ctrl.time_type(); + ui.monospace(time_type.format(time_int, ctx.app_options.time_zone)); } } diff --git a/crates/re_time_panel/src/time_selection_ui.rs b/crates/re_time_panel/src/time_selection_ui.rs index dab747e46837b..f65a297a6a075 100644 --- a/crates/re_time_panel/src/time_selection_ui.rs +++ b/crates/re_time_panel/src/time_selection_ui.rs @@ -1,21 +1,17 @@ use egui::{CursorIcon, Id, NumExt as _, Rect}; -use re_entity_db::EntityDb; use re_log_types::{Duration, ResolvedTimeRangeF, TimeInt, TimeReal, TimeType}; use re_viewer_context::{Looping, TimeControl}; -use super::{is_time_safe_to_show, time_ranges_ui::TimeRangesUi}; +use super::time_ranges_ui::TimeRangesUi; pub fn loop_selection_ui( - entity_db: &EntityDb, time_ctrl: &mut TimeControl, time_ranges_ui: &TimeRangesUi, ui: &egui::Ui, time_area_painter: &egui::Painter, timeline_rect: &Rect, ) { - let timeline = *time_ctrl.timeline(); - if time_ctrl.loop_selection().is_none() && time_ctrl.looping() == Looping::Selection { // Helpfully select a time slice if let Some(selection) = initial_time_selection(time_ranges_ui, time_ctrl.time_type()) { @@ -74,11 +70,7 @@ pub fn loop_selection_ui( time_area_painter.rect_filled(rect, rounding, selection_color); } - if is_active - && !selected_range.is_empty() - && is_time_safe_to_show(entity_db, &timeline, selected_range.min) - && is_time_safe_to_show(entity_db, &timeline, selected_range.max) - { + if is_active && !selected_range.is_empty() { paint_range_text(time_ctrl, selected_range, ui, time_area_painter, rect); } @@ -302,10 +294,6 @@ fn paint_range_text( ) { use egui::{Pos2, Stroke}; - if selected_range.min <= TimeInt::MIN_TIME_PANEL { - return; // huge time selection, don't show a confusing times - } - let text_color = ui.visuals().strong_text_color(); let arrow_color = text_color.gamma_multiply(0.75); diff --git a/crates/re_types/definitions/rerun/components/view_coordinates.fbs b/crates/re_types/definitions/rerun/components/view_coordinates.fbs index a29011d9a7705..8c52db46e6cff 100644 --- a/crates/re_types/definitions/rerun/components/view_coordinates.fbs +++ b/crates/re_types/definitions/rerun/components/view_coordinates.fbs @@ -7,7 +7,7 @@ include "rerun/datatypes.fbs"; namespace rerun.components; -// TODO(#3384) +// TODO(#6320) /* enum ViewDir: byte { Up = 1, diff --git a/crates/re_types_builder/src/codegen/rust/deserializer.rs b/crates/re_types_builder/src/codegen/rust/deserializer.rs index 56779fa7c09fd..12872bb81628b 100644 --- a/crates/re_types_builder/src/codegen/rust/deserializer.rs +++ b/crates/re_types_builder/src/codegen/rust/deserializer.rs @@ -33,10 +33,8 @@ use crate::{ /// The deserializers are designed for maximum performance, assuming the incoming data is correct. /// If the data is not correct, the deserializers will return an error, but never panic or crash. /// -/// In the future we should add some basic arrow datatype validation during data ingestion, -/// so that changing the datatype between versions of the SDK will produce some helpful warnings -/// instead of just silent bugs. -/// TODO(#5291): add basic arrow datatype validation during data ingestion +/// TODO(#5305): Currently we're doing a lot of checking for exact matches. +/// We should instead assume data is correct and handle errors gracefully. /// /// ## Understanding datatypes /// diff --git a/crates/re_types_builder/src/objects.rs b/crates/re_types_builder/src/objects.rs index 7b9e0cea067fa..2a63f74549d75 100644 --- a/crates/re_types_builder/src/objects.rs +++ b/crates/re_types_builder/src/objects.rs @@ -66,7 +66,8 @@ impl Objects { continue; } - let resolved_obj = Object::from_raw_object(include_dir_path, &enums, &objs, &obj); + let resolved_obj = + Object::from_raw_object(reporter, include_dir_path, &enums, &objs, &obj); resolved_objs.insert(resolved_obj.fqname.clone(), resolved_obj); } @@ -331,6 +332,7 @@ impl Object { /// Resolves a raw [`crate::Object`] into a higher-level representation that can be easily /// interpreted and manipulated. pub fn from_raw_object( + reporter: &Reporter, include_dir_path: impl AsRef, enums: &[FbsEnum<'_>], objs: &[FbsObject<'_>], @@ -369,7 +371,14 @@ impl Object { .filter(|field| field.type_().base_type() != FbsBaseType::UType) .filter(|field| field.type_().element() != FbsBaseType::UType) .map(|field| { - ObjectField::from_raw_object_field(include_dir_path, enums, objs, obj, &field) + ObjectField::from_raw_object_field( + reporter, + include_dir_path, + enums, + objs, + obj, + &field, + ) }) .collect(); @@ -647,12 +656,6 @@ pub struct ObjectField { /// Whether the field is nullable. pub is_nullable: bool, - /// Whether the field is deprecated. - // - // TODO(#2366): do something with this - // TODO(#2367): implement custom attr to specify deprecation reason - pub is_deprecated: bool, - /// The Arrow datatype of this `ObjectField`. /// /// This is lazily computed when the parent object gets registered into the Arrow registry and @@ -662,6 +665,7 @@ pub struct ObjectField { impl ObjectField { pub fn from_raw_object_field( + reporter: &Reporter, include_dir_path: impl AsRef, enums: &[FbsEnum<'_>], objs: &[FbsObject<'_>], @@ -690,7 +694,17 @@ impl ObjectField { let order = attrs.get::(&fqname, crate::ATTR_ORDER); let is_nullable = attrs.has(crate::ATTR_NULLABLE) || typ == Type::Unit; // null type is always nullable - let is_deprecated = field.deprecated(); + + if field.deprecated() { + reporter.warn( + &virtpath, + &fqname, + format!( + "Use {} attribute for deprecation instead", + crate::ATTR_RERUN_DEPRECATED + ), + ); + } Self { virtpath, @@ -703,7 +717,6 @@ impl ObjectField { attrs, order, is_nullable, - is_deprecated, datatype: None, } } @@ -745,8 +758,6 @@ impl ObjectField { attrs.has(crate::ATTR_NULLABLE) || typ == Type::Unit // null type is always nullable }; - let is_deprecated = false; - if attrs.has(crate::ATTR_ORDER) { reporter.warn( &virtpath, @@ -766,7 +777,6 @@ impl ObjectField { attrs, order: 0, // no needed for enums is_nullable, - is_deprecated, datatype: None, } } diff --git a/crates/re_ui/src/list_item2/list_item.rs b/crates/re_ui/src/list_item2/list_item.rs index ef4b5d199645e..6114dd1797588 100644 --- a/crates/re_ui/src/list_item2/list_item.rs +++ b/crates/re_ui/src/list_item2/list_item.rs @@ -26,7 +26,7 @@ pub struct ShowCollapsingResponse { /// /// The following features are supported: /// - Flat or collapsible hierarchical lists. -/// - Full-span background highlighting via [`super::list_item_scope`]. TODO(#6156): fix reference +/// - Full-span background highlighting via [`crate::full_span::full_span_scope`]. /// - Interactive or not. /// - Support for drag and drop with [`crate::drag_and_drop`]. /// diff --git a/crates/re_viewer/src/app.rs b/crates/re_viewer/src/app.rs index 5ebad59d3403c..8773cacf01e0f 100644 --- a/crates/re_viewer/src/app.rs +++ b/crates/re_viewer/src/app.rs @@ -1039,7 +1039,6 @@ impl App { StoreKind::Blueprint => { // We wait with activating blueprints until they are fully loaded, // so that we don't run heuristics on half-loaded blueprints. - // TODO(#5297): heed special "end-of-blueprint" message to activate blueprint. // Otherwise on a mixed connection (SDK sending both blueprint and recording) // the blueprint won't be activated until the whole _recording_ has finished loading. } diff --git a/crates/re_viewer_context/src/time_control.rs b/crates/re_viewer_context/src/time_control.rs index a73264156e533..5731290d7441a 100644 --- a/crates/re_viewer_context/src/time_control.rs +++ b/crates/re_viewer_context/src/time_control.rs @@ -563,14 +563,11 @@ impl TimeControl { } fn min(values: &TimeCounts) -> TimeInt { - *values.keys().next().unwrap_or(&TimeInt::MIN_TIME_PANEL) + *values.keys().next().unwrap_or(&TimeInt::MIN) } fn max(values: &TimeCounts) -> TimeInt { - *values - .keys() - .next_back() - .unwrap_or(&TimeInt::MIN_TIME_PANEL) + *values.keys().next_back().unwrap_or(&TimeInt::MIN) } fn range(values: &TimeCounts) -> ResolvedTimeRange { diff --git a/crates/re_viewport/src/space_view_entity_picker.rs b/crates/re_viewport/src/space_view_entity_picker.rs index fa63f2e8398ad..9b1b94c4705c9 100644 --- a/crates/re_viewport/src/space_view_entity_picker.rs +++ b/crates/re_viewport/src/space_view_entity_picker.rs @@ -335,7 +335,7 @@ fn create_entity_add_info( already_added: query_result.contains_entity(entity_path), } } else { - // TODO(#4826): This shouldn't necessarily prevent us from adding it. + // TODO(#6321): This shouldn't necessarily prevent us from adding it. CanAddToSpaceView::No { reason: format!( "Entity can't be displayed by any of the available visualizers in this class of space view ({}).", diff --git a/crates/re_viewport/src/viewport_blueprint.rs b/crates/re_viewport/src/viewport_blueprint.rs index a0400e05c21a1..67e3b2390dc33 100644 --- a/crates/re_viewport/src/viewport_blueprint.rs +++ b/crates/re_viewport/src/viewport_blueprint.rs @@ -225,8 +225,6 @@ impl ViewportBlueprint { } /// Duplicates a space view and its entity property overrides. - /// - /// TODO(#4977): much more than just entity properties must be cloned: overrides, etc. pub fn duplicate_space_view( &self, space_view_id: &SpaceViewId, diff --git a/docs/snippets/build.rs b/docs/snippets/build.rs index 0554c0655dc83..8d94f147ef710 100644 --- a/docs/snippets/build.rs +++ b/docs/snippets/build.rs @@ -39,7 +39,7 @@ fn main() { let contents = fs::read_to_string(&path).unwrap(); - // TODO(#515): some snippets lack a main, they should come with their necessary stub code commented out so that we can re-add it here. + // TODO(#4047): some snippets lack a main, they should come with their necessary stub code commented out so that we can re-add it here. if contents.contains("fn main()") { // Patch the source code so we can call into `main` and pass arguments to it: let contents = diff --git a/examples/cpp/incremental_logging/main.cpp b/examples/cpp/incremental_logging/main.cpp index 3dbd9f62f984f..11b9c60bc1e90 100644 --- a/examples/cpp/incremental_logging/main.cpp +++ b/examples/cpp/incremental_logging/main.cpp @@ -49,9 +49,8 @@ int main() { rerun::TextDocument(README).with_media_type(rerun::components::MediaType::markdown()) ); - // TODO(#5264): just log one once clamp-to-edge semantics land. - std::vector colors(10, rerun::Color(255, 0, 0)); - std::vector radii(10, rerun::Radius(0.1f)); + rerun::Collection colors = rerun::Color(255, 0, 0); + rerun::Collection radii = rerun::Radius(0.1f); // Only log colors and radii once. rec.set_time_sequence("frame_nr", 0); diff --git a/examples/python/depth_guided_stable_diffusion/pyproject.toml b/examples/python/depth_guided_stable_diffusion/pyproject.toml index a925fcb6992cd..86179db66aa8a 100644 --- a/examples/python/depth_guided_stable_diffusion/pyproject.toml +++ b/examples/python/depth_guided_stable_diffusion/pyproject.toml @@ -20,9 +20,6 @@ dependencies = [ [project.scripts] depth_guided_stable_diffusion = "depth_guided_stable_diffusion.__main__:main" -[tool.rerun-example] -skip = true # TODO(#5976): controlnet has conflicting dependencies - [build-system] requires = ["hatchling"] build-backend = "hatchling.build" diff --git a/examples/python/incremental_logging/incremental_logging.py b/examples/python/incremental_logging/incremental_logging.py index cf631dfe69914..c649b8671b922 100755 --- a/examples/python/incremental_logging/incremental_logging.py +++ b/examples/python/incremental_logging/incremental_logging.py @@ -5,7 +5,6 @@ import argparse -import numpy as np import rerun as rr from numpy.random import default_rng @@ -47,9 +46,8 @@ rr.log("readme", rr.TextDocument(README, media_type=rr.MediaType.MARKDOWN), static=True) -# TODO(#5264): just log one once clamp-to-edge semantics land. -colors = rr.components.ColorBatch(np.repeat(0xFF0000FF, 10)) -radii = rr.components.RadiusBatch(np.repeat(0.1, 10)) +colors = rr.components.ColorBatch(0xFF0000FF) +radii = rr.components.RadiusBatch(0.1) # Only log colors and radii once. rr.set_time_sequence("frame_nr", 0) diff --git a/examples/rust/incremental_logging/src/main.rs b/examples/rust/incremental_logging/src/main.rs index c155ec124bda5..e5ba8f616bc31 100644 --- a/examples/rust/incremental_logging/src/main.rs +++ b/examples/rust/incremental_logging/src/main.rs @@ -58,9 +58,8 @@ Move the time cursor around, and notice how the colors and radii from frame 0 ar fn run(rec: &rerun::RecordingStream) -> anyhow::Result<()> { rec.log_static("readme", &rerun::TextDocument::from_markdown(README))?; - // TODO(#5264): just log one once clamp-to-edge semantics land. - let colors = [rerun::Color::from_rgb(255, 0, 0); 10]; - let radii = [rerun::Radius(0.1); 10]; + let colors = [rerun::Color::from_rgb(255, 0, 0)]; + let radii = [rerun::Radius(0.1)]; // Only log colors and radii once. rec.set_time_sequence("frame_nr", 0); diff --git a/rerun_cpp/src/rerun/c/rerun.h b/rerun_cpp/src/rerun/c/rerun.h index 115b186c2d365..1bc3773b208bc 100644 --- a/rerun_cpp/src/rerun/c/rerun.h +++ b/rerun_cpp/src/rerun/c/rerun.h @@ -267,7 +267,7 @@ typedef struct rr_error { /// /// This should match the string returned by `rr_version_string`. /// If not, the SDK's binary and the C header are out of sync. -#define RERUN_SDK_HEADER_VERSION "0.16.0-alpha.3" +#define RERUN_SDK_HEADER_VERSION "0.16.0-alpha.4" /// Returns a human-readable version string of the Rerun C SDK. /// diff --git a/tests/python/roundtrips/visible_time_ranges/main.py b/tests/python/roundtrips/visible_time_ranges/main.py index 9bede7ea1ede0..58dec4e432a73 100644 --- a/tests/python/roundtrips/visible_time_ranges/main.py +++ b/tests/python/roundtrips/visible_time_ranges/main.py @@ -17,7 +17,6 @@ def main() -> None: rr.script_setup(args, "rerun_example_roundtrip_visible_time_ranges") - # TODO(#6221): There's improvements pending for this api. rr.log( "visible_time_ranges", rrb.archetypes.VisibleTimeRanges([ From cd31f9b2fb3f6f029c5f27c9138ec9bb71cfe5d8 Mon Sep 17 00:00:00 2001 From: Artur J <108059518+Artxiom@users.noreply.github.com> Date: Wed, 15 May 2024 09:39:28 +0100 Subject: [PATCH 07/40] Reduce number of unwrap calls and make clippy warning for it opt-out per crate (#6311) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### What Resolves #3408: Remove all usages of unwrap() and forbid it's use (if applicable). *If applicable* because even after the first batch of changes there are over 800(!) usages of unwrap() in the code - for various reasons, and often explicitly allowed. So I think it's probably unrealistic to get rid of all of them, and probably also not necessary. The strategy: 1. Warn on all usages of `unwrap()`. 2. Remove `unwrap()` module by module. 3. Where `unwrap()` would be theoretically okay use `expect("error msg")`. 4. Leave build tools as they are for now - panics there are annoying but not critical (can happen when e.g. some command line tool is missing). 5. For tests and benchmarks unwrap is totally okay imho (`allow-unwrap-in-tests` was anyway already set in `clippy.toml`) 6. Where errors are returned combine error types and "?-ify" the code, or use some other idiomatic Rust expression. 7. Goal: eventually deny `clippy::unwrap_used` everywhere, unless explicitly allowed. *Note: as this is my first PR, early feedback is greatly appreciated*πŸ™ Also - rookie question - what (or where) are the guidelines for the last three items in the checklist? Are they needed for this PR, as this is just a cleanup? ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG - [PR Build Summary](https://build.rerun.io/pr/6311) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- Cargo.toml | 2 +- crates/re_analytics/examples/end_to_end.rs | 6 +- crates/re_analytics/src/native/config.rs | 4 +- crates/re_build_info/src/build_info.rs | 4 +- crates/re_build_tools/src/hashing.rs | 2 +- crates/re_data_store/benches/arrow2.rs | 3 + crates/re_data_store/benches/data_store.rs | 3 + crates/re_data_store/benches/gc.rs | 3 + crates/re_data_store/src/lib.rs | 3 + crates/re_data_store/tests/correctness.rs | 3 + crates/re_data_store/tests/data_store.rs | 3 + crates/re_data_store/tests/dump.rs | 3 + crates/re_data_store/tests/internals.rs | 3 + crates/re_data_store/tests/memory_test.rs | 3 + crates/re_dev_tools/src/main.rs | 3 + crates/re_entity_db/examples/memory_usage.rs | 3 + .../components/entity_properties_component.rs | 7 +- crates/re_entity_db/src/lib.rs | 3 + crates/re_entity_db/tests/clear.rs | 3 + crates/re_entity_db/tests/time_histograms.rs | 3 + crates/re_format_arrow/src/lib.rs | 3 + .../benches/msg_encode_benchmark.rs | 3 + crates/re_log_encoding/src/lib.rs | 8 +- .../src/stream_rrd_from_http.rs | 4 + crates/re_log_types/src/lib.rs | 3 + crates/re_query/benches/latest_at.rs | 3 + crates/re_query/src/latest_at/results.rs | 6 +- crates/re_query/src/lib.rs | 3 + crates/re_query/tests/latest_at.rs | 3 + crates/re_query/tests/range.rs | 3 + crates/re_renderer/src/lib.rs | 3 + crates/re_renderer_examples/2d.rs | 3 + crates/re_renderer_examples/depth_cloud.rs | 3 + crates/re_renderer_examples/depth_offset.rs | 3 + crates/re_renderer_examples/framework.rs | 3 + crates/re_renderer_examples/multiview.rs | 3 + crates/re_renderer_examples/outlines.rs | 3 + crates/re_renderer_examples/picking.rs | 3 + crates/re_sdk/src/lib.rs | 2 + crates/re_sdk_comms/src/lib.rs | 1 + crates/re_sdk_comms/src/server.rs | 6 +- crates/re_space_view_spatial/src/lib.rs | 3 + crates/re_space_view_tensor/src/lib.rs | 3 + crates/re_space_view_time_series/src/lib.rs | 3 + crates/re_time_panel/src/lib.rs | 3 + crates/re_types/Cargo.toml | 1 - .../src/blueprint/components/active_tab.rs | 3 +- .../blueprint/components/included_content.rs | 3 +- .../blueprint/components/query_expression.rs | 3 +- .../blueprint/components/space_view_class.rs | 3 +- .../blueprint/components/space_view_origin.rs | 3 +- .../src/components/annotation_context.rs | 7 +- crates/re_types/src/components/blob.rs | 7 +- .../re_types/src/components/half_sizes2d.rs | 6 +- .../re_types/src/components/half_sizes3d.rs | 6 +- .../re_types/src/components/line_strip2d.rs | 13 +-- .../re_types/src/components/line_strip3d.rs | 13 +-- crates/re_types/src/components/media_type.rs | 3 +- crates/re_types/src/components/name.rs | 3 +- .../src/components/pinhole_projection.rs | 6 +- crates/re_types/src/components/position2d.rs | 6 +- crates/re_types/src/components/position3d.rs | 6 +- crates/re_types/src/components/range1d.rs | 6 +- crates/re_types/src/components/resolution.rs | 6 +- crates/re_types/src/components/texcoord2d.rs | 6 +- crates/re_types/src/components/text.rs | 3 +- .../re_types/src/components/text_log_level.rs | 3 +- .../src/components/triangle_indices.rs | 6 +- crates/re_types/src/components/vector2d.rs | 6 +- crates/re_types/src/components/vector3d.rs | 6 +- .../src/components/view_coordinates.rs | 6 +- .../re_types/src/datatypes/annotation_info.rs | 4 +- .../src/datatypes/class_description.rs | 14 ++- crates/re_types/src/datatypes/mat3x3.rs | 6 +- crates/re_types/src/datatypes/mat4x4.rs | 6 +- crates/re_types/src/datatypes/quaternion.rs | 6 +- crates/re_types/src/datatypes/range1d.rs | 6 +- crates/re_types/src/datatypes/range2d.rs | 12 ++- crates/re_types/src/datatypes/rotation3d.rs | 6 +- .../src/datatypes/rotation_axis_angle.rs | 6 +- crates/re_types/src/datatypes/scale3d.rs | 6 +- .../re_types/src/datatypes/tensor_buffer.rs | 98 ++++++++----------- crates/re_types/src/datatypes/tensor_data.rs | 7 +- .../re_types/src/datatypes/tensor_data_ext.rs | 4 +- .../src/datatypes/tensor_dimension.rs | 3 +- .../src/datatypes/translation_and_mat3x3.rs | 12 ++- .../datatypes/translation_rotation_scale3d.rs | 6 +- crates/re_types/src/datatypes/uuid.rs | 6 +- crates/re_types/src/datatypes/uvec2d.rs | 6 +- crates/re_types/src/datatypes/uvec3d.rs | 6 +- crates/re_types/src/datatypes/uvec4d.rs | 6 +- crates/re_types/src/datatypes/vec2d.rs | 6 +- crates/re_types/src/datatypes/vec3d.rs | 6 +- crates/re_types/src/datatypes/vec4d.rs | 6 +- crates/re_types/src/tensor_data.rs | 4 +- .../src/testing/components/affix_fuzzer10.rs | 3 +- .../src/testing/components/affix_fuzzer11.rs | 7 +- .../src/testing/components/affix_fuzzer12.rs | 10 +- .../src/testing/components/affix_fuzzer13.rs | 10 +- .../src/testing/components/affix_fuzzer16.rs | 7 +- .../src/testing/components/affix_fuzzer17.rs | 7 +- .../src/testing/components/affix_fuzzer18.rs | 7 +- .../src/testing/components/affix_fuzzer7.rs | 7 +- .../src/testing/components/affix_fuzzer9.rs | 3 +- .../src/testing/datatypes/affix_fuzzer1.rs | 33 +++---- .../src/testing/datatypes/affix_fuzzer20.rs | 4 +- .../src/testing/datatypes/affix_fuzzer21.rs | 7 +- .../src/testing/datatypes/affix_fuzzer22.rs | 6 +- .../src/testing/datatypes/affix_fuzzer3.rs | 13 +-- .../src/testing/datatypes/affix_fuzzer4.rs | 7 +- .../src/testing/datatypes/string_component.rs | 3 +- .../components/included_space_view.rs | 6 +- .../blueprint/components/root_container.rs | 6 +- .../components/space_view_maximized.rs | 6 +- crates/re_types_builder/build.rs | 4 +- .../src/bin/build_re_types.rs | 3 + crates/re_types_builder/src/codegen/mod.rs | 3 + .../src/codegen/rust/deserializer.rs | 12 ++- .../src/codegen/rust/serializer.rs | 18 ++-- crates/re_types_builder/src/lib.rs | 3 + crates/re_types_core/benches/bench_tuid.rs | 3 + .../src/components/visualizer_overrides.rs | 10 +- .../src/datatypes/entity_path.rs | 3 +- crates/re_types_core/src/datatypes/utf8.rs | 3 +- .../src/datatypes/visible_time_range.rs | 4 +- crates/re_types_core/src/lib.rs | 3 + crates/re_types_core/src/result.rs | 41 +++++++- crates/re_ui/examples/re_ui_example/main.rs | 2 +- crates/re_viewer/src/lib.rs | 3 + crates/re_viewport/src/lib.rs | 3 + crates/re_ws_comms/src/lib.rs | 3 + crates/rerun/src/lib.rs | 2 + crates/rerun_c/src/lib.rs | 5 +- docs/snippets/build.rs | 5 +- rerun_py/build.rs | 2 +- rerun_py/src/python_bridge.rs | 2 +- run_wasm/src/main.rs | 14 ++- tests/rust/roundtrips/image/src/main.rs | 3 + tests/rust/test_image_memory/src/main.rs | 3 + 139 files changed, 532 insertions(+), 316 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 897a18996a43e..090f363c079b0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -444,7 +444,7 @@ missing_errors_doc = "allow" # This would be nice to enable, but we have way too many unwraps right now 😭 # Enabling this lint in 2023-04-27 yielded 556 hits. # Enabling this lint in 2023-09-23 yielded 352 hits -unwrap_used = "allow" +unwrap_used = "warn" [patch.crates-io] # Try to avoid patching crates! It prevents us from publishing the crates on crates.io. diff --git a/crates/re_analytics/examples/end_to_end.rs b/crates/re_analytics/examples/end_to_end.rs index 631d783208dba..266fec85bc45b 100644 --- a/crates/re_analytics/examples/end_to_end.rs +++ b/crates/re_analytics/examples/end_to_end.rs @@ -4,17 +4,17 @@ use re_analytics::Event; use re_analytics::Properties; use re_analytics::{Analytics, AnalyticsEvent}; -fn main() -> ! { +fn main() -> Result<(), Box> { re_log::setup_logging(); - let analytics = Analytics::new(Duration::from_secs(3)).unwrap(); + let analytics = Analytics::new(Duration::from_secs(3))?; let application_id = "end_to_end_example".to_owned(); let recording_id = uuid::Uuid::new_v4().to_string(); println!("any non-empty line written here will be sent as an analytics datapoint"); loop { let mut input = String::new(); - std::io::stdin().read_line(&mut input).unwrap(); + std::io::stdin().read_line(&mut input)?; let input = input.trim(); if !input.is_empty() { diff --git a/crates/re_analytics/src/native/config.rs b/crates/re_analytics/src/native/config.rs index 4a00e1d807f76..df43652793550 100644 --- a/crates/re_analytics/src/native/config.rs +++ b/crates/re_analytics/src/native/config.rs @@ -106,7 +106,9 @@ impl Config { } pub fn config_dir(&self) -> &Path { - self.config_file_path.parent().unwrap() + self.config_file_path + .parent() + .expect("config file has no parent") } pub fn config_file(&self) -> &Path { diff --git a/crates/re_build_info/src/build_info.rs b/crates/re_build_info/src/build_info.rs index 28f39a3d87b5d..1192eb719bd95 100644 --- a/crates/re_build_info/src/build_info.rs +++ b/crates/re_build_info/src/build_info.rs @@ -166,8 +166,8 @@ fn crate_version_from_build_info_string() { { let expected_crate_version = build_info.version; - let crate_version = CrateVersion::try_parse_from_build_info_string(build_info_str).unwrap(); + let crate_version = CrateVersion::try_parse_from_build_info_string(build_info_str); - assert_eq!(expected_crate_version, crate_version); + assert_eq!(Ok(expected_crate_version), crate_version); } } diff --git a/crates/re_build_tools/src/hashing.rs b/crates/re_build_tools/src/hashing.rs index fd5f2df5d8f09..f4d03203fc3c1 100644 --- a/crates/re_build_tools/src/hashing.rs +++ b/crates/re_build_tools/src/hashing.rs @@ -12,7 +12,7 @@ use crate::{rerun_if_changed, rerun_if_changed_or_doesnt_exist}; fn encode_hex(bytes: &[u8]) -> String { let mut s = String::with_capacity(bytes.len() * 2); for &b in bytes { - write!(&mut s, "{b:02x}").unwrap(); + write!(&mut s, "{b:02x}").expect("writing to string should never fail"); } s } diff --git a/crates/re_data_store/benches/arrow2.rs b/crates/re_data_store/benches/arrow2.rs index 256c83983bfc8..4883fc2a3c10e 100644 --- a/crates/re_data_store/benches/arrow2.rs +++ b/crates/re_data_store/benches/arrow2.rs @@ -1,5 +1,8 @@ //! Keeping track of performance issues/regressions in `arrow2` that directly affect us. +// Allow unwrap() in benchmarks +#![allow(clippy::unwrap_used)] + #[global_allocator] static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc; diff --git a/crates/re_data_store/benches/data_store.rs b/crates/re_data_store/benches/data_store.rs index 854186ebaa416..1a62eec8c45df 100644 --- a/crates/re_data_store/benches/data_store.rs +++ b/crates/re_data_store/benches/data_store.rs @@ -1,3 +1,6 @@ +// Allow unwrap() in benchmarks +#![allow(clippy::unwrap_used)] + #[global_allocator] static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc; diff --git a/crates/re_data_store/benches/gc.rs b/crates/re_data_store/benches/gc.rs index 3e840aac1c676..a3509e37ba5e0 100644 --- a/crates/re_data_store/benches/gc.rs +++ b/crates/re_data_store/benches/gc.rs @@ -1,3 +1,6 @@ +// Allow unwrap() in benchmarks +#![allow(clippy::unwrap_used)] + #[global_allocator] static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc; diff --git a/crates/re_data_store/src/lib.rs b/crates/re_data_store/src/lib.rs index 5e350dcf8a40d..477bb87ae64af 100644 --- a/crates/re_data_store/src/lib.rs +++ b/crates/re_data_store/src/lib.rs @@ -14,6 +14,9 @@ #![doc = document_features::document_features!()] //! +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + mod arrow_util; mod store; mod store_arrow; diff --git a/crates/re_data_store/tests/correctness.rs b/crates/re_data_store/tests/correctness.rs index 50d4245e8d29a..4c60d32b05a77 100644 --- a/crates/re_data_store/tests/correctness.rs +++ b/crates/re_data_store/tests/correctness.rs @@ -2,6 +2,9 @@ //! //! Bending and twisting the datastore APIs in all kinds of weird ways to try and break them. +// https://github.com/rust-lang/rust-clippy/issues/10011 +#![cfg(test)] + use rand::Rng; use re_data_store::{ diff --git a/crates/re_data_store/tests/data_store.rs b/crates/re_data_store/tests/data_store.rs index 4ae0a501d5a0c..572bccfce5adb 100644 --- a/crates/re_data_store/tests/data_store.rs +++ b/crates/re_data_store/tests/data_store.rs @@ -2,6 +2,9 @@ //! //! Testing & demonstrating expected usage of the datastore APIs, no funny stuff. +// https://github.com/rust-lang/rust-clippy/issues/10011 +#![cfg(test)] + use itertools::Itertools; use rand::Rng; use re_data_store::{ diff --git a/crates/re_data_store/tests/dump.rs b/crates/re_data_store/tests/dump.rs index 9bba331496f95..7b8b91c7fa3aa 100644 --- a/crates/re_data_store/tests/dump.rs +++ b/crates/re_data_store/tests/dump.rs @@ -1,5 +1,8 @@ //! Dumping a datastore to log messages and back. +// https://github.com/rust-lang/rust-clippy/issues/10011 +#![cfg(test)] + use itertools::Itertools; use re_data_store::{ test_row, diff --git a/crates/re_data_store/tests/internals.rs b/crates/re_data_store/tests/internals.rs index b0cb6b5e351c5..fbd44333ded9d 100644 --- a/crates/re_data_store/tests/internals.rs +++ b/crates/re_data_store/tests/internals.rs @@ -2,6 +2,9 @@ //! //! They're awful, but sometimes you just have to… +// https://github.com/rust-lang/rust-clippy/issues/10011 +#![cfg(test)] + use re_data_store::{DataStore, DataStoreConfig}; use re_log_types::{ build_frame_nr, example_components::MyIndex, DataRow, EntityPath, RowId, TimePoint, diff --git a/crates/re_data_store/tests/memory_test.rs b/crates/re_data_store/tests/memory_test.rs index 42c34c088a17f..e29a262ac0b50 100644 --- a/crates/re_data_store/tests/memory_test.rs +++ b/crates/re_data_store/tests/memory_test.rs @@ -1,5 +1,8 @@ //! Measures the memory overhead of the data store. +// https://github.com/rust-lang/rust-clippy/issues/10011 +#![cfg(test)] + use std::sync::atomic::{AtomicUsize, Ordering::Relaxed}; thread_local! { diff --git a/crates/re_dev_tools/src/main.rs b/crates/re_dev_tools/src/main.rs index d2ba6dc5f5cb6..595dec59d75a7 100644 --- a/crates/re_dev_tools/src/main.rs +++ b/crates/re_dev_tools/src/main.rs @@ -2,6 +2,9 @@ //! //! To get an overview over all tools run `pixi run dev-tools --help`. +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + use argh::FromArgs; mod build_examples; diff --git a/crates/re_entity_db/examples/memory_usage.rs b/crates/re_entity_db/examples/memory_usage.rs index 2effe5505b2cf..36354232eacbb 100644 --- a/crates/re_entity_db/examples/memory_usage.rs +++ b/crates/re_entity_db/examples/memory_usage.rs @@ -1,3 +1,6 @@ +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + use std::sync::atomic::{AtomicUsize, Ordering::Relaxed}; thread_local! { diff --git a/crates/re_entity_db/src/blueprint/components/entity_properties_component.rs b/crates/re_entity_db/src/blueprint/components/entity_properties_component.rs index 6b334e550aede..c95f1240d294d 100644 --- a/crates/re_entity_db/src/blueprint/components/entity_properties_component.rs +++ b/crates/re_entity_db/src/blueprint/components/entity_properties_component.rs @@ -104,8 +104,7 @@ impl ::re_types_core::Loggable for EntityPropertiesComponent { buffers .iter() .map(|opt| opt.as_ref().map_or(0, |buf| buf.len())), - ) - .unwrap() + )? .into(); let data0_inner_bitmap: Option = None; let data0_inner_data: Buffer = buffers @@ -114,13 +113,13 @@ impl ::re_types_core::Loggable for EntityPropertiesComponent { .collect::>() .concat() .into(); - ListArray::new( + ListArray::try_new( Self::arrow_datatype(), offsets, PrimitiveArray::new(DataType::UInt8, data0_inner_data, data0_inner_bitmap) .boxed(), data0_bitmap, - ) + )? .boxed() } }) diff --git a/crates/re_entity_db/src/lib.rs b/crates/re_entity_db/src/lib.rs index 6295ba7181d59..fbcd2ee60ca1a 100644 --- a/crates/re_entity_db/src/lib.rs +++ b/crates/re_entity_db/src/lib.rs @@ -4,6 +4,9 @@ #![doc = document_features::document_features!()] //! +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + pub mod entity_db; pub mod entity_properties; pub mod entity_tree; diff --git a/crates/re_entity_db/tests/clear.rs b/crates/re_entity_db/tests/clear.rs index fb201eb3fd3e4..1ea4e5c69dbbe 100644 --- a/crates/re_entity_db/tests/clear.rs +++ b/crates/re_entity_db/tests/clear.rs @@ -1,3 +1,6 @@ +// https://github.com/rust-lang/rust-clippy/issues/10011 +#![cfg(test)] + use re_data_store::{DataStore, LatestAtQuery}; use re_entity_db::EntityDb; use re_log_types::{ diff --git a/crates/re_entity_db/tests/time_histograms.rs b/crates/re_entity_db/tests/time_histograms.rs index e78efafa6f341..0aacceca630d0 100644 --- a/crates/re_entity_db/tests/time_histograms.rs +++ b/crates/re_entity_db/tests/time_histograms.rs @@ -1,3 +1,6 @@ +// https://github.com/rust-lang/rust-clippy/issues/10011 +#![cfg(test)] + use std::collections::BTreeSet; use re_data_store::GarbageCollectionOptions; diff --git a/crates/re_format_arrow/src/lib.rs b/crates/re_format_arrow/src/lib.rs index 2ae6e4080f615..8b728149eace3 100644 --- a/crates/re_format_arrow/src/lib.rs +++ b/crates/re_format_arrow/src/lib.rs @@ -1,5 +1,8 @@ //! Formatting for tables of Arrow arrays +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + use std::fmt::Formatter; use arrow2::{ diff --git a/crates/re_log_encoding/benches/msg_encode_benchmark.rs b/crates/re_log_encoding/benches/msg_encode_benchmark.rs index 68c3784088986..6a8c768ae7054 100644 --- a/crates/re_log_encoding/benches/msg_encode_benchmark.rs +++ b/crates/re_log_encoding/benches/msg_encode_benchmark.rs @@ -1,3 +1,6 @@ +// Allow unwrap() in benchmarks +#![allow(clippy::unwrap_used)] + #[cfg(not(all(feature = "decoder", feature = "encoder")))] compile_error!("msg_encode_benchmark requires 'decoder' and 'encoder' features."); diff --git a/crates/re_log_encoding/src/lib.rs b/crates/re_log_encoding/src/lib.rs index f57e82c328990..69c8701176ca2 100644 --- a/crates/re_log_encoding/src/lib.rs +++ b/crates/re_log_encoding/src/lib.rs @@ -135,12 +135,14 @@ impl FileHeader { #[cfg(feature = "decoder")] pub fn decode(read: &mut impl std::io::Read) -> Result { + let to_array_4b = |slice: &[u8]| slice.try_into().expect("always returns an Ok() variant"); + let mut buffer = [0_u8; Self::SIZE]; read.read_exact(&mut buffer) .map_err(decoder::DecodeError::Read)?; - let magic = buffer[0..4].try_into().unwrap(); - let version = buffer[4..8].try_into().unwrap(); - let options = EncodingOptions::from_bytes(buffer[8..].try_into().unwrap())?; + let magic = to_array_4b(&buffer[0..4]); + let version = to_array_4b(&buffer[4..8]); + let options = EncodingOptions::from_bytes(to_array_4b(&buffer[8..]))?; Ok(Self { magic, version, diff --git a/crates/re_log_encoding/src/stream_rrd_from_http.rs b/crates/re_log_encoding/src/stream_rrd_from_http.rs index 95debc17e54a6..bf9be45a0cf08 100644 --- a/crates/re_log_encoding/src/stream_rrd_from_http.rs +++ b/crates/re_log_encoding/src/stream_rrd_from_http.rs @@ -118,6 +118,8 @@ pub fn stream_rrd_from_http(url: String, on_msg: Arc) { } #[cfg(target_arch = "wasm32")] +// TODO(#3408): remove unwrap() +#[allow(clippy::unwrap_used)] mod web_event_listener { use super::HttpMessageCallback; use js_sys::Uint8Array; @@ -157,6 +159,8 @@ mod web_event_listener { pub use web_event_listener::stream_rrd_from_event_listener; #[cfg(target_arch = "wasm32")] +// TODO(#3408): remove unwrap() +#[allow(clippy::unwrap_used)] pub mod web_decode { use super::{HttpMessage, HttpMessageCallback}; use std::sync::Arc; diff --git a/crates/re_log_types/src/lib.rs b/crates/re_log_types/src/lib.rs index 8013a1741d178..7930a731b0c8e 100644 --- a/crates/re_log_types/src/lib.rs +++ b/crates/re_log_types/src/lib.rs @@ -17,6 +17,9 @@ //! e.g. the entity `foo/bar/baz` is has the transform that is the product of //! `foo.transform * foo/bar.transform * foo/bar/baz.transform`. +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + pub mod arrow_msg; pub mod example_components; pub mod hash; diff --git a/crates/re_query/benches/latest_at.rs b/crates/re_query/benches/latest_at.rs index d0fbf24d9df4b..66d68fffdb136 100644 --- a/crates/re_query/benches/latest_at.rs +++ b/crates/re_query/benches/latest_at.rs @@ -1,6 +1,9 @@ //! Contains: //! - A 1:1 port of the benchmarks in `crates/re_query/benches/query_benchmarks.rs`, with caching enabled. +// Allow unwrap() in benchmarks +#![allow(clippy::unwrap_used)] + use criterion::{criterion_group, criterion_main, Criterion}; use itertools::Itertools; diff --git a/crates/re_query/src/latest_at/results.rs b/crates/re_query/src/latest_at/results.rs index 40c854efefda4..0d1c7d8ea3778 100644 --- a/crates/re_query/src/latest_at/results.rs +++ b/crates/re_query/src/latest_at/results.rs @@ -285,6 +285,8 @@ fn downcast(cached: &(dyn ErasedFlatVecDeque + Send + Sync)) -> cr if cached.num_entries() != 1 { return Err(anyhow::anyhow!("latest_at deque must be single entry").into()); } - // unwrap checked just above ^^^ - Ok(cached.iter().next().unwrap()) + Ok(cached + .iter() + .next() + .expect("checked existence of cached value already")) } diff --git a/crates/re_query/src/lib.rs b/crates/re_query/src/lib.rs index d79319663c3c5..f9455c39ed8db 100644 --- a/crates/re_query/src/lib.rs +++ b/crates/re_query/src/lib.rs @@ -1,5 +1,8 @@ //! Caching datastructures for `re_query`. +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + mod cache; mod cache_stats; mod flat_vec_deque; diff --git a/crates/re_query/tests/latest_at.rs b/crates/re_query/tests/latest_at.rs index 115aa0f7cf6cb..30eca0e755af8 100644 --- a/crates/re_query/tests/latest_at.rs +++ b/crates/re_query/tests/latest_at.rs @@ -1,3 +1,6 @@ +// https://github.com/rust-lang/rust-clippy/issues/10011 +#![cfg(test)] + use re_data_store::{DataStore, LatestAtQuery, StoreSubscriber}; use re_log_types::{ build_frame_nr, diff --git a/crates/re_query/tests/range.rs b/crates/re_query/tests/range.rs index 84c9f3a3b3176..2c252147f7559 100644 --- a/crates/re_query/tests/range.rs +++ b/crates/re_query/tests/range.rs @@ -1,3 +1,6 @@ +// https://github.com/rust-lang/rust-clippy/issues/10011 +#![cfg(test)] + use itertools::Itertools as _; use re_data_store::{DataStore, RangeQuery, ResolvedTimeRange, StoreSubscriber as _, TimeInt}; diff --git a/crates/re_renderer/src/lib.rs b/crates/re_renderer/src/lib.rs index dc7eafa27232d..e4bf1c684b292 100644 --- a/crates/re_renderer/src/lib.rs +++ b/crates/re_renderer/src/lib.rs @@ -7,6 +7,9 @@ #![doc = document_features::document_features!()] //! +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + pub mod config; pub mod importer; pub mod mesh; diff --git a/crates/re_renderer_examples/2d.rs b/crates/re_renderer_examples/2d.rs index 1000e0e4c8c00..80da388db301f 100644 --- a/crates/re_renderer_examples/2d.rs +++ b/crates/re_renderer_examples/2d.rs @@ -2,6 +2,9 @@ //! //! On the left is a 2D view, on the right a 3D view of the same scene. +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + use itertools::Itertools as _; use re_renderer::Hsva; diff --git a/crates/re_renderer_examples/depth_cloud.rs b/crates/re_renderer_examples/depth_cloud.rs index e6f457654750c..9c8c0015d700f 100644 --- a/crates/re_renderer_examples/depth_cloud.rs +++ b/crates/re_renderer_examples/depth_cloud.rs @@ -13,6 +13,9 @@ //! cargo run-wasm --example depth_cloud //! ``` +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + use std::f32::consts::TAU; use glam::Vec3; diff --git a/crates/re_renderer_examples/depth_offset.rs b/crates/re_renderer_examples/depth_offset.rs index c2b1bc2724f81..592a31ef7c875 100644 --- a/crates/re_renderer_examples/depth_offset.rs +++ b/crates/re_renderer_examples/depth_offset.rs @@ -7,6 +7,9 @@ //! Press arrow up/down to increase/decrease the distance of the camera to the z==0 plane in tandem with the scale of the rectangles. //! Press arrow left/right to increase/decrease the near plane distance. +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + use re_renderer::Hsva; use re_renderer::{ renderer::{ColormappedTexture, RectangleDrawData, RectangleOptions, TexturedRect}, diff --git a/crates/re_renderer_examples/framework.rs b/crates/re_renderer_examples/framework.rs index 972497d8e22c8..b78fbc6414690 100644 --- a/crates/re_renderer_examples/framework.rs +++ b/crates/re_renderer_examples/framework.rs @@ -1,5 +1,8 @@ //! Example framework +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + use std::sync::Arc; use anyhow::Context as _; diff --git a/crates/re_renderer_examples/multiview.rs b/crates/re_renderer_examples/multiview.rs index 6ced4e600a974..f8cbe6a707696 100644 --- a/crates/re_renderer_examples/multiview.rs +++ b/crates/re_renderer_examples/multiview.rs @@ -1,5 +1,8 @@ //! Example with several independent views, using various primitives. +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + use std::f32::consts::TAU; use framework::Example; diff --git a/crates/re_renderer_examples/outlines.rs b/crates/re_renderer_examples/outlines.rs index b7736d5c0695d..d9aad2b8a7f33 100644 --- a/crates/re_renderer_examples/outlines.rs +++ b/crates/re_renderer_examples/outlines.rs @@ -1,5 +1,8 @@ //! Demonstrates outline rendering. +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + use itertools::Itertools; use re_renderer::{ renderer::MeshInstance, diff --git a/crates/re_renderer_examples/picking.rs b/crates/re_renderer_examples/picking.rs index 0f8868c4e9cd6..585f0f41c6d70 100644 --- a/crates/re_renderer_examples/picking.rs +++ b/crates/re_renderer_examples/picking.rs @@ -1,5 +1,8 @@ //! Demonstrates the dedicated picking layer support. +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + use itertools::Itertools as _; use rand::Rng; use re_renderer::{ diff --git a/crates/re_sdk/src/lib.rs b/crates/re_sdk/src/lib.rs index 697e08ecb52c6..c6e3942ad5403 100644 --- a/crates/re_sdk/src/lib.rs +++ b/crates/re_sdk/src/lib.rs @@ -10,6 +10,8 @@ #![doc = document_features::document_features!()] //! +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] #![warn(missing_docs)] // Let's keep the this crate well-documented! // ---------------- diff --git a/crates/re_sdk_comms/src/lib.rs b/crates/re_sdk_comms/src/lib.rs index 4eccbf01de38b..e00f13a4c47c4 100644 --- a/crates/re_sdk_comms/src/lib.rs +++ b/crates/re_sdk_comms/src/lib.rs @@ -37,5 +37,6 @@ pub fn default_server_addr() -> std::net::SocketAddr { /// The default amount of time to wait for the TCP connection to resume during a flush #[allow(clippy::unnecessary_wraps)] pub fn default_flush_timeout() -> Option { + // NOTE: This is part of the SDK and meant to be used where we accept `Option` values. Some(std::time::Duration::from_secs(2)) } diff --git a/crates/re_sdk_comms/src/server.rs b/crates/re_sdk_comms/src/server.rs index ff39f8b486b73..a52c1eddf9d11 100644 --- a/crates/re_sdk_comms/src/server.rs +++ b/crates/re_sdk_comms/src/server.rs @@ -360,7 +360,11 @@ impl CongestionManager { // decision on a time we've previously seen, // thus sending parts of a sequence-time instead of all-or-nothing. while timeline_history.send_time.len() > 1024 { - let oldest_time = *timeline_history.send_time.keys().next().unwrap(); + let oldest_time = *timeline_history + .send_time + .keys() + .next() + .expect("safe because checked above"); timeline_history.send_time.remove(&oldest_time); } diff --git a/crates/re_space_view_spatial/src/lib.rs b/crates/re_space_view_spatial/src/lib.rs index 5e8b3569597a8..0fdb9c99b163a 100644 --- a/crates/re_space_view_spatial/src/lib.rs +++ b/crates/re_space_view_spatial/src/lib.rs @@ -2,6 +2,9 @@ //! //! Space Views that show entities in a 2D or 3D spatial relationship. +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + mod contexts; mod eye; mod heuristics; diff --git a/crates/re_space_view_tensor/src/lib.rs b/crates/re_space_view_tensor/src/lib.rs index e46b46051f3b9..175451588524e 100644 --- a/crates/re_space_view_tensor/src/lib.rs +++ b/crates/re_space_view_tensor/src/lib.rs @@ -2,6 +2,9 @@ //! //! A Space View dedicated to visualizing tensors with arbitrary dimensionality. +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + mod dimension_mapping; mod space_view_class; mod tensor_dimension_mapper; diff --git a/crates/re_space_view_time_series/src/lib.rs b/crates/re_space_view_time_series/src/lib.rs index d7c1cabc5cb70..53c06baa6b0e6 100644 --- a/crates/re_space_view_time_series/src/lib.rs +++ b/crates/re_space_view_time_series/src/lib.rs @@ -2,6 +2,9 @@ //! //! A Space View that shows plots over Rerun timelines. +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + mod aggregation; mod line_visualizer_system; mod overrides; diff --git a/crates/re_time_panel/src/lib.rs b/crates/re_time_panel/src/lib.rs index 2d718f1183411..36eba04bf1006 100644 --- a/crates/re_time_panel/src/lib.rs +++ b/crates/re_time_panel/src/lib.rs @@ -3,6 +3,9 @@ //! This crate provides a panel that shows allows to control time & timelines, //! as well as all necessary ui elements that make it up. +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + mod data_density_graph; mod paint_ticks; mod time_axis; diff --git a/crates/re_types/Cargo.toml b/crates/re_types/Cargo.toml index aa5a454500f0f..6dc2a6b6ec00f 100644 --- a/crates/re_types/Cargo.toml +++ b/crates/re_types/Cargo.toml @@ -15,7 +15,6 @@ version.workspace = true [lints] workspace = true - [package.metadata.docs.rs] all-features = false no-default-features = true diff --git a/crates/re_types/src/blueprint/components/active_tab.rs b/crates/re_types/src/blueprint/components/active_tab.rs index 9d7217d64deac..29281d755d1eb 100644 --- a/crates/re_types/src/blueprint/components/active_tab.rs +++ b/crates/re_types/src/blueprint/components/active_tab.rs @@ -109,8 +109,7 @@ impl ::re_types_core::Loggable for ActiveTab { data0 .iter() .map(|opt| opt.as_ref().map(|datum| datum.0.len()).unwrap_or_default()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = data0 .into_iter() diff --git a/crates/re_types/src/blueprint/components/included_content.rs b/crates/re_types/src/blueprint/components/included_content.rs index 09052f8f5e888..c4e0091af3883 100644 --- a/crates/re_types/src/blueprint/components/included_content.rs +++ b/crates/re_types/src/blueprint/components/included_content.rs @@ -110,8 +110,7 @@ impl ::re_types_core::Loggable for IncludedContent { data0 .iter() .map(|opt| opt.as_ref().map(|datum| datum.0.len()).unwrap_or_default()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = data0 .into_iter() diff --git a/crates/re_types/src/blueprint/components/query_expression.rs b/crates/re_types/src/blueprint/components/query_expression.rs index bf8b25fe46f7e..dd94a9d85015e 100644 --- a/crates/re_types/src/blueprint/components/query_expression.rs +++ b/crates/re_types/src/blueprint/components/query_expression.rs @@ -114,8 +114,7 @@ impl ::re_types_core::Loggable for QueryExpression { data0 .iter() .map(|opt| opt.as_ref().map(|datum| datum.0.len()).unwrap_or_default()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = data0 .into_iter() diff --git a/crates/re_types/src/blueprint/components/space_view_class.rs b/crates/re_types/src/blueprint/components/space_view_class.rs index c448935b5d1a1..09d890c16aa02 100644 --- a/crates/re_types/src/blueprint/components/space_view_class.rs +++ b/crates/re_types/src/blueprint/components/space_view_class.rs @@ -105,8 +105,7 @@ impl ::re_types_core::Loggable for SpaceViewClass { data0 .iter() .map(|opt| opt.as_ref().map(|datum| datum.0.len()).unwrap_or_default()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = data0 .into_iter() diff --git a/crates/re_types/src/blueprint/components/space_view_origin.rs b/crates/re_types/src/blueprint/components/space_view_origin.rs index 88bbb94dc65e6..a075d47f5924e 100644 --- a/crates/re_types/src/blueprint/components/space_view_origin.rs +++ b/crates/re_types/src/blueprint/components/space_view_origin.rs @@ -105,8 +105,7 @@ impl ::re_types_core::Loggable for SpaceViewOrigin { data0 .iter() .map(|opt| opt.as_ref().map(|datum| datum.0.len()).unwrap_or_default()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = data0 .into_iter() diff --git a/crates/re_types/src/components/annotation_context.rs b/crates/re_types/src/components/annotation_context.rs index 7a4d93bb6e51d..d9b8e1eedb3aa 100644 --- a/crates/re_types/src/components/annotation_context.rs +++ b/crates/re_types/src/components/annotation_context.rs @@ -104,12 +104,11 @@ impl ::re_types_core::Loggable for AnnotationContext { data0 .iter() .map(|opt| opt.as_ref().map_or(0, |datum| datum.len())), - ) - .unwrap() + )? .into(); let data0_inner_data: Vec<_> = data0.into_iter().flatten().flatten().collect(); let data0_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( Self::arrow_datatype(), offsets, { @@ -119,7 +118,7 @@ impl ::re_types_core::Loggable for AnnotationContext { )? }, data0_bitmap, - ) + )? .boxed() } }) diff --git a/crates/re_types/src/components/blob.rs b/crates/re_types/src/components/blob.rs index 32eb3d3dcd77b..54a5eff9720d7 100644 --- a/crates/re_types/src/components/blob.rs +++ b/crates/re_types/src/components/blob.rs @@ -102,8 +102,7 @@ impl ::re_types_core::Loggable for Blob { data0 .iter() .map(|opt| opt.as_ref().map_or(0, |datum| datum.num_instances())), - ) - .unwrap() + )? .into(); let data0_inner_data: Buffer<_> = data0 .iter() @@ -113,13 +112,13 @@ impl ::re_types_core::Loggable for Blob { .concat() .into(); let data0_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( Self::arrow_datatype(), offsets, PrimitiveArray::new(DataType::UInt8, data0_inner_data, data0_inner_bitmap) .boxed(), data0_bitmap, - ) + )? .boxed() } }) diff --git a/crates/re_types/src/components/half_sizes2d.rs b/crates/re_types/src/components/half_sizes2d.rs index bca77299130fa..dbfc69998b934 100644 --- a/crates/re_types/src/components/half_sizes2d.rs +++ b/crates/re_types/src/components/half_sizes2d.rs @@ -194,8 +194,10 @@ impl ::re_types_core::Loggable for HalfSizes2D { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/components/half_sizes3d.rs b/crates/re_types/src/components/half_sizes3d.rs index 0c3e52b0fe0ef..0a91546db3773 100644 --- a/crates/re_types/src/components/half_sizes3d.rs +++ b/crates/re_types/src/components/half_sizes3d.rs @@ -194,8 +194,10 @@ impl ::re_types_core::Loggable for HalfSizes3D { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/components/line_strip2d.rs b/crates/re_types/src/components/line_strip2d.rs index 6a0b6211ce6d1..c28f952f87d04 100644 --- a/crates/re_types/src/components/line_strip2d.rs +++ b/crates/re_types/src/components/line_strip2d.rs @@ -104,12 +104,11 @@ impl ::re_types_core::Loggable for LineStrip2D { data0 .iter() .map(|opt| opt.as_ref().map_or(0, |datum| datum.len())), - ) - .unwrap() + )? .into(); let data0_inner_data: Vec<_> = data0.into_iter().flatten().flatten().collect(); let data0_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( Self::arrow_datatype(), offsets, { @@ -136,7 +135,7 @@ impl ::re_types_core::Loggable for LineStrip2D { .boxed() }, data0_bitmap, - ) + )? .boxed() } }) @@ -224,8 +223,10 @@ impl ::re_types_core::Loggable for LineStrip2D { .get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/components/line_strip3d.rs b/crates/re_types/src/components/line_strip3d.rs index 305128390ad15..834ee763225dd 100644 --- a/crates/re_types/src/components/line_strip3d.rs +++ b/crates/re_types/src/components/line_strip3d.rs @@ -104,12 +104,11 @@ impl ::re_types_core::Loggable for LineStrip3D { data0 .iter() .map(|opt| opt.as_ref().map_or(0, |datum| datum.len())), - ) - .unwrap() + )? .into(); let data0_inner_data: Vec<_> = data0.into_iter().flatten().flatten().collect(); let data0_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( Self::arrow_datatype(), offsets, { @@ -136,7 +135,7 @@ impl ::re_types_core::Loggable for LineStrip3D { .boxed() }, data0_bitmap, - ) + )? .boxed() } }) @@ -224,8 +223,10 @@ impl ::re_types_core::Loggable for LineStrip3D { .get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/components/media_type.rs b/crates/re_types/src/components/media_type.rs index 5c8aa98027da7..2cd9fa2b7014e 100644 --- a/crates/re_types/src/components/media_type.rs +++ b/crates/re_types/src/components/media_type.rs @@ -108,8 +108,7 @@ impl ::re_types_core::Loggable for MediaType { data0 .iter() .map(|opt| opt.as_ref().map(|datum| datum.0.len()).unwrap_or_default()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = data0 .into_iter() diff --git a/crates/re_types/src/components/name.rs b/crates/re_types/src/components/name.rs index f50f37879b495..d4251a58fae49 100644 --- a/crates/re_types/src/components/name.rs +++ b/crates/re_types/src/components/name.rs @@ -105,8 +105,7 @@ impl ::re_types_core::Loggable for Name { data0 .iter() .map(|opt| opt.as_ref().map(|datum| datum.0.len()).unwrap_or_default()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = data0 .into_iter() diff --git a/crates/re_types/src/components/pinhole_projection.rs b/crates/re_types/src/components/pinhole_projection.rs index cf4768e7e36b7..9821ac5b9c386 100644 --- a/crates/re_types/src/components/pinhole_projection.rs +++ b/crates/re_types/src/components/pinhole_projection.rs @@ -201,8 +201,10 @@ impl ::re_types_core::Loggable for PinholeProjection { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/components/position2d.rs b/crates/re_types/src/components/position2d.rs index 348fdbb43fc2d..f282794bb2c64 100644 --- a/crates/re_types/src/components/position2d.rs +++ b/crates/re_types/src/components/position2d.rs @@ -192,8 +192,10 @@ impl ::re_types_core::Loggable for Position2D { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/components/position3d.rs b/crates/re_types/src/components/position3d.rs index 689ea46865cfd..ee793864aa075 100644 --- a/crates/re_types/src/components/position3d.rs +++ b/crates/re_types/src/components/position3d.rs @@ -192,8 +192,10 @@ impl ::re_types_core::Loggable for Position3D { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/components/range1d.rs b/crates/re_types/src/components/range1d.rs index 2143b5aa8b3df..c0e852a9f6eff 100644 --- a/crates/re_types/src/components/range1d.rs +++ b/crates/re_types/src/components/range1d.rs @@ -192,8 +192,10 @@ impl ::re_types_core::Loggable for Range1D { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/components/resolution.rs b/crates/re_types/src/components/resolution.rs index ba04c4164c815..54a38aef52457 100644 --- a/crates/re_types/src/components/resolution.rs +++ b/crates/re_types/src/components/resolution.rs @@ -193,8 +193,10 @@ impl ::re_types_core::Loggable for Resolution { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/components/texcoord2d.rs b/crates/re_types/src/components/texcoord2d.rs index d7bd6a0e7c54c..1bf9bf0c1f5e9 100644 --- a/crates/re_types/src/components/texcoord2d.rs +++ b/crates/re_types/src/components/texcoord2d.rs @@ -207,8 +207,10 @@ impl ::re_types_core::Loggable for Texcoord2D { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/components/text.rs b/crates/re_types/src/components/text.rs index 199d596c82ace..028dc5aa1c989 100644 --- a/crates/re_types/src/components/text.rs +++ b/crates/re_types/src/components/text.rs @@ -105,8 +105,7 @@ impl ::re_types_core::Loggable for Text { data0 .iter() .map(|opt| opt.as_ref().map(|datum| datum.0.len()).unwrap_or_default()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = data0 .into_iter() diff --git a/crates/re_types/src/components/text_log_level.rs b/crates/re_types/src/components/text_log_level.rs index bd860876aa901..7c3cbe6035249 100644 --- a/crates/re_types/src/components/text_log_level.rs +++ b/crates/re_types/src/components/text_log_level.rs @@ -113,8 +113,7 @@ impl ::re_types_core::Loggable for TextLogLevel { data0 .iter() .map(|opt| opt.as_ref().map(|datum| datum.0.len()).unwrap_or_default()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = data0 .into_iter() diff --git a/crates/re_types/src/components/triangle_indices.rs b/crates/re_types/src/components/triangle_indices.rs index f662dfad9d262..1d7c18ebbd8c4 100644 --- a/crates/re_types/src/components/triangle_indices.rs +++ b/crates/re_types/src/components/triangle_indices.rs @@ -192,8 +192,10 @@ impl ::re_types_core::Loggable for TriangleIndices { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/components/vector2d.rs b/crates/re_types/src/components/vector2d.rs index c5e5f38a679ac..b67e57e895678 100644 --- a/crates/re_types/src/components/vector2d.rs +++ b/crates/re_types/src/components/vector2d.rs @@ -192,8 +192,10 @@ impl ::re_types_core::Loggable for Vector2D { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/components/vector3d.rs b/crates/re_types/src/components/vector3d.rs index 29fbb0b4733c5..d94e2cf4e36b1 100644 --- a/crates/re_types/src/components/vector3d.rs +++ b/crates/re_types/src/components/vector3d.rs @@ -192,8 +192,10 @@ impl ::re_types_core::Loggable for Vector3D { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/components/view_coordinates.rs b/crates/re_types/src/components/view_coordinates.rs index 8b1a33eae2d4e..ced1cbdd80eb5 100644 --- a/crates/re_types/src/components/view_coordinates.rs +++ b/crates/re_types/src/components/view_coordinates.rs @@ -206,8 +206,10 @@ impl ::re_types_core::Loggable for ViewCoordinates { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/datatypes/annotation_info.rs b/crates/re_types/src/datatypes/annotation_info.rs index b078f6c71f79d..3c12ad43cd22b 100644 --- a/crates/re_types/src/datatypes/annotation_info.rs +++ b/crates/re_types/src/datatypes/annotation_info.rs @@ -134,14 +134,14 @@ impl ::re_types_core::Loggable for AnnotationInfo { label.iter().map(|opt| { opt.as_ref().map(|datum| datum.0.len()).unwrap_or_default() }), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = label .into_iter() .flatten() .flat_map(|datum| datum.0 .0) .collect(); + #[allow(unsafe_code, clippy::undocumented_unsafe_blocks)] unsafe { Utf8Array::::new_unchecked( diff --git a/crates/re_types/src/datatypes/class_description.rs b/crates/re_types/src/datatypes/class_description.rs index 9ddf1fa785f3d..fd69f57ffb98e 100644 --- a/crates/re_types/src/datatypes/class_description.rs +++ b/crates/re_types/src/datatypes/class_description.rs @@ -166,8 +166,7 @@ impl ::re_types_core::Loggable for ClassDescription { keypoint_annotations .iter() .map(|opt| opt.as_ref().map_or(0, |datum| datum.len())), - ) - .unwrap() + )? .into(); let keypoint_annotations_inner_data: Vec<_> = keypoint_annotations .into_iter() @@ -176,7 +175,7 @@ impl ::re_types_core::Loggable for ClassDescription { .collect(); let keypoint_annotations_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", ::arrow_datatype(), @@ -190,7 +189,7 @@ impl ::re_types_core::Loggable for ClassDescription { )? }, keypoint_annotations_bitmap, - ) + )? .boxed() } }, @@ -214,8 +213,7 @@ impl ::re_types_core::Loggable for ClassDescription { keypoint_connections .iter() .map(|opt| opt.as_ref().map_or(0, |datum| datum.len())), - ) - .unwrap() + )? .into(); let keypoint_connections_inner_data: Vec<_> = keypoint_connections .into_iter() @@ -224,7 +222,7 @@ impl ::re_types_core::Loggable for ClassDescription { .collect(); let keypoint_connections_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", ::arrow_datatype(), @@ -238,7 +236,7 @@ impl ::re_types_core::Loggable for ClassDescription { )? }, keypoint_connections_bitmap, - ) + )? .boxed() } }, diff --git a/crates/re_types/src/datatypes/mat3x3.rs b/crates/re_types/src/datatypes/mat3x3.rs index 78ad00322445e..ef2368ef2d07f 100644 --- a/crates/re_types/src/datatypes/mat3x3.rs +++ b/crates/re_types/src/datatypes/mat3x3.rs @@ -199,8 +199,10 @@ impl ::re_types_core::Loggable for Mat3x3 { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/datatypes/mat4x4.rs b/crates/re_types/src/datatypes/mat4x4.rs index 33dc16275b31b..7f7931d9c0d05 100644 --- a/crates/re_types/src/datatypes/mat4x4.rs +++ b/crates/re_types/src/datatypes/mat4x4.rs @@ -200,8 +200,10 @@ impl ::re_types_core::Loggable for Mat4x4 { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/datatypes/quaternion.rs b/crates/re_types/src/datatypes/quaternion.rs index 2471257a4b07b..1b5f29d61512a 100644 --- a/crates/re_types/src/datatypes/quaternion.rs +++ b/crates/re_types/src/datatypes/quaternion.rs @@ -190,8 +190,10 @@ impl ::re_types_core::Loggable for Quaternion { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/datatypes/range1d.rs b/crates/re_types/src/datatypes/range1d.rs index 421464145c69a..45c1aaf497a70 100644 --- a/crates/re_types/src/datatypes/range1d.rs +++ b/crates/re_types/src/datatypes/range1d.rs @@ -188,8 +188,10 @@ impl ::re_types_core::Loggable for Range1D { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/datatypes/range2d.rs b/crates/re_types/src/datatypes/range2d.rs index f063f1169ab94..e6eb059a1cd6e 100644 --- a/crates/re_types/src/datatypes/range2d.rs +++ b/crates/re_types/src/datatypes/range2d.rs @@ -295,8 +295,10 @@ impl ::re_types_core::Loggable for Range2D { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) @@ -376,8 +378,10 @@ impl ::re_types_core::Loggable for Range2D { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/datatypes/rotation3d.rs b/crates/re_types/src/datatypes/rotation3d.rs index 8f051ae16d2cb..b9d91a72f6eac 100644 --- a/crates/re_types/src/datatypes/rotation3d.rs +++ b/crates/re_types/src/datatypes/rotation3d.rs @@ -294,8 +294,10 @@ impl ::re_types_core::Loggable for Rotation3D { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/datatypes/rotation_axis_angle.rs b/crates/re_types/src/datatypes/rotation_axis_angle.rs index 03a53170ee22b..2a53975ac2c71 100644 --- a/crates/re_types/src/datatypes/rotation_axis_angle.rs +++ b/crates/re_types/src/datatypes/rotation_axis_angle.rs @@ -259,8 +259,10 @@ impl ::re_types_core::Loggable for RotationAxisAngle { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/datatypes/scale3d.rs b/crates/re_types/src/datatypes/scale3d.rs index 8412c949d53b0..3ae358d507987 100644 --- a/crates/re_types/src/datatypes/scale3d.rs +++ b/crates/re_types/src/datatypes/scale3d.rs @@ -283,8 +283,10 @@ impl ::re_types_core::Loggable for Scale3D { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/datatypes/tensor_buffer.rs b/crates/re_types/src/datatypes/tensor_buffer.rs index eacac97cfb0d4..e19421a0dd86c 100644 --- a/crates/re_types/src/datatypes/tensor_buffer.rs +++ b/crates/re_types/src/datatypes/tensor_buffer.rs @@ -320,8 +320,7 @@ impl ::re_types_core::Loggable for TensorBuffer { use arrow2::{buffer::Buffer, offset::OffsetsBuffer}; let offsets = arrow2::offset::Offsets::::try_from_lengths( u8.iter().map(|datum| datum.num_instances()), - ) - .unwrap() + )? .into(); let u8_inner_data: Buffer<_> = u8 .iter() @@ -330,7 +329,7 @@ impl ::re_types_core::Loggable for TensorBuffer { .concat() .into(); let u8_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::UInt8, @@ -340,7 +339,7 @@ impl ::re_types_core::Loggable for TensorBuffer { PrimitiveArray::new(DataType::UInt8, u8_inner_data, u8_inner_bitmap) .boxed(), u8_bitmap, - ) + )? .boxed() } }, @@ -357,8 +356,7 @@ impl ::re_types_core::Loggable for TensorBuffer { use arrow2::{buffer::Buffer, offset::OffsetsBuffer}; let offsets = arrow2::offset::Offsets::::try_from_lengths( u16.iter().map(|datum| datum.num_instances()), - ) - .unwrap() + )? .into(); let u16_inner_data: Buffer<_> = u16 .iter() @@ -367,7 +365,7 @@ impl ::re_types_core::Loggable for TensorBuffer { .concat() .into(); let u16_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::UInt16, @@ -377,7 +375,7 @@ impl ::re_types_core::Loggable for TensorBuffer { PrimitiveArray::new(DataType::UInt16, u16_inner_data, u16_inner_bitmap) .boxed(), u16_bitmap, - ) + )? .boxed() } }, @@ -394,8 +392,7 @@ impl ::re_types_core::Loggable for TensorBuffer { use arrow2::{buffer::Buffer, offset::OffsetsBuffer}; let offsets = arrow2::offset::Offsets::::try_from_lengths( u32.iter().map(|datum| datum.num_instances()), - ) - .unwrap() + )? .into(); let u32_inner_data: Buffer<_> = u32 .iter() @@ -404,7 +401,7 @@ impl ::re_types_core::Loggable for TensorBuffer { .concat() .into(); let u32_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::UInt32, @@ -414,7 +411,7 @@ impl ::re_types_core::Loggable for TensorBuffer { PrimitiveArray::new(DataType::UInt32, u32_inner_data, u32_inner_bitmap) .boxed(), u32_bitmap, - ) + )? .boxed() } }, @@ -431,8 +428,7 @@ impl ::re_types_core::Loggable for TensorBuffer { use arrow2::{buffer::Buffer, offset::OffsetsBuffer}; let offsets = arrow2::offset::Offsets::::try_from_lengths( u64.iter().map(|datum| datum.num_instances()), - ) - .unwrap() + )? .into(); let u64_inner_data: Buffer<_> = u64 .iter() @@ -441,7 +437,7 @@ impl ::re_types_core::Loggable for TensorBuffer { .concat() .into(); let u64_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::UInt64, @@ -451,7 +447,7 @@ impl ::re_types_core::Loggable for TensorBuffer { PrimitiveArray::new(DataType::UInt64, u64_inner_data, u64_inner_bitmap) .boxed(), u64_bitmap, - ) + )? .boxed() } }, @@ -468,8 +464,7 @@ impl ::re_types_core::Loggable for TensorBuffer { use arrow2::{buffer::Buffer, offset::OffsetsBuffer}; let offsets = arrow2::offset::Offsets::::try_from_lengths( i8.iter().map(|datum| datum.num_instances()), - ) - .unwrap() + )? .into(); let i8_inner_data: Buffer<_> = i8 .iter() @@ -478,7 +473,7 @@ impl ::re_types_core::Loggable for TensorBuffer { .concat() .into(); let i8_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::Int8, @@ -488,7 +483,7 @@ impl ::re_types_core::Loggable for TensorBuffer { PrimitiveArray::new(DataType::Int8, i8_inner_data, i8_inner_bitmap) .boxed(), i8_bitmap, - ) + )? .boxed() } }, @@ -505,8 +500,7 @@ impl ::re_types_core::Loggable for TensorBuffer { use arrow2::{buffer::Buffer, offset::OffsetsBuffer}; let offsets = arrow2::offset::Offsets::::try_from_lengths( i16.iter().map(|datum| datum.num_instances()), - ) - .unwrap() + )? .into(); let i16_inner_data: Buffer<_> = i16 .iter() @@ -515,7 +509,7 @@ impl ::re_types_core::Loggable for TensorBuffer { .concat() .into(); let i16_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::Int16, @@ -525,7 +519,7 @@ impl ::re_types_core::Loggable for TensorBuffer { PrimitiveArray::new(DataType::Int16, i16_inner_data, i16_inner_bitmap) .boxed(), i16_bitmap, - ) + )? .boxed() } }, @@ -542,8 +536,7 @@ impl ::re_types_core::Loggable for TensorBuffer { use arrow2::{buffer::Buffer, offset::OffsetsBuffer}; let offsets = arrow2::offset::Offsets::::try_from_lengths( i32.iter().map(|datum| datum.num_instances()), - ) - .unwrap() + )? .into(); let i32_inner_data: Buffer<_> = i32 .iter() @@ -552,7 +545,7 @@ impl ::re_types_core::Loggable for TensorBuffer { .concat() .into(); let i32_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::Int32, @@ -562,7 +555,7 @@ impl ::re_types_core::Loggable for TensorBuffer { PrimitiveArray::new(DataType::Int32, i32_inner_data, i32_inner_bitmap) .boxed(), i32_bitmap, - ) + )? .boxed() } }, @@ -579,8 +572,7 @@ impl ::re_types_core::Loggable for TensorBuffer { use arrow2::{buffer::Buffer, offset::OffsetsBuffer}; let offsets = arrow2::offset::Offsets::::try_from_lengths( i64.iter().map(|datum| datum.num_instances()), - ) - .unwrap() + )? .into(); let i64_inner_data: Buffer<_> = i64 .iter() @@ -589,7 +581,7 @@ impl ::re_types_core::Loggable for TensorBuffer { .concat() .into(); let i64_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::Int64, @@ -599,7 +591,7 @@ impl ::re_types_core::Loggable for TensorBuffer { PrimitiveArray::new(DataType::Int64, i64_inner_data, i64_inner_bitmap) .boxed(), i64_bitmap, - ) + )? .boxed() } }, @@ -616,8 +608,7 @@ impl ::re_types_core::Loggable for TensorBuffer { use arrow2::{buffer::Buffer, offset::OffsetsBuffer}; let offsets = arrow2::offset::Offsets::::try_from_lengths( f16.iter().map(|datum| datum.num_instances()), - ) - .unwrap() + )? .into(); let f16_inner_data: Buffer<_> = f16 .iter() @@ -626,7 +617,7 @@ impl ::re_types_core::Loggable for TensorBuffer { .concat() .into(); let f16_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::Float16, @@ -640,7 +631,7 @@ impl ::re_types_core::Loggable for TensorBuffer { ) .boxed(), f16_bitmap, - ) + )? .boxed() } }, @@ -657,8 +648,7 @@ impl ::re_types_core::Loggable for TensorBuffer { use arrow2::{buffer::Buffer, offset::OffsetsBuffer}; let offsets = arrow2::offset::Offsets::::try_from_lengths( f32.iter().map(|datum| datum.num_instances()), - ) - .unwrap() + )? .into(); let f32_inner_data: Buffer<_> = f32 .iter() @@ -667,7 +657,7 @@ impl ::re_types_core::Loggable for TensorBuffer { .concat() .into(); let f32_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::Float32, @@ -681,7 +671,7 @@ impl ::re_types_core::Loggable for TensorBuffer { ) .boxed(), f32_bitmap, - ) + )? .boxed() } }, @@ -698,8 +688,7 @@ impl ::re_types_core::Loggable for TensorBuffer { use arrow2::{buffer::Buffer, offset::OffsetsBuffer}; let offsets = arrow2::offset::Offsets::::try_from_lengths( f64.iter().map(|datum| datum.num_instances()), - ) - .unwrap() + )? .into(); let f64_inner_data: Buffer<_> = f64 .iter() @@ -708,7 +697,7 @@ impl ::re_types_core::Loggable for TensorBuffer { .concat() .into(); let f64_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::Float64, @@ -722,7 +711,7 @@ impl ::re_types_core::Loggable for TensorBuffer { ) .boxed(), f64_bitmap, - ) + )? .boxed() } }, @@ -739,8 +728,7 @@ impl ::re_types_core::Loggable for TensorBuffer { use arrow2::{buffer::Buffer, offset::OffsetsBuffer}; let offsets = arrow2::offset::Offsets::::try_from_lengths( jpeg.iter().map(|datum| datum.num_instances()), - ) - .unwrap() + )? .into(); let jpeg_inner_data: Buffer<_> = jpeg .iter() @@ -749,7 +737,7 @@ impl ::re_types_core::Loggable for TensorBuffer { .concat() .into(); let jpeg_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::UInt8, @@ -763,7 +751,7 @@ impl ::re_types_core::Loggable for TensorBuffer { ) .boxed(), jpeg_bitmap, - ) + )? .boxed() } }, @@ -780,8 +768,7 @@ impl ::re_types_core::Loggable for TensorBuffer { use arrow2::{buffer::Buffer, offset::OffsetsBuffer}; let offsets = arrow2::offset::Offsets::::try_from_lengths( nv12.iter().map(|datum| datum.num_instances()), - ) - .unwrap() + )? .into(); let nv12_inner_data: Buffer<_> = nv12 .iter() @@ -790,7 +777,7 @@ impl ::re_types_core::Loggable for TensorBuffer { .concat() .into(); let nv12_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::UInt8, @@ -804,7 +791,7 @@ impl ::re_types_core::Loggable for TensorBuffer { ) .boxed(), nv12_bitmap, - ) + )? .boxed() } }, @@ -821,8 +808,7 @@ impl ::re_types_core::Loggable for TensorBuffer { use arrow2::{buffer::Buffer, offset::OffsetsBuffer}; let offsets = arrow2::offset::Offsets::::try_from_lengths( yuy2.iter().map(|datum| datum.num_instances()), - ) - .unwrap() + )? .into(); let yuy2_inner_data: Buffer<_> = yuy2 .iter() @@ -831,7 +817,7 @@ impl ::re_types_core::Loggable for TensorBuffer { .concat() .into(); let yuy2_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::UInt8, @@ -845,7 +831,7 @@ impl ::re_types_core::Loggable for TensorBuffer { ) .boxed(), yuy2_bitmap, - ) + )? .boxed() } }, diff --git a/crates/re_types/src/datatypes/tensor_data.rs b/crates/re_types/src/datatypes/tensor_data.rs index 0fb6be089d07b..c002f73e4be47 100644 --- a/crates/re_types/src/datatypes/tensor_data.rs +++ b/crates/re_types/src/datatypes/tensor_data.rs @@ -131,13 +131,12 @@ impl ::re_types_core::Loggable for TensorData { shape .iter() .map(|opt| opt.as_ref().map_or(0, |datum| datum.len())), - ) - .unwrap() + )? .into(); let shape_inner_data: Vec<_> = shape.into_iter().flatten().flatten().collect(); let shape_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", ::arrow_datatype(), @@ -151,7 +150,7 @@ impl ::re_types_core::Loggable for TensorData { )? }, shape_bitmap, - ) + )? .boxed() } }, diff --git a/crates/re_types/src/datatypes/tensor_data_ext.rs b/crates/re_types/src/datatypes/tensor_data_ext.rs index f66c5051fc4d3..28940661780f5 100644 --- a/crates/re_types/src/datatypes/tensor_data_ext.rs +++ b/crates/re_types/src/datatypes/tensor_data_ext.rs @@ -628,7 +628,9 @@ impl TensorData { let mut decoder = JpegDecoder::new(&jpeg_bytes); decoder.decode_headers()?; - let (w, h) = decoder.dimensions().unwrap(); // Can't fail after a successful decode_headers + let (w, h) = decoder + .dimensions() + .expect("can't fail after a successful decode_headers"); Ok(Self { shape: vec![ diff --git a/crates/re_types/src/datatypes/tensor_dimension.rs b/crates/re_types/src/datatypes/tensor_dimension.rs index 25b9dc4750bd2..dbeec461633dd 100644 --- a/crates/re_types/src/datatypes/tensor_dimension.rs +++ b/crates/re_types/src/datatypes/tensor_dimension.rs @@ -124,8 +124,7 @@ impl ::re_types_core::Loggable for TensorDimension { let offsets = arrow2::offset::Offsets::::try_from_lengths(name.iter().map( |opt| opt.as_ref().map(|datum| datum.len()).unwrap_or_default(), - )) - .map_err(|err| std::sync::Arc::new(err))? + ))? .into(); let inner_data: arrow2::buffer::Buffer = name.into_iter().flatten().flat_map(|s| s.0).collect(); diff --git a/crates/re_types/src/datatypes/translation_and_mat3x3.rs b/crates/re_types/src/datatypes/translation_and_mat3x3.rs index 17f96f0d9122f..5cfd98863815c 100644 --- a/crates/re_types/src/datatypes/translation_and_mat3x3.rs +++ b/crates/re_types/src/datatypes/translation_and_mat3x3.rs @@ -331,8 +331,10 @@ impl ::re_types_core::Loggable for TranslationAndMat3x3 { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) @@ -412,8 +414,10 @@ impl ::re_types_core::Loggable for TranslationAndMat3x3 { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/datatypes/translation_rotation_scale3d.rs b/crates/re_types/src/datatypes/translation_rotation_scale3d.rs index 51127b5ff4995..11cdd43c4616c 100644 --- a/crates/re_types/src/datatypes/translation_rotation_scale3d.rs +++ b/crates/re_types/src/datatypes/translation_rotation_scale3d.rs @@ -328,8 +328,10 @@ impl ::re_types_core::Loggable for TranslationRotationScale3D { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/datatypes/uuid.rs b/crates/re_types/src/datatypes/uuid.rs index a0700a859c74d..49e5f8636984e 100644 --- a/crates/re_types/src/datatypes/uuid.rs +++ b/crates/re_types/src/datatypes/uuid.rs @@ -191,8 +191,10 @@ impl ::re_types_core::Loggable for Uuid { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/datatypes/uvec2d.rs b/crates/re_types/src/datatypes/uvec2d.rs index aa8e1f14d1577..ce29dc3ae6f9c 100644 --- a/crates/re_types/src/datatypes/uvec2d.rs +++ b/crates/re_types/src/datatypes/uvec2d.rs @@ -188,8 +188,10 @@ impl ::re_types_core::Loggable for UVec2D { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/datatypes/uvec3d.rs b/crates/re_types/src/datatypes/uvec3d.rs index 10b66c53c3e1c..634a477ffb02a 100644 --- a/crates/re_types/src/datatypes/uvec3d.rs +++ b/crates/re_types/src/datatypes/uvec3d.rs @@ -188,8 +188,10 @@ impl ::re_types_core::Loggable for UVec3D { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/datatypes/uvec4d.rs b/crates/re_types/src/datatypes/uvec4d.rs index e8ea68b1fe521..98a9d8859162e 100644 --- a/crates/re_types/src/datatypes/uvec4d.rs +++ b/crates/re_types/src/datatypes/uvec4d.rs @@ -188,8 +188,10 @@ impl ::re_types_core::Loggable for UVec4D { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/datatypes/vec2d.rs b/crates/re_types/src/datatypes/vec2d.rs index 654637f430aa4..7c90cb9942dc9 100644 --- a/crates/re_types/src/datatypes/vec2d.rs +++ b/crates/re_types/src/datatypes/vec2d.rs @@ -188,8 +188,10 @@ impl ::re_types_core::Loggable for Vec2D { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/datatypes/vec3d.rs b/crates/re_types/src/datatypes/vec3d.rs index e06e46cca0d85..08a0c3b2314af 100644 --- a/crates/re_types/src/datatypes/vec3d.rs +++ b/crates/re_types/src/datatypes/vec3d.rs @@ -188,8 +188,10 @@ impl ::re_types_core::Loggable for Vec3D { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/datatypes/vec4d.rs b/crates/re_types/src/datatypes/vec4d.rs index 9d4ae649f169a..039090d663846 100644 --- a/crates/re_types/src/datatypes/vec4d.rs +++ b/crates/re_types/src/datatypes/vec4d.rs @@ -188,8 +188,10 @@ impl ::re_types_core::Loggable for Vec4D { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/tensor_data.rs b/crates/re_types/src/tensor_data.rs index c45487616df26..3f725bfb877e8 100644 --- a/crates/re_types/src/tensor_data.rs +++ b/crates/re_types/src/tensor_data.rs @@ -589,7 +589,9 @@ impl DecodedTensor { let mut decoder = JpegDecoder::new_with_options(jpeg_bytes, options); let pixels = decoder.decode()?; - let (w, h) = decoder.dimensions().unwrap(); // Can't fail after a successful decode + let (w, h) = decoder + .dimensions() + .expect("can't fail after a successful decode"); let (w, h) = (w as u64, h as u64); diff --git a/crates/re_types/src/testing/components/affix_fuzzer10.rs b/crates/re_types/src/testing/components/affix_fuzzer10.rs index 531b99ae20fe0..c59288d08feb3 100644 --- a/crates/re_types/src/testing/components/affix_fuzzer10.rs +++ b/crates/re_types/src/testing/components/affix_fuzzer10.rs @@ -95,8 +95,7 @@ impl ::re_types_core::Loggable for AffixFuzzer10 { data0 .iter() .map(|opt| opt.as_ref().map(|datum| datum.len()).unwrap_or_default()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = data0.into_iter().flatten().flat_map(|s| s.0).collect(); diff --git a/crates/re_types/src/testing/components/affix_fuzzer11.rs b/crates/re_types/src/testing/components/affix_fuzzer11.rs index c762e159b0864..8b3c634eec3d0 100644 --- a/crates/re_types/src/testing/components/affix_fuzzer11.rs +++ b/crates/re_types/src/testing/components/affix_fuzzer11.rs @@ -100,8 +100,7 @@ impl ::re_types_core::Loggable for AffixFuzzer11 { data0 .iter() .map(|opt| opt.as_ref().map_or(0, |datum| datum.num_instances())), - ) - .unwrap() + )? .into(); let data0_inner_data: Buffer<_> = data0 .iter() @@ -111,13 +110,13 @@ impl ::re_types_core::Loggable for AffixFuzzer11 { .concat() .into(); let data0_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( Self::arrow_datatype(), offsets, PrimitiveArray::new(DataType::Float32, data0_inner_data, data0_inner_bitmap) .boxed(), data0_bitmap, - ) + )? .boxed() } }) diff --git a/crates/re_types/src/testing/components/affix_fuzzer12.rs b/crates/re_types/src/testing/components/affix_fuzzer12.rs index ef40dfcd38e4d..097fcb40aa718 100644 --- a/crates/re_types/src/testing/components/affix_fuzzer12.rs +++ b/crates/re_types/src/testing/components/affix_fuzzer12.rs @@ -100,19 +100,17 @@ impl ::re_types_core::Loggable for AffixFuzzer12 { data0 .iter() .map(|opt| opt.as_ref().map_or(0, |datum| datum.len())), - ) - .unwrap() + )? .into(); let data0_inner_data: Vec<_> = data0.into_iter().flatten().flatten().collect(); let data0_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( Self::arrow_datatype(), offsets, { let offsets = arrow2::offset::Offsets::::try_from_lengths( data0_inner_data.iter().map(|datum| datum.len()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = data0_inner_data.into_iter().flat_map(|s| s.0).collect(); @@ -129,7 +127,7 @@ impl ::re_types_core::Loggable for AffixFuzzer12 { .boxed() }, data0_bitmap, - ) + )? .boxed() } }) diff --git a/crates/re_types/src/testing/components/affix_fuzzer13.rs b/crates/re_types/src/testing/components/affix_fuzzer13.rs index c98fda74caa56..fc5ab5948fb6c 100644 --- a/crates/re_types/src/testing/components/affix_fuzzer13.rs +++ b/crates/re_types/src/testing/components/affix_fuzzer13.rs @@ -100,19 +100,17 @@ impl ::re_types_core::Loggable for AffixFuzzer13 { data0 .iter() .map(|opt| opt.as_ref().map_or(0, |datum| datum.len())), - ) - .unwrap() + )? .into(); let data0_inner_data: Vec<_> = data0.into_iter().flatten().flatten().collect(); let data0_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( Self::arrow_datatype(), offsets, { let offsets = arrow2::offset::Offsets::::try_from_lengths( data0_inner_data.iter().map(|datum| datum.len()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = data0_inner_data.into_iter().flat_map(|s| s.0).collect(); @@ -129,7 +127,7 @@ impl ::re_types_core::Loggable for AffixFuzzer13 { .boxed() }, data0_bitmap, - ) + )? .boxed() } }) diff --git a/crates/re_types/src/testing/components/affix_fuzzer16.rs b/crates/re_types/src/testing/components/affix_fuzzer16.rs index b23a20aa57eb6..b93fcc4735e4f 100644 --- a/crates/re_types/src/testing/components/affix_fuzzer16.rs +++ b/crates/re_types/src/testing/components/affix_fuzzer16.rs @@ -94,12 +94,11 @@ impl ::re_types_core::Loggable for AffixFuzzer16 { data0 .iter() .map(|opt| opt.as_ref().map_or(0, |datum| datum.len())), - ) - .unwrap() + )? .into(); let data0_inner_data: Vec<_> = data0.into_iter().flatten().flatten().collect(); let data0_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( Self::arrow_datatype(), offsets, { @@ -109,7 +108,7 @@ impl ::re_types_core::Loggable for AffixFuzzer16 { )? }, data0_bitmap, - ) + )? .boxed() } }) diff --git a/crates/re_types/src/testing/components/affix_fuzzer17.rs b/crates/re_types/src/testing/components/affix_fuzzer17.rs index a3d59365b42dc..db79bc0f3c984 100644 --- a/crates/re_types/src/testing/components/affix_fuzzer17.rs +++ b/crates/re_types/src/testing/components/affix_fuzzer17.rs @@ -94,12 +94,11 @@ impl ::re_types_core::Loggable for AffixFuzzer17 { data0 .iter() .map(|opt| opt.as_ref().map_or(0, |datum| datum.len())), - ) - .unwrap() + )? .into(); let data0_inner_data: Vec<_> = data0.into_iter().flatten().flatten().collect(); let data0_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( Self::arrow_datatype(), offsets, { @@ -109,7 +108,7 @@ impl ::re_types_core::Loggable for AffixFuzzer17 { )? }, data0_bitmap, - ) + )? .boxed() } }) diff --git a/crates/re_types/src/testing/components/affix_fuzzer18.rs b/crates/re_types/src/testing/components/affix_fuzzer18.rs index 5de1a6b3bb72d..44ce8ad270e1c 100644 --- a/crates/re_types/src/testing/components/affix_fuzzer18.rs +++ b/crates/re_types/src/testing/components/affix_fuzzer18.rs @@ -94,12 +94,11 @@ impl ::re_types_core::Loggable for AffixFuzzer18 { data0 .iter() .map(|opt| opt.as_ref().map_or(0, |datum| datum.len())), - ) - .unwrap() + )? .into(); let data0_inner_data: Vec<_> = data0.into_iter().flatten().flatten().collect(); let data0_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( Self::arrow_datatype(), offsets, { @@ -109,7 +108,7 @@ impl ::re_types_core::Loggable for AffixFuzzer18 { )? }, data0_bitmap, - ) + )? .boxed() } }) diff --git a/crates/re_types/src/testing/components/affix_fuzzer7.rs b/crates/re_types/src/testing/components/affix_fuzzer7.rs index 8945acbfde049..563ab1c0c3d4e 100644 --- a/crates/re_types/src/testing/components/affix_fuzzer7.rs +++ b/crates/re_types/src/testing/components/affix_fuzzer7.rs @@ -94,12 +94,11 @@ impl ::re_types_core::Loggable for AffixFuzzer7 { data0 .iter() .map(|opt| opt.as_ref().map_or(0, |datum| datum.len())), - ) - .unwrap() + )? .into(); let data0_inner_data: Vec<_> = data0.into_iter().flatten().flatten().collect(); let data0_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( Self::arrow_datatype(), offsets, { @@ -109,7 +108,7 @@ impl ::re_types_core::Loggable for AffixFuzzer7 { )? }, data0_bitmap, - ) + )? .boxed() } }) diff --git a/crates/re_types/src/testing/components/affix_fuzzer9.rs b/crates/re_types/src/testing/components/affix_fuzzer9.rs index 057c0f609f4e5..dffc9d3175808 100644 --- a/crates/re_types/src/testing/components/affix_fuzzer9.rs +++ b/crates/re_types/src/testing/components/affix_fuzzer9.rs @@ -95,8 +95,7 @@ impl ::re_types_core::Loggable for AffixFuzzer9 { data0 .iter() .map(|opt| opt.as_ref().map(|datum| datum.len()).unwrap_or_default()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = data0.into_iter().flatten().flat_map(|s| s.0).collect(); diff --git a/crates/re_types/src/testing/datatypes/affix_fuzzer1.rs b/crates/re_types/src/testing/datatypes/affix_fuzzer1.rs index e8839c75b81c6..30c78c98de1a2 100644 --- a/crates/re_types/src/testing/datatypes/affix_fuzzer1.rs +++ b/crates/re_types/src/testing/datatypes/affix_fuzzer1.rs @@ -186,8 +186,7 @@ impl ::re_types_core::Loggable for AffixFuzzer1 { single_string_required.iter().map(|opt| { opt.as_ref().map(|datum| datum.len()).unwrap_or_default() }), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = single_string_required .into_iter() @@ -226,8 +225,7 @@ impl ::re_types_core::Loggable for AffixFuzzer1 { single_string_optional.iter().map(|opt| { opt.as_ref().map(|datum| datum.len()).unwrap_or_default() }), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = single_string_optional .into_iter() @@ -267,8 +265,7 @@ impl ::re_types_core::Loggable for AffixFuzzer1 { many_floats_optional.iter().map(|opt| { opt.as_ref().map_or(0, |datum| datum.num_instances()) }), - ) - .unwrap() + )? .into(); let many_floats_optional_inner_data: Buffer<_> = many_floats_optional .iter() @@ -279,7 +276,7 @@ impl ::re_types_core::Loggable for AffixFuzzer1 { .into(); let many_floats_optional_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::Float32, @@ -293,7 +290,7 @@ impl ::re_types_core::Loggable for AffixFuzzer1 { ) .boxed(), many_floats_optional_bitmap, - ) + )? .boxed() } }, @@ -317,8 +314,7 @@ impl ::re_types_core::Loggable for AffixFuzzer1 { many_strings_required .iter() .map(|opt| opt.as_ref().map_or(0, |datum| datum.len())), - ) - .unwrap() + )? .into(); let many_strings_required_inner_data: Vec<_> = many_strings_required .into_iter() @@ -327,7 +323,7 @@ impl ::re_types_core::Loggable for AffixFuzzer1 { .collect(); let many_strings_required_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::Utf8, @@ -339,8 +335,7 @@ impl ::re_types_core::Loggable for AffixFuzzer1 { many_strings_required_inner_data .iter() .map(|datum| datum.len()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = many_strings_required_inner_data @@ -359,7 +354,7 @@ impl ::re_types_core::Loggable for AffixFuzzer1 { .boxed() }, many_strings_required_bitmap, - ) + )? .boxed() } }, @@ -384,8 +379,7 @@ impl ::re_types_core::Loggable for AffixFuzzer1 { many_strings_optional .iter() .map(|opt| opt.as_ref().map_or(0, |datum| datum.len())), - ) - .unwrap() + )? .into(); let many_strings_optional_inner_data: Vec<_> = many_strings_optional .into_iter() @@ -394,7 +388,7 @@ impl ::re_types_core::Loggable for AffixFuzzer1 { .collect(); let many_strings_optional_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::Utf8, @@ -406,8 +400,7 @@ impl ::re_types_core::Loggable for AffixFuzzer1 { many_strings_optional_inner_data .iter() .map(|datum| datum.len()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = many_strings_optional_inner_data @@ -426,7 +419,7 @@ impl ::re_types_core::Loggable for AffixFuzzer1 { .boxed() }, many_strings_optional_bitmap, - ) + )? .boxed() } }, diff --git a/crates/re_types/src/testing/datatypes/affix_fuzzer20.rs b/crates/re_types/src/testing/datatypes/affix_fuzzer20.rs index cadd48ed4c373..1a7beddc20dbf 100644 --- a/crates/re_types/src/testing/datatypes/affix_fuzzer20.rs +++ b/crates/re_types/src/testing/datatypes/affix_fuzzer20.rs @@ -131,14 +131,14 @@ impl ::re_types_core::Loggable for AffixFuzzer20 { s.iter().map(|opt| { opt.as_ref().map(|datum| datum.0.len()).unwrap_or_default() }), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = s .into_iter() .flatten() .flat_map(|datum| datum.0 .0) .collect(); + #[allow(unsafe_code, clippy::undocumented_unsafe_blocks)] unsafe { Utf8Array::::new_unchecked( diff --git a/crates/re_types/src/testing/datatypes/affix_fuzzer21.rs b/crates/re_types/src/testing/datatypes/affix_fuzzer21.rs index d4b30a76a763a..a39f4308a0328 100644 --- a/crates/re_types/src/testing/datatypes/affix_fuzzer21.rs +++ b/crates/re_types/src/testing/datatypes/affix_fuzzer21.rs @@ -133,8 +133,7 @@ impl ::re_types_core::Loggable for AffixFuzzer21 { many_halves.iter().map(|opt| { opt.as_ref().map_or(0, |datum| datum.num_instances()) }), - ) - .unwrap() + )? .into(); let many_halves_inner_data: Buffer<_> = many_halves .iter() @@ -144,7 +143,7 @@ impl ::re_types_core::Loggable for AffixFuzzer21 { .concat() .into(); let many_halves_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", DataType::Float16, @@ -158,7 +157,7 @@ impl ::re_types_core::Loggable for AffixFuzzer21 { ) .boxed(), many_halves_bitmap, - ) + )? .boxed() } }, diff --git a/crates/re_types/src/testing/datatypes/affix_fuzzer22.rs b/crates/re_types/src/testing/datatypes/affix_fuzzer22.rs index 6cce8be8da553..0deae02c952fa 100644 --- a/crates/re_types/src/testing/datatypes/affix_fuzzer22.rs +++ b/crates/re_types/src/testing/datatypes/affix_fuzzer22.rs @@ -250,8 +250,10 @@ impl ::re_types_core::Loggable for AffixFuzzer22 { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/testing/datatypes/affix_fuzzer3.rs b/crates/re_types/src/testing/datatypes/affix_fuzzer3.rs index 3ed62687638e3..f26eae906ccb7 100644 --- a/crates/re_types/src/testing/datatypes/affix_fuzzer3.rs +++ b/crates/re_types/src/testing/datatypes/affix_fuzzer3.rs @@ -151,13 +151,12 @@ impl ::re_types_core::Loggable for AffixFuzzer3 { use arrow2::{buffer::Buffer, offset::OffsetsBuffer}; let offsets = arrow2::offset::Offsets::::try_from_lengths( craziness.iter().map(|datum| datum.len()), - ) - .unwrap() + )? .into(); let craziness_inner_data: Vec<_> = craziness.into_iter().flatten().collect(); let craziness_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", ::arrow_datatype(), @@ -171,7 +170,7 @@ impl ::re_types_core::Loggable for AffixFuzzer3 { )? }, craziness_bitmap, - ) + )? .boxed() } }, @@ -455,8 +454,10 @@ impl ::re_types_core::Loggable for AffixFuzzer3 { .iter() .cloned() .map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types/src/testing/datatypes/affix_fuzzer4.rs b/crates/re_types/src/testing/datatypes/affix_fuzzer4.rs index 18a4330e5c382..d9b8eb435a26b 100644 --- a/crates/re_types/src/testing/datatypes/affix_fuzzer4.rs +++ b/crates/re_types/src/testing/datatypes/affix_fuzzer4.rs @@ -139,13 +139,12 @@ impl ::re_types_core::Loggable for AffixFuzzer4 { use arrow2::{buffer::Buffer, offset::OffsetsBuffer}; let offsets = arrow2::offset::Offsets::::try_from_lengths( many_required.iter().map(|datum| datum.len()), - ) - .unwrap() + )? .into(); let many_required_inner_data: Vec<_> = many_required.into_iter().flatten().collect(); let many_required_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( DataType::List(std::sync::Arc::new(Field::new( "item", ::arrow_datatype(), @@ -159,7 +158,7 @@ impl ::re_types_core::Loggable for AffixFuzzer4 { )? }, many_required_bitmap, - ) + )? .boxed() } }, diff --git a/crates/re_types/src/testing/datatypes/string_component.rs b/crates/re_types/src/testing/datatypes/string_component.rs index 0c94aee8ea2e0..0f19af333ebcc 100644 --- a/crates/re_types/src/testing/datatypes/string_component.rs +++ b/crates/re_types/src/testing/datatypes/string_component.rs @@ -96,8 +96,7 @@ impl ::re_types_core::Loggable for StringComponent { data0 .iter() .map(|opt| opt.as_ref().map(|datum| datum.len()).unwrap_or_default()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = data0.into_iter().flatten().flat_map(|s| s.0).collect(); diff --git a/crates/re_types_blueprint/src/blueprint/components/included_space_view.rs b/crates/re_types_blueprint/src/blueprint/components/included_space_view.rs index ab1e850899b33..50f59b4e0d8b9 100644 --- a/crates/re_types_blueprint/src/blueprint/components/included_space_view.rs +++ b/crates/re_types_blueprint/src/blueprint/components/included_space_view.rs @@ -192,8 +192,10 @@ impl ::re_types_core::Loggable for IncludedSpaceView { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types_blueprint/src/blueprint/components/root_container.rs b/crates/re_types_blueprint/src/blueprint/components/root_container.rs index 4533206bcfd43..944ddd02eb16c 100644 --- a/crates/re_types_blueprint/src/blueprint/components/root_container.rs +++ b/crates/re_types_blueprint/src/blueprint/components/root_container.rs @@ -195,8 +195,10 @@ impl ::re_types_core::Loggable for RootContainer { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types_blueprint/src/blueprint/components/space_view_maximized.rs b/crates/re_types_blueprint/src/blueprint/components/space_view_maximized.rs index 31471e25928f6..6d4f4b882fded 100644 --- a/crates/re_types_blueprint/src/blueprint/components/space_view_maximized.rs +++ b/crates/re_types_blueprint/src/blueprint/components/space_view_maximized.rs @@ -194,8 +194,10 @@ impl ::re_types_core::Loggable for SpaceViewMaximized { let data = unsafe { arrow_data_inner.get_unchecked(start as usize..end as usize) }; let data = data.iter().cloned().map(Option::unwrap_or_default); - let arr = array_init::from_iter(data).unwrap(); - Ok(arr) + + // NOTE: Unwrapping cannot fail: the length must be correct. + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }) .transpose() }) diff --git a/crates/re_types_builder/build.rs b/crates/re_types_builder/build.rs index ab29a9c864a6f..c726a3aec3f63 100644 --- a/crates/re_types_builder/build.rs +++ b/crates/re_types_builder/build.rs @@ -70,12 +70,14 @@ fn main() { // NOTE: This requires `flatc` to be in $PATH, but only for contributors, not end users. // Even for contributors, `flatc` won't be needed unless they edit some of the .fbs files. - let sh = Shell::new().unwrap(); + let sh = Shell::new().expect("Shell::new() failed"); + #[allow(clippy::unwrap_used)] // unwrap is okay here cmd!( sh, "flatc -o src/ --rust --gen-onefile --filename-suffix '' {FBS_REFLECTION_DEFINITION_PATH}" ) .run() + .map_err(|err| eprintln!("flatc failed with error: {err}")) .unwrap(); // NOTE: We're purposefully ignoring the error here. diff --git a/crates/re_types_builder/src/bin/build_re_types.rs b/crates/re_types_builder/src/bin/build_re_types.rs index 0cb5e2ef9f871..e12ec93f7f9c5 100644 --- a/crates/re_types_builder/src/bin/build_re_types.rs +++ b/crates/re_types_builder/src/bin/build_re_types.rs @@ -3,6 +3,9 @@ //! It is easiest to call this using `just codegen`, //! which will set up the necessary tools. +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + use re_build_tools::{ read_versioning_hash, set_output_cargo_build_instructions, write_versioning_hash, }; diff --git a/crates/re_types_builder/src/codegen/mod.rs b/crates/re_types_builder/src/codegen/mod.rs index 2f5aaa3fee351..76f5e43718c8a 100644 --- a/crates/re_types_builder/src/codegen/mod.rs +++ b/crates/re_types_builder/src/codegen/mod.rs @@ -1,3 +1,6 @@ +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + /// Implements the codegen pass. pub trait CodeGenerator { /// Generates user-facing code from [`crate::Objects`]. diff --git a/crates/re_types_builder/src/codegen/rust/deserializer.rs b/crates/re_types_builder/src/codegen/rust/deserializer.rs index 12872bb81628b..38804f83be481 100644 --- a/crates/re_types_builder/src/codegen/rust/deserializer.rs +++ b/crates/re_types_builder/src/codegen/rust/deserializer.rs @@ -5,7 +5,7 @@ use quote::{format_ident, quote}; use crate::{ codegen::rust::{ arrow::{is_backed_by_arrow_buffer, quote_fqname_as_type_path, ArrowDataTypeTokenizer}, - util::is_tuple_struct_from_obj, + util::{is_tuple_struct_from_obj, quote_comment}, }, ArrowRegistry, Object, ObjectField, ObjectKind, Objects, }; @@ -584,6 +584,9 @@ fn quote_arrow_field_deserializer( None, ); + let comment_note_unwrap = + quote_comment("NOTE: Unwrapping cannot fail: the length must be correct."); + quote! {{ let #data_src = #quoted_downcast?; if #data_src.is_empty() { @@ -651,10 +654,9 @@ fn quote_arrow_field_deserializer( // .map(|opt| opt.ok_or_else(DeserializationError::missing_data)) // .collect::>>()?; - // NOTE: Unwrapping cannot fail: the length must be correct. - let arr = array_init::from_iter(data).unwrap(); - - Ok(arr) + #comment_note_unwrap + #[allow(clippy::unwrap_used)] + Ok(array_init::from_iter(data).unwrap()) }).transpose() ) #quoted_iter_transparency diff --git a/crates/re_types_builder/src/codegen/rust/serializer.rs b/crates/re_types_builder/src/codegen/rust/serializer.rs index 2d2a8ae2ebcaf..2137ce8e9bdc1 100644 --- a/crates/re_types_builder/src/codegen/rust/serializer.rs +++ b/crates/re_types_builder/src/codegen/rust/serializer.rs @@ -573,8 +573,7 @@ fn quote_arrow_field_serializer( quote! { let offsets = arrow2::offset::Offsets::::try_from_lengths( #data_src.iter().map(|opt| opt.as_ref() #quoted_transparent_length .unwrap_or_default()) - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); // NOTE: Flattening to remove the guaranteed layer of nullability: we don't care @@ -586,8 +585,7 @@ fn quote_arrow_field_serializer( quote! { let offsets = arrow2::offset::Offsets::::try_from_lengths( #data_src.iter() #quoted_transparent_length - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = @@ -775,7 +773,7 @@ fn quote_arrow_field_serializer( quote! { let offsets = arrow2::offset::Offsets::::try_from_lengths( #data_src.iter(). #map_to_length - ).unwrap().into(); + )?.into(); } } } else { @@ -787,12 +785,12 @@ fn quote_arrow_field_serializer( quote! {} } else { quote! { - ListArray::new( + ListArray::try_new( #quoted_datatype, offsets, #quoted_inner, #bitmap_src, - ).boxed() + )?.boxed() } } } else { @@ -847,18 +845,18 @@ fn quote_arrow_field_serializer( let offsets = arrow2::offset::Offsets::::try_from_lengths( buffers.iter().map(|opt| opt.as_ref().map_or(0, |buf| buf.len())) - ).unwrap().into(); + )?.into(); #quoted_inner_bitmap let #quoted_inner_data: Buffer = buffers.into_iter().flatten().collect::>().concat().into(); - ListArray::new( + ListArray::try_new( #quoted_datatype, offsets, #quoted_inner, #bitmap_src, - ).boxed() + )?.boxed() }} } else { quote! {{ diff --git a/crates/re_types_builder/src/lib.rs b/crates/re_types_builder/src/lib.rs index 0c20ccc1a199b..cd3c688e741af 100644 --- a/crates/re_types_builder/src/lib.rs +++ b/crates/re_types_builder/src/lib.rs @@ -100,6 +100,9 @@ // --- +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + // NOTE: Official generated code from flatbuffers; ignore _everything_. #[allow( warnings, diff --git a/crates/re_types_core/benches/bench_tuid.rs b/crates/re_types_core/benches/bench_tuid.rs index ad927bcf138c1..13985268abe52 100644 --- a/crates/re_types_core/benches/bench_tuid.rs +++ b/crates/re_types_core/benches/bench_tuid.rs @@ -1,3 +1,6 @@ +// Allow unwrap() in benchmarks +#![allow(clippy::unwrap_used)] + use criterion::{criterion_group, criterion_main, Criterion}; fn bench_arrow(c: &mut Criterion) { diff --git a/crates/re_types_core/src/components/visualizer_overrides.rs b/crates/re_types_core/src/components/visualizer_overrides.rs index 064856dc1c8ce..404be7b125525 100644 --- a/crates/re_types_core/src/components/visualizer_overrides.rs +++ b/crates/re_types_core/src/components/visualizer_overrides.rs @@ -102,19 +102,17 @@ impl crate::Loggable for VisualizerOverrides { data0 .iter() .map(|opt| opt.as_ref().map_or(0, |datum| datum.len())), - ) - .unwrap() + )? .into(); let data0_inner_data: Vec<_> = data0.into_iter().flatten().flatten().collect(); let data0_inner_bitmap: Option = None; - ListArray::new( + ListArray::try_new( Self::arrow_datatype(), offsets, { let offsets = arrow2::offset::Offsets::::try_from_lengths( data0_inner_data.iter().map(|datum| datum.len()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = data0_inner_data.into_iter().flat_map(|s| s.0).collect(); @@ -131,7 +129,7 @@ impl crate::Loggable for VisualizerOverrides { .boxed() }, data0_bitmap, - ) + )? .boxed() } }) diff --git a/crates/re_types_core/src/datatypes/entity_path.rs b/crates/re_types_core/src/datatypes/entity_path.rs index a42fe22361075..815de6c2aa626 100644 --- a/crates/re_types_core/src/datatypes/entity_path.rs +++ b/crates/re_types_core/src/datatypes/entity_path.rs @@ -97,8 +97,7 @@ impl crate::Loggable for EntityPath { data0 .iter() .map(|opt| opt.as_ref().map(|datum| datum.len()).unwrap_or_default()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = data0.into_iter().flatten().flat_map(|s| s.0).collect(); diff --git a/crates/re_types_core/src/datatypes/utf8.rs b/crates/re_types_core/src/datatypes/utf8.rs index c87dd877a47be..5d5636a61e811 100644 --- a/crates/re_types_core/src/datatypes/utf8.rs +++ b/crates/re_types_core/src/datatypes/utf8.rs @@ -97,8 +97,7 @@ impl crate::Loggable for Utf8 { data0 .iter() .map(|opt| opt.as_ref().map(|datum| datum.len()).unwrap_or_default()), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = data0.into_iter().flatten().flat_map(|s| s.0).collect(); diff --git a/crates/re_types_core/src/datatypes/visible_time_range.rs b/crates/re_types_core/src/datatypes/visible_time_range.rs index 67f6877e2a1dc..0d57f44910b19 100644 --- a/crates/re_types_core/src/datatypes/visible_time_range.rs +++ b/crates/re_types_core/src/datatypes/visible_time_range.rs @@ -113,14 +113,14 @@ impl crate::Loggable for VisibleTimeRange { timeline.iter().map(|opt| { opt.as_ref().map(|datum| datum.0.len()).unwrap_or_default() }), - ) - .map_err(|err| std::sync::Arc::new(err))? + )? .into(); let inner_data: arrow2::buffer::Buffer = timeline .into_iter() .flatten() .flat_map(|datum| datum.0 .0) .collect(); + #[allow(unsafe_code, clippy::undocumented_unsafe_blocks)] unsafe { Utf8Array::::new_unchecked( diff --git a/crates/re_types_core/src/lib.rs b/crates/re_types_core/src/lib.rs index 08dea18b98687..f9a84bdcafc4d 100644 --- a/crates/re_types_core/src/lib.rs +++ b/crates/re_types_core/src/lib.rs @@ -15,6 +15,9 @@ #![doc = document_features::document_features!()] //! +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + // --- /// Describes the interface for interpreting an object as a bundle of [`Component`]s. diff --git a/crates/re_types_core/src/result.rs b/crates/re_types_core/src/result.rs index 111e0629b94dd..a6e26c5aa8855 100644 --- a/crates/re_types_core/src/result.rs +++ b/crates/re_types_core/src/result.rs @@ -1,3 +1,5 @@ +use std::{fmt::Display, ops::Deref}; + use crate::ComponentName; // --- @@ -34,8 +36,8 @@ pub enum SerializationError { }, /// E.g. too many values (overflows i32). - #[error("Arrow error")] - ArrowError(#[from] std::sync::Arc), + #[error(transparent)] + ArrowError(#[from] ArcArrowError), } impl std::fmt::Debug for SerializationError { @@ -93,6 +95,41 @@ impl SerializationError { } } +/// A cloneable wrapper around `arrow2::error::Error`, for easier use. +/// +/// The motivation behind this type is that we often use code that can return a `arrow2::error::Error` +/// inside functions that return a `SerializationError`. By wrapping it we can use the ? operator and simplify the code. +/// Second, normally also `arrow2::error::Error` isn't clonable, but `SerializationError` is. +#[derive(Clone, Debug)] +pub struct ArcArrowError(std::sync::Arc); + +impl From for ArcArrowError { + fn from(e: arrow2::error::Error) -> Self { + Self(std::sync::Arc::new(e)) + } +} + +impl From for SerializationError { + fn from(e: arrow2::error::Error) -> Self { + SerializationError::ArrowError(ArcArrowError::from(e)) + } +} + +impl Deref for ArcArrowError { + type Target = arrow2::error::Error; + + #[inline] + fn deref(&self) -> &Self::Target { + self.0.as_ref() + } +} + +impl Display for ArcArrowError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.0.fmt(f) + } +} + pub type SerializationResult = ::std::result::Result; // --- diff --git a/crates/re_ui/examples/re_ui_example/main.rs b/crates/re_ui/examples/re_ui_example/main.rs index c8cbdef113487..8acc351080c5f 100644 --- a/crates/re_ui/examples/re_ui_example/main.rs +++ b/crates/re_ui/examples/re_ui_example/main.rs @@ -98,7 +98,7 @@ pub struct ExampleApp { impl ExampleApp { fn new(re_ui: re_ui::ReUi) -> Self { let (logger, text_log_rx) = re_log::ChannelLogger::new(re_log::LevelFilter::Info); - re_log::add_boxed_logger(Box::new(logger)).unwrap(); + re_log::add_boxed_logger(Box::new(logger)).expect("Failed to add logger"); let tree = egui_tiles::Tree::new_tabs("my_tree", vec![1, 2, 3]); diff --git a/crates/re_viewer/src/lib.rs b/crates/re_viewer/src/lib.rs index 26e71063548ef..3e0ac91757561 100644 --- a/crates/re_viewer/src/lib.rs +++ b/crates/re_viewer/src/lib.rs @@ -3,6 +3,9 @@ //! This crate contains all the GUI code for the Rerun Viewer, //! including all 2D and 3D visualization code. +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + mod app; mod app_blueprint; mod app_state; diff --git a/crates/re_viewport/src/lib.rs b/crates/re_viewport/src/lib.rs index 5bee9bb342fd6..23174859ba263 100644 --- a/crates/re_viewport/src/lib.rs +++ b/crates/re_viewport/src/lib.rs @@ -2,6 +2,9 @@ //! //! This crate provides the central panel that contains all space views. +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + pub const VIEWPORT_PATH: &str = "viewport"; mod add_space_view_or_container_modal; diff --git a/crates/re_ws_comms/src/lib.rs b/crates/re_ws_comms/src/lib.rs index 3b5f69954ead0..4558fef14fa4b 100644 --- a/crates/re_ws_comms/src/lib.rs +++ b/crates/re_ws_comms/src/lib.rs @@ -4,6 +4,9 @@ #![doc = document_features::document_features!()] //! +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + #[cfg(feature = "client")] mod client; use std::{fmt::Display, str::FromStr}; diff --git a/crates/rerun/src/lib.rs b/crates/rerun/src/lib.rs index 9553cb851e854..ce0f8ecf70c92 100644 --- a/crates/rerun/src/lib.rs +++ b/crates/rerun/src/lib.rs @@ -101,6 +101,8 @@ //! See [`Logger`]. //! +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] #![warn(missing_docs)] // Let's keep the this crate well-documented! #[cfg(feature = "run")] diff --git a/crates/rerun_c/src/lib.rs b/crates/rerun_c/src/lib.rs index 8254975813cd7..711c174b137d6 100644 --- a/crates/rerun_c/src/lib.rs +++ b/crates/rerun_c/src/lib.rs @@ -215,8 +215,9 @@ pub struct CError { #[allow(unsafe_code)] #[no_mangle] pub extern "C" fn rr_version_string() -> *const c_char { - static VERSION: Lazy = - Lazy::new(|| CString::new(re_sdk::build_info().version.to_string()).unwrap()); // unwrap: there won't be any NUL bytes in the string + static VERSION: Lazy = Lazy::new(|| { + CString::new(re_sdk::build_info().version.to_string()).expect("CString::new failed") + }); // unwrap: there won't be any NUL bytes in the string VERSION.as_ptr() } diff --git a/docs/snippets/build.rs b/docs/snippets/build.rs index 8d94f147ef710..043884b960a21 100644 --- a/docs/snippets/build.rs +++ b/docs/snippets/build.rs @@ -6,6 +6,9 @@ //! //! Motivation: +// TODO(#3408): remove unwrap() +#![allow(clippy::unwrap_used)] + use std::{fs, path::Path}; use itertools::Itertools as _; @@ -82,7 +85,7 @@ fn main() { let args: Vec = std::env::args().skip(1).collect(); if args.is_empty() { - eprintln!("Usage: {} \n", std::env::args().next().unwrap()); + eprintln!("Usage: {} \n", std::env::args().next().unwrap_or("snippets".to_owned())); eprintln!("Available snippets ${SNIPPETS}:\n"); std::process::exit(1); } diff --git a/rerun_py/build.rs b/rerun_py/build.rs index c7c2c207ed5c3..3334a14cc0946 100644 --- a/rerun_py/build.rs +++ b/rerun_py/build.rs @@ -15,7 +15,7 @@ fn main() { #[cfg(not(target_os = "windows"))] let rerun_bin = std::env::current_dir() - .unwrap() + .expect("std::env::current_dir() failed") .join("rerun_sdk/rerun_cli/rerun"); if !rerun_bin.exists() { diff --git a/rerun_py/src/python_bridge.rs b/rerun_py/src/python_bridge.rs index 4f4c62b7769ef..e199c019c2fe3 100644 --- a/rerun_py/src/python_bridge.rs +++ b/rerun_py/src/python_bridge.rs @@ -549,7 +549,7 @@ fn spawn( } #[pyfunction] -#[pyo3(signature = (addr = None, flush_timeout_sec=re_sdk::default_flush_timeout().unwrap().as_secs_f32(), default_blueprint = None, recording = None))] +#[pyo3(signature = (addr = None, flush_timeout_sec=re_sdk::default_flush_timeout().expect("always Some()").as_secs_f32(), default_blueprint = None, recording = None))] fn connect( addr: Option, flush_timeout_sec: Option, diff --git a/run_wasm/src/main.rs b/run_wasm/src/main.rs index 7a57567ad4c8a..9f9092e6af206 100644 --- a/run_wasm/src/main.rs +++ b/run_wasm/src/main.rs @@ -68,10 +68,14 @@ fn main() { use pico_args::Arguments; let mut args = Arguments::from_env(); - let host: Option = args.opt_value_from_str("--host").unwrap(); - let port: Option = args.opt_value_from_str("--port").unwrap(); - let host = host.as_deref().unwrap_or("localhost"); - let port = port.as_deref().unwrap_or("8000"); + let host = args + .opt_value_from_str("--host") + .unwrap_or(None) + .unwrap_or("localhost".to_owned()); + let port = args + .opt_value_from_str("--port") + .unwrap_or(None) + .unwrap_or("8000".to_owned()); let thread = std::thread::Builder::new() .name("cargo_run_wasm".into()) @@ -81,7 +85,7 @@ fn main() { .expect("Failed to spawn thread"); if args.contains("--build-only") { - thread.join().unwrap(); + thread.join().expect("std::thread::join() failed"); } else { // It would be nice to start a web-browser, but we can't really know when the server is ready. // So we just sleep for a while and hope it works. diff --git a/tests/rust/roundtrips/image/src/main.rs b/tests/rust/roundtrips/image/src/main.rs index 64d8bdd410fff..0e81364319f5e 100644 --- a/tests/rust/roundtrips/image/src/main.rs +++ b/tests/rust/roundtrips/image/src/main.rs @@ -1,5 +1,8 @@ //! Logs an `Image` archetype for roundtrip checks. +// Allow unwrap() in tests (allow-unwrap-in-tests doesn't apply) +#![allow(clippy::unwrap_used)] + use half::f16; use image::{Rgb, RgbImage}; use ndarray::{Array, ShapeBuilder}; diff --git a/tests/rust/test_image_memory/src/main.rs b/tests/rust/test_image_memory/src/main.rs index 99e4110f8c55e..5f04178ccc1ac 100644 --- a/tests/rust/test_image_memory/src/main.rs +++ b/tests/rust/test_image_memory/src/main.rs @@ -1,5 +1,8 @@ //! Logs a bunch of big images to test Rerun memory usage. +// Allow unwrap() in tests (allow-unwrap-in-tests doesn't apply) +#![allow(clippy::unwrap_used)] + use mimalloc::MiMalloc; use re_memory::AccountingAllocator; From db891f962355c264c0effbc28323e80f5fb3655e Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Wed, 15 May 2024 10:41:22 +0200 Subject: [PATCH 08/40] Fix lint issues on generated doc pages (#6328) merge order caused me to miss this --- crates/re_types_builder/src/codegen/docs/mod.rs | 2 +- docs/content/reference/types/archetypes/annotation_context.md | 2 +- docs/content/reference/types/archetypes/arrows2d.md | 2 +- docs/content/reference/types/archetypes/arrows3d.md | 2 +- docs/content/reference/types/archetypes/asset3d.md | 2 +- docs/content/reference/types/archetypes/bar_chart.md | 2 +- docs/content/reference/types/archetypes/boxes2d.md | 2 +- docs/content/reference/types/archetypes/boxes3d.md | 2 +- docs/content/reference/types/archetypes/clear.md | 2 +- docs/content/reference/types/archetypes/depth_image.md | 2 +- docs/content/reference/types/archetypes/disconnected_space.md | 2 +- docs/content/reference/types/archetypes/image.md | 2 +- docs/content/reference/types/archetypes/line_strips2d.md | 2 +- docs/content/reference/types/archetypes/line_strips3d.md | 2 +- docs/content/reference/types/archetypes/mesh3d.md | 2 +- docs/content/reference/types/archetypes/pinhole.md | 2 +- docs/content/reference/types/archetypes/points2d.md | 2 +- docs/content/reference/types/archetypes/points3d.md | 2 +- docs/content/reference/types/archetypes/scalar.md | 2 +- docs/content/reference/types/archetypes/segmentation_image.md | 2 +- docs/content/reference/types/archetypes/series_line.md | 2 +- docs/content/reference/types/archetypes/series_point.md | 2 +- docs/content/reference/types/archetypes/tensor.md | 2 +- docs/content/reference/types/archetypes/text_document.md | 2 +- docs/content/reference/types/archetypes/text_log.md | 2 +- docs/content/reference/types/archetypes/transform3d.md | 2 +- docs/content/reference/types/archetypes/view_coordinates.md | 2 +- docs/content/reference/types/components/annotation_context.md | 2 +- docs/content/reference/types/components/blob.md | 2 +- docs/content/reference/types/components/class_id.md | 2 +- docs/content/reference/types/components/clear_is_recursive.md | 2 +- docs/content/reference/types/components/color.md | 2 +- docs/content/reference/types/components/depth_meter.md | 2 +- docs/content/reference/types/components/disconnected_space.md | 2 +- docs/content/reference/types/components/draw_order.md | 2 +- docs/content/reference/types/components/half_sizes2d.md | 2 +- docs/content/reference/types/components/half_sizes3d.md | 2 +- docs/content/reference/types/components/keypoint_id.md | 2 +- docs/content/reference/types/components/line_strip2d.md | 2 +- docs/content/reference/types/components/line_strip3d.md | 2 +- docs/content/reference/types/components/marker_shape.md | 2 +- docs/content/reference/types/components/marker_size.md | 2 +- docs/content/reference/types/components/material.md | 2 +- docs/content/reference/types/components/media_type.md | 2 +- docs/content/reference/types/components/name.md | 2 +- .../reference/types/components/out_of_tree_transform3d.md | 2 +- docs/content/reference/types/components/pinhole_projection.md | 2 +- docs/content/reference/types/components/position2d.md | 2 +- docs/content/reference/types/components/position3d.md | 2 +- docs/content/reference/types/components/radius.md | 2 +- docs/content/reference/types/components/range1d.md | 2 +- docs/content/reference/types/components/range2d.md | 2 +- docs/content/reference/types/components/resolution.md | 2 +- docs/content/reference/types/components/rotation3d.md | 2 +- docs/content/reference/types/components/scalar.md | 2 +- docs/content/reference/types/components/scalar_scattering.md | 2 +- docs/content/reference/types/components/stroke_width.md | 2 +- docs/content/reference/types/components/tensor_data.md | 2 +- docs/content/reference/types/components/texcoord2d.md | 2 +- docs/content/reference/types/components/text.md | 2 +- docs/content/reference/types/components/text_log_level.md | 2 +- docs/content/reference/types/components/transform3d.md | 2 +- docs/content/reference/types/components/triangle_indices.md | 2 +- docs/content/reference/types/components/vector2d.md | 2 +- docs/content/reference/types/components/vector3d.md | 2 +- docs/content/reference/types/components/view_coordinates.md | 2 +- docs/content/reference/types/components/visualizer_overrides.md | 2 +- docs/content/reference/types/datatypes/angle.md | 2 +- docs/content/reference/types/datatypes/annotation_info.md | 2 +- docs/content/reference/types/datatypes/bool.md | 2 +- docs/content/reference/types/datatypes/class_description.md | 2 +- .../reference/types/datatypes/class_description_map_elem.md | 2 +- docs/content/reference/types/datatypes/class_id.md | 2 +- docs/content/reference/types/datatypes/entity_path.md | 2 +- docs/content/reference/types/datatypes/float32.md | 2 +- docs/content/reference/types/datatypes/keypoint_id.md | 2 +- docs/content/reference/types/datatypes/keypoint_pair.md | 2 +- docs/content/reference/types/datatypes/mat3x3.md | 2 +- docs/content/reference/types/datatypes/mat4x4.md | 2 +- docs/content/reference/types/datatypes/material.md | 2 +- docs/content/reference/types/datatypes/quaternion.md | 2 +- docs/content/reference/types/datatypes/range1d.md | 2 +- docs/content/reference/types/datatypes/range2d.md | 2 +- docs/content/reference/types/datatypes/rgba32.md | 2 +- docs/content/reference/types/datatypes/rotation3d.md | 2 +- docs/content/reference/types/datatypes/rotation_axis_angle.md | 2 +- docs/content/reference/types/datatypes/scale3d.md | 2 +- docs/content/reference/types/datatypes/tensor_buffer.md | 2 +- docs/content/reference/types/datatypes/tensor_data.md | 2 +- docs/content/reference/types/datatypes/tensor_dimension.md | 2 +- docs/content/reference/types/datatypes/time_int.md | 2 +- docs/content/reference/types/datatypes/time_range.md | 2 +- docs/content/reference/types/datatypes/time_range_boundary.md | 2 +- docs/content/reference/types/datatypes/transform3d.md | 2 +- .../content/reference/types/datatypes/translation_and_mat3x3.md | 2 +- .../reference/types/datatypes/translation_rotation_scale3d.md | 2 +- docs/content/reference/types/datatypes/uint32.md | 2 +- docs/content/reference/types/datatypes/uint64.md | 2 +- docs/content/reference/types/datatypes/utf8.md | 2 +- docs/content/reference/types/datatypes/uuid.md | 2 +- docs/content/reference/types/datatypes/uvec2d.md | 2 +- docs/content/reference/types/datatypes/uvec3d.md | 2 +- docs/content/reference/types/datatypes/uvec4d.md | 2 +- docs/content/reference/types/datatypes/vec2d.md | 2 +- docs/content/reference/types/datatypes/vec3d.md | 2 +- docs/content/reference/types/datatypes/vec4d.md | 2 +- docs/content/reference/types/datatypes/visible_time_range.md | 2 +- docs/content/reference/types/views/bar_chart_view.md | 2 +- docs/content/reference/types/views/spatial2d_view.md | 2 +- docs/content/reference/types/views/spatial3d_view.md | 2 +- docs/content/reference/types/views/tensor_view.md | 2 +- docs/content/reference/types/views/text_document_view.md | 2 +- docs/content/reference/types/views/text_log_view.md | 2 +- docs/content/reference/types/views/time_series_view.md | 2 +- 114 files changed, 114 insertions(+), 114 deletions(-) diff --git a/crates/re_types_builder/src/codegen/docs/mod.rs b/crates/re_types_builder/src/codegen/docs/mod.rs index 397992e89a755..8ce1be89a9ab5 100644 --- a/crates/re_types_builder/src/codegen/docs/mod.rs +++ b/crates/re_types_builder/src/codegen/docs/mod.rs @@ -266,7 +266,7 @@ fn object_page( } putln!(page); - putln!(page, "## Api reference links"); + putln!(page, "## API reference links"); list_links(is_unreleased, &mut page, object); putln!(page); diff --git a/docs/content/reference/types/archetypes/annotation_context.md b/docs/content/reference/types/archetypes/annotation_context.md index 0c609de38af62..00673bbe2f316 100644 --- a/docs/content/reference/types/archetypes/annotation_context.md +++ b/docs/content/reference/types/archetypes/annotation_context.md @@ -19,7 +19,7 @@ path. * [Spatial2DView](../views/spatial2d_view.md) * [Spatial3DView](../views/spatial3d_view.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `AnnotationContext`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1AnnotationContext.html) * 🐍 [Python API docs for `AnnotationContext`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.AnnotationContext) * πŸ¦€ [Rust API docs for `AnnotationContext`](https://docs.rs/rerun/latest/rerun/archetypes/struct.AnnotationContext.html) diff --git a/docs/content/reference/types/archetypes/arrows2d.md b/docs/content/reference/types/archetypes/arrows2d.md index 13512e8e11a5e..51eef3c73c29d 100644 --- a/docs/content/reference/types/archetypes/arrows2d.md +++ b/docs/content/reference/types/archetypes/arrows2d.md @@ -17,7 +17,7 @@ title: "Arrows2D" * [Spatial2DView](../views/spatial2d_view.md) * [Spatial3DView](../views/spatial3d_view.md) (if logged under a projection) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Arrows2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Arrows2D.html) * 🐍 [Python API docs for `Arrows2D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Arrows2D) * πŸ¦€ [Rust API docs for `Arrows2D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Arrows2D.html) diff --git a/docs/content/reference/types/archetypes/arrows3d.md b/docs/content/reference/types/archetypes/arrows3d.md index 0ed60ffd48a09..a421c775d2209 100644 --- a/docs/content/reference/types/archetypes/arrows3d.md +++ b/docs/content/reference/types/archetypes/arrows3d.md @@ -17,7 +17,7 @@ title: "Arrows3D" * [Spatial3DView](../views/spatial3d_view.md) * [Spatial2DView](../views/spatial2d_view.md) (if logged above active projection) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Arrows3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Arrows3D.html) * 🐍 [Python API docs for `Arrows3D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Arrows3D) * πŸ¦€ [Rust API docs for `Arrows3D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Arrows3D.html) diff --git a/docs/content/reference/types/archetypes/asset3d.md b/docs/content/reference/types/archetypes/asset3d.md index fab6f7f0cfcbb..fe73b31de8782 100644 --- a/docs/content/reference/types/archetypes/asset3d.md +++ b/docs/content/reference/types/archetypes/asset3d.md @@ -17,7 +17,7 @@ A prepacked 3D asset (`.gltf`, `.glb`, `.obj`, `.stl`, etc.). * [Spatial3DView](../views/spatial3d_view.md) * [Spatial2DView](../views/spatial2d_view.md) (if logged above active projection) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Asset3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Asset3D.html) * 🐍 [Python API docs for `Asset3D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Asset3D) * πŸ¦€ [Rust API docs for `Asset3D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Asset3D.html) diff --git a/docs/content/reference/types/archetypes/bar_chart.md b/docs/content/reference/types/archetypes/bar_chart.md index cb25d9ec68fc1..97784402e25bb 100644 --- a/docs/content/reference/types/archetypes/bar_chart.md +++ b/docs/content/reference/types/archetypes/bar_chart.md @@ -16,7 +16,7 @@ The x values will be the indices of the array, and the bar heights will be the p ## Shown in * [BarChartView](../views/bar_chart_view.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `BarChart`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1BarChart.html) * 🐍 [Python API docs for `BarChart`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.BarChart) * πŸ¦€ [Rust API docs for `BarChart`](https://docs.rs/rerun/latest/rerun/archetypes/struct.BarChart.html) diff --git a/docs/content/reference/types/archetypes/boxes2d.md b/docs/content/reference/types/archetypes/boxes2d.md index d200524839411..0fbb8ad55f33b 100644 --- a/docs/content/reference/types/archetypes/boxes2d.md +++ b/docs/content/reference/types/archetypes/boxes2d.md @@ -17,7 +17,7 @@ title: "Boxes2D" * [Spatial2DView](../views/spatial2d_view.md) * [Spatial3DView](../views/spatial3d_view.md) (if logged under a projection) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Boxes2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Boxes2D.html) * 🐍 [Python API docs for `Boxes2D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Boxes2D) * πŸ¦€ [Rust API docs for `Boxes2D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Boxes2D.html) diff --git a/docs/content/reference/types/archetypes/boxes3d.md b/docs/content/reference/types/archetypes/boxes3d.md index 0f4fac3ee5182..f33b44e2c2520 100644 --- a/docs/content/reference/types/archetypes/boxes3d.md +++ b/docs/content/reference/types/archetypes/boxes3d.md @@ -17,7 +17,7 @@ title: "Boxes3D" * [Spatial3DView](../views/spatial3d_view.md) * [Spatial2DView](../views/spatial2d_view.md) (if logged above active projection) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Boxes3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Boxes3D.html) * 🐍 [Python API docs for `Boxes3D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Boxes3D) * πŸ¦€ [Rust API docs for `Boxes3D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Boxes3D.html) diff --git a/docs/content/reference/types/archetypes/clear.md b/docs/content/reference/types/archetypes/clear.md index 17aab4e71e0d3..b76552b52e43e 100644 --- a/docs/content/reference/types/archetypes/clear.md +++ b/docs/content/reference/types/archetypes/clear.md @@ -24,7 +24,7 @@ data (i.e. discontinuous lines). * [Spatial3DView](../views/spatial3d_view.md) * [TimeSeriesView](../views/time_series_view.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Clear`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Clear.html) * 🐍 [Python API docs for `Clear`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Clear) * πŸ¦€ [Rust API docs for `Clear`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Clear.html) diff --git a/docs/content/reference/types/archetypes/depth_image.md b/docs/content/reference/types/archetypes/depth_image.md index 32d31e5bcd8c0..b09629b0eadf4 100644 --- a/docs/content/reference/types/archetypes/depth_image.md +++ b/docs/content/reference/types/archetypes/depth_image.md @@ -18,7 +18,7 @@ Each pixel corresponds to a depth value in units specified by `meter`. * [Spatial2DView](../views/spatial2d_view.md) * [Spatial3DView](../views/spatial3d_view.md) (if logged under a projection) -## Api reference links +## API reference links * 🌊 [C++ API docs for `DepthImage`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1DepthImage.html) * 🐍 [Python API docs for `DepthImage`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.DepthImage) * πŸ¦€ [Rust API docs for `DepthImage`](https://docs.rs/rerun/latest/rerun/archetypes/struct.DepthImage.html) diff --git a/docs/content/reference/types/archetypes/disconnected_space.md b/docs/content/reference/types/archetypes/disconnected_space.md index 2ba2f259fd835..8cf8ff8e0cf34 100644 --- a/docs/content/reference/types/archetypes/disconnected_space.md +++ b/docs/content/reference/types/archetypes/disconnected_space.md @@ -18,7 +18,7 @@ This is useful for specifying that a subgraph is independent of the rest of the * [Spatial2DView](../views/spatial2d_view.md) * [Spatial3DView](../views/spatial3d_view.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `DisconnectedSpace`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1DisconnectedSpace.html) * 🐍 [Python API docs for `DisconnectedSpace`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.DisconnectedSpace) * πŸ¦€ [Rust API docs for `DisconnectedSpace`](https://docs.rs/rerun/latest/rerun/archetypes/struct.DisconnectedSpace.html) diff --git a/docs/content/reference/types/archetypes/image.md b/docs/content/reference/types/archetypes/image.md index 0dab4e5689bef..4a3b65cbe422b 100644 --- a/docs/content/reference/types/archetypes/image.md +++ b/docs/content/reference/types/archetypes/image.md @@ -30,7 +30,7 @@ Using these formats can save a lot of bandwidth and memory. * [Spatial2DView](../views/spatial2d_view.md) * [Spatial3DView](../views/spatial3d_view.md) (if logged under a projection) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Image`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Image.html) * 🐍 [Python API docs for `Image`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Image) * πŸ¦€ [Rust API docs for `Image`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Image.html) diff --git a/docs/content/reference/types/archetypes/line_strips2d.md b/docs/content/reference/types/archetypes/line_strips2d.md index 5e53f6eab5d9a..fd57bfb2af5be 100644 --- a/docs/content/reference/types/archetypes/line_strips2d.md +++ b/docs/content/reference/types/archetypes/line_strips2d.md @@ -17,7 +17,7 @@ title: "LineStrips2D" * [Spatial2DView](../views/spatial2d_view.md) * [Spatial3DView](../views/spatial3d_view.md) (if logged under a projection) -## Api reference links +## API reference links * 🌊 [C++ API docs for `LineStrips2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1LineStrips2D.html) * 🐍 [Python API docs for `LineStrips2D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.LineStrips2D) * πŸ¦€ [Rust API docs for `LineStrips2D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.LineStrips2D.html) diff --git a/docs/content/reference/types/archetypes/line_strips3d.md b/docs/content/reference/types/archetypes/line_strips3d.md index 63484e839d1e9..e612c9000b1b0 100644 --- a/docs/content/reference/types/archetypes/line_strips3d.md +++ b/docs/content/reference/types/archetypes/line_strips3d.md @@ -17,7 +17,7 @@ title: "LineStrips3D" * [Spatial3DView](../views/spatial3d_view.md) * [Spatial2DView](../views/spatial2d_view.md) (if logged above active projection) -## Api reference links +## API reference links * 🌊 [C++ API docs for `LineStrips3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1LineStrips3D.html) * 🐍 [Python API docs for `LineStrips3D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.LineStrips3D) * πŸ¦€ [Rust API docs for `LineStrips3D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.LineStrips3D.html) diff --git a/docs/content/reference/types/archetypes/mesh3d.md b/docs/content/reference/types/archetypes/mesh3d.md index 6ff8b88a96018..51434f1c39922 100644 --- a/docs/content/reference/types/archetypes/mesh3d.md +++ b/docs/content/reference/types/archetypes/mesh3d.md @@ -17,7 +17,7 @@ A 3D triangle mesh as specified by its per-mesh and per-vertex properties. * [Spatial3DView](../views/spatial3d_view.md) * [Spatial2DView](../views/spatial2d_view.md) (if logged above active projection) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Mesh3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Mesh3D.html) * 🐍 [Python API docs for `Mesh3D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Mesh3D) * πŸ¦€ [Rust API docs for `Mesh3D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Mesh3D.html) diff --git a/docs/content/reference/types/archetypes/pinhole.md b/docs/content/reference/types/archetypes/pinhole.md index 847a1ca89da15..924a93fc6ffe3 100644 --- a/docs/content/reference/types/archetypes/pinhole.md +++ b/docs/content/reference/types/archetypes/pinhole.md @@ -17,7 +17,7 @@ Camera perspective projection (a.k.a. intrinsics). * [Spatial2DView](../views/spatial2d_view.md) * [Spatial2DView](../views/spatial2d_view.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Pinhole`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Pinhole.html) * 🐍 [Python API docs for `Pinhole`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Pinhole) * πŸ¦€ [Rust API docs for `Pinhole`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Pinhole.html) diff --git a/docs/content/reference/types/archetypes/points2d.md b/docs/content/reference/types/archetypes/points2d.md index a4a43a3cb8ef2..29b8147e09ad3 100644 --- a/docs/content/reference/types/archetypes/points2d.md +++ b/docs/content/reference/types/archetypes/points2d.md @@ -17,7 +17,7 @@ A 2D point cloud with positions and optional colors, radii, labels, etc. * [Spatial2DView](../views/spatial2d_view.md) * [Spatial3DView](../views/spatial3d_view.md) (if logged under a projection) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Points2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Points2D.html) * 🐍 [Python API docs for `Points2D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Points2D) * πŸ¦€ [Rust API docs for `Points2D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Points2D.html) diff --git a/docs/content/reference/types/archetypes/points3d.md b/docs/content/reference/types/archetypes/points3d.md index b234aa64d0801..fe8866593663b 100644 --- a/docs/content/reference/types/archetypes/points3d.md +++ b/docs/content/reference/types/archetypes/points3d.md @@ -17,7 +17,7 @@ A 3D point cloud with positions and optional colors, radii, labels, etc. * [Spatial3DView](../views/spatial3d_view.md) * [Spatial2DView](../views/spatial2d_view.md) (if logged above active projection) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Points3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Points3D.html) * 🐍 [Python API docs for `Points3D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Points3D) * πŸ¦€ [Rust API docs for `Points3D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Points3D.html) diff --git a/docs/content/reference/types/archetypes/scalar.md b/docs/content/reference/types/archetypes/scalar.md index d8a68ad256807..4560c15d07e7d 100644 --- a/docs/content/reference/types/archetypes/scalar.md +++ b/docs/content/reference/types/archetypes/scalar.md @@ -20,7 +20,7 @@ the plot-specific archetypes through the blueprint. ## Shown in * [TimeSeriesView](../views/time_series_view.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Scalar`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Scalar.html) * 🐍 [Python API docs for `Scalar`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Scalar) * πŸ¦€ [Rust API docs for `Scalar`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Scalar.html) diff --git a/docs/content/reference/types/archetypes/segmentation_image.md b/docs/content/reference/types/archetypes/segmentation_image.md index 831aa70f783ea..3bb806f7c7a60 100644 --- a/docs/content/reference/types/archetypes/segmentation_image.md +++ b/docs/content/reference/types/archetypes/segmentation_image.md @@ -24,7 +24,7 @@ Leading and trailing unit-dimensions are ignored, so that * [Spatial2DView](../views/spatial2d_view.md) * [Spatial3DView](../views/spatial3d_view.md) (if logged under a projection) -## Api reference links +## API reference links * 🌊 [C++ API docs for `SegmentationImage`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1SegmentationImage.html) * 🐍 [Python API docs for `SegmentationImage`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.SegmentationImage) * πŸ¦€ [Rust API docs for `SegmentationImage`](https://docs.rs/rerun/latest/rerun/archetypes/struct.SegmentationImage.html) diff --git a/docs/content/reference/types/archetypes/series_line.md b/docs/content/reference/types/archetypes/series_line.md index 1de8c454fb938..ce5243301b82c 100644 --- a/docs/content/reference/types/archetypes/series_line.md +++ b/docs/content/reference/types/archetypes/series_line.md @@ -16,7 +16,7 @@ the `Scalar` archetype. ## Shown in * [TimeSeriesView](../views/time_series_view.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `SeriesLine`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1SeriesLine.html) * 🐍 [Python API docs for `SeriesLine`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.SeriesLine) * πŸ¦€ [Rust API docs for `SeriesLine`](https://docs.rs/rerun/latest/rerun/archetypes/struct.SeriesLine.html) diff --git a/docs/content/reference/types/archetypes/series_point.md b/docs/content/reference/types/archetypes/series_point.md index feb0af8844c88..3d8d68343d1a7 100644 --- a/docs/content/reference/types/archetypes/series_point.md +++ b/docs/content/reference/types/archetypes/series_point.md @@ -16,7 +16,7 @@ the `Scalar` archetype. ## Shown in * [TimeSeriesView](../views/time_series_view.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `SeriesPoint`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1SeriesPoint.html) * 🐍 [Python API docs for `SeriesPoint`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.SeriesPoint) * πŸ¦€ [Rust API docs for `SeriesPoint`](https://docs.rs/rerun/latest/rerun/archetypes/struct.SeriesPoint.html) diff --git a/docs/content/reference/types/archetypes/tensor.md b/docs/content/reference/types/archetypes/tensor.md index 320ebd7b3e904..e93a258860b26 100644 --- a/docs/content/reference/types/archetypes/tensor.md +++ b/docs/content/reference/types/archetypes/tensor.md @@ -13,7 +13,7 @@ A generic n-dimensional Tensor. * [TensorView](../views/tensor_view.md) * [BarChartView](../views/bar_chart_view.md) (for 1D tensors) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Tensor`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Tensor.html) * 🐍 [Python API docs for `Tensor`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Tensor) * πŸ¦€ [Rust API docs for `Tensor`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Tensor.html) diff --git a/docs/content/reference/types/archetypes/text_document.md b/docs/content/reference/types/archetypes/text_document.md index d13bb5825a06b..ac2e51751defc 100644 --- a/docs/content/reference/types/archetypes/text_document.md +++ b/docs/content/reference/types/archetypes/text_document.md @@ -16,7 +16,7 @@ Supports raw text and markdown. ## Shown in * [TextDocumentView](../views/text_document_view.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `TextDocument`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1TextDocument.html) * 🐍 [Python API docs for `TextDocument`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.TextDocument) * πŸ¦€ [Rust API docs for `TextDocument`](https://docs.rs/rerun/latest/rerun/archetypes/struct.TextDocument.html) diff --git a/docs/content/reference/types/archetypes/text_log.md b/docs/content/reference/types/archetypes/text_log.md index 7e4deb88ce2a8..c927b9711c31e 100644 --- a/docs/content/reference/types/archetypes/text_log.md +++ b/docs/content/reference/types/archetypes/text_log.md @@ -16,7 +16,7 @@ A log entry in a text log, comprised of a text body and its log level. ## Shown in * [TextLogView](../views/text_log_view.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `TextLog`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1TextLog.html) * 🐍 [Python API docs for `TextLog`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.TextLog) * πŸ¦€ [Rust API docs for `TextLog`](https://docs.rs/rerun/latest/rerun/archetypes/struct.TextLog.html) diff --git a/docs/content/reference/types/archetypes/transform3d.md b/docs/content/reference/types/archetypes/transform3d.md index dce2c974b2c53..337c9728fb875 100644 --- a/docs/content/reference/types/archetypes/transform3d.md +++ b/docs/content/reference/types/archetypes/transform3d.md @@ -13,7 +13,7 @@ A 3D transform. * [Spatial3DView](../views/spatial3d_view.md) * [Spatial2DView](../views/spatial2d_view.md) (if logged above active projection) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Transform3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1Transform3D.html) * 🐍 [Python API docs for `Transform3D`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.Transform3D) * πŸ¦€ [Rust API docs for `Transform3D`](https://docs.rs/rerun/latest/rerun/archetypes/struct.Transform3D.html) diff --git a/docs/content/reference/types/archetypes/view_coordinates.md b/docs/content/reference/types/archetypes/view_coordinates.md index c42fdcb0ce640..02424dd52ae8f 100644 --- a/docs/content/reference/types/archetypes/view_coordinates.md +++ b/docs/content/reference/types/archetypes/view_coordinates.md @@ -19,7 +19,7 @@ down, and the Z axis points forward. ## Shown in * [Spatial3DView](../views/spatial3d_view.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `ViewCoordinates`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1archetypes_1_1ViewCoordinates.html) * 🐍 [Python API docs for `ViewCoordinates`](https://ref.rerun.io/docs/python/stable/common/archetypes#rerun.archetypes.ViewCoordinates) * πŸ¦€ [Rust API docs for `ViewCoordinates`](https://docs.rs/rerun/latest/rerun/archetypes/struct.ViewCoordinates.html) diff --git a/docs/content/reference/types/components/annotation_context.md b/docs/content/reference/types/components/annotation_context.md index 89546b32cfe67..cae3ab71d4bce 100644 --- a/docs/content/reference/types/components/annotation_context.md +++ b/docs/content/reference/types/components/annotation_context.md @@ -15,7 +15,7 @@ path. * class_map: list of [`ClassDescriptionMapElem`](../datatypes/class_description_map_elem.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `AnnotationContext`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1AnnotationContext.html) * 🐍 [Python API docs for `AnnotationContext`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.AnnotationContext) * πŸ¦€ [Rust API docs for `AnnotationContext`](https://docs.rs/rerun/latest/rerun/components/struct.AnnotationContext.html) diff --git a/docs/content/reference/types/components/blob.md b/docs/content/reference/types/components/blob.md index b03e8c404d55f..69e6478103696 100644 --- a/docs/content/reference/types/components/blob.md +++ b/docs/content/reference/types/components/blob.md @@ -9,7 +9,7 @@ A binary blob of data. * data: list of `u8` -## Api reference links +## API reference links * 🌊 [C++ API docs for `Blob`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Blob.html) * 🐍 [Python API docs for `Blob`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Blob) * πŸ¦€ [Rust API docs for `Blob`](https://docs.rs/rerun/latest/rerun/components/struct.Blob.html) diff --git a/docs/content/reference/types/components/class_id.md b/docs/content/reference/types/components/class_id.md index 116bc5bba4449..956eb613c2246 100644 --- a/docs/content/reference/types/components/class_id.md +++ b/docs/content/reference/types/components/class_id.md @@ -9,7 +9,7 @@ A 16-bit ID representing a type of semantic class. * id: [`ClassId`](../datatypes/class_id.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `ClassId`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1ClassId.html) * 🐍 [Python API docs for `ClassId`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.ClassId) * πŸ¦€ [Rust API docs for `ClassId`](https://docs.rs/rerun/latest/rerun/components/struct.ClassId.html) diff --git a/docs/content/reference/types/components/clear_is_recursive.md b/docs/content/reference/types/components/clear_is_recursive.md index c8f324a59cd60..a43e26af14515 100644 --- a/docs/content/reference/types/components/clear_is_recursive.md +++ b/docs/content/reference/types/components/clear_is_recursive.md @@ -9,7 +9,7 @@ Configures how a clear operation should behave - recursive or not. * recursive: `bool` -## Api reference links +## API reference links * 🌊 [C++ API docs for `ClearIsRecursive`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1ClearIsRecursive.html) * 🐍 [Python API docs for `ClearIsRecursive`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.ClearIsRecursive) * πŸ¦€ [Rust API docs for `ClearIsRecursive`](https://docs.rs/rerun/latest/rerun/components/struct.ClearIsRecursive.html) diff --git a/docs/content/reference/types/components/color.md b/docs/content/reference/types/components/color.md index 0d5db37b32544..26a5909e91143 100644 --- a/docs/content/reference/types/components/color.md +++ b/docs/content/reference/types/components/color.md @@ -12,7 +12,7 @@ byte is `R` and the least significant byte is `A`. * rgba: [`Rgba32`](../datatypes/rgba32.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Color`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Color.html) * 🐍 [Python API docs for `Color`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Color) * πŸ¦€ [Rust API docs for `Color`](https://docs.rs/rerun/latest/rerun/components/struct.Color.html) diff --git a/docs/content/reference/types/components/depth_meter.md b/docs/content/reference/types/components/depth_meter.md index 53a5902a7c5c3..473df7bb92848 100644 --- a/docs/content/reference/types/components/depth_meter.md +++ b/docs/content/reference/types/components/depth_meter.md @@ -9,7 +9,7 @@ A component indicating how long a meter is, expressed in native units. * value: `f32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `DepthMeter`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1DepthMeter.html) * 🐍 [Python API docs for `DepthMeter`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.DepthMeter) * πŸ¦€ [Rust API docs for `DepthMeter`](https://docs.rs/rerun/latest/rerun/components/struct.DepthMeter.html) diff --git a/docs/content/reference/types/components/disconnected_space.md b/docs/content/reference/types/components/disconnected_space.md index 48193d8fbd3d0..d8c1dafe5a40e 100644 --- a/docs/content/reference/types/components/disconnected_space.md +++ b/docs/content/reference/types/components/disconnected_space.md @@ -14,7 +14,7 @@ This is useful for specifying that a subgraph is independent of the rest of the * is_disconnected: `bool` -## Api reference links +## API reference links * 🌊 [C++ API docs for `DisconnectedSpace`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1DisconnectedSpace.html) * 🐍 [Python API docs for `DisconnectedSpace`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.DisconnectedSpace) * πŸ¦€ [Rust API docs for `DisconnectedSpace`](https://docs.rs/rerun/latest/rerun/components/struct.DisconnectedSpace.html) diff --git a/docs/content/reference/types/components/draw_order.md b/docs/content/reference/types/components/draw_order.md index f1dbea93e2720..61462b420c5b1 100644 --- a/docs/content/reference/types/components/draw_order.md +++ b/docs/content/reference/types/components/draw_order.md @@ -15,7 +15,7 @@ Draw order for entities with the same draw order is generally undefined. * value: `f32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `DrawOrder`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1DrawOrder.html) * 🐍 [Python API docs for `DrawOrder`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.DrawOrder) * πŸ¦€ [Rust API docs for `DrawOrder`](https://docs.rs/rerun/latest/rerun/components/struct.DrawOrder.html) diff --git a/docs/content/reference/types/components/half_sizes2d.md b/docs/content/reference/types/components/half_sizes2d.md index 0b0c7b692ddf7..1d7ed36739493 100644 --- a/docs/content/reference/types/components/half_sizes2d.md +++ b/docs/content/reference/types/components/half_sizes2d.md @@ -12,7 +12,7 @@ Negative sizes indicate that the box is flipped along the respective axis, but t * xy: [`Vec2D`](../datatypes/vec2d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `HalfSizes2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1HalfSizes2D.html) * 🐍 [Python API docs for `HalfSizes2D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.HalfSizes2D) * πŸ¦€ [Rust API docs for `HalfSizes2D`](https://docs.rs/rerun/latest/rerun/components/struct.HalfSizes2D.html) diff --git a/docs/content/reference/types/components/half_sizes3d.md b/docs/content/reference/types/components/half_sizes3d.md index 11876502972c9..6ad5509497537 100644 --- a/docs/content/reference/types/components/half_sizes3d.md +++ b/docs/content/reference/types/components/half_sizes3d.md @@ -12,7 +12,7 @@ Negative sizes indicate that the box is flipped along the respective axis, but t * xyz: [`Vec3D`](../datatypes/vec3d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `HalfSizes3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1HalfSizes3D.html) * 🐍 [Python API docs for `HalfSizes3D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.HalfSizes3D) * πŸ¦€ [Rust API docs for `HalfSizes3D`](https://docs.rs/rerun/latest/rerun/components/struct.HalfSizes3D.html) diff --git a/docs/content/reference/types/components/keypoint_id.md b/docs/content/reference/types/components/keypoint_id.md index c308091d309a4..24d17b7fd78a7 100644 --- a/docs/content/reference/types/components/keypoint_id.md +++ b/docs/content/reference/types/components/keypoint_id.md @@ -9,7 +9,7 @@ A 16-bit ID representing a type of semantic keypoint within a class. * id: [`KeypointId`](../datatypes/keypoint_id.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `KeypointId`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1KeypointId.html) * 🐍 [Python API docs for `KeypointId`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.KeypointId) * πŸ¦€ [Rust API docs for `KeypointId`](https://docs.rs/rerun/latest/rerun/components/struct.KeypointId.html) diff --git a/docs/content/reference/types/components/line_strip2d.md b/docs/content/reference/types/components/line_strip2d.md index 5dd0dad4afffe..ec666f6d7c030 100644 --- a/docs/content/reference/types/components/line_strip2d.md +++ b/docs/content/reference/types/components/line_strip2d.md @@ -20,7 +20,7 @@ The points will be connected in order, like so: * points: list of [`Vec2D`](../datatypes/vec2d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `LineStrip2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1LineStrip2D.html) * 🐍 [Python API docs for `LineStrip2D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.LineStrip2D) * πŸ¦€ [Rust API docs for `LineStrip2D`](https://docs.rs/rerun/latest/rerun/components/struct.LineStrip2D.html) diff --git a/docs/content/reference/types/components/line_strip3d.md b/docs/content/reference/types/components/line_strip3d.md index d470d5f768942..969a49bf18036 100644 --- a/docs/content/reference/types/components/line_strip3d.md +++ b/docs/content/reference/types/components/line_strip3d.md @@ -20,7 +20,7 @@ The points will be connected in order, like so: * points: list of [`Vec3D`](../datatypes/vec3d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `LineStrip3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1LineStrip3D.html) * 🐍 [Python API docs for `LineStrip3D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.LineStrip3D) * πŸ¦€ [Rust API docs for `LineStrip3D`](https://docs.rs/rerun/latest/rerun/components/struct.LineStrip3D.html) diff --git a/docs/content/reference/types/components/marker_shape.md b/docs/content/reference/types/components/marker_shape.md index 660315ccf5baf..507c245b038a5 100644 --- a/docs/content/reference/types/components/marker_shape.md +++ b/docs/content/reference/types/components/marker_shape.md @@ -18,7 +18,7 @@ Shape of a marker. * Right * Asterisk -## Api reference links +## API reference links * 🌊 [C++ API docs for `MarkerShape`](https://ref.rerun.io/docs/cpp/stable/namespacererun_1_1components.html) * 🐍 [Python API docs for `MarkerShape`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.MarkerShape) * πŸ¦€ [Rust API docs for `MarkerShape`](https://docs.rs/rerun/latest/rerun/components/enum.MarkerShape.html) diff --git a/docs/content/reference/types/components/marker_size.md b/docs/content/reference/types/components/marker_size.md index bacbdf6d40fdd..d1eb69b66c7e7 100644 --- a/docs/content/reference/types/components/marker_size.md +++ b/docs/content/reference/types/components/marker_size.md @@ -9,7 +9,7 @@ Size of a marker in UI points. * value: `f32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `MarkerSize`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1MarkerSize.html) * 🐍 [Python API docs for `MarkerSize`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.MarkerSize) * πŸ¦€ [Rust API docs for `MarkerSize`](https://docs.rs/rerun/latest/rerun/components/struct.MarkerSize.html) diff --git a/docs/content/reference/types/components/material.md b/docs/content/reference/types/components/material.md index 7cf3664482aad..dd882625e24df 100644 --- a/docs/content/reference/types/components/material.md +++ b/docs/content/reference/types/components/material.md @@ -9,7 +9,7 @@ Material properties of a mesh. * material: [`Material`](../datatypes/material.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Material`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Material.html) * 🐍 [Python API docs for `Material`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Material) * πŸ¦€ [Rust API docs for `Material`](https://docs.rs/rerun/latest/rerun/components/struct.Material.html) diff --git a/docs/content/reference/types/components/media_type.md b/docs/content/reference/types/components/media_type.md index 81a991e11c99f..3ace81d2148ae 100644 --- a/docs/content/reference/types/components/media_type.md +++ b/docs/content/reference/types/components/media_type.md @@ -12,7 +12,7 @@ consulted at . * value: [`Utf8`](../datatypes/utf8.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `MediaType`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1MediaType.html) * 🐍 [Python API docs for `MediaType`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.MediaType) * πŸ¦€ [Rust API docs for `MediaType`](https://docs.rs/rerun/latest/rerun/components/struct.MediaType.html) diff --git a/docs/content/reference/types/components/name.md b/docs/content/reference/types/components/name.md index 6eec0c1814735..f93a8893aff75 100644 --- a/docs/content/reference/types/components/name.md +++ b/docs/content/reference/types/components/name.md @@ -9,7 +9,7 @@ A display name, typically for an entity or a item like a plot series. * value: [`Utf8`](../datatypes/utf8.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Name`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Name.html) * 🐍 [Python API docs for `Name`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Name) * πŸ¦€ [Rust API docs for `Name`](https://docs.rs/rerun/latest/rerun/components/struct.Name.html) diff --git a/docs/content/reference/types/components/out_of_tree_transform3d.md b/docs/content/reference/types/components/out_of_tree_transform3d.md index 7dcc210ca3c09..401c57a134928 100644 --- a/docs/content/reference/types/components/out_of_tree_transform3d.md +++ b/docs/content/reference/types/components/out_of_tree_transform3d.md @@ -11,7 +11,7 @@ An out-of-tree affine transform between two 3D spaces, represented in a given di * repr: [`Transform3D`](../datatypes/transform3d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `OutOfTreeTransform3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1OutOfTreeTransform3D.html) * 🐍 [Python API docs for `OutOfTreeTransform3D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.OutOfTreeTransform3D) * πŸ¦€ [Rust API docs for `OutOfTreeTransform3D`](https://docs.rs/rerun/latest/rerun/components/struct.OutOfTreeTransform3D.html) diff --git a/docs/content/reference/types/components/pinhole_projection.md b/docs/content/reference/types/components/pinhole_projection.md index 13bfb04ef9255..174a33c7876e8 100644 --- a/docs/content/reference/types/components/pinhole_projection.md +++ b/docs/content/reference/types/components/pinhole_projection.md @@ -19,7 +19,7 @@ Example: * image_from_camera: [`Mat3x3`](../datatypes/mat3x3.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `PinholeProjection`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1PinholeProjection.html) * 🐍 [Python API docs for `PinholeProjection`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.PinholeProjection) * πŸ¦€ [Rust API docs for `PinholeProjection`](https://docs.rs/rerun/latest/rerun/components/struct.PinholeProjection.html) diff --git a/docs/content/reference/types/components/position2d.md b/docs/content/reference/types/components/position2d.md index d70afa937b29f..69f61761a7c0a 100644 --- a/docs/content/reference/types/components/position2d.md +++ b/docs/content/reference/types/components/position2d.md @@ -9,7 +9,7 @@ A position in 2D space. * xy: [`Vec2D`](../datatypes/vec2d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Position2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Position2D.html) * 🐍 [Python API docs for `Position2D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Position2D) * πŸ¦€ [Rust API docs for `Position2D`](https://docs.rs/rerun/latest/rerun/components/struct.Position2D.html) diff --git a/docs/content/reference/types/components/position3d.md b/docs/content/reference/types/components/position3d.md index 30c1f030fac77..ca36180d68f72 100644 --- a/docs/content/reference/types/components/position3d.md +++ b/docs/content/reference/types/components/position3d.md @@ -9,7 +9,7 @@ A position in 3D space. * xyz: [`Vec3D`](../datatypes/vec3d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Position3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Position3D.html) * 🐍 [Python API docs for `Position3D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Position3D) * πŸ¦€ [Rust API docs for `Position3D`](https://docs.rs/rerun/latest/rerun/components/struct.Position3D.html) diff --git a/docs/content/reference/types/components/radius.md b/docs/content/reference/types/components/radius.md index a7f6b58cad179..ae46dd8636c39 100644 --- a/docs/content/reference/types/components/radius.md +++ b/docs/content/reference/types/components/radius.md @@ -9,7 +9,7 @@ A Radius component. * value: `f32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `Radius`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Radius.html) * 🐍 [Python API docs for `Radius`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Radius) * πŸ¦€ [Rust API docs for `Radius`](https://docs.rs/rerun/latest/rerun/components/struct.Radius.html) diff --git a/docs/content/reference/types/components/range1d.md b/docs/content/reference/types/components/range1d.md index 8d1e2325e840b..61b8809ca0863 100644 --- a/docs/content/reference/types/components/range1d.md +++ b/docs/content/reference/types/components/range1d.md @@ -9,7 +9,7 @@ A 1D range, specifying a lower and upper bound. * range: [`Range1D`](../datatypes/range1d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Range1D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Range1D.html?speculative-link) * 🐍 [Python API docs for `Range1D`](https://ref.rerun.io/docs/python/stable/common/components?speculative-link#rerun.components.Range1D) * πŸ¦€ [Rust API docs for `Range1D`](https://docs.rs/rerun/latest/rerun/components/struct.Range1D.html?speculative-link) diff --git a/docs/content/reference/types/components/range2d.md b/docs/content/reference/types/components/range2d.md index 509ef01373e0b..807581063f884 100644 --- a/docs/content/reference/types/components/range2d.md +++ b/docs/content/reference/types/components/range2d.md @@ -9,7 +9,7 @@ An Axis-Aligned Bounding Box in 2D space. * range2d: [`Range2D`](../datatypes/range2d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Range2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Range2D.html?speculative-link) * 🐍 [Python API docs for `Range2D`](https://ref.rerun.io/docs/python/stable/common/components?speculative-link#rerun.components.Range2D) * πŸ¦€ [Rust API docs for `Range2D`](https://docs.rs/rerun/latest/rerun/components/struct.Range2D.html?speculative-link) diff --git a/docs/content/reference/types/components/resolution.md b/docs/content/reference/types/components/resolution.md index ae1b2fcfe5060..629d1965c485d 100644 --- a/docs/content/reference/types/components/resolution.md +++ b/docs/content/reference/types/components/resolution.md @@ -11,7 +11,7 @@ Typically in integer units, but for some use cases floating point may be used. * resolution: [`Vec2D`](../datatypes/vec2d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Resolution`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Resolution.html) * 🐍 [Python API docs for `Resolution`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Resolution) * πŸ¦€ [Rust API docs for `Resolution`](https://docs.rs/rerun/latest/rerun/components/struct.Resolution.html) diff --git a/docs/content/reference/types/components/rotation3d.md b/docs/content/reference/types/components/rotation3d.md index 19444b6920688..81992185dc187 100644 --- a/docs/content/reference/types/components/rotation3d.md +++ b/docs/content/reference/types/components/rotation3d.md @@ -9,7 +9,7 @@ A 3D rotation, represented either by a quaternion or a rotation around axis. * repr: [`Rotation3D`](../datatypes/rotation3d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Rotation3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Rotation3D.html) * 🐍 [Python API docs for `Rotation3D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Rotation3D) * πŸ¦€ [Rust API docs for `Rotation3D`](https://docs.rs/rerun/latest/rerun/components/struct.Rotation3D.html) diff --git a/docs/content/reference/types/components/scalar.md b/docs/content/reference/types/components/scalar.md index eacd528277b4b..097e0c444d598 100644 --- a/docs/content/reference/types/components/scalar.md +++ b/docs/content/reference/types/components/scalar.md @@ -11,7 +11,7 @@ Used for time series plots. * value: `f64` -## Api reference links +## API reference links * 🌊 [C++ API docs for `Scalar`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Scalar.html) * 🐍 [Python API docs for `Scalar`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Scalar) * πŸ¦€ [Rust API docs for `Scalar`](https://docs.rs/rerun/latest/rerun/components/struct.Scalar.html) diff --git a/docs/content/reference/types/components/scalar_scattering.md b/docs/content/reference/types/components/scalar_scattering.md index e695abdac0325..4526ddcbd0efb 100644 --- a/docs/content/reference/types/components/scalar_scattering.md +++ b/docs/content/reference/types/components/scalar_scattering.md @@ -9,7 +9,7 @@ If true, a scalar will be shown as individual point in a scatter plot. * scattered: `bool` -## Api reference links +## API reference links * 🌊 [C++ API docs for `ScalarScattering`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1ScalarScattering.html) * 🐍 [Python API docs for `ScalarScattering`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.ScalarScattering) * πŸ¦€ [Rust API docs for `ScalarScattering`](https://docs.rs/rerun/latest/rerun/components/struct.ScalarScattering.html) diff --git a/docs/content/reference/types/components/stroke_width.md b/docs/content/reference/types/components/stroke_width.md index f093594fddcb2..f30bae39e1222 100644 --- a/docs/content/reference/types/components/stroke_width.md +++ b/docs/content/reference/types/components/stroke_width.md @@ -9,7 +9,7 @@ The width of a stroke specified in UI points. * width: `f32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `StrokeWidth`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1StrokeWidth.html) * 🐍 [Python API docs for `StrokeWidth`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.StrokeWidth) * πŸ¦€ [Rust API docs for `StrokeWidth`](https://docs.rs/rerun/latest/rerun/components/struct.StrokeWidth.html) diff --git a/docs/content/reference/types/components/tensor_data.md b/docs/content/reference/types/components/tensor_data.md index cacf4708311e3..4952e90ca6f38 100644 --- a/docs/content/reference/types/components/tensor_data.md +++ b/docs/content/reference/types/components/tensor_data.md @@ -21,7 +21,7 @@ the shape has to be the shape of the decoded image. * data: [`TensorData`](../datatypes/tensor_data.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `TensorData`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1TensorData.html) * 🐍 [Python API docs for `TensorData`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.TensorData) * πŸ¦€ [Rust API docs for `TensorData`](https://docs.rs/rerun/latest/rerun/components/struct.TensorData.html) diff --git a/docs/content/reference/types/components/texcoord2d.md b/docs/content/reference/types/components/texcoord2d.md index 0d7a1010c4956..697c070fbfca4 100644 --- a/docs/content/reference/types/components/texcoord2d.md +++ b/docs/content/reference/types/components/texcoord2d.md @@ -24,7 +24,7 @@ which places the origin at the bottom-left. * uv: [`Vec2D`](../datatypes/vec2d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Texcoord2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Texcoord2D.html) * 🐍 [Python API docs for `Texcoord2D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Texcoord2D) * πŸ¦€ [Rust API docs for `Texcoord2D`](https://docs.rs/rerun/latest/rerun/components/struct.Texcoord2D.html) diff --git a/docs/content/reference/types/components/text.md b/docs/content/reference/types/components/text.md index f58599ac8b52c..dda1000901ef3 100644 --- a/docs/content/reference/types/components/text.md +++ b/docs/content/reference/types/components/text.md @@ -9,7 +9,7 @@ A string of text, e.g. for labels and text documents. * value: [`Utf8`](../datatypes/utf8.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Text`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Text.html) * 🐍 [Python API docs for `Text`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Text) * πŸ¦€ [Rust API docs for `Text`](https://docs.rs/rerun/latest/rerun/components/struct.Text.html) diff --git a/docs/content/reference/types/components/text_log_level.md b/docs/content/reference/types/components/text_log_level.md index f5b88fa84eb96..1a3a5dfb9b098 100644 --- a/docs/content/reference/types/components/text_log_level.md +++ b/docs/content/reference/types/components/text_log_level.md @@ -17,7 +17,7 @@ Recommended to be one of: * value: [`Utf8`](../datatypes/utf8.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `TextLogLevel`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1TextLogLevel.html) * 🐍 [Python API docs for `TextLogLevel`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.TextLogLevel) * πŸ¦€ [Rust API docs for `TextLogLevel`](https://docs.rs/rerun/latest/rerun/components/struct.TextLogLevel.html) diff --git a/docs/content/reference/types/components/transform3d.md b/docs/content/reference/types/components/transform3d.md index 50f27c5b5743b..6106979ef2d1e 100644 --- a/docs/content/reference/types/components/transform3d.md +++ b/docs/content/reference/types/components/transform3d.md @@ -9,7 +9,7 @@ An affine transform between two 3D spaces, represented in a given direction. * repr: [`Transform3D`](../datatypes/transform3d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Transform3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Transform3D.html) * 🐍 [Python API docs for `Transform3D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Transform3D) * πŸ¦€ [Rust API docs for `Transform3D`](https://docs.rs/rerun/latest/rerun/components/struct.Transform3D.html) diff --git a/docs/content/reference/types/components/triangle_indices.md b/docs/content/reference/types/components/triangle_indices.md index 430343cc5f4fa..8e4dfbb05acee 100644 --- a/docs/content/reference/types/components/triangle_indices.md +++ b/docs/content/reference/types/components/triangle_indices.md @@ -9,7 +9,7 @@ The three indices of a triangle mesh. * indices: [`UVec3D`](../datatypes/uvec3d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `TriangleIndices`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1TriangleIndices.html?speculative-link) * 🐍 [Python API docs for `TriangleIndices`](https://ref.rerun.io/docs/python/stable/common/components?speculative-link#rerun.components.TriangleIndices) * πŸ¦€ [Rust API docs for `TriangleIndices`](https://docs.rs/rerun/latest/rerun/components/struct.TriangleIndices.html?speculative-link) diff --git a/docs/content/reference/types/components/vector2d.md b/docs/content/reference/types/components/vector2d.md index aee24277e6147..908a41f9ee76e 100644 --- a/docs/content/reference/types/components/vector2d.md +++ b/docs/content/reference/types/components/vector2d.md @@ -9,7 +9,7 @@ A vector in 2D space. * vector: [`Vec2D`](../datatypes/vec2d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Vector2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Vector2D.html) * 🐍 [Python API docs for `Vector2D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Vector2D) * πŸ¦€ [Rust API docs for `Vector2D`](https://docs.rs/rerun/latest/rerun/components/struct.Vector2D.html) diff --git a/docs/content/reference/types/components/vector3d.md b/docs/content/reference/types/components/vector3d.md index f6445aab562df..445244d974b3d 100644 --- a/docs/content/reference/types/components/vector3d.md +++ b/docs/content/reference/types/components/vector3d.md @@ -9,7 +9,7 @@ A vector in 3D space. * vector: [`Vec3D`](../datatypes/vec3d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Vector3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Vector3D.html) * 🐍 [Python API docs for `Vector3D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Vector3D) * πŸ¦€ [Rust API docs for `Vector3D`](https://docs.rs/rerun/latest/rerun/components/struct.Vector3D.html) diff --git a/docs/content/reference/types/components/view_coordinates.md b/docs/content/reference/types/components/view_coordinates.md index 5bcf0cd7479f1..899c57f65ce9b 100644 --- a/docs/content/reference/types/components/view_coordinates.md +++ b/docs/content/reference/types/components/view_coordinates.md @@ -24,7 +24,7 @@ The following constants are used to represent the different directions: * coordinates: 3x `u8` -## Api reference links +## API reference links * 🌊 [C++ API docs for `ViewCoordinates`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1ViewCoordinates.html) * 🐍 [Python API docs for `ViewCoordinates`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.ViewCoordinates) * πŸ¦€ [Rust API docs for `ViewCoordinates`](https://docs.rs/rerun/latest/rerun/components/struct.ViewCoordinates.html) diff --git a/docs/content/reference/types/components/visualizer_overrides.md b/docs/content/reference/types/components/visualizer_overrides.md index b6dc857500964..502991f00f127 100644 --- a/docs/content/reference/types/components/visualizer_overrides.md +++ b/docs/content/reference/types/components/visualizer_overrides.md @@ -9,7 +9,7 @@ The name of a visualizer. * value: list of `string` -## Api reference links +## API reference links * 🌊 [C++ API docs for `VisualizerOverrides`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1VisualizerOverrides.html) * 🐍 [Python API docs for `VisualizerOverrides`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.VisualizerOverrides) * πŸ¦€ [Rust API docs for `VisualizerOverrides`](https://docs.rs/rerun/latest/rerun/components/struct.VisualizerOverrides.html) diff --git a/docs/content/reference/types/datatypes/angle.md b/docs/content/reference/types/datatypes/angle.md index 647b16e5f1d35..3412502a5d433 100644 --- a/docs/content/reference/types/datatypes/angle.md +++ b/docs/content/reference/types/datatypes/angle.md @@ -10,7 +10,7 @@ Angle in either radians or degrees. * Radians: `f32` * Degrees: `f32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `Angle`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Angle.html) * 🐍 [Python API docs for `Angle`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Angle) * πŸ¦€ [Rust API docs for `Angle`](https://docs.rs/rerun/latest/rerun/datatypes/enum.Angle.html) diff --git a/docs/content/reference/types/datatypes/annotation_info.md b/docs/content/reference/types/datatypes/annotation_info.md index 9ec270159447b..cbe788d3fcb65 100644 --- a/docs/content/reference/types/datatypes/annotation_info.md +++ b/docs/content/reference/types/datatypes/annotation_info.md @@ -14,7 +14,7 @@ The id refers either to a class or key-point id * label: [`Utf8`](../datatypes/utf8.md) * color: [`Rgba32`](../datatypes/rgba32.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `AnnotationInfo`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1AnnotationInfo.html) * 🐍 [Python API docs for `AnnotationInfo`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.AnnotationInfo) * πŸ¦€ [Rust API docs for `AnnotationInfo`](https://docs.rs/rerun/latest/rerun/datatypes/struct.AnnotationInfo.html) diff --git a/docs/content/reference/types/datatypes/bool.md b/docs/content/reference/types/datatypes/bool.md index f2d2e38eaff91..44c7ca26af74d 100644 --- a/docs/content/reference/types/datatypes/bool.md +++ b/docs/content/reference/types/datatypes/bool.md @@ -9,7 +9,7 @@ A single boolean. * value: `bool` -## Api reference links +## API reference links * 🌊 [C++ API docs for `Bool`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Bool.html) * 🐍 [Python API docs for `Bool`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Bool) * πŸ¦€ [Rust API docs for `Bool`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Bool.html) diff --git a/docs/content/reference/types/datatypes/class_description.md b/docs/content/reference/types/datatypes/class_description.md index b8b4852e8f053..3b4a29360d239 100644 --- a/docs/content/reference/types/datatypes/class_description.md +++ b/docs/content/reference/types/datatypes/class_description.md @@ -24,7 +24,7 @@ colored as described by the class's `AnnotationInfo`. * keypoint_annotations: list of [`AnnotationInfo`](../datatypes/annotation_info.md) * keypoint_connections: list of [`KeypointPair`](../datatypes/keypoint_pair.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `ClassDescription`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1ClassDescription.html) * 🐍 [Python API docs for `ClassDescription`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.ClassDescription) * πŸ¦€ [Rust API docs for `ClassDescription`](https://docs.rs/rerun/latest/rerun/datatypes/struct.ClassDescription.html) diff --git a/docs/content/reference/types/datatypes/class_description_map_elem.md b/docs/content/reference/types/datatypes/class_description_map_elem.md index 7a6c959e8ea99..b91b42016f1ed 100644 --- a/docs/content/reference/types/datatypes/class_description_map_elem.md +++ b/docs/content/reference/types/datatypes/class_description_map_elem.md @@ -12,7 +12,7 @@ This is internal to the `AnnotationContext` structure. * class_id: [`ClassId`](../datatypes/class_id.md) * class_description: [`ClassDescription`](../datatypes/class_description.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `ClassDescriptionMapElem`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1ClassDescriptionMapElem.html) * 🐍 [Python API docs for `ClassDescriptionMapElem`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.ClassDescriptionMapElem) * πŸ¦€ [Rust API docs for `ClassDescriptionMapElem`](https://docs.rs/rerun/latest/rerun/datatypes/struct.ClassDescriptionMapElem.html) diff --git a/docs/content/reference/types/datatypes/class_id.md b/docs/content/reference/types/datatypes/class_id.md index 8a628db578469..bcd41d631c4a8 100644 --- a/docs/content/reference/types/datatypes/class_id.md +++ b/docs/content/reference/types/datatypes/class_id.md @@ -9,7 +9,7 @@ A 16-bit ID representing a type of semantic class. * id: `u16` -## Api reference links +## API reference links * 🌊 [C++ API docs for `ClassId`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1ClassId.html) * 🐍 [Python API docs for `ClassId`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.ClassId) * πŸ¦€ [Rust API docs for `ClassId`](https://docs.rs/rerun/latest/rerun/datatypes/struct.ClassId.html) diff --git a/docs/content/reference/types/datatypes/entity_path.md b/docs/content/reference/types/datatypes/entity_path.md index a858b94803635..a519dbcf3cc0d 100644 --- a/docs/content/reference/types/datatypes/entity_path.md +++ b/docs/content/reference/types/datatypes/entity_path.md @@ -9,7 +9,7 @@ A path to an entity in the `DataStore`. * path: `string` -## Api reference links +## API reference links * 🌊 [C++ API docs for `EntityPath`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1EntityPath.html) * 🐍 [Python API docs for `EntityPath`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.EntityPath) * πŸ¦€ [Rust API docs for `EntityPath`](https://docs.rs/rerun/latest/rerun/datatypes/struct.EntityPath.html) diff --git a/docs/content/reference/types/datatypes/float32.md b/docs/content/reference/types/datatypes/float32.md index a901c202ca827..e6e1c7b7228ce 100644 --- a/docs/content/reference/types/datatypes/float32.md +++ b/docs/content/reference/types/datatypes/float32.md @@ -9,7 +9,7 @@ A single-precision 32-bit IEEE 754 floating point number. * value: `f32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `Float32`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Float32.html) * 🐍 [Python API docs for `Float32`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Float32) * πŸ¦€ [Rust API docs for `Float32`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Float32.html) diff --git a/docs/content/reference/types/datatypes/keypoint_id.md b/docs/content/reference/types/datatypes/keypoint_id.md index e05e3b6a7beb9..6f86b03f8744d 100644 --- a/docs/content/reference/types/datatypes/keypoint_id.md +++ b/docs/content/reference/types/datatypes/keypoint_id.md @@ -9,7 +9,7 @@ A 16-bit ID representing a type of semantic keypoint within a class. * id: `u16` -## Api reference links +## API reference links * 🌊 [C++ API docs for `KeypointId`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1KeypointId.html) * 🐍 [Python API docs for `KeypointId`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.KeypointId) * πŸ¦€ [Rust API docs for `KeypointId`](https://docs.rs/rerun/latest/rerun/datatypes/struct.KeypointId.html) diff --git a/docs/content/reference/types/datatypes/keypoint_pair.md b/docs/content/reference/types/datatypes/keypoint_pair.md index 09eee06f870f7..c16360ec8969d 100644 --- a/docs/content/reference/types/datatypes/keypoint_pair.md +++ b/docs/content/reference/types/datatypes/keypoint_pair.md @@ -10,7 +10,7 @@ A connection between two `Keypoints`. * keypoint0: [`KeypointId`](../datatypes/keypoint_id.md) * keypoint1: [`KeypointId`](../datatypes/keypoint_id.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `KeypointPair`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1KeypointPair.html) * 🐍 [Python API docs for `KeypointPair`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.KeypointPair) * πŸ¦€ [Rust API docs for `KeypointPair`](https://docs.rs/rerun/latest/rerun/datatypes/struct.KeypointPair.html) diff --git a/docs/content/reference/types/datatypes/mat3x3.md b/docs/content/reference/types/datatypes/mat3x3.md index b6c50eaaf654e..f44430d379762 100644 --- a/docs/content/reference/types/datatypes/mat3x3.md +++ b/docs/content/reference/types/datatypes/mat3x3.md @@ -18,7 +18,7 @@ row 2 | flat_columns[2] flat_columns[5] flat_columns[8] * flat_columns: 9x `f32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `Mat3x3`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Mat3x3.html) * 🐍 [Python API docs for `Mat3x3`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Mat3x3) * πŸ¦€ [Rust API docs for `Mat3x3`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Mat3x3.html) diff --git a/docs/content/reference/types/datatypes/mat4x4.md b/docs/content/reference/types/datatypes/mat4x4.md index acdab3d4f5d44..e0f8ed161c03f 100644 --- a/docs/content/reference/types/datatypes/mat4x4.md +++ b/docs/content/reference/types/datatypes/mat4x4.md @@ -19,7 +19,7 @@ row 3 | flat_columns[3] flat_columns[7] flat_columns[11] flat_columns[15] * flat_columns: 16x `f32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `Mat4x4`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Mat4x4.html) * 🐍 [Python API docs for `Mat4x4`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Mat4x4) * πŸ¦€ [Rust API docs for `Mat4x4`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Mat4x4.html) diff --git a/docs/content/reference/types/datatypes/material.md b/docs/content/reference/types/datatypes/material.md index 49e155e41b0f4..9d6c487740f7b 100644 --- a/docs/content/reference/types/datatypes/material.md +++ b/docs/content/reference/types/datatypes/material.md @@ -9,7 +9,7 @@ Material properties of a mesh. * albedo_factor: [`Rgba32`](../datatypes/rgba32.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Material`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Material.html) * 🐍 [Python API docs for `Material`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Material) * πŸ¦€ [Rust API docs for `Material`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Material.html) diff --git a/docs/content/reference/types/datatypes/quaternion.md b/docs/content/reference/types/datatypes/quaternion.md index 1ba6ed3c658d2..6ecf202a3f45f 100644 --- a/docs/content/reference/types/datatypes/quaternion.md +++ b/docs/content/reference/types/datatypes/quaternion.md @@ -12,7 +12,7 @@ datastore as provided, when used in the Viewer Quaternions will always be normal * xyzw: 4x `f32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `Quaternion`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Quaternion.html) * 🐍 [Python API docs for `Quaternion`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Quaternion) * πŸ¦€ [Rust API docs for `Quaternion`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Quaternion.html) diff --git a/docs/content/reference/types/datatypes/range1d.md b/docs/content/reference/types/datatypes/range1d.md index 2931f1d0daddb..88fde39b408dc 100644 --- a/docs/content/reference/types/datatypes/range1d.md +++ b/docs/content/reference/types/datatypes/range1d.md @@ -9,7 +9,7 @@ A 1D range, specifying a lower and upper bound. * range: 2x `f64` -## Api reference links +## API reference links * 🌊 [C++ API docs for `Range1D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Range1D.html?speculative-link) * 🐍 [Python API docs for `Range1D`](https://ref.rerun.io/docs/python/stable/common/datatypes?speculative-link#rerun.datatypes.Range1D) * πŸ¦€ [Rust API docs for `Range1D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Range1D.html?speculative-link) diff --git a/docs/content/reference/types/datatypes/range2d.md b/docs/content/reference/types/datatypes/range2d.md index 09a0310168abe..d72c37639a21a 100644 --- a/docs/content/reference/types/datatypes/range2d.md +++ b/docs/content/reference/types/datatypes/range2d.md @@ -10,7 +10,7 @@ An Axis-Aligned Bounding Box in 2D space, implemented as the minimum and maximum * x_range: [`Range1D`](../datatypes/range1d.md) * y_range: [`Range1D`](../datatypes/range1d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Range2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Range2D.html?speculative-link) * 🐍 [Python API docs for `Range2D`](https://ref.rerun.io/docs/python/stable/common/datatypes?speculative-link#rerun.datatypes.Range2D) * πŸ¦€ [Rust API docs for `Range2D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Range2D.html?speculative-link) diff --git a/docs/content/reference/types/datatypes/rgba32.md b/docs/content/reference/types/datatypes/rgba32.md index 34670954caa3b..4084ae6b676d6 100644 --- a/docs/content/reference/types/datatypes/rgba32.md +++ b/docs/content/reference/types/datatypes/rgba32.md @@ -12,7 +12,7 @@ byte is `R` and the least significant byte is `A`. * rgba: `u32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `Rgba32`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Rgba32.html) * 🐍 [Python API docs for `Rgba32`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Rgba32) * πŸ¦€ [Rust API docs for `Rgba32`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Rgba32.html) diff --git a/docs/content/reference/types/datatypes/rotation3d.md b/docs/content/reference/types/datatypes/rotation3d.md index 8ce3cd631cd44..9da0ea2e07081 100644 --- a/docs/content/reference/types/datatypes/rotation3d.md +++ b/docs/content/reference/types/datatypes/rotation3d.md @@ -10,7 +10,7 @@ A 3D rotation. * Quaternion: [`Quaternion`](../datatypes/quaternion.md) * AxisAngle: [`RotationAxisAngle`](../datatypes/rotation_axis_angle.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Rotation3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Rotation3D.html) * 🐍 [Python API docs for `Rotation3D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Rotation3D) * πŸ¦€ [Rust API docs for `Rotation3D`](https://docs.rs/rerun/latest/rerun/datatypes/enum.Rotation3D.html) diff --git a/docs/content/reference/types/datatypes/rotation_axis_angle.md b/docs/content/reference/types/datatypes/rotation_axis_angle.md index d4fad6a093c24..ca1b80b14c5e0 100644 --- a/docs/content/reference/types/datatypes/rotation_axis_angle.md +++ b/docs/content/reference/types/datatypes/rotation_axis_angle.md @@ -10,7 +10,7 @@ title: "RotationAxisAngle" * axis: [`Vec3D`](../datatypes/vec3d.md) * angle: [`Angle`](../datatypes/angle.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `RotationAxisAngle`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1RotationAxisAngle.html) * 🐍 [Python API docs for `RotationAxisAngle`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.RotationAxisAngle) * πŸ¦€ [Rust API docs for `RotationAxisAngle`](https://docs.rs/rerun/latest/rerun/datatypes/struct.RotationAxisAngle.html) diff --git a/docs/content/reference/types/datatypes/scale3d.md b/docs/content/reference/types/datatypes/scale3d.md index fdb2abf8b1534..7304137b4232e 100644 --- a/docs/content/reference/types/datatypes/scale3d.md +++ b/docs/content/reference/types/datatypes/scale3d.md @@ -10,7 +10,7 @@ title: "Scale3D" * ThreeD: [`Vec3D`](../datatypes/vec3d.md) * Uniform: `f32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `Scale3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Scale3D.html) * 🐍 [Python API docs for `Scale3D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Scale3D) * πŸ¦€ [Rust API docs for `Scale3D`](https://docs.rs/rerun/latest/rerun/datatypes/enum.Scale3D.html) diff --git a/docs/content/reference/types/datatypes/tensor_buffer.md b/docs/content/reference/types/datatypes/tensor_buffer.md index 3f1c5cdaa21ef..d976e4b6aff5c 100644 --- a/docs/content/reference/types/datatypes/tensor_buffer.md +++ b/docs/content/reference/types/datatypes/tensor_buffer.md @@ -24,7 +24,7 @@ Tensor elements are stored in a contiguous buffer of a single type. * NV12: list of `u8` * YUY2: list of `u8` -## Api reference links +## API reference links * 🌊 [C++ API docs for `TensorBuffer`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TensorBuffer.html) * 🐍 [Python API docs for `TensorBuffer`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.TensorBuffer) * πŸ¦€ [Rust API docs for `TensorBuffer`](https://docs.rs/rerun/latest/rerun/datatypes/enum.TensorBuffer.html) diff --git a/docs/content/reference/types/datatypes/tensor_data.md b/docs/content/reference/types/datatypes/tensor_data.md index 2f9307b3ebbc0..b5dc2bd1338ad 100644 --- a/docs/content/reference/types/datatypes/tensor_data.md +++ b/docs/content/reference/types/datatypes/tensor_data.md @@ -22,7 +22,7 @@ the shape has to be the shape of the decoded image. * shape: list of [`TensorDimension`](../datatypes/tensor_dimension.md) * buffer: [`TensorBuffer`](../datatypes/tensor_buffer.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `TensorData`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TensorData.html) * 🐍 [Python API docs for `TensorData`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.TensorData) * πŸ¦€ [Rust API docs for `TensorData`](https://docs.rs/rerun/latest/rerun/datatypes/struct.TensorData.html) diff --git a/docs/content/reference/types/datatypes/tensor_dimension.md b/docs/content/reference/types/datatypes/tensor_dimension.md index 45ccd6fc8a9d4..30d3ddd1d250a 100644 --- a/docs/content/reference/types/datatypes/tensor_dimension.md +++ b/docs/content/reference/types/datatypes/tensor_dimension.md @@ -10,7 +10,7 @@ A single dimension within a multi-dimensional tensor. * size: `u64` * name: `string` -## Api reference links +## API reference links * 🌊 [C++ API docs for `TensorDimension`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TensorDimension.html) * 🐍 [Python API docs for `TensorDimension`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.TensorDimension) * πŸ¦€ [Rust API docs for `TensorDimension`](https://docs.rs/rerun/latest/rerun/datatypes/struct.TensorDimension.html) diff --git a/docs/content/reference/types/datatypes/time_int.md b/docs/content/reference/types/datatypes/time_int.md index c5116424b8b35..993a30d3d05ba 100644 --- a/docs/content/reference/types/datatypes/time_int.md +++ b/docs/content/reference/types/datatypes/time_int.md @@ -9,7 +9,7 @@ A 64-bit number describing either nanoseconds OR sequence numbers. * value: `i64` -## Api reference links +## API reference links * 🌊 [C++ API docs for `TimeInt`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TimeInt.html) * 🐍 [Python API docs for `TimeInt`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.TimeInt) * πŸ¦€ [Rust API docs for `TimeInt`](https://docs.rs/rerun/latest/rerun/datatypes/struct.TimeInt.html) diff --git a/docs/content/reference/types/datatypes/time_range.md b/docs/content/reference/types/datatypes/time_range.md index ea7d265626c2f..001953ae87f1d 100644 --- a/docs/content/reference/types/datatypes/time_range.md +++ b/docs/content/reference/types/datatypes/time_range.md @@ -10,7 +10,7 @@ Visible time range bounds for a specific timeline. * start: [`TimeRangeBoundary`](../datatypes/time_range_boundary.md) * end: [`TimeRangeBoundary`](../datatypes/time_range_boundary.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `TimeRange`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TimeRange.html?speculative-link) * 🐍 [Python API docs for `TimeRange`](https://ref.rerun.io/docs/python/stable/common/datatypes?speculative-link#rerun.datatypes.TimeRange) * πŸ¦€ [Rust API docs for `TimeRange`](https://docs.rs/rerun/latest/rerun/datatypes/struct.TimeRange.html?speculative-link) diff --git a/docs/content/reference/types/datatypes/time_range_boundary.md b/docs/content/reference/types/datatypes/time_range_boundary.md index 77054f31c71ee..1d66d112e7997 100644 --- a/docs/content/reference/types/datatypes/time_range_boundary.md +++ b/docs/content/reference/types/datatypes/time_range_boundary.md @@ -11,7 +11,7 @@ Left or right boundary of a time range. * Absolute: [`TimeInt`](../datatypes/time_int.md) * Infinite -## Api reference links +## API reference links * 🌊 [C++ API docs for `TimeRangeBoundary`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TimeRangeBoundary.html?speculative-link) * 🐍 [Python API docs for `TimeRangeBoundary`](https://ref.rerun.io/docs/python/stable/common/datatypes?speculative-link#rerun.datatypes.TimeRangeBoundary) * πŸ¦€ [Rust API docs for `TimeRangeBoundary`](https://docs.rs/rerun/latest/rerun/datatypes/enum.TimeRangeBoundary.html?speculative-link) diff --git a/docs/content/reference/types/datatypes/transform3d.md b/docs/content/reference/types/datatypes/transform3d.md index 4f2c325963dbb..f57af30f59781 100644 --- a/docs/content/reference/types/datatypes/transform3d.md +++ b/docs/content/reference/types/datatypes/transform3d.md @@ -10,7 +10,7 @@ Representation of a 3D affine transform. * TranslationAndMat3x3: [`TranslationAndMat3x3`](../datatypes/translation_and_mat3x3.md) * TranslationRotationScale: [`TranslationRotationScale3D`](../datatypes/translation_rotation_scale3d.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `Transform3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Transform3D.html) * 🐍 [Python API docs for `Transform3D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Transform3D) * πŸ¦€ [Rust API docs for `Transform3D`](https://docs.rs/rerun/latest/rerun/datatypes/enum.Transform3D.html) diff --git a/docs/content/reference/types/datatypes/translation_and_mat3x3.md b/docs/content/reference/types/datatypes/translation_and_mat3x3.md index d20c636dcd8b7..2b1a85bb33dc1 100644 --- a/docs/content/reference/types/datatypes/translation_and_mat3x3.md +++ b/docs/content/reference/types/datatypes/translation_and_mat3x3.md @@ -13,7 +13,7 @@ First applies the matrix, then the translation. * mat3x3: [`Mat3x3`](../datatypes/mat3x3.md) * from_parent: `bool` -## Api reference links +## API reference links * 🌊 [C++ API docs for `TranslationAndMat3x3`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TranslationAndMat3x3.html) * 🐍 [Python API docs for `TranslationAndMat3x3`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.TranslationAndMat3x3) * πŸ¦€ [Rust API docs for `TranslationAndMat3x3`](https://docs.rs/rerun/latest/rerun/datatypes/struct.TranslationAndMat3x3.html) diff --git a/docs/content/reference/types/datatypes/translation_rotation_scale3d.md b/docs/content/reference/types/datatypes/translation_rotation_scale3d.md index eba5e091d906c..88105c886f3e3 100644 --- a/docs/content/reference/types/datatypes/translation_rotation_scale3d.md +++ b/docs/content/reference/types/datatypes/translation_rotation_scale3d.md @@ -12,7 +12,7 @@ Representation of an affine transform via separate translation, rotation & scale * scale: [`Scale3D`](../datatypes/scale3d.md) * from_parent: `bool` -## Api reference links +## API reference links * 🌊 [C++ API docs for `TranslationRotationScale3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TranslationRotationScale3D.html) * 🐍 [Python API docs for `TranslationRotationScale3D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.TranslationRotationScale3D) * πŸ¦€ [Rust API docs for `TranslationRotationScale3D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.TranslationRotationScale3D.html) diff --git a/docs/content/reference/types/datatypes/uint32.md b/docs/content/reference/types/datatypes/uint32.md index 855d772c3439c..b319eb3cf62e5 100644 --- a/docs/content/reference/types/datatypes/uint32.md +++ b/docs/content/reference/types/datatypes/uint32.md @@ -9,7 +9,7 @@ A 32bit unsigned integer. * value: `u32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `UInt32`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1UInt32.html) * 🐍 [Python API docs for `UInt32`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.UInt32) * πŸ¦€ [Rust API docs for `UInt32`](https://docs.rs/rerun/latest/rerun/datatypes/struct.UInt32.html) diff --git a/docs/content/reference/types/datatypes/uint64.md b/docs/content/reference/types/datatypes/uint64.md index 2651956b8f44c..e5394955e1b80 100644 --- a/docs/content/reference/types/datatypes/uint64.md +++ b/docs/content/reference/types/datatypes/uint64.md @@ -9,7 +9,7 @@ A 64bit unsigned integer. * value: `u64` -## Api reference links +## API reference links * 🌊 [C++ API docs for `UInt64`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1UInt64.html) * 🐍 [Python API docs for `UInt64`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.UInt64) * πŸ¦€ [Rust API docs for `UInt64`](https://docs.rs/rerun/latest/rerun/datatypes/struct.UInt64.html) diff --git a/docs/content/reference/types/datatypes/utf8.md b/docs/content/reference/types/datatypes/utf8.md index ef1896fd32e87..a4ff80b923960 100644 --- a/docs/content/reference/types/datatypes/utf8.md +++ b/docs/content/reference/types/datatypes/utf8.md @@ -9,7 +9,7 @@ A string of text, encoded as UTF-8. * value: `string` -## Api reference links +## API reference links * 🌊 [C++ API docs for `Utf8`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Utf8.html) * 🐍 [Python API docs for `Utf8`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Utf8) * πŸ¦€ [Rust API docs for `Utf8`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Utf8.html) diff --git a/docs/content/reference/types/datatypes/uuid.md b/docs/content/reference/types/datatypes/uuid.md index 604cbd898b204..63229526687b9 100644 --- a/docs/content/reference/types/datatypes/uuid.md +++ b/docs/content/reference/types/datatypes/uuid.md @@ -9,7 +9,7 @@ A 16-byte UUID. * bytes: 16x `u8` -## Api reference links +## API reference links * 🌊 [C++ API docs for `Uuid`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Uuid.html) * 🐍 [Python API docs for `Uuid`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Uuid) * πŸ¦€ [Rust API docs for `Uuid`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Uuid.html) diff --git a/docs/content/reference/types/datatypes/uvec2d.md b/docs/content/reference/types/datatypes/uvec2d.md index 10dafc71f8b0e..cd06607667ee8 100644 --- a/docs/content/reference/types/datatypes/uvec2d.md +++ b/docs/content/reference/types/datatypes/uvec2d.md @@ -9,7 +9,7 @@ A uint32 vector in 2D space. * xy: 2x `u32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `UVec2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1UVec2D.html) * 🐍 [Python API docs for `UVec2D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.UVec2D) * πŸ¦€ [Rust API docs for `UVec2D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.UVec2D.html) diff --git a/docs/content/reference/types/datatypes/uvec3d.md b/docs/content/reference/types/datatypes/uvec3d.md index dd0b9789a5a54..2d6664faf4cc0 100644 --- a/docs/content/reference/types/datatypes/uvec3d.md +++ b/docs/content/reference/types/datatypes/uvec3d.md @@ -9,7 +9,7 @@ A uint32 vector in 3D space. * xyz: 3x `u32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `UVec3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1UVec3D.html) * 🐍 [Python API docs for `UVec3D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.UVec3D) * πŸ¦€ [Rust API docs for `UVec3D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.UVec3D.html) diff --git a/docs/content/reference/types/datatypes/uvec4d.md b/docs/content/reference/types/datatypes/uvec4d.md index 2b6522ea2faa7..f8a4c7ac59010 100644 --- a/docs/content/reference/types/datatypes/uvec4d.md +++ b/docs/content/reference/types/datatypes/uvec4d.md @@ -9,7 +9,7 @@ A uint vector in 4D space. * xyzw: 4x `u32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `UVec4D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1UVec4D.html) * 🐍 [Python API docs for `UVec4D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.UVec4D) * πŸ¦€ [Rust API docs for `UVec4D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.UVec4D.html) diff --git a/docs/content/reference/types/datatypes/vec2d.md b/docs/content/reference/types/datatypes/vec2d.md index a50b778904242..165d5954c0fb4 100644 --- a/docs/content/reference/types/datatypes/vec2d.md +++ b/docs/content/reference/types/datatypes/vec2d.md @@ -9,7 +9,7 @@ A vector in 2D space. * xy: 2x `f32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `Vec2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Vec2D.html) * 🐍 [Python API docs for `Vec2D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Vec2D) * πŸ¦€ [Rust API docs for `Vec2D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Vec2D.html) diff --git a/docs/content/reference/types/datatypes/vec3d.md b/docs/content/reference/types/datatypes/vec3d.md index 2b7ae8f316d16..74de681c5b2c4 100644 --- a/docs/content/reference/types/datatypes/vec3d.md +++ b/docs/content/reference/types/datatypes/vec3d.md @@ -9,7 +9,7 @@ A vector in 3D space. * xyz: 3x `f32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `Vec3D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Vec3D.html) * 🐍 [Python API docs for `Vec3D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Vec3D) * πŸ¦€ [Rust API docs for `Vec3D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Vec3D.html) diff --git a/docs/content/reference/types/datatypes/vec4d.md b/docs/content/reference/types/datatypes/vec4d.md index 8492adc6fe26c..5025b9bd90693 100644 --- a/docs/content/reference/types/datatypes/vec4d.md +++ b/docs/content/reference/types/datatypes/vec4d.md @@ -9,7 +9,7 @@ A vector in 4D space. * xyzw: 4x `f32` -## Api reference links +## API reference links * 🌊 [C++ API docs for `Vec4D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Vec4D.html) * 🐍 [Python API docs for `Vec4D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Vec4D) * πŸ¦€ [Rust API docs for `Vec4D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Vec4D.html) diff --git a/docs/content/reference/types/datatypes/visible_time_range.md b/docs/content/reference/types/datatypes/visible_time_range.md index ae0122438f447..b57344fe7345b 100644 --- a/docs/content/reference/types/datatypes/visible_time_range.md +++ b/docs/content/reference/types/datatypes/visible_time_range.md @@ -10,7 +10,7 @@ Visible time range bounds for a specific timeline. * timeline: [`Utf8`](../datatypes/utf8.md) * range: [`TimeRange`](../datatypes/time_range.md) -## Api reference links +## API reference links * 🌊 [C++ API docs for `VisibleTimeRange`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1VisibleTimeRange.html?speculative-link) * 🐍 [Python API docs for `VisibleTimeRange`](https://ref.rerun.io/docs/python/stable/common/datatypes?speculative-link#rerun.datatypes.VisibleTimeRange) * πŸ¦€ [Rust API docs for `VisibleTimeRange`](https://docs.rs/rerun/latest/rerun/datatypes/struct.VisibleTimeRange.html?speculative-link) diff --git a/docs/content/reference/types/views/bar_chart_view.md b/docs/content/reference/types/views/bar_chart_view.md index 51171f094174c..deff17a95c12b 100644 --- a/docs/content/reference/types/views/bar_chart_view.md +++ b/docs/content/reference/types/views/bar_chart_view.md @@ -6,7 +6,7 @@ title: "BarChartView" A bar chart view. -## Api reference links +## API reference links * 🐍 [Python API docs for `BarChartView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.BarChartView) ## Example diff --git a/docs/content/reference/types/views/spatial2d_view.md b/docs/content/reference/types/views/spatial2d_view.md index 463ef2947b3a2..56286fc32bfef 100644 --- a/docs/content/reference/types/views/spatial2d_view.md +++ b/docs/content/reference/types/views/spatial2d_view.md @@ -23,7 +23,7 @@ Configures which range on each timeline is shown by this view (unless specified If not specified, the default is to show the latest state of each component. If a timeline is specified more than once, the first entry will be used. -## Api reference links +## API reference links * 🐍 [Python API docs for `Spatial2DView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.Spatial2DView) ## Example diff --git a/docs/content/reference/types/views/spatial3d_view.md b/docs/content/reference/types/views/spatial3d_view.md index 637b01099b996..347c247b3ca27 100644 --- a/docs/content/reference/types/views/spatial3d_view.md +++ b/docs/content/reference/types/views/spatial3d_view.md @@ -18,7 +18,7 @@ Configures which range on each timeline is shown by this view (unless specified If not specified, the default is to show the latest state of each component. If a timeline is specified more than once, the first entry will be used. -## Api reference links +## API reference links * 🐍 [Python API docs for `Spatial3DView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.Spatial3DView) ## Example diff --git a/docs/content/reference/types/views/tensor_view.md b/docs/content/reference/types/views/tensor_view.md index 4bfea438bbfc2..1bb329bd85c3f 100644 --- a/docs/content/reference/types/views/tensor_view.md +++ b/docs/content/reference/types/views/tensor_view.md @@ -6,7 +6,7 @@ title: "TensorView" A tensor view. -## Api reference links +## API reference links * 🐍 [Python API docs for `TensorView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.TensorView) ## Example diff --git a/docs/content/reference/types/views/text_document_view.md b/docs/content/reference/types/views/text_document_view.md index fca3005d059e6..f4fe3d92105b8 100644 --- a/docs/content/reference/types/views/text_document_view.md +++ b/docs/content/reference/types/views/text_document_view.md @@ -6,7 +6,7 @@ title: "TextDocumentView" A text document view. -## Api reference links +## API reference links * 🐍 [Python API docs for `TextDocumentView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.TextDocumentView) ## Example diff --git a/docs/content/reference/types/views/text_log_view.md b/docs/content/reference/types/views/text_log_view.md index d16dced194bb6..da2c829b76e01 100644 --- a/docs/content/reference/types/views/text_log_view.md +++ b/docs/content/reference/types/views/text_log_view.md @@ -6,7 +6,7 @@ title: "TextLogView" A text log view. -## Api reference links +## API reference links * 🐍 [Python API docs for `TextLogView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.TextLogView) ## Example diff --git a/docs/content/reference/types/views/time_series_view.md b/docs/content/reference/types/views/time_series_view.md index 186ccb312aba8..ee72f847aede4 100644 --- a/docs/content/reference/types/views/time_series_view.md +++ b/docs/content/reference/types/views/time_series_view.md @@ -23,7 +23,7 @@ Configures which range on each timeline is shown by this view (unless specified If not specified, the default is to show the entire timeline. If a timeline is specified more than once, the first entry will be used. -## Api reference links +## API reference links * 🐍 [Python API docs for `TimeSeriesView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.TimeSeriesView) ## Example From 77e15a2aa787bd3fc65df6414a82b26718fd7f42 Mon Sep 17 00:00:00 2001 From: Antoine Beyeler <49431240+abey79@users.noreply.github.com> Date: Wed, 15 May 2024 11:04:16 +0200 Subject: [PATCH 09/40] Fix broken drag and drop (#6329) ### What Fix drag and drop which was broken by #6305. Rather ugly patch, but legacy list item will be removed altogether very soon. ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/{{pr.number}}?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/{{pr.number}}?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/{{pr.number}}) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- crates/re_ui/src/list_item.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/crates/re_ui/src/list_item.rs b/crates/re_ui/src/list_item.rs index 407556ee6e06a..fa3d4c713753a 100644 --- a/crates/re_ui/src/list_item.rs +++ b/crates/re_ui/src/list_item.rs @@ -440,12 +440,15 @@ impl<'a> ListItem<'a> { let bg_rect = egui::Rect::from_x_y_ranges(crate::full_span::get_full_span(ui), rect.y_range()); - // we want to be able to select/hover the item across its full span, so we sense that and - // update the response accordingly. + // we want to be able to select/hover/drag the item across its full span, so we sense that + // and update the response accordingly. let full_span_response = ui.interact(bg_rect, response.id.with("full_span_check"), sense); response.clicked = full_span_response.clicked; response.contains_pointer = full_span_response.contains_pointer; response.hovered = full_span_response.hovered; + response.drag_started = full_span_response.drag_started; + response.dragged = full_span_response.dragged; + response.drag_stopped = full_span_response.drag_stopped; // override_hover should not affect the returned response let mut style_response = response.clone(); From bf84f3c5cbe3cb502b9e12aebe873b52ef540d04 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Wed, 15 May 2024 11:05:07 +0200 Subject: [PATCH 10/40] Set a minimum version of pillow in `rerun_py/pyproject.toml` (#6327) ### What A user reported that ``` py rr.log("foo", rr.Image(img).compress(jpeg_quality=95)) ``` caused this warning: > RerunWarning: Image compression: TypeError(open() got an unexpected keyword argument 'formats') I suspect this line: https://github.com/rerun-io/rerun/blob/3805781ee53dec571bfef0b0c44d95e61fc690ca/rerun_py/rerun_sdk/rerun/_image.py#L203 Which indicate a version mismatch of pillow. ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [ ] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6327?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6327?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6327) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- examples/python/raw_mesh/pyproject.toml | 8 +- pixi.lock | 4346 ++++++++++++----------- rerun_py/pyproject.toml | 2 +- 3 files changed, 2183 insertions(+), 2173 deletions(-) diff --git a/examples/python/raw_mesh/pyproject.toml b/examples/python/raw_mesh/pyproject.toml index 58e852e0ea8b6..45bdb106c5eae 100644 --- a/examples/python/raw_mesh/pyproject.toml +++ b/examples/python/raw_mesh/pyproject.toml @@ -2,13 +2,7 @@ name = "raw_mesh" version = "0.1.0" readme = "README.md" -dependencies = [ - "numpy", - "requests>=2.31,<3", - "rerun-sdk", - "trimesh==3.15.2", - "pillow", -] +dependencies = ["numpy", "requests>=2.31,<3", "rerun-sdk", "trimesh==3.15.2"] [project.scripts] raw_mesh = "raw_mesh.__main__:main" diff --git a/pixi.lock b/pixi.lock index f22f4891948ce..30182f6e7c8b0 100644 --- a/pixi.lock +++ b/pixi.lock @@ -1881,7 +1881,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/d4/22c2909b5a0b36e69471e699d673c2985f7691ca29870798a29e0a3d0e2b/peewee-3.17.5.tar.gz - pypi: https://files.pythonhosted.org/packages/81/ff/ad3c942d865f9e45ce84eeb31795e6d4d94e1f1eea51026d5154028510d7/pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/b0/15/1691fa5aaddc0c4ea4901c26f6137c29d5f6673596fe960a0340e8c308e1/platformdirs-4.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/68/13/2aa1f0e1364feb2c9ef45302f387ac0bd81484e9c9a4c5688a322fbdfd08/platformdirs-4.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/14/619e24a4c70df2901e1f4dbc50a6291eb63a759172558df326347dce1f0d/protobuf-3.20.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c5/4f/0e22aaa246f96d6ac87fe5ebb9c5a693fbe8877f537a1022527c47ca43c5/psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl @@ -1889,7 +1889,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/30/93/4d02ac696f16a2ad8fff0e78be28ab4ec0b990d2b3569fe07e27a258cb02/pyglet-2.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/38/d7/0b8e35cb3ff69dd981e358e72e0a5632f847d4bd61876be04518cb4e075a/pygltflib-1.16.2.tar.gz - pypi: https://files.pythonhosted.org/packages/bf/06/18c0e17eb245b7caeb861f2ff747adb0575500183b6ec4282d5350d29e9f/pynndescent-0.5.12-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ce/33/ef0e3b40a3f4cbfcfb93511652673fb19d07bafac0611f01f6237d1978ed/PyOpenGL-3.1.0.zip + - pypi: https://files.pythonhosted.org/packages/9c/1d/4544708aaa89f26c97cc09450bb333a23724a320923e74d73e028b3560f9/PyOpenGL-3.1.0.tar.gz - pypi: https://files.pythonhosted.org/packages/a8/26/b67fe94cb53c489c5ccaed118f257a5100e7775071515942c9f45d8cd40f/pyopf-1.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9d/ea/6d76df31432a0e6fdf81681a895f009a4bb47b3c39036db3e1b528191d52/pyparsing-3.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/88/174c28b9d3d03cf6d8edb6f637458f30f1cf1a2bd7a617cbd9dadb1740f6/pyrender-0.1.45-py3-none-any.whl @@ -2040,7 +2040,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/d4/22c2909b5a0b36e69471e699d673c2985f7691ca29870798a29e0a3d0e2b/peewee-3.17.5.tar.gz - pypi: https://files.pythonhosted.org/packages/e5/51/e4b35e394b4e5ca24983e50361a1db3d7da05b1758074f9c4f5b4be4b22a/pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/b0/15/1691fa5aaddc0c4ea4901c26f6137c29d5f6673596fe960a0340e8c308e1/platformdirs-4.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/68/13/2aa1f0e1364feb2c9ef45302f387ac0bd81484e9c9a4c5688a322fbdfd08/platformdirs-4.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/14/619e24a4c70df2901e1f4dbc50a6291eb63a759172558df326347dce1f0d/protobuf-3.20.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/e3/07ae864a636d70a8a6f58da27cb1179192f1140d5d1da10886ade9405797/psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl @@ -2048,7 +2048,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/30/93/4d02ac696f16a2ad8fff0e78be28ab4ec0b990d2b3569fe07e27a258cb02/pyglet-2.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/38/d7/0b8e35cb3ff69dd981e358e72e0a5632f847d4bd61876be04518cb4e075a/pygltflib-1.16.2.tar.gz - pypi: https://files.pythonhosted.org/packages/bf/06/18c0e17eb245b7caeb861f2ff747adb0575500183b6ec4282d5350d29e9f/pynndescent-0.5.12-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ce/33/ef0e3b40a3f4cbfcfb93511652673fb19d07bafac0611f01f6237d1978ed/PyOpenGL-3.1.0.zip + - pypi: https://files.pythonhosted.org/packages/9c/1d/4544708aaa89f26c97cc09450bb333a23724a320923e74d73e028b3560f9/PyOpenGL-3.1.0.tar.gz - pypi: https://files.pythonhosted.org/packages/a8/26/b67fe94cb53c489c5ccaed118f257a5100e7775071515942c9f45d8cd40f/pyopf-1.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9d/ea/6d76df31432a0e6fdf81681a895f009a4bb47b3c39036db3e1b528191d52/pyparsing-3.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/88/174c28b9d3d03cf6d8edb6f637458f30f1cf1a2bd7a617cbd9dadb1740f6/pyrender-0.1.45-py3-none-any.whl @@ -2198,7 +2198,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/d4/22c2909b5a0b36e69471e699d673c2985f7691ca29870798a29e0a3d0e2b/peewee-3.17.5.tar.gz - pypi: https://files.pythonhosted.org/packages/00/5c/7633f291def20082bad31b844fe5ed07742aae8504e4cfe2f331ee727178/pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/b0/15/1691fa5aaddc0c4ea4901c26f6137c29d5f6673596fe960a0340e8c308e1/platformdirs-4.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/68/13/2aa1f0e1364feb2c9ef45302f387ac0bd81484e9c9a4c5688a322fbdfd08/platformdirs-4.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/14/619e24a4c70df2901e1f4dbc50a6291eb63a759172558df326347dce1f0d/protobuf-3.20.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/05/33/2d74d588408caedd065c2497bdb5ef83ce6082db01289a1e1147f6639802/psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl @@ -2206,7 +2206,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/30/93/4d02ac696f16a2ad8fff0e78be28ab4ec0b990d2b3569fe07e27a258cb02/pyglet-2.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/38/d7/0b8e35cb3ff69dd981e358e72e0a5632f847d4bd61876be04518cb4e075a/pygltflib-1.16.2.tar.gz - pypi: https://files.pythonhosted.org/packages/bf/06/18c0e17eb245b7caeb861f2ff747adb0575500183b6ec4282d5350d29e9f/pynndescent-0.5.12-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ce/33/ef0e3b40a3f4cbfcfb93511652673fb19d07bafac0611f01f6237d1978ed/PyOpenGL-3.1.0.zip + - pypi: https://files.pythonhosted.org/packages/9c/1d/4544708aaa89f26c97cc09450bb333a23724a320923e74d73e028b3560f9/PyOpenGL-3.1.0.tar.gz - pypi: https://files.pythonhosted.org/packages/a8/26/b67fe94cb53c489c5ccaed118f257a5100e7775071515942c9f45d8cd40f/pyopf-1.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9d/ea/6d76df31432a0e6fdf81681a895f009a4bb47b3c39036db3e1b528191d52/pyparsing-3.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/88/174c28b9d3d03cf6d8edb6f637458f30f1cf1a2bd7a617cbd9dadb1740f6/pyrender-0.1.45-py3-none-any.whl @@ -2368,7 +2368,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/d4/22c2909b5a0b36e69471e699d673c2985f7691ca29870798a29e0a3d0e2b/peewee-3.17.5.tar.gz - pypi: https://files.pythonhosted.org/packages/0a/16/c83877524c47976f16703d2e05c363244bc1e60ab439e078b3cd046d07db/pillow-10.3.0-cp311-cp311-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/b0/15/1691fa5aaddc0c4ea4901c26f6137c29d5f6673596fe960a0340e8c308e1/platformdirs-4.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/68/13/2aa1f0e1364feb2c9ef45302f387ac0bd81484e9c9a4c5688a322fbdfd08/platformdirs-4.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8d/14/619e24a4c70df2901e1f4dbc50a6291eb63a759172558df326347dce1f0d/protobuf-3.20.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/93/52/3e39d26feae7df0aa0fd510b14012c3678b36ed068f7d78b8d8784d61f0e/psutil-5.9.8-cp37-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl @@ -2376,7 +2376,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/30/93/4d02ac696f16a2ad8fff0e78be28ab4ec0b990d2b3569fe07e27a258cb02/pyglet-2.0.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/38/d7/0b8e35cb3ff69dd981e358e72e0a5632f847d4bd61876be04518cb4e075a/pygltflib-1.16.2.tar.gz - pypi: https://files.pythonhosted.org/packages/bf/06/18c0e17eb245b7caeb861f2ff747adb0575500183b6ec4282d5350d29e9f/pynndescent-0.5.12-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ce/33/ef0e3b40a3f4cbfcfb93511652673fb19d07bafac0611f01f6237d1978ed/PyOpenGL-3.1.0.zip + - pypi: https://files.pythonhosted.org/packages/9c/1d/4544708aaa89f26c97cc09450bb333a23724a320923e74d73e028b3560f9/PyOpenGL-3.1.0.tar.gz - pypi: https://files.pythonhosted.org/packages/a8/26/b67fe94cb53c489c5ccaed118f257a5100e7775071515942c9f45d8cd40f/pyopf-1.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9d/ea/6d76df31432a0e6fdf81681a895f009a4bb47b3c39036db3e1b528191d52/pyparsing-3.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/28/88/174c28b9d3d03cf6d8edb6f637458f30f1cf1a2bd7a617cbd9dadb1740f6/pyrender-0.1.45-py3-none-any.whl @@ -3407,25 +3407,25 @@ packages: url: https://files.pythonhosted.org/packages/e9/bb/1edd2c836071e91d2bd331b9542bbd592e23d1474645b9c6fd56232caace/accelerate-0.30.1-py3-none-any.whl sha256: 8dd4edd532a4dac72558c5fe6fe8cb70d0c8ec9e8733f48db97d51ee41cbe763 requires_dist: - - numpy >=1.17 - - packaging >=20.0 + - numpy>=1.17 + - packaging>=20.0 - psutil - pyyaml - - torch >=1.10.0 + - torch>=1.10.0 - huggingface-hub - - safetensors >=0.3.1 - - deepspeed <=0.14.0 ; extra == 'deepspeed' - - black ~=23.1 ; extra == 'dev' - - hf-doc-builder >=0.3.0 ; extra == 'dev' - - ruff ~=0.2.1 ; extra == 'dev' - - pytest <=8.0.0, >=7.2.0 ; extra == 'dev' + - safetensors>=0.3.1 + - deepspeed<=0.14.0 ; extra == 'deepspeed' + - black~=23.1 ; extra == 'dev' + - hf-doc-builder>=0.3.0 ; extra == 'dev' + - ruff~=0.2.1 ; extra == 'dev' + - pytest<=8.0.0,>=7.2.0 ; extra == 'dev' - pytest-xdist ; extra == 'dev' - pytest-subtests ; extra == 'dev' - parameterized ; extra == 'dev' - datasets ; extra == 'dev' - diffusers ; extra == 'dev' - evaluate ; extra == 'dev' - - torchpippy >=0.2.0 ; extra == 'dev' + - torchpippy>=0.2.0 ; extra == 'dev' - transformers ; extra == 'dev' - scipy ; extra == 'dev' - scikit-learn ; extra == 'dev' @@ -3433,22 +3433,22 @@ packages: - bitsandbytes ; extra == 'dev' - timm ; extra == 'dev' - rich ; extra == 'dev' - - black ~=23.1 ; extra == 'quality' - - hf-doc-builder >=0.3.0 ; extra == 'quality' - - ruff ~=0.2.1 ; extra == 'quality' + - black~=23.1 ; extra == 'quality' + - hf-doc-builder>=0.3.0 ; extra == 'quality' + - ruff~=0.2.1 ; extra == 'quality' - rich ; extra == 'rich' - sagemaker ; extra == 'sagemaker' - datasets ; extra == 'test_dev' - diffusers ; extra == 'test_dev' - evaluate ; extra == 'test_dev' - - torchpippy >=0.2.0 ; extra == 'test_dev' + - torchpippy>=0.2.0 ; extra == 'test_dev' - transformers ; extra == 'test_dev' - scipy ; extra == 'test_dev' - scikit-learn ; extra == 'test_dev' - tqdm ; extra == 'test_dev' - bitsandbytes ; extra == 'test_dev' - timm ; extra == 'test_dev' - - pytest <=8.0.0, >=7.2.0 ; extra == 'test_prod' + - pytest<=8.0.0,>=7.2.0 ; extra == 'test_prod' - pytest-xdist ; extra == 'test_prod' - pytest-subtests ; extra == 'test_prod' - parameterized ; extra == 'test_prod' @@ -3456,14 +3456,14 @@ packages: - comet-ml ; extra == 'test_trackers' - tensorboard ; extra == 'test_trackers' - dvclive ; extra == 'test_trackers' - - pytest <=8.0.0, >=7.2.0 ; extra == 'testing' + - pytest<=8.0.0,>=7.2.0 ; extra == 'testing' - pytest-xdist ; extra == 'testing' - pytest-subtests ; extra == 'testing' - parameterized ; extra == 'testing' - datasets ; extra == 'testing' - diffusers ; extra == 'testing' - evaluate ; extra == 'testing' - - torchpippy >=0.2.0 ; extra == 'testing' + - torchpippy>=0.2.0 ; extra == 'testing' - transformers ; extra == 'testing' - scipy ; extra == 'testing' - scikit-learn ; extra == 'testing' @@ -3656,7 +3656,7 @@ packages: requires_dist: - importlib-metadata ; python_version < '3.8' - attrs[tests] ; extra == 'cov' - - coverage[toml] >=5.3 ; extra == 'cov' + - coverage[toml]>=5.3 ; extra == 'cov' - attrs[tests] ; extra == 'dev' - pre-commit ; extra == 'dev' - furo ; extra == 'docs' @@ -3668,14 +3668,14 @@ packages: - zope-interface ; extra == 'docs' - attrs[tests-no-zope] ; extra == 'tests' - zope-interface ; extra == 'tests' - - mypy >=1.6 ; (platform_python_implementation == 'CPython' and python_version >= '3.8') and extra == 'tests-mypy' + - mypy>=1.6 ; (platform_python_implementation == 'CPython' and python_version >= '3.8') and extra == 'tests-mypy' - pytest-mypy-plugins ; (platform_python_implementation == 'CPython' and python_version >= '3.8') and extra == 'tests-mypy' - attrs[tests-mypy] ; extra == 'tests-no-zope' - cloudpickle ; platform_python_implementation == 'CPython' and extra == 'tests-no-zope' - hypothesis ; extra == 'tests-no-zope' - pympler ; extra == 'tests-no-zope' - pytest-xdist[psutil] ; extra == 'tests-no-zope' - - pytest >=4.3.0 ; extra == 'tests-no-zope' + - pytest>=4.3.0 ; extra == 'tests-no-zope' requires_python: '>=3.7' - kind: conda name: attrs @@ -6892,7 +6892,7 @@ packages: url: https://files.pythonhosted.org/packages/b1/fe/e8c672695b37eecc5cbf43e1d0638d88d66ba3a44c4d321c796f4e59167f/beautifulsoup4-4.12.3-py3-none-any.whl sha256: b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed requires_dist: - - soupsieve >1.2 + - soupsieve>1.2 - cchardet ; extra == 'cchardet' - chardet ; extra == 'chardet' - charset-normalizer ; extra == 'charset-normalizer' @@ -7077,45 +7077,25 @@ packages: license_family: BSD size: 28888 timestamp: 1710259827989 -- kind: pypi - name: black - version: 24.4.2 - url: https://files.pythonhosted.org/packages/9b/f7/591d601c3046ceb65b97291dfe87fa25124cffac3d97aaaba89d0f0d7bdf/black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl - sha256: 257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474 - requires_dist: - - click >=8.0.0 - - mypy-extensions >=0.4.3 - - packaging >=22.0 - - pathspec >=0.9.0 - - platformdirs >=2 - - tomli >=1.1.0 ; python_version < '3.11' - - typing-extensions >=4.0.1 ; python_version < '3.11' - - colorama >=0.4.3 ; extra == 'colorama' - - aiohttp !=3.9.0, >=3.7.4 ; (sys_platform == 'win32' and implementation_name == 'pypy') and extra == 'd' - - aiohttp >=3.7.4 ; (sys_platform != 'win32' or implementation_name != 'pypy') and extra == 'd' - - ipython >=7.8.0 ; extra == 'jupyter' - - tokenize-rt >=3.2.0 ; extra == 'jupyter' - - uvloop >=0.15.2 ; extra == 'uvloop' - requires_python: '>=3.8' - kind: pypi name: black version: 24.4.2 url: https://files.pythonhosted.org/packages/c5/48/34176b522e8cff4620a5d96c2e323ff2413f574870eb25efa8025885e028/black-24.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl sha256: e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb requires_dist: - - click >=8.0.0 - - mypy-extensions >=0.4.3 - - packaging >=22.0 - - pathspec >=0.9.0 - - platformdirs >=2 - - tomli >=1.1.0 ; python_version < '3.11' - - typing-extensions >=4.0.1 ; python_version < '3.11' - - colorama >=0.4.3 ; extra == 'colorama' - - aiohttp !=3.9.0, >=3.7.4 ; (sys_platform == 'win32' and implementation_name == 'pypy') and extra == 'd' - - aiohttp >=3.7.4 ; (sys_platform != 'win32' or implementation_name != 'pypy') and extra == 'd' - - ipython >=7.8.0 ; extra == 'jupyter' - - tokenize-rt >=3.2.0 ; extra == 'jupyter' - - uvloop >=0.15.2 ; extra == 'uvloop' + - click>=8.0.0 + - mypy-extensions>=0.4.3 + - packaging>=22.0 + - pathspec>=0.9.0 + - platformdirs>=2 + - tomli>=1.1.0 ; python_version < '3.11' + - typing-extensions>=4.0.1 ; python_version < '3.11' + - colorama>=0.4.3 ; extra == 'colorama' + - aiohttp!=3.9.0,>=3.7.4 ; (sys_platform == 'win32' and implementation_name == 'pypy') and extra == 'd' + - aiohttp>=3.7.4 ; (sys_platform != 'win32' or implementation_name != 'pypy') and extra == 'd' + - ipython>=7.8.0 ; extra == 'jupyter' + - tokenize-rt>=3.2.0 ; extra == 'jupyter' + - uvloop>=0.15.2 ; extra == 'uvloop' requires_python: '>=3.8' - kind: pypi name: black @@ -7123,19 +7103,19 @@ packages: url: https://files.pythonhosted.org/packages/74/ce/e8eec1a77edbfa982bee3b5460dcdd4fe0e4e3165fc15d8ec44d04da7776/black-24.4.2-cp311-cp311-win_amd64.whl sha256: 7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1 requires_dist: - - click >=8.0.0 - - mypy-extensions >=0.4.3 - - packaging >=22.0 - - pathspec >=0.9.0 - - platformdirs >=2 - - tomli >=1.1.0 ; python_version < '3.11' - - typing-extensions >=4.0.1 ; python_version < '3.11' - - colorama >=0.4.3 ; extra == 'colorama' - - aiohttp !=3.9.0, >=3.7.4 ; (sys_platform == 'win32' and implementation_name == 'pypy') and extra == 'd' - - aiohttp >=3.7.4 ; (sys_platform != 'win32' or implementation_name != 'pypy') and extra == 'd' - - ipython >=7.8.0 ; extra == 'jupyter' - - tokenize-rt >=3.2.0 ; extra == 'jupyter' - - uvloop >=0.15.2 ; extra == 'uvloop' + - click>=8.0.0 + - mypy-extensions>=0.4.3 + - packaging>=22.0 + - pathspec>=0.9.0 + - platformdirs>=2 + - tomli>=1.1.0 ; python_version < '3.11' + - typing-extensions>=4.0.1 ; python_version < '3.11' + - colorama>=0.4.3 ; extra == 'colorama' + - aiohttp!=3.9.0,>=3.7.4 ; (sys_platform == 'win32' and implementation_name == 'pypy') and extra == 'd' + - aiohttp>=3.7.4 ; (sys_platform != 'win32' or implementation_name != 'pypy') and extra == 'd' + - ipython>=7.8.0 ; extra == 'jupyter' + - tokenize-rt>=3.2.0 ; extra == 'jupyter' + - uvloop>=0.15.2 ; extra == 'uvloop' requires_python: '>=3.8' - kind: pypi name: black @@ -7143,19 +7123,39 @@ packages: url: https://files.pythonhosted.org/packages/c9/17/5e0036b265bbf6bc44970d93d48febcbc03701b671db3c9603fd43ebc616/black-24.4.2-cp311-cp311-macosx_11_0_arm64.whl sha256: bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c requires_dist: - - click >=8.0.0 - - mypy-extensions >=0.4.3 - - packaging >=22.0 - - pathspec >=0.9.0 - - platformdirs >=2 - - tomli >=1.1.0 ; python_version < '3.11' - - typing-extensions >=4.0.1 ; python_version < '3.11' - - colorama >=0.4.3 ; extra == 'colorama' - - aiohttp !=3.9.0, >=3.7.4 ; (sys_platform == 'win32' and implementation_name == 'pypy') and extra == 'd' - - aiohttp >=3.7.4 ; (sys_platform != 'win32' or implementation_name != 'pypy') and extra == 'd' - - ipython >=7.8.0 ; extra == 'jupyter' - - tokenize-rt >=3.2.0 ; extra == 'jupyter' - - uvloop >=0.15.2 ; extra == 'uvloop' + - click>=8.0.0 + - mypy-extensions>=0.4.3 + - packaging>=22.0 + - pathspec>=0.9.0 + - platformdirs>=2 + - tomli>=1.1.0 ; python_version < '3.11' + - typing-extensions>=4.0.1 ; python_version < '3.11' + - colorama>=0.4.3 ; extra == 'colorama' + - aiohttp!=3.9.0,>=3.7.4 ; (sys_platform == 'win32' and implementation_name == 'pypy') and extra == 'd' + - aiohttp>=3.7.4 ; (sys_platform != 'win32' or implementation_name != 'pypy') and extra == 'd' + - ipython>=7.8.0 ; extra == 'jupyter' + - tokenize-rt>=3.2.0 ; extra == 'jupyter' + - uvloop>=0.15.2 ; extra == 'uvloop' + requires_python: '>=3.8' +- kind: pypi + name: black + version: 24.4.2 + url: https://files.pythonhosted.org/packages/9b/f7/591d601c3046ceb65b97291dfe87fa25124cffac3d97aaaba89d0f0d7bdf/black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl + sha256: 257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474 + requires_dist: + - click>=8.0.0 + - mypy-extensions>=0.4.3 + - packaging>=22.0 + - pathspec>=0.9.0 + - platformdirs>=2 + - tomli>=1.1.0 ; python_version < '3.11' + - typing-extensions>=4.0.1 ; python_version < '3.11' + - colorama>=0.4.3 ; extra == 'colorama' + - aiohttp!=3.9.0,>=3.7.4 ; (sys_platform == 'win32' and implementation_name == 'pypy') and extra == 'd' + - aiohttp>=3.7.4 ; (sys_platform != 'win32' or implementation_name != 'pypy') and extra == 'd' + - ipython>=7.8.0 ; extra == 'jupyter' + - tokenize-rt>=3.2.0 ; extra == 'jupyter' + - uvloop>=0.15.2 ; extra == 'uvloop' requires_python: '>=3.8' - kind: pypi name: blueprint @@ -7759,16 +7759,16 @@ packages: - kind: pypi name: cffi version: 1.16.0 - url: https://files.pythonhosted.org/packages/18/6c/0406611f3d5aadf4c5b08f6c095d874aed8dfc2d3a19892707d72536d5dc/cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl - sha256: 1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417 + url: https://files.pythonhosted.org/packages/95/c8/ce05a6cba2bec12d4b28285e66c53cc88dd7385b102dea7231da3b74cfef/cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl + sha256: b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404 requires_dist: - pycparser requires_python: '>=3.8' - kind: pypi name: cffi version: 1.16.0 - url: https://files.pythonhosted.org/packages/5a/c7/694814b3757878b29da39bc2f0cf9d20295f4c1e0a0bde7971708d5f23f8/cffi-1.16.0-cp311-cp311-win_amd64.whl - sha256: db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba + url: https://files.pythonhosted.org/packages/b5/23/ea84dd4985649fcc179ba3a6c9390412e924d20b0244dc71a6545788f5a2/cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl + sha256: d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936 requires_dist: - pycparser requires_python: '>=3.8' @@ -7783,30 +7783,30 @@ packages: - kind: pypi name: cffi version: 1.16.0 - url: https://files.pythonhosted.org/packages/b5/23/ea84dd4985649fcc179ba3a6c9390412e924d20b0244dc71a6545788f5a2/cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl - sha256: d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936 + url: https://files.pythonhosted.org/packages/18/6c/0406611f3d5aadf4c5b08f6c095d874aed8dfc2d3a19892707d72536d5dc/cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl + sha256: 1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417 requires_dist: - pycparser requires_python: '>=3.8' - kind: pypi name: cffi version: 1.16.0 - url: https://files.pythonhosted.org/packages/95/c8/ce05a6cba2bec12d4b28285e66c53cc88dd7385b102dea7231da3b74cfef/cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl - sha256: b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404 + url: https://files.pythonhosted.org/packages/5a/c7/694814b3757878b29da39bc2f0cf9d20295f4c1e0a0bde7971708d5f23f8/cffi-1.16.0-cp311-cp311-win_amd64.whl + sha256: db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba requires_dist: - pycparser requires_python: '>=3.8' - kind: pypi name: charset-normalizer version: 3.3.2 - url: https://files.pythonhosted.org/packages/dd/51/68b61b90b24ca35495956b718f35a9756ef7d3dd4b3c1508056fa98d1a1b/charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl - sha256: 549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e + url: https://files.pythonhosted.org/packages/3e/33/21a875a61057165e92227466e54ee076b73af1e21fe1b31f1e292251aa1e/charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl + sha256: 573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96 requires_python: '>=3.7.0' - kind: pypi name: charset-normalizer version: 3.3.2 - url: https://files.pythonhosted.org/packages/57/ec/80c8d48ac8b1741d5b963797b7c0c869335619e13d4744ca2f67fc11c6fc/charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl - sha256: 663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77 + url: https://files.pythonhosted.org/packages/e4/a6/7ee57823d46331ddc37dd00749c95b0edec2c79b15fc0d6e6efb532e89ac/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl + sha256: f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f requires_python: '>=3.7.0' - kind: pypi name: charset-normalizer @@ -7817,14 +7817,14 @@ packages: - kind: pypi name: charset-normalizer version: 3.3.2 - url: https://files.pythonhosted.org/packages/e4/a6/7ee57823d46331ddc37dd00749c95b0edec2c79b15fc0d6e6efb532e89ac/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl - sha256: f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f + url: https://files.pythonhosted.org/packages/dd/51/68b61b90b24ca35495956b718f35a9756ef7d3dd4b3c1508056fa98d1a1b/charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl + sha256: 549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e requires_python: '>=3.7.0' - kind: pypi name: charset-normalizer version: 3.3.2 - url: https://files.pythonhosted.org/packages/3e/33/21a875a61057165e92227466e54ee076b73af1e21fe1b31f1e292251aa1e/charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl - sha256: 573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96 + url: https://files.pythonhosted.org/packages/57/ec/80c8d48ac8b1741d5b963797b7c0c869335619e13d4744ca2f67fc11c6fc/charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl + sha256: 663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77 requires_python: '>=3.7.0' - kind: conda name: clang @@ -8997,18 +8997,18 @@ packages: - kind: pypi name: contourpy version: 1.2.1 - url: https://files.pythonhosted.org/packages/33/0e/51ff72fac17e2500baf30b6b2a24be423a8d27e1625e5de99f585b852d74/contourpy-1.2.1-cp311-cp311-macosx_10_9_x86_64.whl - sha256: 6022cecf8f44e36af10bd9118ca71f371078b4c168b6e0fab43d4a889985dbb5 + url: https://files.pythonhosted.org/packages/ee/c0/9bd123d676eb61750e116a2cd915b06483fc406143cfc36c7f263f0f5368/contourpy-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: d4492d82b3bc7fbb7e3610747b159869468079fe149ec5c4d771fa1f614a14df requires_dist: - - numpy >=1.20 + - numpy>=1.20 - furo ; extra == 'docs' - - sphinx >=7.2 ; extra == 'docs' + - sphinx>=7.2 ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - bokeh ; extra == 'bokeh' - selenium ; extra == 'bokeh' - contourpy[bokeh,docs] ; extra == 'mypy' - docutils-stubs ; extra == 'mypy' - - mypy ==1.8.0 ; extra == 'mypy' + - mypy==1.8.0 ; extra == 'mypy' - types-pillow ; extra == 'mypy' - contourpy[test-no-images] ; extra == 'test' - matplotlib ; extra == 'test' @@ -9021,18 +9021,18 @@ packages: - kind: pypi name: contourpy version: 1.2.1 - url: https://files.pythonhosted.org/packages/ee/c0/9bd123d676eb61750e116a2cd915b06483fc406143cfc36c7f263f0f5368/contourpy-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - sha256: d4492d82b3bc7fbb7e3610747b159869468079fe149ec5c4d771fa1f614a14df + url: https://files.pythonhosted.org/packages/d6/4f/76d0dd0bca417691918484c26c74dd9dd44fbf528bbfeb30d754886e2c54/contourpy-1.2.1-cp311-cp311-win_amd64.whl + sha256: 2855c8b0b55958265e8b5888d6a615ba02883b225f2227461aa9127c578a4922 requires_dist: - - numpy >=1.20 + - numpy>=1.20 - furo ; extra == 'docs' - - sphinx >=7.2 ; extra == 'docs' + - sphinx>=7.2 ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - bokeh ; extra == 'bokeh' - selenium ; extra == 'bokeh' - contourpy[bokeh,docs] ; extra == 'mypy' - docutils-stubs ; extra == 'mypy' - - mypy ==1.8.0 ; extra == 'mypy' + - mypy==1.8.0 ; extra == 'mypy' - types-pillow ; extra == 'mypy' - contourpy[test-no-images] ; extra == 'test' - matplotlib ; extra == 'test' @@ -9045,18 +9045,18 @@ packages: - kind: pypi name: contourpy version: 1.2.1 - url: https://files.pythonhosted.org/packages/d6/4f/76d0dd0bca417691918484c26c74dd9dd44fbf528bbfeb30d754886e2c54/contourpy-1.2.1-cp311-cp311-win_amd64.whl - sha256: 2855c8b0b55958265e8b5888d6a615ba02883b225f2227461aa9127c578a4922 + url: https://files.pythonhosted.org/packages/9f/6b/8a1ca4b81d426c104fe42b3cfad9488eaaef0a03fcf98eaecc22b628a013/contourpy-1.2.1-cp311-cp311-macosx_11_0_arm64.whl + sha256: ef5adb9a3b1d0c645ff694f9bca7702ec2c70f4d734f9922ea34de02294fdf72 requires_dist: - - numpy >=1.20 + - numpy>=1.20 - furo ; extra == 'docs' - - sphinx >=7.2 ; extra == 'docs' + - sphinx>=7.2 ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - bokeh ; extra == 'bokeh' - selenium ; extra == 'bokeh' - contourpy[bokeh,docs] ; extra == 'mypy' - docutils-stubs ; extra == 'mypy' - - mypy ==1.8.0 ; extra == 'mypy' + - mypy==1.8.0 ; extra == 'mypy' - types-pillow ; extra == 'mypy' - contourpy[test-no-images] ; extra == 'test' - matplotlib ; extra == 'test' @@ -9069,18 +9069,18 @@ packages: - kind: pypi name: contourpy version: 1.2.1 - url: https://files.pythonhosted.org/packages/9f/6b/8a1ca4b81d426c104fe42b3cfad9488eaaef0a03fcf98eaecc22b628a013/contourpy-1.2.1-cp311-cp311-macosx_11_0_arm64.whl - sha256: ef5adb9a3b1d0c645ff694f9bca7702ec2c70f4d734f9922ea34de02294fdf72 + url: https://files.pythonhosted.org/packages/33/0e/51ff72fac17e2500baf30b6b2a24be423a8d27e1625e5de99f585b852d74/contourpy-1.2.1-cp311-cp311-macosx_10_9_x86_64.whl + sha256: 6022cecf8f44e36af10bd9118ca71f371078b4c168b6e0fab43d4a889985dbb5 requires_dist: - - numpy >=1.20 + - numpy>=1.20 - furo ; extra == 'docs' - - sphinx >=7.2 ; extra == 'docs' + - sphinx>=7.2 ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - bokeh ; extra == 'bokeh' - selenium ; extra == 'bokeh' - contourpy[bokeh,docs] ; extra == 'mypy' - docutils-stubs ; extra == 'mypy' - - mypy ==1.8.0 ; extra == 'mypy' + - mypy==1.8.0 ; extra == 'mypy' - types-pillow ; extra == 'mypy' - contourpy[test-no-images] ; extra == 'test' - matplotlib ; extra == 'test' @@ -9097,34 +9097,34 @@ packages: sha256: 8ae055c0b8b0dd7757e4e666f6163172859044d4090830aecbec3460cdb318ee requires_dist: - accelerate - - diffusers ==0.27.2 - - numpy - opencv-python - pillow - - rerun-sdk - - torch ==2.2.2 + - diffusers==0.27.2 + - numpy + - torch==2.2.2 - transformers + - rerun-sdk requires_python: '>=3.10' editable: true - kind: pypi name: cryptography version: 38.0.4 - url: https://files.pythonhosted.org/packages/75/7a/2ea7dd2202638cf1053aaa8fbbaddded0b78c78832b3d03cafa0416a6c84/cryptography-38.0.4-cp36-abi3-macosx_10_10_universal2.whl - sha256: 2fa36a7b2cc0998a3a4d5af26ccb6273f3df133d61da2ba13b3286261e7efb70 + url: https://files.pythonhosted.org/packages/52/1b/49ebc2b59e9126f1f378ae910e98704d54a3f48b78e2d6d6c8cfe6fbe06f/cryptography-38.0.4-cp36-abi3-macosx_10_10_x86_64.whl + sha256: 1f13ddda26a04c06eb57119caf27a524ccae20533729f4b1e4a69b54e07035eb requires_dist: - - cffi >=1.12 - - sphinx !=1.8.0, !=3.1.0, !=3.1.1, >=1.6.5 ; extra == 'docs' + - cffi>=1.12 + - sphinx!=1.8.0,!=3.1.0,!=3.1.1,>=1.6.5 ; extra == 'docs' - sphinx-rtd-theme ; extra == 'docs' - - pyenchant >=1.6.11 ; extra == 'docstest' - - twine >=1.12.0 ; extra == 'docstest' - - sphinxcontrib-spelling >=4.0.1 ; extra == 'docstest' + - pyenchant>=1.6.11 ; extra == 'docstest' + - twine>=1.12.0 ; extra == 'docstest' + - sphinxcontrib-spelling>=4.0.1 ; extra == 'docstest' - black ; extra == 'pep8test' - flake8 ; extra == 'pep8test' - flake8-import-order ; extra == 'pep8test' - pep8-naming ; extra == 'pep8test' - - setuptools-rust >=0.11.4 ; extra == 'sdist' - - bcrypt >=3.1.5 ; extra == 'ssh' - - pytest >=6.2.0 ; extra == 'test' + - setuptools-rust>=0.11.4 ; extra == 'sdist' + - bcrypt>=3.1.5 ; extra == 'ssh' + - pytest>=6.2.0 ; extra == 'test' - pytest-benchmark ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-subtests ; extra == 'test' @@ -9132,27 +9132,27 @@ packages: - pretend ; extra == 'test' - iso8601 ; extra == 'test' - pytz ; extra == 'test' - - hypothesis !=3.79.2, >=1.11.4 ; extra == 'test' + - hypothesis!=3.79.2,>=1.11.4 ; extra == 'test' requires_python: '>=3.6' - kind: pypi name: cryptography version: 38.0.4 - url: https://files.pythonhosted.org/packages/c0/eb/f52b165db2abd662cda0a76efb7579a291fed1a7979cf41146cdc19e0d7a/cryptography-38.0.4-cp36-abi3-win_amd64.whl - sha256: 8e45653fb97eb2f20b8c96f9cd2b3a0654d742b47d638cf2897afbd97f80fa6d + url: https://files.pythonhosted.org/packages/a2/8f/6c52b1f9d650863e8f67edbe062c04f1c8455579eaace1593d8fe469319a/cryptography-38.0.4-cp36-abi3-manylinux_2_28_aarch64.whl + sha256: bfe6472507986613dc6cc00b3d492b2f7564b02b3b3682d25ca7f40fa3fd321b requires_dist: - - cffi >=1.12 - - sphinx !=1.8.0, !=3.1.0, !=3.1.1, >=1.6.5 ; extra == 'docs' + - cffi>=1.12 + - sphinx!=1.8.0,!=3.1.0,!=3.1.1,>=1.6.5 ; extra == 'docs' - sphinx-rtd-theme ; extra == 'docs' - - pyenchant >=1.6.11 ; extra == 'docstest' - - twine >=1.12.0 ; extra == 'docstest' - - sphinxcontrib-spelling >=4.0.1 ; extra == 'docstest' + - pyenchant>=1.6.11 ; extra == 'docstest' + - twine>=1.12.0 ; extra == 'docstest' + - sphinxcontrib-spelling>=4.0.1 ; extra == 'docstest' - black ; extra == 'pep8test' - flake8 ; extra == 'pep8test' - flake8-import-order ; extra == 'pep8test' - pep8-naming ; extra == 'pep8test' - - setuptools-rust >=0.11.4 ; extra == 'sdist' - - bcrypt >=3.1.5 ; extra == 'ssh' - - pytest >=6.2.0 ; extra == 'test' + - setuptools-rust>=0.11.4 ; extra == 'sdist' + - bcrypt>=3.1.5 ; extra == 'ssh' + - pytest>=6.2.0 ; extra == 'test' - pytest-benchmark ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-subtests ; extra == 'test' @@ -9160,7 +9160,7 @@ packages: - pretend ; extra == 'test' - iso8601 ; extra == 'test' - pytz ; extra == 'test' - - hypothesis !=3.79.2, >=1.11.4 ; extra == 'test' + - hypothesis!=3.79.2,>=1.11.4 ; extra == 'test' requires_python: '>=3.6' - kind: pypi name: cryptography @@ -9168,19 +9168,19 @@ packages: url: https://files.pythonhosted.org/packages/26/f8/a81170a816679fca9ccd907b801992acfc03c33f952440421c921af2cc57/cryptography-38.0.4-cp36-abi3-manylinux_2_28_x86_64.whl sha256: ce127dd0a6a0811c251a6cddd014d292728484e530d80e872ad9806cfb1c5b3c requires_dist: - - cffi >=1.12 - - sphinx !=1.8.0, !=3.1.0, !=3.1.1, >=1.6.5 ; extra == 'docs' + - cffi>=1.12 + - sphinx!=1.8.0,!=3.1.0,!=3.1.1,>=1.6.5 ; extra == 'docs' - sphinx-rtd-theme ; extra == 'docs' - - pyenchant >=1.6.11 ; extra == 'docstest' - - twine >=1.12.0 ; extra == 'docstest' - - sphinxcontrib-spelling >=4.0.1 ; extra == 'docstest' + - pyenchant>=1.6.11 ; extra == 'docstest' + - twine>=1.12.0 ; extra == 'docstest' + - sphinxcontrib-spelling>=4.0.1 ; extra == 'docstest' - black ; extra == 'pep8test' - flake8 ; extra == 'pep8test' - flake8-import-order ; extra == 'pep8test' - pep8-naming ; extra == 'pep8test' - - setuptools-rust >=0.11.4 ; extra == 'sdist' - - bcrypt >=3.1.5 ; extra == 'ssh' - - pytest >=6.2.0 ; extra == 'test' + - setuptools-rust>=0.11.4 ; extra == 'sdist' + - bcrypt>=3.1.5 ; extra == 'ssh' + - pytest>=6.2.0 ; extra == 'test' - pytest-benchmark ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-subtests ; extra == 'test' @@ -9188,27 +9188,27 @@ packages: - pretend ; extra == 'test' - iso8601 ; extra == 'test' - pytz ; extra == 'test' - - hypothesis !=3.79.2, >=1.11.4 ; extra == 'test' + - hypothesis!=3.79.2,>=1.11.4 ; extra == 'test' requires_python: '>=3.6' - kind: pypi name: cryptography version: 38.0.4 - url: https://files.pythonhosted.org/packages/a2/8f/6c52b1f9d650863e8f67edbe062c04f1c8455579eaace1593d8fe469319a/cryptography-38.0.4-cp36-abi3-manylinux_2_28_aarch64.whl - sha256: bfe6472507986613dc6cc00b3d492b2f7564b02b3b3682d25ca7f40fa3fd321b + url: https://files.pythonhosted.org/packages/75/7a/2ea7dd2202638cf1053aaa8fbbaddded0b78c78832b3d03cafa0416a6c84/cryptography-38.0.4-cp36-abi3-macosx_10_10_universal2.whl + sha256: 2fa36a7b2cc0998a3a4d5af26ccb6273f3df133d61da2ba13b3286261e7efb70 requires_dist: - - cffi >=1.12 - - sphinx !=1.8.0, !=3.1.0, !=3.1.1, >=1.6.5 ; extra == 'docs' + - cffi>=1.12 + - sphinx!=1.8.0,!=3.1.0,!=3.1.1,>=1.6.5 ; extra == 'docs' - sphinx-rtd-theme ; extra == 'docs' - - pyenchant >=1.6.11 ; extra == 'docstest' - - twine >=1.12.0 ; extra == 'docstest' - - sphinxcontrib-spelling >=4.0.1 ; extra == 'docstest' + - pyenchant>=1.6.11 ; extra == 'docstest' + - twine>=1.12.0 ; extra == 'docstest' + - sphinxcontrib-spelling>=4.0.1 ; extra == 'docstest' - black ; extra == 'pep8test' - flake8 ; extra == 'pep8test' - flake8-import-order ; extra == 'pep8test' - pep8-naming ; extra == 'pep8test' - - setuptools-rust >=0.11.4 ; extra == 'sdist' - - bcrypt >=3.1.5 ; extra == 'ssh' - - pytest >=6.2.0 ; extra == 'test' + - setuptools-rust>=0.11.4 ; extra == 'sdist' + - bcrypt>=3.1.5 ; extra == 'ssh' + - pytest>=6.2.0 ; extra == 'test' - pytest-benchmark ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-subtests ; extra == 'test' @@ -9216,27 +9216,27 @@ packages: - pretend ; extra == 'test' - iso8601 ; extra == 'test' - pytz ; extra == 'test' - - hypothesis !=3.79.2, >=1.11.4 ; extra == 'test' + - hypothesis!=3.79.2,>=1.11.4 ; extra == 'test' requires_python: '>=3.6' - kind: pypi name: cryptography version: 38.0.4 - url: https://files.pythonhosted.org/packages/52/1b/49ebc2b59e9126f1f378ae910e98704d54a3f48b78e2d6d6c8cfe6fbe06f/cryptography-38.0.4-cp36-abi3-macosx_10_10_x86_64.whl - sha256: 1f13ddda26a04c06eb57119caf27a524ccae20533729f4b1e4a69b54e07035eb + url: https://files.pythonhosted.org/packages/c0/eb/f52b165db2abd662cda0a76efb7579a291fed1a7979cf41146cdc19e0d7a/cryptography-38.0.4-cp36-abi3-win_amd64.whl + sha256: 8e45653fb97eb2f20b8c96f9cd2b3a0654d742b47d638cf2897afbd97f80fa6d requires_dist: - - cffi >=1.12 - - sphinx !=1.8.0, !=3.1.0, !=3.1.1, >=1.6.5 ; extra == 'docs' + - cffi>=1.12 + - sphinx!=1.8.0,!=3.1.0,!=3.1.1,>=1.6.5 ; extra == 'docs' - sphinx-rtd-theme ; extra == 'docs' - - pyenchant >=1.6.11 ; extra == 'docstest' - - twine >=1.12.0 ; extra == 'docstest' - - sphinxcontrib-spelling >=4.0.1 ; extra == 'docstest' + - pyenchant>=1.6.11 ; extra == 'docstest' + - twine>=1.12.0 ; extra == 'docstest' + - sphinxcontrib-spelling>=4.0.1 ; extra == 'docstest' - black ; extra == 'pep8test' - flake8 ; extra == 'pep8test' - flake8-import-order ; extra == 'pep8test' - pep8-naming ; extra == 'pep8test' - - setuptools-rust >=0.11.4 ; extra == 'sdist' - - bcrypt >=3.1.5 ; extra == 'ssh' - - pytest >=6.2.0 ; extra == 'test' + - setuptools-rust>=0.11.4 ; extra == 'sdist' + - bcrypt>=3.1.5 ; extra == 'ssh' + - pytest>=6.2.0 ; extra == 'test' - pytest-benchmark ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-subtests ; extra == 'test' @@ -9244,7 +9244,7 @@ packages: - pretend ; extra == 'test' - iso8601 ; extra == 'test' - pytz ; extra == 'test' - - hypothesis !=3.79.2, >=1.11.4 ; extra == 'test' + - hypothesis!=3.79.2,>=1.11.4 ; extra == 'test' requires_python: '>=3.6' - kind: conda name: cxx-compiler @@ -9324,8 +9324,8 @@ packages: url: https://files.pythonhosted.org/packages/92/70/382283d80cb998ebc0089428b109bbe606ec9dce891a3cb1468c03ed0ad6/dataclasses_json-0.6.6-py3-none-any.whl sha256: e54c5c87497741ad454070ba0ed411523d46beb5da102e221efb873801b0ba85 requires_dist: - - marshmallow >=3.18.0, <4.0.0 - - typing-inspect >=0.4.0, <1 + - marshmallow>=3.18.0,<4.0.0 + - typing-inspect>=0.4.0,<1 requires_python: '>=3.7,<4.0' - kind: pypi name: deprecated @@ -9333,12 +9333,12 @@ packages: url: https://files.pythonhosted.org/packages/20/8d/778b7d51b981a96554f29136cd59ca7880bf58094338085bcf2a979a0e6a/Deprecated-1.2.14-py2.py3-none-any.whl sha256: 6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c requires_dist: - - wrapt <2, >=1.10 + - wrapt<2,>=1.10 - tox ; extra == 'dev' - pytest ; extra == 'dev' - pytest-cov ; extra == 'dev' - - bump2version <1 ; extra == 'dev' - - sphinx <2 ; extra == 'dev' + - bump2version<1 ; extra == 'dev' + - sphinx<2 ; extra == 'dev' requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*' - kind: pypi name: detect-and-track-objects @@ -9347,13 +9347,13 @@ packages: sha256: 6c88082f8ff9c5949f5786584edf771078e3f1be6202f7225ad02268f96d9292 requires_dist: - numpy - - opencv-contrib-python >4.6 - - opencv-python >4.6 + - opencv-contrib-python>4.6 + - opencv-python>4.6 - pillow - - requests <3, >=2.31 + - requests>=2.31,<3 - rerun-sdk - - timm ==0.9.11 - - torch ==2.2.2 + - timm==0.9.11 + - torch==2.2.2 - transformers editable: true - kind: pypi @@ -9362,12 +9362,12 @@ packages: path: examples/python/dicom_mri sha256: 98cb91dc5758ae59e3cd0fb797f86f40fcf627f63e659365806f59feed4618d8 requires_dist: - - dicom-numpy ==0.6.2 + - dicom-numpy==0.6.2 - numpy - - pydicom ==2.3.0 - - requests <3, >=2.31 + - pydicom==2.3.0 + - requests>=2.31,<3 - rerun-sdk - - types-requests <3, >=2.31 + - types-requests>=2.31,<3 editable: true - kind: pypi name: dicom-numpy @@ -9375,7 +9375,7 @@ packages: url: https://files.pythonhosted.org/packages/a4/d2/6d475e8925fa3f46f676263bfc6bdcf1e20273a433b296b1d63abecd2426/dicom_numpy-0.6.2-py2.py3-none-any.whl sha256: 361c8dfc52d625bf3344e5c2745e9c928d263999a4c094fe285d9fe461895ea9 requires_dist: - - pydicom >=1.0 + - pydicom>=1.0 - numpy - check-manifest ; extra == 'dev' - sphinx ; extra == 'dev' @@ -9391,74 +9391,74 @@ packages: requires_dist: - importlib-metadata - filelock - - huggingface-hub >=0.20.2 + - huggingface-hub>=0.20.2 - numpy - - regex !=2019.12.17 + - regex!=2019.12.17 - requests - - safetensors >=0.3.1 + - safetensors>=0.3.1 - pillow - - urllib3 <=2.0.0 ; extra == 'dev' - - isort >=5.5.4 ; extra == 'dev' - - ruff ==0.1.5 ; extra == 'dev' - - hf-doc-builder >=0.3.0 ; extra == 'dev' - - compel ==0.1.8 ; extra == 'dev' - - gitpython <3.1.19 ; extra == 'dev' + - urllib3<=2.0.0 ; extra == 'dev' + - isort>=5.5.4 ; extra == 'dev' + - ruff==0.1.5 ; extra == 'dev' + - hf-doc-builder>=0.3.0 ; extra == 'dev' + - compel==0.1.8 ; extra == 'dev' + - gitpython<3.1.19 ; extra == 'dev' - datasets ; extra == 'dev' - jinja2 ; extra == 'dev' - - invisible-watermark >=0.2.0 ; extra == 'dev' - - k-diffusion >=0.0.12 ; extra == 'dev' + - invisible-watermark>=0.2.0 ; extra == 'dev' + - k-diffusion>=0.0.12 ; extra == 'dev' - librosa ; extra == 'dev' - parameterized ; extra == 'dev' - pytest ; extra == 'dev' - pytest-timeout ; extra == 'dev' - pytest-xdist ; extra == 'dev' - - requests-mock ==1.10.0 ; extra == 'dev' - - safetensors >=0.3.1 ; extra == 'dev' - - sentencepiece !=0.1.92, >=0.1.91 ; extra == 'dev' + - requests-mock==1.10.0 ; extra == 'dev' + - safetensors>=0.3.1 ; extra == 'dev' + - sentencepiece!=0.1.92,>=0.1.91 ; extra == 'dev' - scipy ; extra == 'dev' - torchvision ; extra == 'dev' - - transformers >=4.25.1 ; extra == 'dev' - - accelerate >=0.11.0 ; extra == 'dev' - - protobuf <4, >=3.20.3 ; extra == 'dev' + - transformers>=4.25.1 ; extra == 'dev' + - accelerate>=0.11.0 ; extra == 'dev' + - protobuf<4,>=3.20.3 ; extra == 'dev' - tensorboard ; extra == 'dev' - - peft >=0.6.0 ; extra == 'dev' - - torch >=1.4 ; extra == 'dev' - - jax >=0.4.1 ; extra == 'dev' - - jaxlib >=0.4.1 ; extra == 'dev' - - flax >=0.4.1 ; extra == 'dev' - - hf-doc-builder >=0.3.0 ; extra == 'docs' - - jax >=0.4.1 ; extra == 'flax' - - jaxlib >=0.4.1 ; extra == 'flax' - - flax >=0.4.1 ; extra == 'flax' - - urllib3 <=2.0.0 ; extra == 'quality' - - isort >=5.5.4 ; extra == 'quality' - - ruff ==0.1.5 ; extra == 'quality' - - hf-doc-builder >=0.3.0 ; extra == 'quality' - - compel ==0.1.8 ; extra == 'test' - - gitpython <3.1.19 ; extra == 'test' + - peft>=0.6.0 ; extra == 'dev' + - torch>=1.4 ; extra == 'dev' + - jax>=0.4.1 ; extra == 'dev' + - jaxlib>=0.4.1 ; extra == 'dev' + - flax>=0.4.1 ; extra == 'dev' + - hf-doc-builder>=0.3.0 ; extra == 'docs' + - jax>=0.4.1 ; extra == 'flax' + - jaxlib>=0.4.1 ; extra == 'flax' + - flax>=0.4.1 ; extra == 'flax' + - urllib3<=2.0.0 ; extra == 'quality' + - isort>=5.5.4 ; extra == 'quality' + - ruff==0.1.5 ; extra == 'quality' + - hf-doc-builder>=0.3.0 ; extra == 'quality' + - compel==0.1.8 ; extra == 'test' + - gitpython<3.1.19 ; extra == 'test' - datasets ; extra == 'test' - jinja2 ; extra == 'test' - - invisible-watermark >=0.2.0 ; extra == 'test' - - k-diffusion >=0.0.12 ; extra == 'test' + - invisible-watermark>=0.2.0 ; extra == 'test' + - k-diffusion>=0.0.12 ; extra == 'test' - librosa ; extra == 'test' - parameterized ; extra == 'test' - pytest ; extra == 'test' - pytest-timeout ; extra == 'test' - pytest-xdist ; extra == 'test' - - requests-mock ==1.10.0 ; extra == 'test' - - safetensors >=0.3.1 ; extra == 'test' - - sentencepiece !=0.1.92, >=0.1.91 ; extra == 'test' + - requests-mock==1.10.0 ; extra == 'test' + - safetensors>=0.3.1 ; extra == 'test' + - sentencepiece!=0.1.92,>=0.1.91 ; extra == 'test' - scipy ; extra == 'test' - torchvision ; extra == 'test' - - transformers >=4.25.1 ; extra == 'test' - - torch >=1.4 ; extra == 'torch' - - accelerate >=0.11.0 ; extra == 'torch' - - accelerate >=0.11.0 ; extra == 'training' + - transformers>=4.25.1 ; extra == 'test' + - torch>=1.4 ; extra == 'torch' + - accelerate>=0.11.0 ; extra == 'torch' + - accelerate>=0.11.0 ; extra == 'training' - datasets ; extra == 'training' - - protobuf <4, >=3.20.3 ; extra == 'training' + - protobuf<4,>=3.20.3 ; extra == 'training' - tensorboard ; extra == 'training' - jinja2 ; extra == 'training' - - peft >=0.6.0 ; extra == 'training' + - peft>=0.6.0 ; extra == 'training' requires_python: '>=3.8.0' - kind: pypi name: distlib @@ -9601,10 +9601,10 @@ packages: path: examples/python/face_tracking sha256: b8725fe4d36c11aad2c6c936ba2b57c7f65a856aa179badca5d041db63119d55 requires_dist: - - mediapipe ==0.10.11 ; sys_platform != 'darwin' - - mediapipe ==0.10.9 ; sys_platform == 'darwin' + - mediapipe==0.10.11 ; sys_platform != 'darwin' + - mediapipe==0.10.9 ; sys_platform == 'darwin' - numpy - - opencv-python >4.6 + - opencv-python>4.6 - requests - rerun-sdk - tqdm @@ -9616,17 +9616,17 @@ packages: url: https://files.pythonhosted.org/packages/41/24/0b023b6537dfc9bae2c779353998e3e99ac7dfff4222fc6126650e93c3f3/filelock-3.14.0-py3-none-any.whl sha256: 43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f requires_dist: - - furo >=2023.9.10 ; extra == 'docs' - - sphinx-autodoc-typehints !=1.23.4, >=1.25.2 ; extra == 'docs' - - sphinx >=7.2.6 ; extra == 'docs' - - covdefaults >=2.3 ; extra == 'testing' - - coverage >=7.3.2 ; extra == 'testing' - - diff-cover >=8.0.1 ; extra == 'testing' - - pytest-cov >=4.1 ; extra == 'testing' - - pytest-mock >=3.12 ; extra == 'testing' - - pytest-timeout >=2.2 ; extra == 'testing' - - pytest >=7.4.3 ; extra == 'testing' - - typing-extensions >=4.8 ; python_version < '3.11' and extra == 'typing' + - furo>=2023.9.10 ; extra == 'docs' + - sphinx-autodoc-typehints!=1.23.4,>=1.25.2 ; extra == 'docs' + - sphinx>=7.2.6 ; extra == 'docs' + - covdefaults>=2.3 ; extra == 'testing' + - coverage>=7.3.2 ; extra == 'testing' + - diff-cover>=8.0.1 ; extra == 'testing' + - pytest-cov>=4.1 ; extra == 'testing' + - pytest-mock>=3.12 ; extra == 'testing' + - pytest-timeout>=2.2 ; extra == 'testing' + - pytest>=7.4.3 ; extra == 'testing' + - typing-extensions>=4.8 ; python_version < '3.11' and extra == 'typing' requires_python: '>=3.8' - kind: pypi name: flatbuffers @@ -9788,157 +9788,151 @@ packages: - kind: pypi name: fonttools version: 4.51.0 - url: https://files.pythonhosted.org/packages/84/51/8203a3e6e475e6766ac950638d42f45470f36c6a4f0615ff0a1c1f2ed0d6/fonttools-4.51.0-cp311-cp311-macosx_10_9_x86_64.whl - sha256: 8ac27f436e8af7779f0bb4d5425aa3535270494d3bc5459ed27de3f03151e4c2 + url: https://files.pythonhosted.org/packages/c6/b5/dc17e93f60567fa1b0fa3720c2f28e0df5293927e2356e066e87af9adaba/fonttools-4.51.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: b2b92381f37b39ba2fc98c3a45a9d6383bfc9916a87d66ccb6553f7bdd129097 requires_dist: - - fs <3, >=2.2.0 ; extra == 'all' - - lxml >=4.0 ; extra == 'all' - - zopfli >=0.1.4 ; extra == 'all' - - lz4 >=1.7.4.2 ; extra == 'all' + - fs<3,>=2.2.0 ; extra == 'all' + - lxml>=4.0 ; extra == 'all' + - zopfli>=0.1.4 ; extra == 'all' + - lz4>=1.7.4.2 ; extra == 'all' - pycairo ; extra == 'all' - matplotlib ; extra == 'all' - sympy ; extra == 'all' - - skia-pathops >=0.5.0 ; extra == 'all' - - uharfbuzz >=0.23.0 ; extra == 'all' - - brotlicffi >=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'all' + - skia-pathops>=0.5.0 ; extra == 'all' + - uharfbuzz>=0.23.0 ; extra == 'all' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'all' - scipy ; platform_python_implementation != 'PyPy' and extra == 'all' - - brotli >=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'all' + - brotli>=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'all' - munkres ; platform_python_implementation == 'PyPy' and extra == 'all' - - unicodedata2 >=15.1.0 ; python_version <= '3.12' and extra == 'all' + - unicodedata2>=15.1.0 ; python_version <= '3.12' and extra == 'all' - xattr ; sys_platform == 'darwin' and extra == 'all' - - lz4 >=1.7.4.2 ; extra == 'graphite' + - lz4>=1.7.4.2 ; extra == 'graphite' - pycairo ; extra == 'interpolatable' - scipy ; platform_python_implementation != 'PyPy' and extra == 'interpolatable' - munkres ; platform_python_implementation == 'PyPy' and extra == 'interpolatable' - - lxml >=4.0 ; extra == 'lxml' - - skia-pathops >=0.5.0 ; extra == 'pathops' + - lxml>=4.0 ; extra == 'lxml' + - skia-pathops>=0.5.0 ; extra == 'pathops' - matplotlib ; extra == 'plot' - - uharfbuzz >=0.23.0 ; extra == 'repacker' + - uharfbuzz>=0.23.0 ; extra == 'repacker' - sympy ; extra == 'symfont' - xattr ; sys_platform == 'darwin' and extra == 'type1' - - fs <3, >=2.2.0 ; extra == 'ufo' - - unicodedata2 >=15.1.0 ; python_version <= '3.12' and extra == 'unicode' - - zopfli >=0.1.4 ; extra == 'woff' - - brotlicffi >=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'woff' - - brotli >=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'woff' + - fs<3,>=2.2.0 ; extra == 'ufo' + - unicodedata2>=15.1.0 ; python_version <= '3.12' and extra == 'unicode' + - zopfli>=0.1.4 ; extra == 'woff' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'woff' + - brotli>=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'woff' requires_python: '>=3.8' - kind: pypi name: fonttools version: 4.51.0 - url: https://files.pythonhosted.org/packages/c6/b5/dc17e93f60567fa1b0fa3720c2f28e0df5293927e2356e066e87af9adaba/fonttools-4.51.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - sha256: b2b92381f37b39ba2fc98c3a45a9d6383bfc9916a87d66ccb6553f7bdd129097 + url: https://files.pythonhosted.org/packages/c5/d4/f426fa1ca42e47bcfff0c878fa9d49d9c03379d00903a7c178f95b97867a/fonttools-4.51.0-cp311-cp311-win_amd64.whl + sha256: 0f08c901d3866a8905363619e3741c33f0a83a680d92a9f0e575985c2634fcc1 requires_dist: - - fs <3, >=2.2.0 ; extra == 'all' - - lxml >=4.0 ; extra == 'all' - - zopfli >=0.1.4 ; extra == 'all' - - lz4 >=1.7.4.2 ; extra == 'all' + - fs<3,>=2.2.0 ; extra == 'all' + - lxml>=4.0 ; extra == 'all' + - zopfli>=0.1.4 ; extra == 'all' + - lz4>=1.7.4.2 ; extra == 'all' - pycairo ; extra == 'all' - matplotlib ; extra == 'all' - sympy ; extra == 'all' - - skia-pathops >=0.5.0 ; extra == 'all' - - uharfbuzz >=0.23.0 ; extra == 'all' - - brotlicffi >=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'all' + - skia-pathops>=0.5.0 ; extra == 'all' + - uharfbuzz>=0.23.0 ; extra == 'all' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'all' - scipy ; platform_python_implementation != 'PyPy' and extra == 'all' - - brotli >=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'all' + - brotli>=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'all' - munkres ; platform_python_implementation == 'PyPy' and extra == 'all' - - unicodedata2 >=15.1.0 ; python_version <= '3.12' and extra == 'all' + - unicodedata2>=15.1.0 ; python_version <= '3.12' and extra == 'all' - xattr ; sys_platform == 'darwin' and extra == 'all' - - lz4 >=1.7.4.2 ; extra == 'graphite' + - lz4>=1.7.4.2 ; extra == 'graphite' - pycairo ; extra == 'interpolatable' - scipy ; platform_python_implementation != 'PyPy' and extra == 'interpolatable' - munkres ; platform_python_implementation == 'PyPy' and extra == 'interpolatable' - - lxml >=4.0 ; extra == 'lxml' - - skia-pathops >=0.5.0 ; extra == 'pathops' + - lxml>=4.0 ; extra == 'lxml' + - skia-pathops>=0.5.0 ; extra == 'pathops' - matplotlib ; extra == 'plot' - - uharfbuzz >=0.23.0 ; extra == 'repacker' + - uharfbuzz>=0.23.0 ; extra == 'repacker' - sympy ; extra == 'symfont' - xattr ; sys_platform == 'darwin' and extra == 'type1' - - fs <3, >=2.2.0 ; extra == 'ufo' - - unicodedata2 >=15.1.0 ; python_version <= '3.12' and extra == 'unicode' - - zopfli >=0.1.4 ; extra == 'woff' - - brotlicffi >=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'woff' - - brotli >=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'woff' + - fs<3,>=2.2.0 ; extra == 'ufo' + - unicodedata2>=15.1.0 ; python_version <= '3.12' and extra == 'unicode' + - zopfli>=0.1.4 ; extra == 'woff' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'woff' + - brotli>=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'woff' requires_python: '>=3.8' - kind: pypi name: fonttools version: 4.51.0 - url: https://files.pythonhosted.org/packages/c5/d4/f426fa1ca42e47bcfff0c878fa9d49d9c03379d00903a7c178f95b97867a/fonttools-4.51.0-cp311-cp311-win_amd64.whl - sha256: 0f08c901d3866a8905363619e3741c33f0a83a680d92a9f0e575985c2634fcc1 + url: https://files.pythonhosted.org/packages/33/47/f2ca671af61757eaaac608963dda5b76ec9100621e45d0fd63a153fd8cd7/fonttools-4.51.0-cp311-cp311-macosx_10_9_universal2.whl + sha256: a8feca65bab31479d795b0d16c9a9852902e3a3c0630678efb0b2b7941ea9c74 requires_dist: - - fs <3, >=2.2.0 ; extra == 'all' - - lxml >=4.0 ; extra == 'all' - - zopfli >=0.1.4 ; extra == 'all' - - lz4 >=1.7.4.2 ; extra == 'all' + - fs<3,>=2.2.0 ; extra == 'all' + - lxml>=4.0 ; extra == 'all' + - zopfli>=0.1.4 ; extra == 'all' + - lz4>=1.7.4.2 ; extra == 'all' - pycairo ; extra == 'all' - matplotlib ; extra == 'all' - sympy ; extra == 'all' - - skia-pathops >=0.5.0 ; extra == 'all' - - uharfbuzz >=0.23.0 ; extra == 'all' - - brotlicffi >=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'all' + - skia-pathops>=0.5.0 ; extra == 'all' + - uharfbuzz>=0.23.0 ; extra == 'all' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'all' - scipy ; platform_python_implementation != 'PyPy' and extra == 'all' - - brotli >=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'all' + - brotli>=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'all' - munkres ; platform_python_implementation == 'PyPy' and extra == 'all' - - unicodedata2 >=15.1.0 ; python_version <= '3.12' and extra == 'all' + - unicodedata2>=15.1.0 ; python_version <= '3.12' and extra == 'all' - xattr ; sys_platform == 'darwin' and extra == 'all' - - lz4 >=1.7.4.2 ; extra == 'graphite' + - lz4>=1.7.4.2 ; extra == 'graphite' - pycairo ; extra == 'interpolatable' - scipy ; platform_python_implementation != 'PyPy' and extra == 'interpolatable' - munkres ; platform_python_implementation == 'PyPy' and extra == 'interpolatable' - - lxml >=4.0 ; extra == 'lxml' - - skia-pathops >=0.5.0 ; extra == 'pathops' + - lxml>=4.0 ; extra == 'lxml' + - skia-pathops>=0.5.0 ; extra == 'pathops' - matplotlib ; extra == 'plot' - - uharfbuzz >=0.23.0 ; extra == 'repacker' + - uharfbuzz>=0.23.0 ; extra == 'repacker' - sympy ; extra == 'symfont' - xattr ; sys_platform == 'darwin' and extra == 'type1' - - fs <3, >=2.2.0 ; extra == 'ufo' - - unicodedata2 >=15.1.0 ; python_version <= '3.12' and extra == 'unicode' - - zopfli >=0.1.4 ; extra == 'woff' - - brotlicffi >=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'woff' - - brotli >=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'woff' + - fs<3,>=2.2.0 ; extra == 'ufo' + - unicodedata2>=15.1.0 ; python_version <= '3.12' and extra == 'unicode' + - zopfli>=0.1.4 ; extra == 'woff' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'woff' + - brotli>=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'woff' requires_python: '>=3.8' - kind: pypi name: fonttools version: 4.51.0 - url: https://files.pythonhosted.org/packages/33/47/f2ca671af61757eaaac608963dda5b76ec9100621e45d0fd63a153fd8cd7/fonttools-4.51.0-cp311-cp311-macosx_10_9_universal2.whl - sha256: a8feca65bab31479d795b0d16c9a9852902e3a3c0630678efb0b2b7941ea9c74 + url: https://files.pythonhosted.org/packages/84/51/8203a3e6e475e6766ac950638d42f45470f36c6a4f0615ff0a1c1f2ed0d6/fonttools-4.51.0-cp311-cp311-macosx_10_9_x86_64.whl + sha256: 8ac27f436e8af7779f0bb4d5425aa3535270494d3bc5459ed27de3f03151e4c2 requires_dist: - - fs <3, >=2.2.0 ; extra == 'all' - - lxml >=4.0 ; extra == 'all' - - zopfli >=0.1.4 ; extra == 'all' - - lz4 >=1.7.4.2 ; extra == 'all' + - fs<3,>=2.2.0 ; extra == 'all' + - lxml>=4.0 ; extra == 'all' + - zopfli>=0.1.4 ; extra == 'all' + - lz4>=1.7.4.2 ; extra == 'all' - pycairo ; extra == 'all' - matplotlib ; extra == 'all' - sympy ; extra == 'all' - - skia-pathops >=0.5.0 ; extra == 'all' - - uharfbuzz >=0.23.0 ; extra == 'all' - - brotlicffi >=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'all' + - skia-pathops>=0.5.0 ; extra == 'all' + - uharfbuzz>=0.23.0 ; extra == 'all' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'all' - scipy ; platform_python_implementation != 'PyPy' and extra == 'all' - - brotli >=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'all' + - brotli>=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'all' - munkres ; platform_python_implementation == 'PyPy' and extra == 'all' - - unicodedata2 >=15.1.0 ; python_version <= '3.12' and extra == 'all' + - unicodedata2>=15.1.0 ; python_version <= '3.12' and extra == 'all' - xattr ; sys_platform == 'darwin' and extra == 'all' - - lz4 >=1.7.4.2 ; extra == 'graphite' + - lz4>=1.7.4.2 ; extra == 'graphite' - pycairo ; extra == 'interpolatable' - scipy ; platform_python_implementation != 'PyPy' and extra == 'interpolatable' - munkres ; platform_python_implementation == 'PyPy' and extra == 'interpolatable' - - lxml >=4.0 ; extra == 'lxml' - - skia-pathops >=0.5.0 ; extra == 'pathops' + - lxml>=4.0 ; extra == 'lxml' + - skia-pathops>=0.5.0 ; extra == 'pathops' - matplotlib ; extra == 'plot' - - uharfbuzz >=0.23.0 ; extra == 'repacker' + - uharfbuzz>=0.23.0 ; extra == 'repacker' - sympy ; extra == 'symfont' - xattr ; sys_platform == 'darwin' and extra == 'type1' - - fs <3, >=2.2.0 ; extra == 'ufo' - - unicodedata2 >=15.1.0 ; python_version <= '3.12' and extra == 'unicode' - - zopfli >=0.1.4 ; extra == 'woff' - - brotlicffi >=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'woff' - - brotli >=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'woff' + - fs<3,>=2.2.0 ; extra == 'ufo' + - unicodedata2>=15.1.0 ; python_version <= '3.12' and extra == 'unicode' + - zopfli>=0.1.4 ; extra == 'woff' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'woff' + - brotli>=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'woff' requires_python: '>=3.8' -- kind: pypi - name: freetype-py - version: 2.4.0 - url: https://files.pythonhosted.org/packages/7c/77/faec42d1ffac2b970f606860a5bb083d606f1c673a5c57ab26382c8efec1/freetype_py-2.4.0-py3-none-macosx_10_9_universal2.whl - sha256: 3e0f5a91bc812f42d98a92137e86bac4ed037a29e43dafdb76d716d5732189e8 - requires_python: '>=3.7' - kind: pypi name: freetype-py version: 2.4.0 @@ -9951,6 +9945,12 @@ packages: url: https://files.pythonhosted.org/packages/b4/f5/4b8bb492464247236bd3dabd7734b3ea49adc63cf2e53160e830ebccb39d/freetype_py-2.4.0-py3-none-win_amd64.whl sha256: a2620788d4f0c00bd75fee2dfca61635ab0da856131598c96e2355d5257f70e5 requires_python: '>=3.7' +- kind: pypi + name: freetype-py + version: 2.4.0 + url: https://files.pythonhosted.org/packages/7c/77/faec42d1ffac2b970f606860a5bb083d606f1c673a5c57ab26382c8efec1/freetype_py-2.4.0-py3-none-macosx_10_9_universal2.whl + sha256: 3e0f5a91bc812f42d98a92137e86bac4ed037a29e43dafdb76d716d5732189e8 + requires_python: '>=3.7' - kind: pypi name: frozendict version: 2.4.4 @@ -10057,7 +10057,7 @@ packages: requires_dist: - adlfs ; extra == 'abfs' - adlfs ; extra == 'adl' - - pyarrow >=1 ; extra == 'arrow' + - pyarrow>=1 ; extra == 'arrow' - dask ; extra == 'dask' - distributed ; extra == 'dask' - pytest ; extra == 'devel' @@ -10066,7 +10066,7 @@ packages: - requests ; extra == 'dropbox' - dropbox ; extra == 'dropbox' - adlfs ; extra == 'full' - - aiohttp !=4.0.0a0, !=4.0.0a1 ; extra == 'full' + - aiohttp!=4.0.0a0,!=4.0.0a1 ; extra == 'full' - dask ; extra == 'full' - distributed ; extra == 'full' - dropbox ; extra == 'full' @@ -10077,7 +10077,7 @@ packages: - ocifs ; extra == 'full' - panel ; extra == 'full' - paramiko ; extra == 'full' - - pyarrow >=1 ; extra == 'full' + - pyarrow>=1 ; extra == 'full' - pygit2 ; extra == 'full' - requests ; extra == 'full' - s3fs ; extra == 'full' @@ -10089,8 +10089,8 @@ packages: - requests ; extra == 'github' - gcsfs ; extra == 'gs' - panel ; extra == 'gui' - - pyarrow >=1 ; extra == 'hdfs' - - aiohttp !=4.0.0a0, !=4.0.0a1 ; extra == 'http' + - pyarrow>=1 ; extra == 'hdfs' + - aiohttp!=4.0.0a0,!=4.0.0a1 ; extra == 'http' - libarchive-c ; extra == 'libarchive' - ocifs ; extra == 'oci' - s3fs ; extra == 's3' @@ -10211,11 +10211,11 @@ packages: path: examples/python/gesture_detection sha256: 36dfc4cc822ee47f7aa29ba951bab8a94e96b9fd737daa324a441e6962a620bd requires_dist: - - mediapipe ==0.10.11 ; sys_platform != 'darwin' - - mediapipe ==0.10.9 ; sys_platform == 'darwin' + - mediapipe==0.10.11 ; sys_platform != 'darwin' + - mediapipe==0.10.9 ; sys_platform == 'darwin' - numpy - - opencv-python >4.9 - - requests <3, >=2.31 + - opencv-python>4.9 + - requests>=2.31,<3 - rerun-sdk - tqdm requires_python: <3.12 @@ -10531,17 +10531,17 @@ packages: url: https://files.pythonhosted.org/packages/86/75/59a3ad90d9b4ff5b3e0537611dbe885aeb96124521c9d35aa079f1e0f2c9/google_api_core-2.18.0-py3-none-any.whl sha256: 5a63aa102e0049abe85b5b88cb9409234c1f70afcda21ce1e40b285b9629c1d6 requires_dist: - - googleapis-common-protos <2.0.dev0, >=1.56.2 - - protobuf !=3.20.0, !=3.20.1, !=4.21.0, !=4.21.1, !=4.21.2, !=4.21.3, !=4.21.4, !=4.21.5, <5.0.0.dev0, >=3.19.5 - - proto-plus <2.0.0.dev0, >=1.22.3 - - google-auth <3.0.dev0, >=2.14.1 - - requests <3.0.0.dev0, >=2.18.0 - - grpcio <2.0.dev0, >=1.33.2 ; extra == 'grpc' - - grpcio-status <2.0.dev0, >=1.33.2 ; extra == 'grpc' - - grpcio <2.0.dev0, >=1.49.1 ; python_version >= '3.11' and extra == 'grpc' - - grpcio-status <2.0.dev0, >=1.49.1 ; python_version >= '3.11' and extra == 'grpc' - - grpcio-gcp <1.0.dev0, >=0.2.2 ; extra == 'grpcgcp' - - grpcio-gcp <1.0.dev0, >=0.2.2 ; extra == 'grpcio-gcp' + - googleapis-common-protos<2.0.dev0,>=1.56.2 + - protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0.dev0,>=3.19.5 + - proto-plus<2.0.0.dev0,>=1.22.3 + - google-auth<3.0.dev0,>=2.14.1 + - requests<3.0.0.dev0,>=2.18.0 + - grpcio<2.0.dev0,>=1.33.2 ; extra == 'grpc' + - grpcio-status<2.0.dev0,>=1.33.2 ; extra == 'grpc' + - grpcio<2.0.dev0,>=1.49.1 ; python_version >= '3.11' and extra == 'grpc' + - grpcio-status<2.0.dev0,>=1.49.1 ; python_version >= '3.11' and extra == 'grpc' + - grpcio-gcp<1.0.dev0,>=0.2.2 ; extra == 'grpcgcp' + - grpcio-gcp<1.0.dev0,>=0.2.2 ; extra == 'grpcio-gcp' requires_python: '>=3.7' - kind: pypi name: google-auth @@ -10549,17 +10549,17 @@ packages: url: https://files.pythonhosted.org/packages/9e/8d/ddbcf81ec751d8ee5fd18ac11ff38a0e110f39dfbf105e6d9db69d556dd0/google_auth-2.29.0-py2.py3-none-any.whl sha256: d452ad095688cd52bae0ad6fafe027f6a6d6f560e810fec20914e17a09526415 requires_dist: - - cachetools <6.0, >=2.0.0 - - pyasn1-modules >=0.2.1 - - rsa <5, >=3.1.4 - - aiohttp <4.0.0.dev0, >=3.6.2 ; extra == 'aiohttp' - - requests <3.0.0.dev0, >=2.20.0 ; extra == 'aiohttp' - - cryptography ==36.0.2 ; extra == 'enterprise_cert' - - pyopenssl ==22.0.0 ; extra == 'enterprise_cert' - - pyopenssl >=20.0.0 ; extra == 'pyopenssl' - - cryptography >=38.0.3 ; extra == 'pyopenssl' - - pyu2f >=0.1.5 ; extra == 'reauth' - - requests <3.0.0.dev0, >=2.20.0 ; extra == 'requests' + - cachetools<6.0,>=2.0.0 + - pyasn1-modules>=0.2.1 + - rsa<5,>=3.1.4 + - aiohttp<4.0.0.dev0,>=3.6.2 ; extra == 'aiohttp' + - requests<3.0.0.dev0,>=2.20.0 ; extra == 'aiohttp' + - cryptography==36.0.2 ; extra == 'enterprise_cert' + - pyopenssl==22.0.0 ; extra == 'enterprise_cert' + - pyopenssl>=20.0.0 ; extra == 'pyopenssl' + - cryptography>=38.0.3 ; extra == 'pyopenssl' + - pyu2f>=0.1.5 ; extra == 'reauth' + - requests<3.0.0.dev0,>=2.20.0 ; extra == 'requests' requires_python: '>=3.7' - kind: pypi name: google-cloud-core @@ -10567,11 +10567,11 @@ packages: url: https://files.pythonhosted.org/packages/5e/0f/2e2061e3fbcb9d535d5da3f58cc8de4947df1786fe6a1355960feb05a681/google_cloud_core-2.4.1-py2.py3-none-any.whl sha256: a9e6a4422b9ac5c29f79a0ede9485473338e2ce78d91f2370c01e730eab22e61 requires_dist: - - google-api-core !=2.0.*, !=2.1.*, !=2.2.*, !=2.3.0, <3.0.0.dev0, >=1.31.6 - - google-auth <3.0.dev0, >=1.25.0 - - importlib-metadata >1.0.0 ; python_version < '3.8' - - grpcio <2.0.dev0, >=1.38.0 ; extra == 'grpc' - - grpcio-status <2.0.dev0, >=1.38.0 ; extra == 'grpc' + - google-api-core!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0,<3.0.0.dev0,>=1.31.6 + - google-auth<3.0.dev0,>=1.25.0 + - importlib-metadata>1.0.0 ; python_version < '3.8' + - grpcio<2.0.dev0,>=1.38.0 ; extra == 'grpc' + - grpcio-status<2.0.dev0,>=1.38.0 ; extra == 'grpc' requires_python: '>=3.7' - kind: pypi name: google-cloud-storage @@ -10579,26 +10579,26 @@ packages: url: https://files.pythonhosted.org/packages/74/fb/3770e7f44cf6133f502e1b8503b6739351b53272cf8313b47f1de6cf4960/google_cloud_storage-2.9.0-py2.py3-none-any.whl sha256: 83a90447f23d5edd045e0037982c270302e3aeb45fc1288d2c2ca713d27bad94 requires_dist: - - google-auth <3.0.dev0, >=1.25.0 - - google-api-core !=2.0.*, !=2.1.*, !=2.2.*, !=2.3.0, <3.0.0.dev0, >=1.31.5 - - google-cloud-core <3.0.dev0, >=2.3.0 - - google-resumable-media >=2.3.2 - - requests <3.0.0.dev0, >=2.18.0 - - protobuf <5.0.0.dev0 ; extra == 'protobuf' + - google-auth<3.0.dev0,>=1.25.0 + - google-api-core!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.0,<3.0.0.dev0,>=1.31.5 + - google-cloud-core<3.0.dev0,>=2.3.0 + - google-resumable-media>=2.3.2 + - requests<3.0.0.dev0,>=2.18.0 + - protobuf<5.0.0.dev0 ; extra == 'protobuf' requires_python: '>=3.7' - kind: pypi name: google-crc32c version: 1.5.0 - url: https://files.pythonhosted.org/packages/69/0f/7f89ae2b22c55273110a44a7ed55a2948bc213fb58983093fbefcdfd2d13/google_crc32c-1.5.0-cp311-cp311-macosx_10_9_universal2.whl - sha256: cae0274952c079886567f3f4f685bcaf5708f0a23a5f5216fdab71f81a6c0273 + url: https://files.pythonhosted.org/packages/41/3f/8141b03ad127fc569c3efda2bfe31d64665e02e2b8b7fbf7b25ea914c27a/google_crc32c-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl + sha256: 1034d91442ead5a95b5aaef90dbfaca8633b0247d1e41621d1e9f9db88c36298 requires_dist: - pytest ; extra == 'testing' requires_python: '>=3.7' - kind: pypi name: google-crc32c version: 1.5.0 - url: https://files.pythonhosted.org/packages/ce/8b/02bf4765c487901c8660290ade9929d65a6151c367ba32e75d136ef2d0eb/google_crc32c-1.5.0-cp311-cp311-win_amd64.whl - sha256: ba1eb1843304b1e5537e1fca632fa894d6f6deca8d6389636ee5b4797affb968 + url: https://files.pythonhosted.org/packages/fc/76/3ef124b893aa280e45e95d2346160f1d1d5c0ffc89d3f6e446c83116fb91/google_crc32c-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl + sha256: 7c42c70cd1d362284289c6273adda4c6af8039a8ae12dc451dcd61cdabb8ab57 requires_dist: - pytest ; extra == 'testing' requires_python: '>=3.7' @@ -10613,16 +10613,16 @@ packages: - kind: pypi name: google-crc32c version: 1.5.0 - url: https://files.pythonhosted.org/packages/fc/76/3ef124b893aa280e45e95d2346160f1d1d5c0ffc89d3f6e446c83116fb91/google_crc32c-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl - sha256: 7c42c70cd1d362284289c6273adda4c6af8039a8ae12dc451dcd61cdabb8ab57 + url: https://files.pythonhosted.org/packages/69/0f/7f89ae2b22c55273110a44a7ed55a2948bc213fb58983093fbefcdfd2d13/google_crc32c-1.5.0-cp311-cp311-macosx_10_9_universal2.whl + sha256: cae0274952c079886567f3f4f685bcaf5708f0a23a5f5216fdab71f81a6c0273 requires_dist: - pytest ; extra == 'testing' requires_python: '>=3.7' - kind: pypi name: google-crc32c version: 1.5.0 - url: https://files.pythonhosted.org/packages/41/3f/8141b03ad127fc569c3efda2bfe31d64665e02e2b8b7fbf7b25ea914c27a/google_crc32c-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl - sha256: 1034d91442ead5a95b5aaef90dbfaca8633b0247d1e41621d1e9f9db88c36298 + url: https://files.pythonhosted.org/packages/ce/8b/02bf4765c487901c8660290ade9929d65a6151c367ba32e75d136ef2d0eb/google_crc32c-1.5.0-cp311-cp311-win_amd64.whl + sha256: ba1eb1843304b1e5537e1fca632fa894d6f6deca8d6389636ee5b4797affb968 requires_dist: - pytest ; extra == 'testing' requires_python: '>=3.7' @@ -10632,10 +10632,10 @@ packages: url: https://files.pythonhosted.org/packages/b2/c6/1202ef64a9336d846f713107dac1c7a0b016cb3840ca3d5615c7005a23d1/google_resumable_media-2.7.0-py2.py3-none-any.whl sha256: 79543cfe433b63fd81c0844b7803aba1bb8950b47bedf7d980c38fa123937e08 requires_dist: - - google-crc32c <2.0.dev0, >=1.0 - - aiohttp <4.0.0.dev0, >=3.6.2 ; extra == 'aiohttp' - - google-auth <2.0.dev0, >=1.22.0 ; extra == 'aiohttp' - - requests <3.0.0.dev0, >=2.18.0 ; extra == 'requests' + - google-crc32c<2.0.dev0,>=1.0 + - aiohttp<4.0.0.dev0,>=3.6.2 ; extra == 'aiohttp' + - google-auth<2.0.dev0,>=1.22.0 ; extra == 'aiohttp' + - requests<3.0.0.dev0,>=2.18.0 ; extra == 'requests' requires_python: '>=3.7' - kind: pypi name: googleapis-common-protos @@ -10643,8 +10643,8 @@ packages: url: https://files.pythonhosted.org/packages/dc/a6/12a0c976140511d8bc8a16ad15793b2aef29ac927baa0786ccb7ddbb6e1c/googleapis_common_protos-1.63.0-py2.py3-none-any.whl sha256: ae45f75702f7c08b541f750854a678bd8f534a1a6bace6afe975f1d0a82d6632 requires_dist: - - protobuf !=3.20.0, !=3.20.1, !=4.21.1, !=4.21.2, !=4.21.3, !=4.21.4, !=4.21.5, <5.0.0.dev0, >=3.19.5 - - grpcio <2.0.0.dev0, >=1.44.0 ; extra == 'grpc' + - protobuf!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0.dev0,>=3.19.5 + - grpcio<2.0.0.dev0,>=1.44.0 ; extra == 'grpc' requires_python: '>=3.7' - kind: pypi name: grpclib @@ -10652,9 +10652,9 @@ packages: url: https://files.pythonhosted.org/packages/79/b9/55936e462a5925190d7427e880b3033601d1effd13809b483d13a926061a/grpclib-0.4.7.tar.gz sha256: 2988ef57c02b22b7a2e8e961792c41ccf97efc2ace91ae7a5b0de03c363823c3 requires_dist: - - h2 <5, >=3.1.0 + - h2<5,>=3.1.0 - multidict - - protobuf >=3.20.0 ; extra == 'protobuf' + - protobuf>=3.20.0 ; extra == 'protobuf' requires_python: '>=3.7' - kind: conda name: gxx @@ -10764,8 +10764,8 @@ packages: url: https://files.pythonhosted.org/packages/2a/e5/db6d438da759efbb488c4f3fbdab7764492ff3c3f953132efa6b9f0e9e53/h2-4.1.0-py3-none-any.whl sha256: 03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d requires_dist: - - hyperframe <7, >=6.0 - - hpack <5, >=4.0 + - hyperframe<7,>=6.0 + - hpack<5,>=4.0 requires_python: '>=3.6.1' - kind: pypi name: hpack @@ -10779,12 +10779,12 @@ packages: url: https://files.pythonhosted.org/packages/6c/dd/a834df6482147d48e225a49515aabc28974ad5a4ca3215c18a882565b028/html5lib-1.1-py2.py3-none-any.whl sha256: 0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d requires_dist: - - six >=1.9 + - six>=1.9 - webencodings - genshi ; extra == 'all' - - chardet >=2.2 ; extra == 'all' + - chardet>=2.2 ; extra == 'all' - lxml ; platform_python_implementation == 'CPython' and extra == 'all' - - chardet >=2.2 ; extra == 'chardet' + - chardet>=2.2 ; extra == 'chardet' - genshi ; extra == 'genshi' - lxml ; platform_python_implementation == 'CPython' and extra == 'lxml' requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' @@ -10795,15 +10795,15 @@ packages: sha256: 075c30d48ee7db2bba779190dc526d2c11d422aed6f9044c5e2fdc2c432fdb91 requires_dist: - filelock - - fsspec >=2023.5.0 - - packaging >=20.9 - - pyyaml >=5.1 + - fsspec>=2023.5.0 + - packaging>=20.9 + - pyyaml>=5.1 - requests - - tqdm >=4.42.1 - - typing-extensions >=3.7.4.3 - - inquirerpy ==0.3.4 ; extra == 'all' + - tqdm>=4.42.1 + - typing-extensions>=3.7.4.3 + - inquirerpy==0.3.4 ; extra == 'all' - aiohttp ; extra == 'all' - - minijinja >=1.0 ; extra == 'all' + - minijinja>=1.0 ; extra == 'all' - jedi ; extra == 'all' - jinja2 ; extra == 'all' - pytest ; extra == 'all' @@ -10813,25 +10813,25 @@ packages: - pytest-vcr ; extra == 'all' - pytest-asyncio ; extra == 'all' - pytest-rerunfailures ; extra == 'all' - - urllib3 <2.0 ; extra == 'all' + - urllib3<2.0 ; extra == 'all' - soundfile ; extra == 'all' - pillow ; extra == 'all' - gradio ; extra == 'all' - numpy ; extra == 'all' - fastapi ; extra == 'all' - - ruff >=0.3.0 ; extra == 'all' - - mypy ==1.5.1 ; extra == 'all' - - typing-extensions >=4.8.0 ; extra == 'all' + - ruff>=0.3.0 ; extra == 'all' + - mypy==1.5.1 ; extra == 'all' + - typing-extensions>=4.8.0 ; extra == 'all' - types-pyyaml ; extra == 'all' - types-requests ; extra == 'all' - types-simplejson ; extra == 'all' - types-toml ; extra == 'all' - types-tqdm ; extra == 'all' - types-urllib3 ; extra == 'all' - - inquirerpy ==0.3.4 ; extra == 'cli' - - inquirerpy ==0.3.4 ; extra == 'dev' + - inquirerpy==0.3.4 ; extra == 'cli' + - inquirerpy==0.3.4 ; extra == 'dev' - aiohttp ; extra == 'dev' - - minijinja >=1.0 ; extra == 'dev' + - minijinja>=1.0 ; extra == 'dev' - jedi ; extra == 'dev' - jinja2 ; extra == 'dev' - pytest ; extra == 'dev' @@ -10841,15 +10841,15 @@ packages: - pytest-vcr ; extra == 'dev' - pytest-asyncio ; extra == 'dev' - pytest-rerunfailures ; extra == 'dev' - - urllib3 <2.0 ; extra == 'dev' + - urllib3<2.0 ; extra == 'dev' - soundfile ; extra == 'dev' - pillow ; extra == 'dev' - gradio ; extra == 'dev' - numpy ; extra == 'dev' - fastapi ; extra == 'dev' - - ruff >=0.3.0 ; extra == 'dev' - - mypy ==1.5.1 ; extra == 'dev' - - typing-extensions >=4.8.0 ; extra == 'dev' + - ruff>=0.3.0 ; extra == 'dev' + - mypy==1.5.1 ; extra == 'dev' + - typing-extensions>=4.8.0 ; extra == 'dev' - types-pyyaml ; extra == 'dev' - types-requests ; extra == 'dev' - types-simplejson ; extra == 'dev' @@ -10857,21 +10857,21 @@ packages: - types-tqdm ; extra == 'dev' - types-urllib3 ; extra == 'dev' - toml ; extra == 'fastai' - - fastai >=2.4 ; extra == 'fastai' - - fastcore >=1.3.27 ; extra == 'fastai' - - hf-transfer >=0.1.4 ; extra == 'hf_transfer' + - fastai>=2.4 ; extra == 'fastai' + - fastcore>=1.3.27 ; extra == 'fastai' + - hf-transfer>=0.1.4 ; extra == 'hf_transfer' - aiohttp ; extra == 'inference' - - minijinja >=1.0 ; extra == 'inference' - - ruff >=0.3.0 ; extra == 'quality' - - mypy ==1.5.1 ; extra == 'quality' + - minijinja>=1.0 ; extra == 'inference' + - ruff>=0.3.0 ; extra == 'quality' + - mypy==1.5.1 ; extra == 'quality' - tensorflow ; extra == 'tensorflow' - pydot ; extra == 'tensorflow' - graphviz ; extra == 'tensorflow' - tensorflow ; extra == 'tensorflow-testing' - - keras <3.0 ; extra == 'tensorflow-testing' - - inquirerpy ==0.3.4 ; extra == 'testing' + - keras<3.0 ; extra == 'tensorflow-testing' + - inquirerpy==0.3.4 ; extra == 'testing' - aiohttp ; extra == 'testing' - - minijinja >=1.0 ; extra == 'testing' + - minijinja>=1.0 ; extra == 'testing' - jedi ; extra == 'testing' - jinja2 ; extra == 'testing' - pytest ; extra == 'testing' @@ -10881,7 +10881,7 @@ packages: - pytest-vcr ; extra == 'testing' - pytest-asyncio ; extra == 'testing' - pytest-rerunfailures ; extra == 'testing' - - urllib3 <2.0 ; extra == 'testing' + - urllib3<2.0 ; extra == 'testing' - soundfile ; extra == 'testing' - pillow ; extra == 'testing' - gradio ; extra == 'testing' @@ -10889,7 +10889,7 @@ packages: - fastapi ; extra == 'testing' - torch ; extra == 'torch' - safetensors ; extra == 'torch' - - typing-extensions >=4.8.0 ; extra == 'typing' + - typing-extensions>=4.8.0 ; extra == 'typing' - types-pyyaml ; extra == 'typing' - types-requests ; extra == 'typing' - types-simplejson ; extra == 'typing' @@ -10903,11 +10903,11 @@ packages: path: examples/python/human_pose_tracking sha256: 8a80b67528d3f6d0c82671dc5c36cf551faa4b879f4434f0d386d8ef85666e86 requires_dist: - - mediapipe ==0.10.11 ; sys_platform != 'darwin' - - mediapipe ==0.10.9 ; sys_platform == 'darwin' + - mediapipe==0.10.11 ; sys_platform != 'darwin' + - mediapipe==0.10.9 ; sys_platform == 'darwin' - numpy - - opencv-python >4.6 - - requests <3, >=2.31 + - opencv-python>4.6 + - requests>=2.31,<3 - rerun-sdk requires_python: <3.12 editable: true @@ -11011,7 +11011,7 @@ packages: sha256: 408c1d4d62f72c9e8347e7d1ca9bc11d8673328af3913868db3b828e28b40a4c requires_dist: - numpy - - pillow >=8.3.2 + - pillow>=8.3.2 - astropy ; extra == 'all-plugins' - av ; extra == 'all-plugins' - imageio-ffmpeg ; extra == 'all-plugins' @@ -11029,7 +11029,7 @@ packages: - fsspec[github] ; extra == 'dev' - black ; extra == 'dev' - flake8 ; extra == 'dev' - - sphinx <6 ; extra == 'docs' + - sphinx<6 ; extra == 'docs' - numpydoc ; extra == 'docs' - pydata-sphinx-theme ; extra == 'docs' - imageio-ffmpeg ; extra == 'ffmpeg' @@ -11049,7 +11049,7 @@ packages: - pydata-sphinx-theme ; extra == 'full' - pytest ; extra == 'full' - pytest-cov ; extra == 'full' - - sphinx <6 ; extra == 'full' + - sphinx<6 ; extra == 'full' - tifffile ; extra == 'full' - wheel ; extra == 'full' - gdal ; extra == 'gdal' @@ -11069,27 +11069,27 @@ packages: url: https://files.pythonhosted.org/packages/2d/0a/679461c511447ffaf176567d5c496d1de27cbe34a87df6677d7171b2fbd4/importlib_metadata-7.1.0-py3-none-any.whl sha256: 30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570 requires_dist: - - zipp >=0.5 - - typing-extensions >=3.6.4 ; python_version < '3.8' - - sphinx >=3.5 ; extra == 'docs' - - jaraco-packaging >=9.3 ; extra == 'docs' - - rst-linker >=1.9 ; extra == 'docs' + - zipp>=0.5 + - typing-extensions>=3.6.4 ; python_version < '3.8' + - sphinx>=3.5 ; extra == 'docs' + - jaraco-packaging>=9.3 ; extra == 'docs' + - rst-linker>=1.9 ; extra == 'docs' - furo ; extra == 'docs' - sphinx-lint ; extra == 'docs' - - jaraco-tidelift >=1.4 ; extra == 'docs' + - jaraco-tidelift>=1.4 ; extra == 'docs' - ipython ; extra == 'perf' - - pytest >=6 ; extra == 'testing' - - pytest-checkdocs >=2.4 ; extra == 'testing' + - pytest>=6 ; extra == 'testing' + - pytest-checkdocs>=2.4 ; extra == 'testing' - pytest-cov ; extra == 'testing' - - pytest-enabler >=2.2 ; extra == 'testing' - - pytest-ruff >=0.2.1 ; extra == 'testing' + - pytest-enabler>=2.2 ; extra == 'testing' + - pytest-ruff>=0.2.1 ; extra == 'testing' - packaging ; extra == 'testing' - pyfakefs ; extra == 'testing' - flufl-flake8 ; extra == 'testing' - - pytest-perf >=0.9.2 ; extra == 'testing' - - jaraco-test >=5.4 ; extra == 'testing' + - pytest-perf>=0.9.2 ; extra == 'testing' + - jaraco-test>=5.4 ; extra == 'testing' - pytest-mypy ; platform_python_implementation != 'PyPy' and extra == 'testing' - - importlib-resources >=1.3 ; python_version < '3.9' and extra == 'testing' + - importlib-resources>=1.3 ; python_version < '3.9' and extra == 'testing' requires_python: '>=3.8' - kind: pypi name: incremental-logging @@ -11166,46 +11166,46 @@ packages: url: https://files.pythonhosted.org/packages/20/11/6667e8a2146d62b7e585c389cc39cede4993f7380101cae052e8dce546c2/jax-0.4.28-py3-none-any.whl sha256: 6a181e6b5a5b1140e19cdd2d5c4aa779e4cb4ec627757b918be322d8e81035ba requires_dist: - - ml-dtypes >=0.2.0 - - numpy >=1.22 + - ml-dtypes>=0.2.0 + - numpy>=1.22 - opt-einsum - - scipy >=1.9 - - importlib-metadata >=4.6 ; python_version < '3.10' - - numpy >=1.23.2 ; python_version >= '3.11' - - numpy >=1.26.0 ; python_version >= '3.12' - - scipy >=1.11.1 ; python_version >= '3.12' - - protobuf <4, >=3.13 ; extra == 'australis' - - jaxlib ==0.4.27 ; extra == 'ci' - - jaxlib ==0.4.28 ; extra == 'cpu' - - jaxlib ==0.4.28+cuda12.cudnn89 ; extra == 'cuda' - - jaxlib ==0.4.28 ; extra == 'cuda12' - - jax-cuda12-plugin ==0.4.28 ; extra == 'cuda12' - - nvidia-cublas-cu12 >=12.1.3.1 ; extra == 'cuda12' - - nvidia-cuda-cupti-cu12 >=12.1.105 ; extra == 'cuda12' - - nvidia-cuda-nvcc-cu12 >=12.1.105 ; extra == 'cuda12' - - nvidia-cuda-runtime-cu12 >=12.1.105 ; extra == 'cuda12' - - nvidia-cudnn-cu12 <9.0, >=8.9.2.26 ; extra == 'cuda12' - - nvidia-cufft-cu12 >=11.0.2.54 ; extra == 'cuda12' - - nvidia-cusolver-cu12 >=11.4.5.107 ; extra == 'cuda12' - - nvidia-cusparse-cu12 >=12.1.0.106 ; extra == 'cuda12' - - nvidia-nccl-cu12 >=2.18.1 ; extra == 'cuda12' - - nvidia-nvjitlink-cu12 >=12.1.105 ; extra == 'cuda12' - - jaxlib ==0.4.28+cuda12.cudnn89 ; extra == 'cuda12_cudnn89' - - jaxlib ==0.4.28+cuda12.cudnn89 ; extra == 'cuda12_local' - - jaxlib ==0.4.28+cuda12.cudnn89 ; extra == 'cuda12_pip' - - nvidia-cublas-cu12 >=12.1.3.1 ; extra == 'cuda12_pip' - - nvidia-cuda-cupti-cu12 >=12.1.105 ; extra == 'cuda12_pip' - - nvidia-cuda-nvcc-cu12 >=12.1.105 ; extra == 'cuda12_pip' - - nvidia-cuda-runtime-cu12 >=12.1.105 ; extra == 'cuda12_pip' - - nvidia-cudnn-cu12 <9.0, >=8.9.2.26 ; extra == 'cuda12_pip' - - nvidia-cufft-cu12 >=11.0.2.54 ; extra == 'cuda12_pip' - - nvidia-cusolver-cu12 >=11.4.5.107 ; extra == 'cuda12_pip' - - nvidia-cusparse-cu12 >=12.1.0.106 ; extra == 'cuda12_pip' - - nvidia-nccl-cu12 >=2.18.1 ; extra == 'cuda12_pip' - - nvidia-nvjitlink-cu12 >=12.1.105 ; extra == 'cuda12_pip' - - jaxlib ==0.4.27 ; extra == 'minimum-jaxlib' - - jaxlib ==0.4.28 ; extra == 'tpu' - - libtpu-nightly ==0.1.dev20240508 ; extra == 'tpu' + - scipy>=1.9 + - importlib-metadata>=4.6 ; python_version < '3.10' + - numpy>=1.23.2 ; python_version >= '3.11' + - numpy>=1.26.0 ; python_version >= '3.12' + - scipy>=1.11.1 ; python_version >= '3.12' + - protobuf<4,>=3.13 ; extra == 'australis' + - jaxlib==0.4.27 ; extra == 'ci' + - jaxlib==0.4.28 ; extra == 'cpu' + - jaxlib==0.4.28+cuda12.cudnn89 ; extra == 'cuda' + - jaxlib==0.4.28 ; extra == 'cuda12' + - jax-cuda12-plugin==0.4.28 ; extra == 'cuda12' + - nvidia-cublas-cu12>=12.1.3.1 ; extra == 'cuda12' + - nvidia-cuda-cupti-cu12>=12.1.105 ; extra == 'cuda12' + - nvidia-cuda-nvcc-cu12>=12.1.105 ; extra == 'cuda12' + - nvidia-cuda-runtime-cu12>=12.1.105 ; extra == 'cuda12' + - nvidia-cudnn-cu12<9.0,>=8.9.2.26 ; extra == 'cuda12' + - nvidia-cufft-cu12>=11.0.2.54 ; extra == 'cuda12' + - nvidia-cusolver-cu12>=11.4.5.107 ; extra == 'cuda12' + - nvidia-cusparse-cu12>=12.1.0.106 ; extra == 'cuda12' + - nvidia-nccl-cu12>=2.18.1 ; extra == 'cuda12' + - nvidia-nvjitlink-cu12>=12.1.105 ; extra == 'cuda12' + - jaxlib==0.4.28+cuda12.cudnn89 ; extra == 'cuda12_cudnn89' + - jaxlib==0.4.28+cuda12.cudnn89 ; extra == 'cuda12_local' + - jaxlib==0.4.28+cuda12.cudnn89 ; extra == 'cuda12_pip' + - nvidia-cublas-cu12>=12.1.3.1 ; extra == 'cuda12_pip' + - nvidia-cuda-cupti-cu12>=12.1.105 ; extra == 'cuda12_pip' + - nvidia-cuda-nvcc-cu12>=12.1.105 ; extra == 'cuda12_pip' + - nvidia-cuda-runtime-cu12>=12.1.105 ; extra == 'cuda12_pip' + - nvidia-cudnn-cu12<9.0,>=8.9.2.26 ; extra == 'cuda12_pip' + - nvidia-cufft-cu12>=11.0.2.54 ; extra == 'cuda12_pip' + - nvidia-cusolver-cu12>=11.4.5.107 ; extra == 'cuda12_pip' + - nvidia-cusparse-cu12>=12.1.0.106 ; extra == 'cuda12_pip' + - nvidia-nccl-cu12>=2.18.1 ; extra == 'cuda12_pip' + - nvidia-nvjitlink-cu12>=12.1.105 ; extra == 'cuda12_pip' + - jaxlib==0.4.27 ; extra == 'minimum-jaxlib' + - jaxlib==0.4.28 ; extra == 'tpu' + - libtpu-nightly==0.1.dev20240508 ; extra == 'tpu' - requests ; extra == 'tpu' requires_python: '>=3.9' - kind: pypi @@ -11214,20 +11214,20 @@ packages: url: https://files.pythonhosted.org/packages/8e/d7/65b1f5cf05d9159abd5882a51695d4d1b386bc8e26140eff7159854777f2/jaxlib-0.4.28-cp311-cp311-manylinux2014_x86_64.whl sha256: 45ce0f3c840cff8236cff26c37f26c9ff078695f93e0c162c320c281f5041275 requires_dist: - - scipy >=1.9 - - numpy >=1.22 - - ml-dtypes >=0.2.0 - - scipy >=1.11.1 ; python_version >= '3.12' - - nvidia-cublas-cu12 >=12.1.3.1 ; extra == 'cuda12_pip' - - nvidia-cuda-cupti-cu12 >=12.1.105 ; extra == 'cuda12_pip' - - nvidia-cuda-nvcc-cu12 >=12.1.105 ; extra == 'cuda12_pip' - - nvidia-cuda-runtime-cu12 >=12.1.105 ; extra == 'cuda12_pip' - - nvidia-cudnn-cu12 <9.0, >=8.9.2.26 ; extra == 'cuda12_pip' - - nvidia-cufft-cu12 >=11.0.2.54 ; extra == 'cuda12_pip' - - nvidia-cusolver-cu12 >=11.4.5.107 ; extra == 'cuda12_pip' - - nvidia-cusparse-cu12 >=12.1.0.106 ; extra == 'cuda12_pip' - - nvidia-nccl-cu12 >=2.18.1 ; extra == 'cuda12_pip' - - nvidia-nvjitlink-cu12 >=12.1.105 ; extra == 'cuda12_pip' + - scipy>=1.9 + - numpy>=1.22 + - ml-dtypes>=0.2.0 + - scipy>=1.11.1 ; python_version >= '3.12' + - nvidia-cublas-cu12>=12.1.3.1 ; extra == 'cuda12_pip' + - nvidia-cuda-cupti-cu12>=12.1.105 ; extra == 'cuda12_pip' + - nvidia-cuda-nvcc-cu12>=12.1.105 ; extra == 'cuda12_pip' + - nvidia-cuda-runtime-cu12>=12.1.105 ; extra == 'cuda12_pip' + - nvidia-cudnn-cu12<9.0,>=8.9.2.26 ; extra == 'cuda12_pip' + - nvidia-cufft-cu12>=11.0.2.54 ; extra == 'cuda12_pip' + - nvidia-cusolver-cu12>=11.4.5.107 ; extra == 'cuda12_pip' + - nvidia-cusparse-cu12>=12.1.0.106 ; extra == 'cuda12_pip' + - nvidia-nccl-cu12>=2.18.1 ; extra == 'cuda12_pip' + - nvidia-nvjitlink-cu12>=12.1.105 ; extra == 'cuda12_pip' requires_python: '>=3.9' - kind: pypi name: jinja2 @@ -11235,8 +11235,8 @@ packages: url: https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl sha256: bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d requires_dist: - - markupsafe >=2.0 - - babel >=2.7 ; extra == 'i18n' + - markupsafe>=2.0 + - babel>=2.7 ; extra == 'i18n' requires_python: '>=3.7' - kind: conda name: jinja2 @@ -11322,14 +11322,6 @@ packages: license: LGPL-2.1-or-later size: 112327 timestamp: 1646166857935 -- kind: pypi - name: kiwisolver - version: 1.4.5 - url: https://files.pythonhosted.org/packages/a6/94/695922e71288855fc7cace3bdb52edda9d7e50edba77abb0c9d7abb51e96/kiwisolver-1.4.5-cp311-cp311-macosx_10_9_x86_64.whl - sha256: 8ab3919a9997ab7ef2fbbed0cc99bb28d3c13e6d4b1ad36e97e482558a91be90 - requires_dist: - - typing-extensions ; python_version < '3.8' - requires_python: '>=3.7' - kind: pypi name: kiwisolver version: 1.4.5 @@ -11354,6 +11346,14 @@ packages: requires_dist: - typing-extensions ; python_version < '3.8' requires_python: '>=3.7' +- kind: pypi + name: kiwisolver + version: 1.4.5 + url: https://files.pythonhosted.org/packages/a6/94/695922e71288855fc7cace3bdb52edda9d7e50edba77abb0c9d7abb51e96/kiwisolver-1.4.5-cp311-cp311-macosx_10_9_x86_64.whl + sha256: 8ab3919a9997ab7ef2fbbed0cc99bb28d3c13e6d4b1ad36e97e482558a91be90 + requires_dist: + - typing-extensions ; python_version < '3.8' + requires_python: '>=3.7' - kind: conda name: krb5 version: 1.21.2 @@ -11451,10 +11451,10 @@ packages: requires_dist: - packaging - importlib-metadata ; python_version < '3.8' - - changelist ==0.5 ; extra == 'dev' - - pre-commit ==3.7.0 ; extra == 'lint' - - pytest >=7.4 ; extra == 'test' - - pytest-cov >=4.1 ; extra == 'test' + - changelist==0.5 ; extra == 'dev' + - pre-commit==3.7.0 ; extra == 'lint' + - pytest>=7.4 ; extra == 'test' + - pytest-cov>=4.1 ; extra == 'test' requires_python: '>=3.7' - kind: conda name: ld64 @@ -19892,12 +19892,6 @@ packages: license_family: Apache size: 22221159 timestamp: 1701379965425 -- kind: pypi - name: llvmlite - version: 0.42.0 - url: https://files.pythonhosted.org/packages/13/97/4aac09bdfc1bc35f8eb64e21ff5897224a788170e5e8cab3e62c9eb78efb/llvmlite-0.42.0-cp311-cp311-macosx_10_9_x86_64.whl - sha256: ae511caed28beaf1252dbaf5f40e663f533b79ceb408c874c01754cafabb9cbf - requires_python: '>=3.9' - kind: pypi name: llvmlite version: 0.42.0 @@ -19916,6 +19910,12 @@ packages: url: https://files.pythonhosted.org/packages/ba/3a/286d01191e62ddbe645d4a3f1e0d96106a98d3fd7f82441d20ffe93ab669/llvmlite-0.42.0-cp311-cp311-macosx_11_0_arm64.whl sha256: 81e674c2fe85576e6c4474e8c7e7aba7901ac0196e864fe7985492b737dbab65 requires_python: '>=3.9' +- kind: pypi + name: llvmlite + version: 0.42.0 + url: https://files.pythonhosted.org/packages/13/97/4aac09bdfc1bc35f8eb64e21ff5897224a788170e5e8cab3e62c9eb78efb/llvmlite-0.42.0-cp311-cp311-macosx_10_9_x86_64.whl + sha256: ae511caed28beaf1252dbaf5f40e663f533b79ceb408c874c01754cafabb9cbf + requires_python: '>=3.9' - kind: pypi name: log-file version: 0.1.0 @@ -19927,50 +19927,50 @@ packages: - kind: pypi name: lxml version: 5.2.2 - url: https://files.pythonhosted.org/packages/4e/42/3bfe92749715c819763d2205370ecc7f586b44e277f38839e27cce7d6bb8/lxml-5.2.2-cp311-cp311-macosx_10_9_x86_64.whl - sha256: b0b3f2df149efb242cee2ffdeb6674b7f30d23c9a7af26595099afaf46ef4e88 + url: https://files.pythonhosted.org/packages/ad/b7/0dc82afed00c4c189cfd0b83464f9a431c66de8e73d911063956a147276a/lxml-5.2.2-cp311-cp311-manylinux_2_28_x86_64.whl + sha256: eb00b549b13bd6d884c863554566095bf6fa9c3cecb2e7b399c4bc7904cb33b5 requires_dist: - - cssselect >=0.7 ; extra == 'cssselect' + - cssselect>=0.7 ; extra == 'cssselect' - html5lib ; extra == 'html5' - lxml-html-clean ; extra == 'html_clean' - beautifulsoup4 ; extra == 'htmlsoup' - - cython >=3.0.10 ; extra == 'source' + - cython>=3.0.10 ; extra == 'source' requires_python: '>=3.6' - kind: pypi name: lxml version: 5.2.2 - url: https://files.pythonhosted.org/packages/ad/b7/0dc82afed00c4c189cfd0b83464f9a431c66de8e73d911063956a147276a/lxml-5.2.2-cp311-cp311-manylinux_2_28_x86_64.whl - sha256: eb00b549b13bd6d884c863554566095bf6fa9c3cecb2e7b399c4bc7904cb33b5 + url: https://files.pythonhosted.org/packages/04/19/d6aa2d980f220a04c91d4de538d2fea1a65535e7b0a4aec0998ce46e3667/lxml-5.2.2-cp311-cp311-win_amd64.whl + sha256: 49095a38eb333aaf44c06052fd2ec3b8f23e19747ca7ec6f6c954ffea6dbf7be requires_dist: - - cssselect >=0.7 ; extra == 'cssselect' + - cssselect>=0.7 ; extra == 'cssselect' - html5lib ; extra == 'html5' - lxml-html-clean ; extra == 'html_clean' - beautifulsoup4 ; extra == 'htmlsoup' - - cython >=3.0.10 ; extra == 'source' + - cython>=3.0.10 ; extra == 'source' requires_python: '>=3.6' - kind: pypi name: lxml version: 5.2.2 - url: https://files.pythonhosted.org/packages/04/19/d6aa2d980f220a04c91d4de538d2fea1a65535e7b0a4aec0998ce46e3667/lxml-5.2.2-cp311-cp311-win_amd64.whl - sha256: 49095a38eb333aaf44c06052fd2ec3b8f23e19747ca7ec6f6c954ffea6dbf7be + url: https://files.pythonhosted.org/packages/da/6a/24e9f77d17668dd4ac0a6c2a56113fd3e0db07cee51e3a67afcd47c597e5/lxml-5.2.2-cp311-cp311-macosx_10_9_universal2.whl + sha256: 45f9494613160d0405682f9eee781c7e6d1bf45f819654eb249f8f46a2c22545 requires_dist: - - cssselect >=0.7 ; extra == 'cssselect' + - cssselect>=0.7 ; extra == 'cssselect' - html5lib ; extra == 'html5' - lxml-html-clean ; extra == 'html_clean' - beautifulsoup4 ; extra == 'htmlsoup' - - cython >=3.0.10 ; extra == 'source' + - cython>=3.0.10 ; extra == 'source' requires_python: '>=3.6' - kind: pypi name: lxml version: 5.2.2 - url: https://files.pythonhosted.org/packages/da/6a/24e9f77d17668dd4ac0a6c2a56113fd3e0db07cee51e3a67afcd47c597e5/lxml-5.2.2-cp311-cp311-macosx_10_9_universal2.whl - sha256: 45f9494613160d0405682f9eee781c7e6d1bf45f819654eb249f8f46a2c22545 + url: https://files.pythonhosted.org/packages/4e/42/3bfe92749715c819763d2205370ecc7f586b44e277f38839e27cce7d6bb8/lxml-5.2.2-cp311-cp311-macosx_10_9_x86_64.whl + sha256: b0b3f2df149efb242cee2ffdeb6674b7f30d23c9a7af26595099afaf46ef4e88 requires_dist: - - cssselect >=0.7 ; extra == 'cssselect' + - cssselect>=0.7 ; extra == 'cssselect' - html5lib ; extra == 'html5' - lxml-html-clean ; extra == 'html_clean' - beautifulsoup4 ; extra == 'htmlsoup' - - cython >=3.0.10 ; extra == 'source' + - cython>=3.0.10 ; extra == 'source' requires_python: '>=3.6' - kind: conda name: lz4-c @@ -20123,12 +20123,6 @@ packages: license: MIT, BSD size: 31928 timestamp: 1608166099896 -- kind: pypi - name: markupsafe - version: 2.1.5 - url: https://files.pythonhosted.org/packages/6b/cb/aed7a284c00dfa7c0682d14df85ad4955a350a21d2e3b06d8240497359bf/MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl - sha256: 5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2 - requires_python: '>=3.7' - kind: pypi name: markupsafe version: 2.1.5 @@ -20147,6 +20141,12 @@ packages: url: https://files.pythonhosted.org/packages/11/e7/291e55127bb2ae67c64d66cef01432b5933859dfb7d6949daa721b89d0b3/MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl sha256: 629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f requires_python: '>=3.7' +- kind: pypi + name: markupsafe + version: 2.1.5 + url: https://files.pythonhosted.org/packages/6b/cb/aed7a284c00dfa7c0682d14df85ad4955a350a21d2e3b06d8240497359bf/MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl + sha256: 5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2 + requires_python: '>=3.7' - kind: conda name: markupsafe version: 2.1.5 @@ -20254,52 +20254,35 @@ packages: url: https://files.pythonhosted.org/packages/be/24/cbb242420021a79c87768dcd22ce028f48ef40913239ad6106c8a557f52c/marshmallow-3.21.2-py3-none-any.whl sha256: 70b54a6282f4704d12c0a41599682c5c5450e843b9ec406308653b47c59648a1 requires_dist: - - packaging >=17.0 + - packaging>=17.0 - marshmallow[tests] ; extra == 'dev' - tox ; extra == 'dev' - - pre-commit ~=3.5 ; extra == 'dev' - - sphinx ==7.3.7 ; extra == 'docs' - - sphinx-issues ==4.1.0 ; extra == 'docs' - - alabaster ==0.7.16 ; extra == 'docs' - - sphinx-version-warning ==1.1.2 ; extra == 'docs' - - autodocsumm ==0.2.12 ; extra == 'docs' + - pre-commit~=3.5 ; extra == 'dev' + - sphinx==7.3.7 ; extra == 'docs' + - sphinx-issues==4.1.0 ; extra == 'docs' + - alabaster==0.7.16 ; extra == 'docs' + - sphinx-version-warning==1.1.2 ; extra == 'docs' + - autodocsumm==0.2.12 ; extra == 'docs' - pytest ; extra == 'tests' - pytz ; extra == 'tests' - simplejson ; extra == 'tests' requires_python: '>=3.8' -- kind: pypi - name: matplotlib - version: 3.8.4 - url: https://files.pythonhosted.org/packages/36/11/62250ea25780d4b59c2c6044ec161235c47cc05a18d0ec0a05657de75b7d/matplotlib-3.8.4-cp311-cp311-macosx_10_12_x86_64.whl - sha256: 72f9322712e4562e792b2961971891b9fbbb0e525011e09ea0d1f416c4645661 - requires_dist: - - contourpy >=1.0.1 - - cycler >=0.10 - - fonttools >=4.22.0 - - kiwisolver >=1.3.1 - - numpy >=1.21 - - packaging >=20.0 - - pillow >=8 - - pyparsing >=2.3.1 - - python-dateutil >=2.7 - - importlib-resources >=3.2.0 ; python_version < '3.10' - requires_python: '>=3.9' - kind: pypi name: matplotlib version: 3.8.4 url: https://files.pythonhosted.org/packages/80/3b/e363612ac1a514abfb5505aa209dd5b724b3232a6de98710d7759559706a/matplotlib-3.8.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl sha256: cc4ccdc64e3039fc303defd119658148f2349239871db72cd74e2eeaa9b80b71 requires_dist: - - contourpy >=1.0.1 - - cycler >=0.10 - - fonttools >=4.22.0 - - kiwisolver >=1.3.1 - - numpy >=1.21 - - packaging >=20.0 - - pillow >=8 - - pyparsing >=2.3.1 - - python-dateutil >=2.7 - - importlib-resources >=3.2.0 ; python_version < '3.10' + - contourpy>=1.0.1 + - cycler>=0.10 + - fonttools>=4.22.0 + - kiwisolver>=1.3.1 + - numpy>=1.21 + - packaging>=20.0 + - pillow>=8 + - pyparsing>=2.3.1 + - python-dateutil>=2.7 + - importlib-resources>=3.2.0 ; python_version < '3.10' requires_python: '>=3.9' - kind: pypi name: matplotlib @@ -20307,16 +20290,16 @@ packages: url: https://files.pythonhosted.org/packages/2d/d5/6227732ecab9165586966ccb54301e3164f61b470c954c4cf6940654fbe1/matplotlib-3.8.4-cp311-cp311-win_amd64.whl sha256: 8080d5081a86e690d7688ffa542532e87f224c38a6ed71f8fbed34dd1d9fedae requires_dist: - - contourpy >=1.0.1 - - cycler >=0.10 - - fonttools >=4.22.0 - - kiwisolver >=1.3.1 - - numpy >=1.21 - - packaging >=20.0 - - pillow >=8 - - pyparsing >=2.3.1 - - python-dateutil >=2.7 - - importlib-resources >=3.2.0 ; python_version < '3.10' + - contourpy>=1.0.1 + - cycler>=0.10 + - fonttools>=4.22.0 + - kiwisolver>=1.3.1 + - numpy>=1.21 + - packaging>=20.0 + - pillow>=8 + - pyparsing>=2.3.1 + - python-dateutil>=2.7 + - importlib-resources>=3.2.0 ; python_version < '3.10' requires_python: '>=3.9' - kind: pypi name: matplotlib @@ -20324,16 +20307,33 @@ packages: url: https://files.pythonhosted.org/packages/14/60/12d4f27b859a74359306662da69c2d08826a2b05cfe7f96e66b490f41573/matplotlib-3.8.4-cp311-cp311-macosx_11_0_arm64.whl sha256: 232ce322bfd020a434caaffbd9a95333f7c2491e59cfc014041d95e38ab90d1c requires_dist: - - contourpy >=1.0.1 - - cycler >=0.10 - - fonttools >=4.22.0 - - kiwisolver >=1.3.1 - - numpy >=1.21 - - packaging >=20.0 - - pillow >=8 - - pyparsing >=2.3.1 - - python-dateutil >=2.7 - - importlib-resources >=3.2.0 ; python_version < '3.10' + - contourpy>=1.0.1 + - cycler>=0.10 + - fonttools>=4.22.0 + - kiwisolver>=1.3.1 + - numpy>=1.21 + - packaging>=20.0 + - pillow>=8 + - pyparsing>=2.3.1 + - python-dateutil>=2.7 + - importlib-resources>=3.2.0 ; python_version < '3.10' + requires_python: '>=3.9' +- kind: pypi + name: matplotlib + version: 3.8.4 + url: https://files.pythonhosted.org/packages/36/11/62250ea25780d4b59c2c6044ec161235c47cc05a18d0ec0a05657de75b7d/matplotlib-3.8.4-cp311-cp311-macosx_10_12_x86_64.whl + sha256: 72f9322712e4562e792b2961971891b9fbbb0e525011e09ea0d1f416c4645661 + requires_dist: + - contourpy>=1.0.1 + - cycler>=0.10 + - fonttools>=4.22.0 + - kiwisolver>=1.3.1 + - numpy>=1.21 + - packaging>=20.0 + - pillow>=8 + - pyparsing>=2.3.1 + - python-dateutil>=2.7 + - importlib-resources>=3.2.0 ; python_version < '3.10' requires_python: '>=3.9' - kind: conda name: maturin @@ -20441,31 +20441,31 @@ packages: - kind: pypi name: mediapipe version: 0.10.9 - url: https://files.pythonhosted.org/packages/c1/71/38b16b1e4504ff92dff875d455c19e62125fccd73d5ce7e06b560f77fd26/mediapipe-0.10.9-cp311-cp311-macosx_11_0_x86_64.whl - sha256: b7dde54b82732479b9b856c9230b9f7b3da55b0913dde5254a7489e20c2e3c6e + url: https://files.pythonhosted.org/packages/a3/3a/f309c6bdebe596cc8c960542e167331cb01ef130ec38f3da46a499718889/mediapipe-0.10.9-cp311-cp311-macosx_11_0_universal2.whl + sha256: 8733735f582e6e6a05bf9b15c48b03a6387a0795793a2530aa1189eecfd33780 requires_dist: - absl-py - - attrs >=19.1.0 - - flatbuffers >=2.0 + - attrs>=19.1.0 + - flatbuffers>=2.0 - matplotlib - numpy - opencv-contrib-python - - protobuf <4, >=3.11 - - sounddevice >=0.4.4 + - protobuf<4,>=3.11 + - sounddevice>=0.4.4 - kind: pypi name: mediapipe version: 0.10.9 - url: https://files.pythonhosted.org/packages/a3/3a/f309c6bdebe596cc8c960542e167331cb01ef130ec38f3da46a499718889/mediapipe-0.10.9-cp311-cp311-macosx_11_0_universal2.whl - sha256: 8733735f582e6e6a05bf9b15c48b03a6387a0795793a2530aa1189eecfd33780 + url: https://files.pythonhosted.org/packages/c1/71/38b16b1e4504ff92dff875d455c19e62125fccd73d5ce7e06b560f77fd26/mediapipe-0.10.9-cp311-cp311-macosx_11_0_x86_64.whl + sha256: b7dde54b82732479b9b856c9230b9f7b3da55b0913dde5254a7489e20c2e3c6e requires_dist: - absl-py - - attrs >=19.1.0 - - flatbuffers >=2.0 + - attrs>=19.1.0 + - flatbuffers>=2.0 - matplotlib - numpy - opencv-contrib-python - - protobuf <4, >=3.11 - - sounddevice >=0.4.4 + - protobuf<4,>=3.11 + - sounddevice>=0.4.4 - kind: pypi name: mediapipe version: 0.10.11 @@ -20473,16 +20473,16 @@ packages: sha256: ea751e043909ba7bbe27e7afdbcdafd79723d50ef4165afcaae431ab428eea13 requires_dist: - absl-py - - attrs >=19.1.0 - - flatbuffers >=2.0 + - attrs>=19.1.0 + - flatbuffers>=2.0 - jax - jaxlib - matplotlib - numpy - torch - opencv-contrib-python - - protobuf <4, >=3.11 - - sounddevice >=0.4.4 + - protobuf<4,>=3.11 + - sounddevice>=0.4.4 - kind: pypi name: mediapipe version: 0.10.11 @@ -20490,14 +20490,14 @@ packages: sha256: 36231eaf23cd795a923a8b015d36bd6e410a8e997c36dd9432db0157b822b181 requires_dist: - absl-py - - attrs >=19.1.0 - - flatbuffers >=2.0 + - attrs>=19.1.0 + - flatbuffers>=2.0 - jax - matplotlib - numpy - opencv-contrib-python - - protobuf <4, >=3.11 - - sounddevice >=0.4.4 + - protobuf<4,>=3.11 + - sounddevice>=0.4.4 - kind: conda name: meilisearch version: 1.5.1 @@ -20596,14 +20596,14 @@ packages: url: https://files.pythonhosted.org/packages/84/17/a936d3dfad84d028ba8539a93167274b7dcd7985e0d9df487e94a62f9428/ml_dtypes-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl sha256: e1e2f4237b459a63c97c2c9f449baa637d7e4c20addff6a9bac486f22432f3b6 requires_dist: - - numpy >1.20 - - numpy >=1.21.2 ; python_version >= '3.10' - - numpy >=1.23.3 ; python_version >= '3.11' - - numpy >=1.26.0 ; python_version >= '3.12' + - numpy>1.20 + - numpy>=1.21.2 ; python_version >= '3.10' + - numpy>=1.23.3 ; python_version >= '3.11' + - numpy>=1.26.0 ; python_version >= '3.12' - absl-py ; extra == 'dev' - pytest ; extra == 'dev' - pytest-xdist ; extra == 'dev' - - pylint >=2.6.0 ; extra == 'dev' + - pylint>=2.6.0 ; extra == 'dev' - pyink ; extra == 'dev' requires_python: '>=3.9' - kind: pypi @@ -20612,14 +20612,14 @@ packages: url: https://files.pythonhosted.org/packages/f0/36/290745178e5776f7416818abc1334c1b19afb93c7c87fd1bef3cc99f84ca/ml_dtypes-0.4.0-cp311-cp311-win_amd64.whl sha256: 75b4faf99d0711b81f393db36d210b4255fd419f6f790bc6c1b461f95ffb7a9e requires_dist: - - numpy >1.20 - - numpy >=1.21.2 ; python_version >= '3.10' - - numpy >=1.23.3 ; python_version >= '3.11' - - numpy >=1.26.0 ; python_version >= '3.12' + - numpy>1.20 + - numpy>=1.21.2 ; python_version >= '3.10' + - numpy>=1.23.3 ; python_version >= '3.11' + - numpy>=1.26.0 ; python_version >= '3.12' - absl-py ; extra == 'dev' - pytest ; extra == 'dev' - pytest-xdist ; extra == 'dev' - - pylint >=2.6.0 ; extra == 'dev' + - pylint>=2.6.0 ; extra == 'dev' - pyink ; extra == 'dev' requires_python: '>=3.9' - kind: pypi @@ -20628,14 +20628,14 @@ packages: url: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl sha256: a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c requires_dist: - - pytest >=4.6 ; extra == 'develop' + - pytest>=4.6 ; extra == 'develop' - pycodestyle ; extra == 'develop' - pytest-cov ; extra == 'develop' - codecov ; extra == 'develop' - wheel ; extra == 'develop' - sphinx ; extra == 'docs' - - gmpy2 >=2.1.0a4 ; platform_python_implementation != 'PyPy' and extra == 'gmpy' - - pytest >=4.6 ; extra == 'tests' + - gmpy2>=2.1.0a4 ; platform_python_implementation != 'PyPy' and extra == 'gmpy' + - pytest>=4.6 ; extra == 'tests' - kind: conda name: msys2-conda-epoch version: '20160418' @@ -20647,12 +20647,6 @@ packages: md5: b0309b72560df66f71a9d5e34a5efdfa size: 3227 timestamp: 1608166968312 -- kind: pypi - name: multidict - version: 6.0.5 - url: https://files.pythonhosted.org/packages/21/db/3403263f158b0bc7b0d4653766d71cb39498973f2042eead27b2e9758782/multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl - sha256: 53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e - requires_python: '>=3.7' - kind: pypi name: multidict version: 6.0.5 @@ -20671,6 +20665,12 @@ packages: url: https://files.pythonhosted.org/packages/02/c1/b15ecceb6ffa5081ed2ed450aea58d65b0e0358001f2b426705f9f41f4c2/multidict-6.0.5-cp311-cp311-macosx_11_0_arm64.whl sha256: 612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd requires_python: '>=3.7' +- kind: pypi + name: multidict + version: 6.0.5 + url: https://files.pythonhosted.org/packages/21/db/3403263f158b0bc7b0d4653766d71cb39498973f2042eead27b2e9758782/multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl + sha256: 53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e + requires_python: '>=3.7' - kind: conda name: multidict version: 6.0.5 @@ -21068,27 +21068,27 @@ packages: url: https://files.pythonhosted.org/packages/38/e9/5f72929373e1a0e8d142a130f3f97e6ff920070f87f91c4e13e40e0fba5a/networkx-3.3-py3-none-any.whl sha256: 28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 requires_dist: - - numpy >=1.23 ; extra == 'default' - - scipy !=1.11.0, !=1.11.1, >=1.9 ; extra == 'default' - - matplotlib >=3.6 ; extra == 'default' - - pandas >=1.4 ; extra == 'default' - - changelist ==0.5 ; extra == 'developer' - - pre-commit >=3.2 ; extra == 'developer' - - mypy >=1.1 ; extra == 'developer' + - numpy>=1.23 ; extra == 'default' + - scipy!=1.11.0,!=1.11.1,>=1.9 ; extra == 'default' + - matplotlib>=3.6 ; extra == 'default' + - pandas>=1.4 ; extra == 'default' + - changelist==0.5 ; extra == 'developer' + - pre-commit>=3.2 ; extra == 'developer' + - mypy>=1.1 ; extra == 'developer' - rtoml ; extra == 'developer' - - sphinx >=7 ; extra == 'doc' - - pydata-sphinx-theme >=0.14 ; extra == 'doc' - - sphinx-gallery >=0.14 ; extra == 'doc' - - numpydoc >=1.7 ; extra == 'doc' - - pillow >=9.4 ; extra == 'doc' - - texext >=0.6.7 ; extra == 'doc' - - myst-nb >=1.0 ; extra == 'doc' - - lxml >=4.6 ; extra == 'extra' - - pygraphviz >=1.12 ; extra == 'extra' - - pydot >=2.0 ; extra == 'extra' - - sympy >=1.10 ; extra == 'extra' - - pytest >=7.2 ; extra == 'test' - - pytest-cov >=4.0 ; extra == 'test' + - sphinx>=7 ; extra == 'doc' + - pydata-sphinx-theme>=0.14 ; extra == 'doc' + - sphinx-gallery>=0.14 ; extra == 'doc' + - numpydoc>=1.7 ; extra == 'doc' + - pillow>=9.4 ; extra == 'doc' + - texext>=0.6.7 ; extra == 'doc' + - myst-nb>=1.0 ; extra == 'doc' + - lxml>=4.6 ; extra == 'extra' + - pygraphviz>=1.12 ; extra == 'extra' + - pydot>=2.0 ; extra == 'extra' + - sympy>=1.10 ; extra == 'extra' + - pytest>=7.2 ; extra == 'test' + - pytest-cov>=4.0 ; extra == 'test' requires_python: '>=3.10' - kind: conda name: ninja @@ -21342,34 +21342,25 @@ packages: url: https://files.pythonhosted.org/packages/a4/28/2897c06b54cd99f41ca9e5cc7433211a085903a71aaed1cb1a1dc138d53c/nox-2024.4.15-py3-none-any.whl sha256: 6492236efa15a460ecb98e7b67562a28b70da006ab0be164e8821177577c0565 requires_dist: - - argcomplete <4.0, >=1.9.4 - - colorlog <7.0.0, >=2.6.1 + - argcomplete<4.0,>=1.9.4 + - colorlog<7.0.0,>=2.6.1 - importlib-metadata ; python_version < '3.8' - - packaging >=20.9 - - tomli >=1 ; python_version < '3.11' - - typing-extensions >=3.7.4 ; python_version < '3.8' - - virtualenv >=20.14.1 + - packaging>=20.9 + - tomli>=1 ; python_version < '3.11' + - typing-extensions>=3.7.4 ; python_version < '3.8' + - virtualenv>=20.14.1 - jinja2 ; extra == 'tox_to_nox' - tox ; extra == 'tox_to_nox' - - uv >=0.1.6 ; extra == 'uv' + - uv>=0.1.6 ; extra == 'uv' requires_python: '>=3.7' -- kind: pypi - name: numba - version: 0.59.1 - url: https://files.pythonhosted.org/packages/5f/2d/085c21f3086eff0b830e5d03d084a1b4b10dfde0c65feeac6be8c361265c/numba-0.59.1-cp311-cp311-macosx_10_9_x86_64.whl - sha256: 43727e7ad20b3ec23ee4fc642f5b61845c71f75dd2825b3c234390c6d8d64051 - requires_dist: - - llvmlite <0.43, >=0.42.0.dev0 - - numpy <1.27, >=1.22 - requires_python: '>=3.9' - kind: pypi name: numba version: 0.59.1 url: https://files.pythonhosted.org/packages/54/f2/7d1579037643c874fa73516ea84c07e8d30ea347fb1a88c03b198447655d/numba-0.59.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl sha256: dd2842fac03be4e5324ebbbd4d2d0c8c0fc6e0df75c09477dd45b288a0777389 requires_dist: - - llvmlite <0.43, >=0.42.0.dev0 - - numpy <1.27, >=1.22 + - llvmlite<0.43,>=0.42.0.dev0 + - numpy<1.27,>=1.22 requires_python: '>=3.9' - kind: pypi name: numba @@ -21377,8 +21368,8 @@ packages: url: https://files.pythonhosted.org/packages/38/f0/ad848815b0adafcf5f238e728933950034355a8d59969772be1cd57606d8/numba-0.59.1-cp311-cp311-win_amd64.whl sha256: 0594b3dfb369fada1f8bb2e3045cd6c61a564c62e50cf1f86b4666bc721b3450 requires_dist: - - llvmlite <0.43, >=0.42.0.dev0 - - numpy <1.27, >=1.22 + - llvmlite<0.43,>=0.42.0.dev0 + - numpy<1.27,>=1.22 requires_python: '>=3.9' - kind: pypi name: numba @@ -21386,14 +21377,17 @@ packages: url: https://files.pythonhosted.org/packages/70/7d/0d1419479997319ca72ef735791c2ee50819f9c200adea96142ee7499fae/numba-0.59.1-cp311-cp311-macosx_11_0_arm64.whl sha256: 411df625372c77959570050e861981e9d196cc1da9aa62c3d6a836b5cc338966 requires_dist: - - llvmlite <0.43, >=0.42.0.dev0 - - numpy <1.27, >=1.22 + - llvmlite<0.43,>=0.42.0.dev0 + - numpy<1.27,>=1.22 requires_python: '>=3.9' - kind: pypi - name: numpy - version: 1.26.4 - url: https://files.pythonhosted.org/packages/11/57/baae43d14fe163fa0e4c47f307b6b2511ab8d7d30177c491960504252053/numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl - sha256: 4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71 + name: numba + version: 0.59.1 + url: https://files.pythonhosted.org/packages/5f/2d/085c21f3086eff0b830e5d03d084a1b4b10dfde0c65feeac6be8c361265c/numba-0.59.1-cp311-cp311-macosx_10_9_x86_64.whl + sha256: 43727e7ad20b3ec23ee4fc642f5b61845c71f75dd2825b3c234390c6d8d64051 + requires_dist: + - llvmlite<0.43,>=0.42.0.dev0 + - numpy<1.27,>=1.22 requires_python: '>=3.9' - kind: pypi name: numpy @@ -21413,6 +21407,12 @@ packages: url: https://files.pythonhosted.org/packages/1a/2e/151484f49fd03944c4a3ad9c418ed193cfd02724e138ac8a9505d056c582/numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl sha256: edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef requires_python: '>=3.9' +- kind: pypi + name: numpy + version: 1.26.4 + url: https://files.pythonhosted.org/packages/11/57/baae43d14fe163fa0e4c47f307b6b2511ab8d7d30177c491960504252053/numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl + sha256: 4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71 + requires_python: '>=3.9' - kind: conda name: numpy version: 1.26.4 @@ -21540,9 +21540,9 @@ packages: path: examples/python/nv12 sha256: c8ca97c5d8c04037cd5eb9a65be7b1e7d667c11d4dba3ee9aad5956ccf926dc4 requires_dist: - - numpy + - rerun-sdk>=0.10 - opencv-python - - rerun-sdk >=0.10 + - numpy editable: true - kind: pypi name: nvidia-cublas-cu12 @@ -21632,8 +21632,8 @@ packages: requires_dist: - betterproto[compiler] - numpy - - opencv-python >4.6 - - requests <3, >=2.31 + - opencv-python>4.6 + - requests>=2.31,<3 - rerun-sdk - scipy editable: true @@ -21651,39 +21651,22 @@ packages: - tqdm requires_python: '>=3.10' editable: true -- kind: pypi - name: opencv-contrib-python - version: 4.9.0.80 - url: https://files.pythonhosted.org/packages/16/07/bf25df600eeaedddf8fece3f1ff837bf72865b93a03651cf7375ce8172be/opencv_contrib_python-4.9.0.80-cp37-abi3-macosx_10_16_x86_64.whl - sha256: 86078d3653ec3107877536c9178622b1f98b51acf59e554ddbc552785cba55fa - requires_dist: - - numpy >=1.13.3 ; python_version < '3.7' - - numpy >=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' - - numpy >=1.21.2 ; python_version >= '3.10' - - numpy >=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' - - numpy >=1.23.5 ; python_version >= '3.11' - - numpy >=1.26.0 ; python_version >= '3.12' - - numpy >=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' - - numpy >=1.17.0 ; python_version >= '3.7' - - numpy >=1.17.3 ; python_version >= '3.8' - - numpy >=1.19.3 ; python_version >= '3.9' - requires_python: '>=3.6' - kind: pypi name: opencv-contrib-python version: 4.9.0.80 url: https://files.pythonhosted.org/packages/8a/ea/aea6289058480b93157ad698ecd7f13cae4892ae0a4750abf33b3ac12f91/opencv_contrib_python-4.9.0.80-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl sha256: 89ca1508dd895ae42176640bdd503cac82772f6efa25120738a469a6a69de321 requires_dist: - - numpy >=1.13.3 ; python_version < '3.7' - - numpy >=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' - - numpy >=1.21.2 ; python_version >= '3.10' - - numpy >=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' - - numpy >=1.23.5 ; python_version >= '3.11' - - numpy >=1.26.0 ; python_version >= '3.12' - - numpy >=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' - - numpy >=1.17.0 ; python_version >= '3.7' - - numpy >=1.17.3 ; python_version >= '3.8' - - numpy >=1.19.3 ; python_version >= '3.9' + - numpy>=1.13.3 ; python_version < '3.7' + - numpy>=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' + - numpy>=1.21.2 ; python_version >= '3.10' + - numpy>=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' + - numpy>=1.23.5 ; python_version >= '3.11' + - numpy>=1.26.0 ; python_version >= '3.12' + - numpy>=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' + - numpy>=1.17.0 ; python_version >= '3.7' + - numpy>=1.17.3 ; python_version >= '3.8' + - numpy>=1.19.3 ; python_version >= '3.9' requires_python: '>=3.6' - kind: pypi name: opencv-contrib-python @@ -21691,16 +21674,16 @@ packages: url: https://files.pythonhosted.org/packages/aa/2e/576ac47f21d555b459ca837bb3fb937e50339b8fbfd294945ea2f5290416/opencv_contrib_python-4.9.0.80-cp37-abi3-win_amd64.whl sha256: fdd9b14028f74af8dbb69f90e6e4a956ce2eb5b59947df28ba0b79d337431477 requires_dist: - - numpy >=1.13.3 ; python_version < '3.7' - - numpy >=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' - - numpy >=1.21.2 ; python_version >= '3.10' - - numpy >=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' - - numpy >=1.23.5 ; python_version >= '3.11' - - numpy >=1.26.0 ; python_version >= '3.12' - - numpy >=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' - - numpy >=1.17.0 ; python_version >= '3.7' - - numpy >=1.17.3 ; python_version >= '3.8' - - numpy >=1.19.3 ; python_version >= '3.9' + - numpy>=1.13.3 ; python_version < '3.7' + - numpy>=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' + - numpy>=1.21.2 ; python_version >= '3.10' + - numpy>=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' + - numpy>=1.23.5 ; python_version >= '3.11' + - numpy>=1.26.0 ; python_version >= '3.12' + - numpy>=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' + - numpy>=1.17.0 ; python_version >= '3.7' + - numpy>=1.17.3 ; python_version >= '3.8' + - numpy>=1.19.3 ; python_version >= '3.9' requires_python: '>=3.6' - kind: pypi name: opencv-contrib-python @@ -21708,50 +21691,67 @@ packages: url: https://files.pythonhosted.org/packages/4c/c3/ccff2e1bfe2bb47a7eaebc4280e93bd2f97ebbe5b3573d48bcfcc0c32387/opencv_contrib_python-4.9.0.80-cp37-abi3-macosx_11_0_arm64.whl sha256: b52e381144f774b486729ccee69911bdc7d16b5ced4830502e906ad803373ab0 requires_dist: - - numpy >=1.13.3 ; python_version < '3.7' - - numpy >=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' - - numpy >=1.21.2 ; python_version >= '3.10' - - numpy >=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' - - numpy >=1.23.5 ; python_version >= '3.11' - - numpy >=1.26.0 ; python_version >= '3.12' - - numpy >=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' - - numpy >=1.17.0 ; python_version >= '3.7' - - numpy >=1.17.3 ; python_version >= '3.8' - - numpy >=1.19.3 ; python_version >= '3.9' + - numpy>=1.13.3 ; python_version < '3.7' + - numpy>=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' + - numpy>=1.21.2 ; python_version >= '3.10' + - numpy>=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' + - numpy>=1.23.5 ; python_version >= '3.11' + - numpy>=1.26.0 ; python_version >= '3.12' + - numpy>=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' + - numpy>=1.17.0 ; python_version >= '3.7' + - numpy>=1.17.3 ; python_version >= '3.8' + - numpy>=1.19.3 ; python_version >= '3.9' requires_python: '>=3.6' - kind: pypi - name: opencv-python + name: opencv-contrib-python version: 4.9.0.80 - url: https://files.pythonhosted.org/packages/77/df/b56175c3fb5bc058774bdcf35f5a71cf9c3c5b909f98a1c688eb71cd3b1f/opencv_python-4.9.0.80-cp37-abi3-macosx_11_0_arm64.whl - sha256: 71dfb9555ccccdd77305fc3dcca5897fbf0cf28b297c51ee55e079c065d812a3 + url: https://files.pythonhosted.org/packages/16/07/bf25df600eeaedddf8fece3f1ff837bf72865b93a03651cf7375ce8172be/opencv_contrib_python-4.9.0.80-cp37-abi3-macosx_10_16_x86_64.whl + sha256: 86078d3653ec3107877536c9178622b1f98b51acf59e554ddbc552785cba55fa requires_dist: - - numpy >=1.13.3 ; python_version < '3.7' - - numpy >=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' - - numpy >=1.21.2 ; python_version >= '3.10' - - numpy >=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' - - numpy >=1.23.5 ; python_version >= '3.11' - - numpy >=1.26.0 ; python_version >= '3.12' - - numpy >=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' - - numpy >=1.17.0 ; python_version >= '3.7' - - numpy >=1.17.3 ; python_version >= '3.8' - - numpy >=1.19.3 ; python_version >= '3.9' + - numpy>=1.13.3 ; python_version < '3.7' + - numpy>=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' + - numpy>=1.21.2 ; python_version >= '3.10' + - numpy>=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' + - numpy>=1.23.5 ; python_version >= '3.11' + - numpy>=1.26.0 ; python_version >= '3.12' + - numpy>=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' + - numpy>=1.17.0 ; python_version >= '3.7' + - numpy>=1.17.3 ; python_version >= '3.8' + - numpy>=1.19.3 ; python_version >= '3.9' requires_python: '>=3.6' - kind: pypi name: opencv-python version: 4.9.0.80 - url: https://files.pythonhosted.org/packages/c7/ec/9dabb6a9abfdebb3c45b0cc52dec901caafef2b2c7e7d6a839ed86d81e91/opencv_python-4.9.0.80-cp37-abi3-win_amd64.whl - sha256: 3f16f08e02b2a2da44259c7cc712e779eff1dd8b55fdb0323e8cab09548086c0 + url: https://files.pythonhosted.org/packages/35/69/b657974ddcbba54d59d7d62b01e60a8b815e35f415b996e4d355be0ac7b4/opencv_python-4.9.0.80-cp37-abi3-macosx_10_16_x86_64.whl + sha256: 7e5f7aa4486651a6ebfa8ed4b594b65bd2d2f41beeb4241a3e4b1b85acbbbadb + requires_dist: + - numpy>=1.13.3 ; python_version < '3.7' + - numpy>=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' + - numpy>=1.21.2 ; python_version >= '3.10' + - numpy>=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' + - numpy>=1.23.5 ; python_version >= '3.11' + - numpy>=1.26.0 ; python_version >= '3.12' + - numpy>=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' + - numpy>=1.17.0 ; python_version >= '3.7' + - numpy>=1.17.3 ; python_version >= '3.8' + - numpy>=1.19.3 ; python_version >= '3.9' + requires_python: '>=3.6' +- kind: pypi + name: opencv-python + version: 4.9.0.80 + url: https://files.pythonhosted.org/packages/52/00/2adf376707c7965bb4569f28f73fafe303c404d01047b10e3b52761be086/opencv_python-4.9.0.80-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl + sha256: 7b34a52e9da36dda8c151c6394aed602e4b17fa041df0b9f5b93ae10b0fcca2a requires_dist: - - numpy >=1.13.3 ; python_version < '3.7' - - numpy >=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' - - numpy >=1.21.2 ; python_version >= '3.10' - - numpy >=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' - - numpy >=1.23.5 ; python_version >= '3.11' - - numpy >=1.26.0 ; python_version >= '3.12' - - numpy >=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' - - numpy >=1.17.0 ; python_version >= '3.7' - - numpy >=1.17.3 ; python_version >= '3.8' - - numpy >=1.19.3 ; python_version >= '3.9' + - numpy>=1.13.3 ; python_version < '3.7' + - numpy>=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' + - numpy>=1.21.2 ; python_version >= '3.10' + - numpy>=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' + - numpy>=1.23.5 ; python_version >= '3.11' + - numpy>=1.26.0 ; python_version >= '3.12' + - numpy>=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' + - numpy>=1.17.0 ; python_version >= '3.7' + - numpy>=1.17.3 ; python_version >= '3.8' + - numpy>=1.19.3 ; python_version >= '3.9' requires_python: '>=3.6' - kind: pypi name: opencv-python @@ -21759,50 +21759,50 @@ packages: url: https://files.pythonhosted.org/packages/d9/64/7fdfb9386511cd6805451e012c537073a79a958a58795c4e602e538c388c/opencv_python-4.9.0.80-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl sha256: e4088cab82b66a3b37ffc452976b14a3c599269c247895ae9ceb4066d8188a57 requires_dist: - - numpy >=1.13.3 ; python_version < '3.7' - - numpy >=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' - - numpy >=1.21.2 ; python_version >= '3.10' - - numpy >=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' - - numpy >=1.23.5 ; python_version >= '3.11' - - numpy >=1.26.0 ; python_version >= '3.12' - - numpy >=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' - - numpy >=1.17.0 ; python_version >= '3.7' - - numpy >=1.17.3 ; python_version >= '3.8' - - numpy >=1.19.3 ; python_version >= '3.9' + - numpy>=1.13.3 ; python_version < '3.7' + - numpy>=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' + - numpy>=1.21.2 ; python_version >= '3.10' + - numpy>=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' + - numpy>=1.23.5 ; python_version >= '3.11' + - numpy>=1.26.0 ; python_version >= '3.12' + - numpy>=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' + - numpy>=1.17.0 ; python_version >= '3.7' + - numpy>=1.17.3 ; python_version >= '3.8' + - numpy>=1.19.3 ; python_version >= '3.9' requires_python: '>=3.6' - kind: pypi name: opencv-python version: 4.9.0.80 - url: https://files.pythonhosted.org/packages/52/00/2adf376707c7965bb4569f28f73fafe303c404d01047b10e3b52761be086/opencv_python-4.9.0.80-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl - sha256: 7b34a52e9da36dda8c151c6394aed602e4b17fa041df0b9f5b93ae10b0fcca2a + url: https://files.pythonhosted.org/packages/77/df/b56175c3fb5bc058774bdcf35f5a71cf9c3c5b909f98a1c688eb71cd3b1f/opencv_python-4.9.0.80-cp37-abi3-macosx_11_0_arm64.whl + sha256: 71dfb9555ccccdd77305fc3dcca5897fbf0cf28b297c51ee55e079c065d812a3 requires_dist: - - numpy >=1.13.3 ; python_version < '3.7' - - numpy >=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' - - numpy >=1.21.2 ; python_version >= '3.10' - - numpy >=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' - - numpy >=1.23.5 ; python_version >= '3.11' - - numpy >=1.26.0 ; python_version >= '3.12' - - numpy >=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' - - numpy >=1.17.0 ; python_version >= '3.7' - - numpy >=1.17.3 ; python_version >= '3.8' - - numpy >=1.19.3 ; python_version >= '3.9' + - numpy>=1.13.3 ; python_version < '3.7' + - numpy>=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' + - numpy>=1.21.2 ; python_version >= '3.10' + - numpy>=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' + - numpy>=1.23.5 ; python_version >= '3.11' + - numpy>=1.26.0 ; python_version >= '3.12' + - numpy>=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' + - numpy>=1.17.0 ; python_version >= '3.7' + - numpy>=1.17.3 ; python_version >= '3.8' + - numpy>=1.19.3 ; python_version >= '3.9' requires_python: '>=3.6' - kind: pypi name: opencv-python version: 4.9.0.80 - url: https://files.pythonhosted.org/packages/35/69/b657974ddcbba54d59d7d62b01e60a8b815e35f415b996e4d355be0ac7b4/opencv_python-4.9.0.80-cp37-abi3-macosx_10_16_x86_64.whl - sha256: 7e5f7aa4486651a6ebfa8ed4b594b65bd2d2f41beeb4241a3e4b1b85acbbbadb + url: https://files.pythonhosted.org/packages/c7/ec/9dabb6a9abfdebb3c45b0cc52dec901caafef2b2c7e7d6a839ed86d81e91/opencv_python-4.9.0.80-cp37-abi3-win_amd64.whl + sha256: 3f16f08e02b2a2da44259c7cc712e779eff1dd8b55fdb0323e8cab09548086c0 requires_dist: - - numpy >=1.13.3 ; python_version < '3.7' - - numpy >=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' - - numpy >=1.21.2 ; python_version >= '3.10' - - numpy >=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' - - numpy >=1.23.5 ; python_version >= '3.11' - - numpy >=1.26.0 ; python_version >= '3.12' - - numpy >=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' - - numpy >=1.17.0 ; python_version >= '3.7' - - numpy >=1.17.3 ; python_version >= '3.8' - - numpy >=1.19.3 ; python_version >= '3.9' + - numpy>=1.13.3 ; python_version < '3.7' + - numpy>=1.21.0 ; python_version <= '3.9' and platform_system == 'Darwin' and platform_machine == 'arm64' + - numpy>=1.21.2 ; python_version >= '3.10' + - numpy>=1.21.4 ; python_version >= '3.10' and platform_system == 'Darwin' + - numpy>=1.23.5 ; python_version >= '3.11' + - numpy>=1.26.0 ; python_version >= '3.12' + - numpy>=1.19.3 ; python_version >= '3.6' and platform_system == 'Linux' and platform_machine == 'aarch64' + - numpy>=1.17.0 ; python_version >= '3.7' + - numpy>=1.17.3 ; python_version >= '3.8' + - numpy>=1.19.3 ; python_version >= '3.9' requires_python: '>=3.6' - kind: conda name: openssl @@ -21985,8 +21985,8 @@ packages: url: https://files.pythonhosted.org/packages/bc/19/404708a7e54ad2798907210462fd950c3442ea51acc8790f3da48d2bee8b/opt_einsum-3.3.0-py3-none-any.whl sha256: 2455e59e3947d3c275477df7f5205b30635e266fe6dc300e3d9f9646bfcea147 requires_dist: - - numpy >=1.7 - - sphinx ==1.2.3 ; extra == 'docs' + - numpy>=1.7 + - sphinx==1.2.3 ; extra == 'docs' - sphinxcontrib-napoleon ; extra == 'docs' - sphinx-rtd-theme ; extra == 'docs' - numpydoc ; extra == 'docs' @@ -22296,189 +22296,97 @@ packages: - pkg:pypi/packaging size: 49832 timestamp: 1710076089469 -- kind: pypi - name: pandas - version: 2.2.2 - url: https://files.pythonhosted.org/packages/1b/70/61704497903d43043e288017cb2b82155c0d41e15f5c17807920877b45c2/pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl - sha256: 696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288 - requires_dist: - - numpy >=1.22.4 ; python_version < '3.11' - - numpy >=1.23.2 ; python_version == '3.11' - - numpy >=1.26.0 ; python_version >= '3.12' - - python-dateutil >=2.8.2 - - pytz >=2020.1 - - tzdata >=2022.7 - - hypothesis >=6.46.1 ; extra == 'test' - - pytest >=7.3.2 ; extra == 'test' - - pytest-xdist >=2.2.0 ; extra == 'test' - - pyarrow >=10.0.1 ; extra == 'pyarrow' - - bottleneck >=1.3.6 ; extra == 'performance' - - numba >=0.56.4 ; extra == 'performance' - - numexpr >=2.8.4 ; extra == 'performance' - - scipy >=1.10.0 ; extra == 'computation' - - xarray >=2022.12.0 ; extra == 'computation' - - fsspec >=2022.11.0 ; extra == 'fss' - - s3fs >=2022.11.0 ; extra == 'aws' - - gcsfs >=2022.11.0 ; extra == 'gcp' - - pandas-gbq >=0.19.0 ; extra == 'gcp' - - odfpy >=1.4.1 ; extra == 'excel' - - openpyxl >=3.1.0 ; extra == 'excel' - - python-calamine >=0.1.7 ; extra == 'excel' - - pyxlsb >=1.0.10 ; extra == 'excel' - - xlrd >=2.0.1 ; extra == 'excel' - - xlsxwriter >=3.0.5 ; extra == 'excel' - - pyarrow >=10.0.1 ; extra == 'parquet' - - pyarrow >=10.0.1 ; extra == 'feather' - - tables >=3.8.0 ; extra == 'hdf5' - - pyreadstat >=1.2.0 ; extra == 'spss' - - sqlalchemy >=2.0.0 ; extra == 'postgresql' - - psycopg2 >=2.9.6 ; extra == 'postgresql' - - adbc-driver-postgresql >=0.8.0 ; extra == 'postgresql' - - sqlalchemy >=2.0.0 ; extra == 'mysql' - - pymysql >=1.0.2 ; extra == 'mysql' - - sqlalchemy >=2.0.0 ; extra == 'sql-other' - - adbc-driver-postgresql >=0.8.0 ; extra == 'sql-other' - - adbc-driver-sqlite >=0.8.0 ; extra == 'sql-other' - - beautifulsoup4 >=4.11.2 ; extra == 'html' - - html5lib >=1.1 ; extra == 'html' - - lxml >=4.9.2 ; extra == 'html' - - lxml >=4.9.2 ; extra == 'xml' - - matplotlib >=3.6.3 ; extra == 'plot' - - jinja2 >=3.1.2 ; extra == 'output-formatting' - - tabulate >=0.9.0 ; extra == 'output-formatting' - - pyqt5 >=5.15.9 ; extra == 'clipboard' - - qtpy >=2.3.0 ; extra == 'clipboard' - - zstandard >=0.19.0 ; extra == 'compression' - - dataframe-api-compat >=0.1.7 ; extra == 'consortium-standard' - - adbc-driver-postgresql >=0.8.0 ; extra == 'all' - - adbc-driver-sqlite >=0.8.0 ; extra == 'all' - - beautifulsoup4 >=4.11.2 ; extra == 'all' - - bottleneck >=1.3.6 ; extra == 'all' - - dataframe-api-compat >=0.1.7 ; extra == 'all' - - fastparquet >=2022.12.0 ; extra == 'all' - - fsspec >=2022.11.0 ; extra == 'all' - - gcsfs >=2022.11.0 ; extra == 'all' - - html5lib >=1.1 ; extra == 'all' - - hypothesis >=6.46.1 ; extra == 'all' - - jinja2 >=3.1.2 ; extra == 'all' - - lxml >=4.9.2 ; extra == 'all' - - matplotlib >=3.6.3 ; extra == 'all' - - numba >=0.56.4 ; extra == 'all' - - numexpr >=2.8.4 ; extra == 'all' - - odfpy >=1.4.1 ; extra == 'all' - - openpyxl >=3.1.0 ; extra == 'all' - - pandas-gbq >=0.19.0 ; extra == 'all' - - psycopg2 >=2.9.6 ; extra == 'all' - - pyarrow >=10.0.1 ; extra == 'all' - - pymysql >=1.0.2 ; extra == 'all' - - pyqt5 >=5.15.9 ; extra == 'all' - - pyreadstat >=1.2.0 ; extra == 'all' - - pytest >=7.3.2 ; extra == 'all' - - pytest-xdist >=2.2.0 ; extra == 'all' - - python-calamine >=0.1.7 ; extra == 'all' - - pyxlsb >=1.0.10 ; extra == 'all' - - qtpy >=2.3.0 ; extra == 'all' - - scipy >=1.10.0 ; extra == 'all' - - s3fs >=2022.11.0 ; extra == 'all' - - sqlalchemy >=2.0.0 ; extra == 'all' - - tables >=3.8.0 ; extra == 'all' - - tabulate >=0.9.0 ; extra == 'all' - - xarray >=2022.12.0 ; extra == 'all' - - xlrd >=2.0.1 ; extra == 'all' - - xlsxwriter >=3.0.5 ; extra == 'all' - - zstandard >=0.19.0 ; extra == 'all' - requires_python: '>=3.9' - kind: pypi name: pandas version: 2.2.2 url: https://files.pythonhosted.org/packages/fc/a5/4d82be566f069d7a9a702dcdf6f9106df0e0b042e738043c0cc7ddd7e3f6/pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl sha256: 6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee requires_dist: - - numpy >=1.22.4 ; python_version < '3.11' - - numpy >=1.23.2 ; python_version == '3.11' - - numpy >=1.26.0 ; python_version >= '3.12' - - python-dateutil >=2.8.2 - - pytz >=2020.1 - - tzdata >=2022.7 - - hypothesis >=6.46.1 ; extra == 'test' - - pytest >=7.3.2 ; extra == 'test' - - pytest-xdist >=2.2.0 ; extra == 'test' - - pyarrow >=10.0.1 ; extra == 'pyarrow' - - bottleneck >=1.3.6 ; extra == 'performance' - - numba >=0.56.4 ; extra == 'performance' - - numexpr >=2.8.4 ; extra == 'performance' - - scipy >=1.10.0 ; extra == 'computation' - - xarray >=2022.12.0 ; extra == 'computation' - - fsspec >=2022.11.0 ; extra == 'fss' - - s3fs >=2022.11.0 ; extra == 'aws' - - gcsfs >=2022.11.0 ; extra == 'gcp' - - pandas-gbq >=0.19.0 ; extra == 'gcp' - - odfpy >=1.4.1 ; extra == 'excel' - - openpyxl >=3.1.0 ; extra == 'excel' - - python-calamine >=0.1.7 ; extra == 'excel' - - pyxlsb >=1.0.10 ; extra == 'excel' - - xlrd >=2.0.1 ; extra == 'excel' - - xlsxwriter >=3.0.5 ; extra == 'excel' - - pyarrow >=10.0.1 ; extra == 'parquet' - - pyarrow >=10.0.1 ; extra == 'feather' - - tables >=3.8.0 ; extra == 'hdf5' - - pyreadstat >=1.2.0 ; extra == 'spss' - - sqlalchemy >=2.0.0 ; extra == 'postgresql' - - psycopg2 >=2.9.6 ; extra == 'postgresql' - - adbc-driver-postgresql >=0.8.0 ; extra == 'postgresql' - - sqlalchemy >=2.0.0 ; extra == 'mysql' - - pymysql >=1.0.2 ; extra == 'mysql' - - sqlalchemy >=2.0.0 ; extra == 'sql-other' - - adbc-driver-postgresql >=0.8.0 ; extra == 'sql-other' - - adbc-driver-sqlite >=0.8.0 ; extra == 'sql-other' - - beautifulsoup4 >=4.11.2 ; extra == 'html' - - html5lib >=1.1 ; extra == 'html' - - lxml >=4.9.2 ; extra == 'html' - - lxml >=4.9.2 ; extra == 'xml' - - matplotlib >=3.6.3 ; extra == 'plot' - - jinja2 >=3.1.2 ; extra == 'output-formatting' - - tabulate >=0.9.0 ; extra == 'output-formatting' - - pyqt5 >=5.15.9 ; extra == 'clipboard' - - qtpy >=2.3.0 ; extra == 'clipboard' - - zstandard >=0.19.0 ; extra == 'compression' - - dataframe-api-compat >=0.1.7 ; extra == 'consortium-standard' - - adbc-driver-postgresql >=0.8.0 ; extra == 'all' - - adbc-driver-sqlite >=0.8.0 ; extra == 'all' - - beautifulsoup4 >=4.11.2 ; extra == 'all' - - bottleneck >=1.3.6 ; extra == 'all' - - dataframe-api-compat >=0.1.7 ; extra == 'all' - - fastparquet >=2022.12.0 ; extra == 'all' - - fsspec >=2022.11.0 ; extra == 'all' - - gcsfs >=2022.11.0 ; extra == 'all' - - html5lib >=1.1 ; extra == 'all' - - hypothesis >=6.46.1 ; extra == 'all' - - jinja2 >=3.1.2 ; extra == 'all' - - lxml >=4.9.2 ; extra == 'all' - - matplotlib >=3.6.3 ; extra == 'all' - - numba >=0.56.4 ; extra == 'all' - - numexpr >=2.8.4 ; extra == 'all' - - odfpy >=1.4.1 ; extra == 'all' - - openpyxl >=3.1.0 ; extra == 'all' - - pandas-gbq >=0.19.0 ; extra == 'all' - - psycopg2 >=2.9.6 ; extra == 'all' - - pyarrow >=10.0.1 ; extra == 'all' - - pymysql >=1.0.2 ; extra == 'all' - - pyqt5 >=5.15.9 ; extra == 'all' - - pyreadstat >=1.2.0 ; extra == 'all' - - pytest >=7.3.2 ; extra == 'all' - - pytest-xdist >=2.2.0 ; extra == 'all' - - python-calamine >=0.1.7 ; extra == 'all' - - pyxlsb >=1.0.10 ; extra == 'all' - - qtpy >=2.3.0 ; extra == 'all' - - scipy >=1.10.0 ; extra == 'all' - - s3fs >=2022.11.0 ; extra == 'all' - - sqlalchemy >=2.0.0 ; extra == 'all' - - tables >=3.8.0 ; extra == 'all' - - tabulate >=0.9.0 ; extra == 'all' - - xarray >=2022.12.0 ; extra == 'all' - - xlrd >=2.0.1 ; extra == 'all' - - xlsxwriter >=3.0.5 ; extra == 'all' - - zstandard >=0.19.0 ; extra == 'all' + - numpy>=1.22.4 ; python_version < '3.11' + - numpy>=1.23.2 ; python_version == '3.11' + - numpy>=1.26.0 ; python_version >= '3.12' + - python-dateutil>=2.8.2 + - pytz>=2020.1 + - tzdata>=2022.7 + - hypothesis>=6.46.1 ; extra == 'test' + - pytest>=7.3.2 ; extra == 'test' + - pytest-xdist>=2.2.0 ; extra == 'test' + - pyarrow>=10.0.1 ; extra == 'pyarrow' + - bottleneck>=1.3.6 ; extra == 'performance' + - numba>=0.56.4 ; extra == 'performance' + - numexpr>=2.8.4 ; extra == 'performance' + - scipy>=1.10.0 ; extra == 'computation' + - xarray>=2022.12.0 ; extra == 'computation' + - fsspec>=2022.11.0 ; extra == 'fss' + - s3fs>=2022.11.0 ; extra == 'aws' + - gcsfs>=2022.11.0 ; extra == 'gcp' + - pandas-gbq>=0.19.0 ; extra == 'gcp' + - odfpy>=1.4.1 ; extra == 'excel' + - openpyxl>=3.1.0 ; extra == 'excel' + - python-calamine>=0.1.7 ; extra == 'excel' + - pyxlsb>=1.0.10 ; extra == 'excel' + - xlrd>=2.0.1 ; extra == 'excel' + - xlsxwriter>=3.0.5 ; extra == 'excel' + - pyarrow>=10.0.1 ; extra == 'parquet' + - pyarrow>=10.0.1 ; extra == 'feather' + - tables>=3.8.0 ; extra == 'hdf5' + - pyreadstat>=1.2.0 ; extra == 'spss' + - sqlalchemy>=2.0.0 ; extra == 'postgresql' + - psycopg2>=2.9.6 ; extra == 'postgresql' + - adbc-driver-postgresql>=0.8.0 ; extra == 'postgresql' + - sqlalchemy>=2.0.0 ; extra == 'mysql' + - pymysql>=1.0.2 ; extra == 'mysql' + - sqlalchemy>=2.0.0 ; extra == 'sql-other' + - adbc-driver-postgresql>=0.8.0 ; extra == 'sql-other' + - adbc-driver-sqlite>=0.8.0 ; extra == 'sql-other' + - beautifulsoup4>=4.11.2 ; extra == 'html' + - html5lib>=1.1 ; extra == 'html' + - lxml>=4.9.2 ; extra == 'html' + - lxml>=4.9.2 ; extra == 'xml' + - matplotlib>=3.6.3 ; extra == 'plot' + - jinja2>=3.1.2 ; extra == 'output-formatting' + - tabulate>=0.9.0 ; extra == 'output-formatting' + - pyqt5>=5.15.9 ; extra == 'clipboard' + - qtpy>=2.3.0 ; extra == 'clipboard' + - zstandard>=0.19.0 ; extra == 'compression' + - dataframe-api-compat>=0.1.7 ; extra == 'consortium-standard' + - adbc-driver-postgresql>=0.8.0 ; extra == 'all' + - adbc-driver-sqlite>=0.8.0 ; extra == 'all' + - beautifulsoup4>=4.11.2 ; extra == 'all' + - bottleneck>=1.3.6 ; extra == 'all' + - dataframe-api-compat>=0.1.7 ; extra == 'all' + - fastparquet>=2022.12.0 ; extra == 'all' + - fsspec>=2022.11.0 ; extra == 'all' + - gcsfs>=2022.11.0 ; extra == 'all' + - html5lib>=1.1 ; extra == 'all' + - hypothesis>=6.46.1 ; extra == 'all' + - jinja2>=3.1.2 ; extra == 'all' + - lxml>=4.9.2 ; extra == 'all' + - matplotlib>=3.6.3 ; extra == 'all' + - numba>=0.56.4 ; extra == 'all' + - numexpr>=2.8.4 ; extra == 'all' + - odfpy>=1.4.1 ; extra == 'all' + - openpyxl>=3.1.0 ; extra == 'all' + - pandas-gbq>=0.19.0 ; extra == 'all' + - psycopg2>=2.9.6 ; extra == 'all' + - pyarrow>=10.0.1 ; extra == 'all' + - pymysql>=1.0.2 ; extra == 'all' + - pyqt5>=5.15.9 ; extra == 'all' + - pyreadstat>=1.2.0 ; extra == 'all' + - pytest>=7.3.2 ; extra == 'all' + - pytest-xdist>=2.2.0 ; extra == 'all' + - python-calamine>=0.1.7 ; extra == 'all' + - pyxlsb>=1.0.10 ; extra == 'all' + - qtpy>=2.3.0 ; extra == 'all' + - scipy>=1.10.0 ; extra == 'all' + - s3fs>=2022.11.0 ; extra == 'all' + - sqlalchemy>=2.0.0 ; extra == 'all' + - tables>=3.8.0 ; extra == 'all' + - tabulate>=0.9.0 ; extra == 'all' + - xarray>=2022.12.0 ; extra == 'all' + - xlrd>=2.0.1 ; extra == 'all' + - xlsxwriter>=3.0.5 ; extra == 'all' + - zstandard>=0.19.0 ; extra == 'all' requires_python: '>=3.9' - kind: pypi name: pandas @@ -22486,91 +22394,91 @@ packages: url: https://files.pythonhosted.org/packages/ab/63/966db1321a0ad55df1d1fe51505d2cdae191b84c907974873817b0a6e849/pandas-2.2.2-cp311-cp311-win_amd64.whl sha256: 873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24 requires_dist: - - numpy >=1.22.4 ; python_version < '3.11' - - numpy >=1.23.2 ; python_version == '3.11' - - numpy >=1.26.0 ; python_version >= '3.12' - - python-dateutil >=2.8.2 - - pytz >=2020.1 - - tzdata >=2022.7 - - hypothesis >=6.46.1 ; extra == 'test' - - pytest >=7.3.2 ; extra == 'test' - - pytest-xdist >=2.2.0 ; extra == 'test' - - pyarrow >=10.0.1 ; extra == 'pyarrow' - - bottleneck >=1.3.6 ; extra == 'performance' - - numba >=0.56.4 ; extra == 'performance' - - numexpr >=2.8.4 ; extra == 'performance' - - scipy >=1.10.0 ; extra == 'computation' - - xarray >=2022.12.0 ; extra == 'computation' - - fsspec >=2022.11.0 ; extra == 'fss' - - s3fs >=2022.11.0 ; extra == 'aws' - - gcsfs >=2022.11.0 ; extra == 'gcp' - - pandas-gbq >=0.19.0 ; extra == 'gcp' - - odfpy >=1.4.1 ; extra == 'excel' - - openpyxl >=3.1.0 ; extra == 'excel' - - python-calamine >=0.1.7 ; extra == 'excel' - - pyxlsb >=1.0.10 ; extra == 'excel' - - xlrd >=2.0.1 ; extra == 'excel' - - xlsxwriter >=3.0.5 ; extra == 'excel' - - pyarrow >=10.0.1 ; extra == 'parquet' - - pyarrow >=10.0.1 ; extra == 'feather' - - tables >=3.8.0 ; extra == 'hdf5' - - pyreadstat >=1.2.0 ; extra == 'spss' - - sqlalchemy >=2.0.0 ; extra == 'postgresql' - - psycopg2 >=2.9.6 ; extra == 'postgresql' - - adbc-driver-postgresql >=0.8.0 ; extra == 'postgresql' - - sqlalchemy >=2.0.0 ; extra == 'mysql' - - pymysql >=1.0.2 ; extra == 'mysql' - - sqlalchemy >=2.0.0 ; extra == 'sql-other' - - adbc-driver-postgresql >=0.8.0 ; extra == 'sql-other' - - adbc-driver-sqlite >=0.8.0 ; extra == 'sql-other' - - beautifulsoup4 >=4.11.2 ; extra == 'html' - - html5lib >=1.1 ; extra == 'html' - - lxml >=4.9.2 ; extra == 'html' - - lxml >=4.9.2 ; extra == 'xml' - - matplotlib >=3.6.3 ; extra == 'plot' - - jinja2 >=3.1.2 ; extra == 'output-formatting' - - tabulate >=0.9.0 ; extra == 'output-formatting' - - pyqt5 >=5.15.9 ; extra == 'clipboard' - - qtpy >=2.3.0 ; extra == 'clipboard' - - zstandard >=0.19.0 ; extra == 'compression' - - dataframe-api-compat >=0.1.7 ; extra == 'consortium-standard' - - adbc-driver-postgresql >=0.8.0 ; extra == 'all' - - adbc-driver-sqlite >=0.8.0 ; extra == 'all' - - beautifulsoup4 >=4.11.2 ; extra == 'all' - - bottleneck >=1.3.6 ; extra == 'all' - - dataframe-api-compat >=0.1.7 ; extra == 'all' - - fastparquet >=2022.12.0 ; extra == 'all' - - fsspec >=2022.11.0 ; extra == 'all' - - gcsfs >=2022.11.0 ; extra == 'all' - - html5lib >=1.1 ; extra == 'all' - - hypothesis >=6.46.1 ; extra == 'all' - - jinja2 >=3.1.2 ; extra == 'all' - - lxml >=4.9.2 ; extra == 'all' - - matplotlib >=3.6.3 ; extra == 'all' - - numba >=0.56.4 ; extra == 'all' - - numexpr >=2.8.4 ; extra == 'all' - - odfpy >=1.4.1 ; extra == 'all' - - openpyxl >=3.1.0 ; extra == 'all' - - pandas-gbq >=0.19.0 ; extra == 'all' - - psycopg2 >=2.9.6 ; extra == 'all' - - pyarrow >=10.0.1 ; extra == 'all' - - pymysql >=1.0.2 ; extra == 'all' - - pyqt5 >=5.15.9 ; extra == 'all' - - pyreadstat >=1.2.0 ; extra == 'all' - - pytest >=7.3.2 ; extra == 'all' - - pytest-xdist >=2.2.0 ; extra == 'all' - - python-calamine >=0.1.7 ; extra == 'all' - - pyxlsb >=1.0.10 ; extra == 'all' - - qtpy >=2.3.0 ; extra == 'all' - - scipy >=1.10.0 ; extra == 'all' - - s3fs >=2022.11.0 ; extra == 'all' - - sqlalchemy >=2.0.0 ; extra == 'all' - - tables >=3.8.0 ; extra == 'all' - - tabulate >=0.9.0 ; extra == 'all' - - xarray >=2022.12.0 ; extra == 'all' - - xlrd >=2.0.1 ; extra == 'all' - - xlsxwriter >=3.0.5 ; extra == 'all' - - zstandard >=0.19.0 ; extra == 'all' + - numpy>=1.22.4 ; python_version < '3.11' + - numpy>=1.23.2 ; python_version == '3.11' + - numpy>=1.26.0 ; python_version >= '3.12' + - python-dateutil>=2.8.2 + - pytz>=2020.1 + - tzdata>=2022.7 + - hypothesis>=6.46.1 ; extra == 'test' + - pytest>=7.3.2 ; extra == 'test' + - pytest-xdist>=2.2.0 ; extra == 'test' + - pyarrow>=10.0.1 ; extra == 'pyarrow' + - bottleneck>=1.3.6 ; extra == 'performance' + - numba>=0.56.4 ; extra == 'performance' + - numexpr>=2.8.4 ; extra == 'performance' + - scipy>=1.10.0 ; extra == 'computation' + - xarray>=2022.12.0 ; extra == 'computation' + - fsspec>=2022.11.0 ; extra == 'fss' + - s3fs>=2022.11.0 ; extra == 'aws' + - gcsfs>=2022.11.0 ; extra == 'gcp' + - pandas-gbq>=0.19.0 ; extra == 'gcp' + - odfpy>=1.4.1 ; extra == 'excel' + - openpyxl>=3.1.0 ; extra == 'excel' + - python-calamine>=0.1.7 ; extra == 'excel' + - pyxlsb>=1.0.10 ; extra == 'excel' + - xlrd>=2.0.1 ; extra == 'excel' + - xlsxwriter>=3.0.5 ; extra == 'excel' + - pyarrow>=10.0.1 ; extra == 'parquet' + - pyarrow>=10.0.1 ; extra == 'feather' + - tables>=3.8.0 ; extra == 'hdf5' + - pyreadstat>=1.2.0 ; extra == 'spss' + - sqlalchemy>=2.0.0 ; extra == 'postgresql' + - psycopg2>=2.9.6 ; extra == 'postgresql' + - adbc-driver-postgresql>=0.8.0 ; extra == 'postgresql' + - sqlalchemy>=2.0.0 ; extra == 'mysql' + - pymysql>=1.0.2 ; extra == 'mysql' + - sqlalchemy>=2.0.0 ; extra == 'sql-other' + - adbc-driver-postgresql>=0.8.0 ; extra == 'sql-other' + - adbc-driver-sqlite>=0.8.0 ; extra == 'sql-other' + - beautifulsoup4>=4.11.2 ; extra == 'html' + - html5lib>=1.1 ; extra == 'html' + - lxml>=4.9.2 ; extra == 'html' + - lxml>=4.9.2 ; extra == 'xml' + - matplotlib>=3.6.3 ; extra == 'plot' + - jinja2>=3.1.2 ; extra == 'output-formatting' + - tabulate>=0.9.0 ; extra == 'output-formatting' + - pyqt5>=5.15.9 ; extra == 'clipboard' + - qtpy>=2.3.0 ; extra == 'clipboard' + - zstandard>=0.19.0 ; extra == 'compression' + - dataframe-api-compat>=0.1.7 ; extra == 'consortium-standard' + - adbc-driver-postgresql>=0.8.0 ; extra == 'all' + - adbc-driver-sqlite>=0.8.0 ; extra == 'all' + - beautifulsoup4>=4.11.2 ; extra == 'all' + - bottleneck>=1.3.6 ; extra == 'all' + - dataframe-api-compat>=0.1.7 ; extra == 'all' + - fastparquet>=2022.12.0 ; extra == 'all' + - fsspec>=2022.11.0 ; extra == 'all' + - gcsfs>=2022.11.0 ; extra == 'all' + - html5lib>=1.1 ; extra == 'all' + - hypothesis>=6.46.1 ; extra == 'all' + - jinja2>=3.1.2 ; extra == 'all' + - lxml>=4.9.2 ; extra == 'all' + - matplotlib>=3.6.3 ; extra == 'all' + - numba>=0.56.4 ; extra == 'all' + - numexpr>=2.8.4 ; extra == 'all' + - odfpy>=1.4.1 ; extra == 'all' + - openpyxl>=3.1.0 ; extra == 'all' + - pandas-gbq>=0.19.0 ; extra == 'all' + - psycopg2>=2.9.6 ; extra == 'all' + - pyarrow>=10.0.1 ; extra == 'all' + - pymysql>=1.0.2 ; extra == 'all' + - pyqt5>=5.15.9 ; extra == 'all' + - pyreadstat>=1.2.0 ; extra == 'all' + - pytest>=7.3.2 ; extra == 'all' + - pytest-xdist>=2.2.0 ; extra == 'all' + - python-calamine>=0.1.7 ; extra == 'all' + - pyxlsb>=1.0.10 ; extra == 'all' + - qtpy>=2.3.0 ; extra == 'all' + - scipy>=1.10.0 ; extra == 'all' + - s3fs>=2022.11.0 ; extra == 'all' + - sqlalchemy>=2.0.0 ; extra == 'all' + - tables>=3.8.0 ; extra == 'all' + - tabulate>=0.9.0 ; extra == 'all' + - xarray>=2022.12.0 ; extra == 'all' + - xlrd>=2.0.1 ; extra == 'all' + - xlsxwriter>=3.0.5 ; extra == 'all' + - zstandard>=0.19.0 ; extra == 'all' requires_python: '>=3.9' - kind: pypi name: pandas @@ -22578,91 +22486,183 @@ packages: url: https://files.pythonhosted.org/packages/16/c6/75231fd47afd6b3f89011e7077f1a3958441264aca7ae9ff596e3276a5d0/pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl sha256: 8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151 requires_dist: - - numpy >=1.22.4 ; python_version < '3.11' - - numpy >=1.23.2 ; python_version == '3.11' - - numpy >=1.26.0 ; python_version >= '3.12' - - python-dateutil >=2.8.2 - - pytz >=2020.1 - - tzdata >=2022.7 - - hypothesis >=6.46.1 ; extra == 'test' - - pytest >=7.3.2 ; extra == 'test' - - pytest-xdist >=2.2.0 ; extra == 'test' - - pyarrow >=10.0.1 ; extra == 'pyarrow' - - bottleneck >=1.3.6 ; extra == 'performance' - - numba >=0.56.4 ; extra == 'performance' - - numexpr >=2.8.4 ; extra == 'performance' - - scipy >=1.10.0 ; extra == 'computation' - - xarray >=2022.12.0 ; extra == 'computation' - - fsspec >=2022.11.0 ; extra == 'fss' - - s3fs >=2022.11.0 ; extra == 'aws' - - gcsfs >=2022.11.0 ; extra == 'gcp' - - pandas-gbq >=0.19.0 ; extra == 'gcp' - - odfpy >=1.4.1 ; extra == 'excel' - - openpyxl >=3.1.0 ; extra == 'excel' - - python-calamine >=0.1.7 ; extra == 'excel' - - pyxlsb >=1.0.10 ; extra == 'excel' - - xlrd >=2.0.1 ; extra == 'excel' - - xlsxwriter >=3.0.5 ; extra == 'excel' - - pyarrow >=10.0.1 ; extra == 'parquet' - - pyarrow >=10.0.1 ; extra == 'feather' - - tables >=3.8.0 ; extra == 'hdf5' - - pyreadstat >=1.2.0 ; extra == 'spss' - - sqlalchemy >=2.0.0 ; extra == 'postgresql' - - psycopg2 >=2.9.6 ; extra == 'postgresql' - - adbc-driver-postgresql >=0.8.0 ; extra == 'postgresql' - - sqlalchemy >=2.0.0 ; extra == 'mysql' - - pymysql >=1.0.2 ; extra == 'mysql' - - sqlalchemy >=2.0.0 ; extra == 'sql-other' - - adbc-driver-postgresql >=0.8.0 ; extra == 'sql-other' - - adbc-driver-sqlite >=0.8.0 ; extra == 'sql-other' - - beautifulsoup4 >=4.11.2 ; extra == 'html' - - html5lib >=1.1 ; extra == 'html' - - lxml >=4.9.2 ; extra == 'html' - - lxml >=4.9.2 ; extra == 'xml' - - matplotlib >=3.6.3 ; extra == 'plot' - - jinja2 >=3.1.2 ; extra == 'output-formatting' - - tabulate >=0.9.0 ; extra == 'output-formatting' - - pyqt5 >=5.15.9 ; extra == 'clipboard' - - qtpy >=2.3.0 ; extra == 'clipboard' - - zstandard >=0.19.0 ; extra == 'compression' - - dataframe-api-compat >=0.1.7 ; extra == 'consortium-standard' - - adbc-driver-postgresql >=0.8.0 ; extra == 'all' - - adbc-driver-sqlite >=0.8.0 ; extra == 'all' - - beautifulsoup4 >=4.11.2 ; extra == 'all' - - bottleneck >=1.3.6 ; extra == 'all' - - dataframe-api-compat >=0.1.7 ; extra == 'all' - - fastparquet >=2022.12.0 ; extra == 'all' - - fsspec >=2022.11.0 ; extra == 'all' - - gcsfs >=2022.11.0 ; extra == 'all' - - html5lib >=1.1 ; extra == 'all' - - hypothesis >=6.46.1 ; extra == 'all' - - jinja2 >=3.1.2 ; extra == 'all' - - lxml >=4.9.2 ; extra == 'all' - - matplotlib >=3.6.3 ; extra == 'all' - - numba >=0.56.4 ; extra == 'all' - - numexpr >=2.8.4 ; extra == 'all' - - odfpy >=1.4.1 ; extra == 'all' - - openpyxl >=3.1.0 ; extra == 'all' - - pandas-gbq >=0.19.0 ; extra == 'all' - - psycopg2 >=2.9.6 ; extra == 'all' - - pyarrow >=10.0.1 ; extra == 'all' - - pymysql >=1.0.2 ; extra == 'all' - - pyqt5 >=5.15.9 ; extra == 'all' - - pyreadstat >=1.2.0 ; extra == 'all' - - pytest >=7.3.2 ; extra == 'all' - - pytest-xdist >=2.2.0 ; extra == 'all' - - python-calamine >=0.1.7 ; extra == 'all' - - pyxlsb >=1.0.10 ; extra == 'all' - - qtpy >=2.3.0 ; extra == 'all' - - scipy >=1.10.0 ; extra == 'all' - - s3fs >=2022.11.0 ; extra == 'all' - - sqlalchemy >=2.0.0 ; extra == 'all' - - tables >=3.8.0 ; extra == 'all' - - tabulate >=0.9.0 ; extra == 'all' - - xarray >=2022.12.0 ; extra == 'all' - - xlrd >=2.0.1 ; extra == 'all' - - xlsxwriter >=3.0.5 ; extra == 'all' - - zstandard >=0.19.0 ; extra == 'all' + - numpy>=1.22.4 ; python_version < '3.11' + - numpy>=1.23.2 ; python_version == '3.11' + - numpy>=1.26.0 ; python_version >= '3.12' + - python-dateutil>=2.8.2 + - pytz>=2020.1 + - tzdata>=2022.7 + - hypothesis>=6.46.1 ; extra == 'test' + - pytest>=7.3.2 ; extra == 'test' + - pytest-xdist>=2.2.0 ; extra == 'test' + - pyarrow>=10.0.1 ; extra == 'pyarrow' + - bottleneck>=1.3.6 ; extra == 'performance' + - numba>=0.56.4 ; extra == 'performance' + - numexpr>=2.8.4 ; extra == 'performance' + - scipy>=1.10.0 ; extra == 'computation' + - xarray>=2022.12.0 ; extra == 'computation' + - fsspec>=2022.11.0 ; extra == 'fss' + - s3fs>=2022.11.0 ; extra == 'aws' + - gcsfs>=2022.11.0 ; extra == 'gcp' + - pandas-gbq>=0.19.0 ; extra == 'gcp' + - odfpy>=1.4.1 ; extra == 'excel' + - openpyxl>=3.1.0 ; extra == 'excel' + - python-calamine>=0.1.7 ; extra == 'excel' + - pyxlsb>=1.0.10 ; extra == 'excel' + - xlrd>=2.0.1 ; extra == 'excel' + - xlsxwriter>=3.0.5 ; extra == 'excel' + - pyarrow>=10.0.1 ; extra == 'parquet' + - pyarrow>=10.0.1 ; extra == 'feather' + - tables>=3.8.0 ; extra == 'hdf5' + - pyreadstat>=1.2.0 ; extra == 'spss' + - sqlalchemy>=2.0.0 ; extra == 'postgresql' + - psycopg2>=2.9.6 ; extra == 'postgresql' + - adbc-driver-postgresql>=0.8.0 ; extra == 'postgresql' + - sqlalchemy>=2.0.0 ; extra == 'mysql' + - pymysql>=1.0.2 ; extra == 'mysql' + - sqlalchemy>=2.0.0 ; extra == 'sql-other' + - adbc-driver-postgresql>=0.8.0 ; extra == 'sql-other' + - adbc-driver-sqlite>=0.8.0 ; extra == 'sql-other' + - beautifulsoup4>=4.11.2 ; extra == 'html' + - html5lib>=1.1 ; extra == 'html' + - lxml>=4.9.2 ; extra == 'html' + - lxml>=4.9.2 ; extra == 'xml' + - matplotlib>=3.6.3 ; extra == 'plot' + - jinja2>=3.1.2 ; extra == 'output-formatting' + - tabulate>=0.9.0 ; extra == 'output-formatting' + - pyqt5>=5.15.9 ; extra == 'clipboard' + - qtpy>=2.3.0 ; extra == 'clipboard' + - zstandard>=0.19.0 ; extra == 'compression' + - dataframe-api-compat>=0.1.7 ; extra == 'consortium-standard' + - adbc-driver-postgresql>=0.8.0 ; extra == 'all' + - adbc-driver-sqlite>=0.8.0 ; extra == 'all' + - beautifulsoup4>=4.11.2 ; extra == 'all' + - bottleneck>=1.3.6 ; extra == 'all' + - dataframe-api-compat>=0.1.7 ; extra == 'all' + - fastparquet>=2022.12.0 ; extra == 'all' + - fsspec>=2022.11.0 ; extra == 'all' + - gcsfs>=2022.11.0 ; extra == 'all' + - html5lib>=1.1 ; extra == 'all' + - hypothesis>=6.46.1 ; extra == 'all' + - jinja2>=3.1.2 ; extra == 'all' + - lxml>=4.9.2 ; extra == 'all' + - matplotlib>=3.6.3 ; extra == 'all' + - numba>=0.56.4 ; extra == 'all' + - numexpr>=2.8.4 ; extra == 'all' + - odfpy>=1.4.1 ; extra == 'all' + - openpyxl>=3.1.0 ; extra == 'all' + - pandas-gbq>=0.19.0 ; extra == 'all' + - psycopg2>=2.9.6 ; extra == 'all' + - pyarrow>=10.0.1 ; extra == 'all' + - pymysql>=1.0.2 ; extra == 'all' + - pyqt5>=5.15.9 ; extra == 'all' + - pyreadstat>=1.2.0 ; extra == 'all' + - pytest>=7.3.2 ; extra == 'all' + - pytest-xdist>=2.2.0 ; extra == 'all' + - python-calamine>=0.1.7 ; extra == 'all' + - pyxlsb>=1.0.10 ; extra == 'all' + - qtpy>=2.3.0 ; extra == 'all' + - scipy>=1.10.0 ; extra == 'all' + - s3fs>=2022.11.0 ; extra == 'all' + - sqlalchemy>=2.0.0 ; extra == 'all' + - tables>=3.8.0 ; extra == 'all' + - tabulate>=0.9.0 ; extra == 'all' + - xarray>=2022.12.0 ; extra == 'all' + - xlrd>=2.0.1 ; extra == 'all' + - xlsxwriter>=3.0.5 ; extra == 'all' + - zstandard>=0.19.0 ; extra == 'all' + requires_python: '>=3.9' +- kind: pypi + name: pandas + version: 2.2.2 + url: https://files.pythonhosted.org/packages/1b/70/61704497903d43043e288017cb2b82155c0d41e15f5c17807920877b45c2/pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl + sha256: 696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288 + requires_dist: + - numpy>=1.22.4 ; python_version < '3.11' + - numpy>=1.23.2 ; python_version == '3.11' + - numpy>=1.26.0 ; python_version >= '3.12' + - python-dateutil>=2.8.2 + - pytz>=2020.1 + - tzdata>=2022.7 + - hypothesis>=6.46.1 ; extra == 'test' + - pytest>=7.3.2 ; extra == 'test' + - pytest-xdist>=2.2.0 ; extra == 'test' + - pyarrow>=10.0.1 ; extra == 'pyarrow' + - bottleneck>=1.3.6 ; extra == 'performance' + - numba>=0.56.4 ; extra == 'performance' + - numexpr>=2.8.4 ; extra == 'performance' + - scipy>=1.10.0 ; extra == 'computation' + - xarray>=2022.12.0 ; extra == 'computation' + - fsspec>=2022.11.0 ; extra == 'fss' + - s3fs>=2022.11.0 ; extra == 'aws' + - gcsfs>=2022.11.0 ; extra == 'gcp' + - pandas-gbq>=0.19.0 ; extra == 'gcp' + - odfpy>=1.4.1 ; extra == 'excel' + - openpyxl>=3.1.0 ; extra == 'excel' + - python-calamine>=0.1.7 ; extra == 'excel' + - pyxlsb>=1.0.10 ; extra == 'excel' + - xlrd>=2.0.1 ; extra == 'excel' + - xlsxwriter>=3.0.5 ; extra == 'excel' + - pyarrow>=10.0.1 ; extra == 'parquet' + - pyarrow>=10.0.1 ; extra == 'feather' + - tables>=3.8.0 ; extra == 'hdf5' + - pyreadstat>=1.2.0 ; extra == 'spss' + - sqlalchemy>=2.0.0 ; extra == 'postgresql' + - psycopg2>=2.9.6 ; extra == 'postgresql' + - adbc-driver-postgresql>=0.8.0 ; extra == 'postgresql' + - sqlalchemy>=2.0.0 ; extra == 'mysql' + - pymysql>=1.0.2 ; extra == 'mysql' + - sqlalchemy>=2.0.0 ; extra == 'sql-other' + - adbc-driver-postgresql>=0.8.0 ; extra == 'sql-other' + - adbc-driver-sqlite>=0.8.0 ; extra == 'sql-other' + - beautifulsoup4>=4.11.2 ; extra == 'html' + - html5lib>=1.1 ; extra == 'html' + - lxml>=4.9.2 ; extra == 'html' + - lxml>=4.9.2 ; extra == 'xml' + - matplotlib>=3.6.3 ; extra == 'plot' + - jinja2>=3.1.2 ; extra == 'output-formatting' + - tabulate>=0.9.0 ; extra == 'output-formatting' + - pyqt5>=5.15.9 ; extra == 'clipboard' + - qtpy>=2.3.0 ; extra == 'clipboard' + - zstandard>=0.19.0 ; extra == 'compression' + - dataframe-api-compat>=0.1.7 ; extra == 'consortium-standard' + - adbc-driver-postgresql>=0.8.0 ; extra == 'all' + - adbc-driver-sqlite>=0.8.0 ; extra == 'all' + - beautifulsoup4>=4.11.2 ; extra == 'all' + - bottleneck>=1.3.6 ; extra == 'all' + - dataframe-api-compat>=0.1.7 ; extra == 'all' + - fastparquet>=2022.12.0 ; extra == 'all' + - fsspec>=2022.11.0 ; extra == 'all' + - gcsfs>=2022.11.0 ; extra == 'all' + - html5lib>=1.1 ; extra == 'all' + - hypothesis>=6.46.1 ; extra == 'all' + - jinja2>=3.1.2 ; extra == 'all' + - lxml>=4.9.2 ; extra == 'all' + - matplotlib>=3.6.3 ; extra == 'all' + - numba>=0.56.4 ; extra == 'all' + - numexpr>=2.8.4 ; extra == 'all' + - odfpy>=1.4.1 ; extra == 'all' + - openpyxl>=3.1.0 ; extra == 'all' + - pandas-gbq>=0.19.0 ; extra == 'all' + - psycopg2>=2.9.6 ; extra == 'all' + - pyarrow>=10.0.1 ; extra == 'all' + - pymysql>=1.0.2 ; extra == 'all' + - pyqt5>=5.15.9 ; extra == 'all' + - pyreadstat>=1.2.0 ; extra == 'all' + - pytest>=7.3.2 ; extra == 'all' + - pytest-xdist>=2.2.0 ; extra == 'all' + - python-calamine>=0.1.7 ; extra == 'all' + - pyxlsb>=1.0.10 ; extra == 'all' + - qtpy>=2.3.0 ; extra == 'all' + - scipy>=1.10.0 ; extra == 'all' + - s3fs>=2022.11.0 ; extra == 'all' + - sqlalchemy>=2.0.0 ; extra == 'all' + - tables>=3.8.0 ; extra == 'all' + - tabulate>=0.9.0 ; extra == 'all' + - xarray>=2022.12.0 ; extra == 'all' + - xlrd>=2.0.1 ; extra == 'all' + - xlsxwriter>=3.0.5 ; extra == 'all' + - zstandard>=0.19.0 ; extra == 'all' requires_python: '>=3.9' - kind: conda name: patchelf @@ -22693,12 +22693,12 @@ packages: - kind: pypi name: pillow version: 10.0.0 - url: https://files.pythonhosted.org/packages/b7/ad/71982d18fd28ed1f93c31b8648f980ebdbdbcf7d8c9c9b4af59290914ce9/Pillow-10.0.0-cp311-cp311-macosx_11_0_arm64.whl - sha256: d35e3c8d9b1268cbf5d3670285feb3528f6680420eafe35cccc686b73c1e330f + url: https://files.pythonhosted.org/packages/7a/54/f6a14d95cba8ff082c550d836c9e5c23f1641d2ac291c23efe0494219b8c/Pillow-10.0.0-cp311-cp311-macosx_10_10_x86_64.whl + sha256: 9fb218c8a12e51d7ead2a7c9e101a04982237d4855716af2e9499306728fb485 requires_dist: - furo ; extra == 'docs' - olefile ; extra == 'docs' - - sphinx >=2.4 ; extra == 'docs' + - sphinx>=2.4 ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - sphinx-inline-tabs ; extra == 'docs' - sphinx-removed-in ; extra == 'docs' @@ -22717,12 +22717,12 @@ packages: - kind: pypi name: pillow version: 10.0.0 - url: https://files.pythonhosted.org/packages/66/d4/054e491f0880bf0119ee79cdc03264e01d5732e06c454da8c69b83a7c8f2/Pillow-10.0.0-cp311-cp311-win_amd64.whl - sha256: 3a82c40d706d9aa9734289740ce26460a11aeec2d9c79b7af87bb35f0073c12f + url: https://files.pythonhosted.org/packages/79/53/3a7277ae95bfe86b8b4db0ed1d08c4924aa2dfbfe51b8fe0e310b160a9c6/Pillow-10.0.0-cp311-cp311-manylinux_2_28_aarch64.whl + sha256: c1fbe7621c167ecaa38ad29643d77a9ce7311583761abf7836e1510c580bf3dd requires_dist: - furo ; extra == 'docs' - olefile ; extra == 'docs' - - sphinx >=2.4 ; extra == 'docs' + - sphinx>=2.4 ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - sphinx-inline-tabs ; extra == 'docs' - sphinx-removed-in ; extra == 'docs' @@ -22746,7 +22746,7 @@ packages: requires_dist: - furo ; extra == 'docs' - olefile ; extra == 'docs' - - sphinx >=2.4 ; extra == 'docs' + - sphinx>=2.4 ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - sphinx-inline-tabs ; extra == 'docs' - sphinx-removed-in ; extra == 'docs' @@ -22765,12 +22765,12 @@ packages: - kind: pypi name: pillow version: 10.0.0 - url: https://files.pythonhosted.org/packages/79/53/3a7277ae95bfe86b8b4db0ed1d08c4924aa2dfbfe51b8fe0e310b160a9c6/Pillow-10.0.0-cp311-cp311-manylinux_2_28_aarch64.whl - sha256: c1fbe7621c167ecaa38ad29643d77a9ce7311583761abf7836e1510c580bf3dd + url: https://files.pythonhosted.org/packages/b7/ad/71982d18fd28ed1f93c31b8648f980ebdbdbcf7d8c9c9b4af59290914ce9/Pillow-10.0.0-cp311-cp311-macosx_11_0_arm64.whl + sha256: d35e3c8d9b1268cbf5d3670285feb3528f6680420eafe35cccc686b73c1e330f requires_dist: - furo ; extra == 'docs' - olefile ; extra == 'docs' - - sphinx >=2.4 ; extra == 'docs' + - sphinx>=2.4 ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - sphinx-inline-tabs ; extra == 'docs' - sphinx-removed-in ; extra == 'docs' @@ -22789,12 +22789,12 @@ packages: - kind: pypi name: pillow version: 10.0.0 - url: https://files.pythonhosted.org/packages/7a/54/f6a14d95cba8ff082c550d836c9e5c23f1641d2ac291c23efe0494219b8c/Pillow-10.0.0-cp311-cp311-macosx_10_10_x86_64.whl - sha256: 9fb218c8a12e51d7ead2a7c9e101a04982237d4855716af2e9499306728fb485 + url: https://files.pythonhosted.org/packages/66/d4/054e491f0880bf0119ee79cdc03264e01d5732e06c454da8c69b83a7c8f2/Pillow-10.0.0-cp311-cp311-win_amd64.whl + sha256: 3a82c40d706d9aa9734289740ce26460a11aeec2d9c79b7af87bb35f0073c12f requires_dist: - furo ; extra == 'docs' - olefile ; extra == 'docs' - - sphinx >=2.4 ; extra == 'docs' + - sphinx>=2.4 ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - sphinx-inline-tabs ; extra == 'docs' - sphinx-removed-in ; extra == 'docs' @@ -22813,12 +22813,12 @@ packages: - kind: pypi name: pillow version: 10.3.0 - url: https://files.pythonhosted.org/packages/e5/51/e4b35e394b4e5ca24983e50361a1db3d7da05b1758074f9c4f5b4be4b22a/pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl - sha256: 5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795 + url: https://files.pythonhosted.org/packages/81/ff/ad3c942d865f9e45ce84eeb31795e6d4d94e1f1eea51026d5154028510d7/pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl + sha256: 1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd requires_dist: - furo ; extra == 'docs' - olefile ; extra == 'docs' - - sphinx >=2.4 ; extra == 'docs' + - sphinx>=2.4 ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - sphinx-inline-tabs ; extra == 'docs' - sphinx-removed-in ; extra == 'docs' @@ -22841,12 +22841,12 @@ packages: - kind: pypi name: pillow version: 10.3.0 - url: https://files.pythonhosted.org/packages/81/ff/ad3c942d865f9e45ce84eeb31795e6d4d94e1f1eea51026d5154028510d7/pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl - sha256: 1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd + url: https://files.pythonhosted.org/packages/0a/16/c83877524c47976f16703d2e05c363244bc1e60ab439e078b3cd046d07db/pillow-10.3.0-cp311-cp311-win_amd64.whl + sha256: 8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d requires_dist: - furo ; extra == 'docs' - olefile ; extra == 'docs' - - sphinx >=2.4 ; extra == 'docs' + - sphinx>=2.4 ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - sphinx-inline-tabs ; extra == 'docs' - sphinx-removed-in ; extra == 'docs' @@ -22869,12 +22869,12 @@ packages: - kind: pypi name: pillow version: 10.3.0 - url: https://files.pythonhosted.org/packages/0a/16/c83877524c47976f16703d2e05c363244bc1e60ab439e078b3cd046d07db/pillow-10.3.0-cp311-cp311-win_amd64.whl - sha256: 8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d + url: https://files.pythonhosted.org/packages/00/5c/7633f291def20082bad31b844fe5ed07742aae8504e4cfe2f331ee727178/pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl + sha256: e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57 requires_dist: - furo ; extra == 'docs' - olefile ; extra == 'docs' - - sphinx >=2.4 ; extra == 'docs' + - sphinx>=2.4 ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - sphinx-inline-tabs ; extra == 'docs' - sphinx-removed-in ; extra == 'docs' @@ -22897,12 +22897,12 @@ packages: - kind: pypi name: pillow version: 10.3.0 - url: https://files.pythonhosted.org/packages/00/5c/7633f291def20082bad31b844fe5ed07742aae8504e4cfe2f331ee727178/pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl - sha256: e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57 + url: https://files.pythonhosted.org/packages/e5/51/e4b35e394b4e5ca24983e50361a1db3d7da05b1758074f9c4f5b4be4b22a/pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl + sha256: 5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795 requires_dist: - furo ; extra == 'docs' - olefile ; extra == 'docs' - - sphinx >=2.4 ; extra == 'docs' + - sphinx>=2.4 ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - sphinx-inline-tabs ; extra == 'docs' - sphinx-removed-in ; extra == 'docs' @@ -22974,16 +22974,33 @@ packages: url: https://files.pythonhosted.org/packages/b0/15/1691fa5aaddc0c4ea4901c26f6137c29d5f6673596fe960a0340e8c308e1/platformdirs-4.2.1-py3-none-any.whl sha256: 17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1 requires_dist: - - furo >=2023.9.10 ; extra == 'docs' - - proselint >=0.13 ; extra == 'docs' - - sphinx-autodoc-typehints >=1.25.2 ; extra == 'docs' - - sphinx >=7.2.6 ; extra == 'docs' - - appdirs ==1.4.4 ; extra == 'test' - - covdefaults >=2.3 ; extra == 'test' - - pytest-cov >=4.1 ; extra == 'test' - - pytest-mock >=3.12 ; extra == 'test' - - pytest >=7.4.3 ; extra == 'test' - - mypy >=1.8 ; extra == 'type' + - furo>=2023.9.10 ; extra == 'docs' + - proselint>=0.13 ; extra == 'docs' + - sphinx-autodoc-typehints>=1.25.2 ; extra == 'docs' + - sphinx>=7.2.6 ; extra == 'docs' + - appdirs==1.4.4 ; extra == 'test' + - covdefaults>=2.3 ; extra == 'test' + - pytest-cov>=4.1 ; extra == 'test' + - pytest-mock>=3.12 ; extra == 'test' + - pytest>=7.4.3 ; extra == 'test' + - mypy>=1.8 ; extra == 'type' + requires_python: '>=3.8' +- kind: pypi + name: platformdirs + version: 4.2.2 + url: https://files.pythonhosted.org/packages/68/13/2aa1f0e1364feb2c9ef45302f387ac0bd81484e9c9a4c5688a322fbdfd08/platformdirs-4.2.2-py3-none-any.whl + sha256: 2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee + requires_dist: + - furo>=2023.9.10 ; extra == 'docs' + - proselint>=0.13 ; extra == 'docs' + - sphinx-autodoc-typehints>=1.25.2 ; extra == 'docs' + - sphinx>=7.2.6 ; extra == 'docs' + - appdirs==1.4.4 ; extra == 'test' + - covdefaults>=2.3 ; extra == 'test' + - pytest-cov>=4.1 ; extra == 'test' + - pytest-mock>=3.12 ; extra == 'test' + - pytest>=7.4.3 ; extra == 'test' + - mypy>=1.8 ; extra == 'type' requires_python: '>=3.8' - kind: pypi name: plots @@ -23112,8 +23129,8 @@ packages: url: https://files.pythonhosted.org/packages/ad/41/7361075f3a31dcd05a6a38cfd807a6eecbfb6dbfe420d922cd400fc03ac1/proto_plus-1.23.0-py3-none-any.whl sha256: a829c79e619e1cf632de091013a4173deed13a55f326ef84f05af6f50ff4c82c requires_dist: - - protobuf <5.0.0.dev0, >=3.19.0 - - google-api-core[grpc] >=1.31.5 ; extra == 'testing' + - protobuf<5.0.0.dev0,>=3.19.0 + - google-api-core[grpc]>=1.31.5 ; extra == 'testing' requires_python: '>=3.6' - kind: pypi name: protobuf @@ -23130,8 +23147,8 @@ packages: - kind: pypi name: protobuf version: 4.25.3 - url: https://files.pythonhosted.org/packages/ad/6e/1bed3b7c904cc178cb8ee8dbaf72934964452b3de95b7a63412591edb93c/protobuf-4.25.3-cp310-abi3-win_amd64.whl - sha256: 209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8 + url: https://files.pythonhosted.org/packages/d8/82/aefe901174b5a618daee511ddd00342193c1b545e3cd6a2cd6df9ba452b5/protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl + sha256: e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019 requires_python: '>=3.8' - kind: pypi name: protobuf @@ -23142,14 +23159,14 @@ packages: - kind: pypi name: protobuf version: 4.25.3 - url: https://files.pythonhosted.org/packages/d8/82/aefe901174b5a618daee511ddd00342193c1b545e3cd6a2cd6df9ba452b5/protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl - sha256: e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019 + url: https://files.pythonhosted.org/packages/ad/6e/1bed3b7c904cc178cb8ee8dbaf72934964452b3de95b7a63412591edb93c/protobuf-4.25.3-cp310-abi3-win_amd64.whl + sha256: 209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8 requires_python: '>=3.8' - kind: pypi name: psutil version: 5.9.8 - url: https://files.pythonhosted.org/packages/e7/e3/07ae864a636d70a8a6f58da27cb1179192f1140d5d1da10886ade9405797/psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl - sha256: aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81 + url: https://files.pythonhosted.org/packages/c5/4f/0e22aaa246f96d6ac87fe5ebb9c5a693fbe8877f537a1022527c47ca43c5/psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4 requires_dist: - ipaddress ; python_version < '3.0' and extra == 'test' - mock ; python_version < '3.0' and extra == 'test' @@ -23160,8 +23177,8 @@ packages: - kind: pypi name: psutil version: 5.9.8 - url: https://files.pythonhosted.org/packages/c5/4f/0e22aaa246f96d6ac87fe5ebb9c5a693fbe8877f537a1022527c47ca43c5/psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl - sha256: d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4 + url: https://files.pythonhosted.org/packages/93/52/3e39d26feae7df0aa0fd510b14012c3678b36ed068f7d78b8d8784d61f0e/psutil-5.9.8-cp37-abi3-win_amd64.whl + sha256: 8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf requires_dist: - ipaddress ; python_version < '3.0' and extra == 'test' - mock ; python_version < '3.0' and extra == 'test' @@ -23172,8 +23189,8 @@ packages: - kind: pypi name: psutil version: 5.9.8 - url: https://files.pythonhosted.org/packages/93/52/3e39d26feae7df0aa0fd510b14012c3678b36ed068f7d78b8d8784d61f0e/psutil-5.9.8-cp37-abi3-win_amd64.whl - sha256: 8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf + url: https://files.pythonhosted.org/packages/05/33/2d74d588408caedd065c2497bdb5ef83ce6082db01289a1e1147f6639802/psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl + sha256: d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8 requires_dist: - ipaddress ; python_version < '3.0' and extra == 'test' - mock ; python_version < '3.0' and extra == 'test' @@ -23184,8 +23201,8 @@ packages: - kind: pypi name: psutil version: 5.9.8 - url: https://files.pythonhosted.org/packages/05/33/2d74d588408caedd065c2497bdb5ef83ce6082db01289a1e1147f6639802/psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl - sha256: d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8 + url: https://files.pythonhosted.org/packages/e7/e3/07ae864a636d70a8a6f58da27cb1179192f1140d5d1da10886ade9405797/psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl + sha256: aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81 requires_dist: - ipaddress ; python_version < '3.0' and extra == 'test' - mock ; python_version < '3.0' and extra == 'test' @@ -23731,7 +23748,7 @@ packages: url: https://files.pythonhosted.org/packages/13/68/8906226b15ef38e71dc926c321d2fe99de8048e9098b5dfd38343011c886/pyasn1_modules-0.4.0-py3-none-any.whl sha256: be04f15b66c206eed667e0bb5ab27e2b1855ea54a842e5037738099e8ca4ae0b requires_dist: - - pyasn1 <0.7.0, >=0.4.6 + - pyasn1<0.7.0,>=0.4.6 requires_python: '>=3.8' - kind: pypi name: pycparser @@ -23762,9 +23779,9 @@ packages: sha256: 126bdbae72087d8d038b113aab6b059b4553cb59348e3024bb1a1cae406ace9e requires_dist: - deprecated - - pyjwt[crypto] >=2.4.0 - - pynacl >=1.4.0 - - requests >=2.14.0 + - pyjwt[crypto]>=2.4.0 + - pynacl>=1.4.0 + - requests>=2.14.0 requires_python: '>=3.7' - kind: pypi name: pyglet @@ -23778,7 +23795,7 @@ packages: url: https://files.pythonhosted.org/packages/38/d7/0b8e35cb3ff69dd981e358e72e0a5632f847d4bd61876be04518cb4e075a/pygltflib-1.16.2.tar.gz sha256: 4f9481f5841b0b8fb7b271b0414b394b503405260a6ee0cf2c330a5420d19b64 requires_dist: - - dataclasses-json >=0.0.25 + - dataclasses-json>=0.0.25 - deprecated - dataclasses ; python_version >= '3.6' and python_version < '3.7' requires_python: '>=3.6' @@ -23789,19 +23806,19 @@ packages: sha256: 59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320 requires_dist: - typing-extensions ; python_version <= '3.7' - - cryptography >=3.4.0 ; extra == 'crypto' - - sphinx <5.0.0, >=4.5.0 ; extra == 'dev' + - cryptography>=3.4.0 ; extra == 'crypto' + - sphinx<5.0.0,>=4.5.0 ; extra == 'dev' - sphinx-rtd-theme ; extra == 'dev' - zope-interface ; extra == 'dev' - - cryptography >=3.4.0 ; extra == 'dev' - - pytest <7.0.0, >=6.0.0 ; extra == 'dev' - - coverage[toml] ==5.0.4 ; extra == 'dev' + - cryptography>=3.4.0 ; extra == 'dev' + - pytest<7.0.0,>=6.0.0 ; extra == 'dev' + - coverage[toml]==5.0.4 ; extra == 'dev' - pre-commit ; extra == 'dev' - - sphinx <5.0.0, >=4.5.0 ; extra == 'docs' + - sphinx<5.0.0,>=4.5.0 ; extra == 'docs' - sphinx-rtd-theme ; extra == 'docs' - zope-interface ; extra == 'docs' - - pytest <7.0.0, >=6.0.0 ; extra == 'tests' - - coverage[toml] ==5.0.4 ; extra == 'tests' + - pytest<7.0.0,>=6.0.0 ; extra == 'tests' + - coverage[toml]==5.0.4 ; extra == 'tests' requires_python: '>=3.7' - kind: pypi name: pynacl @@ -23809,23 +23826,23 @@ packages: url: https://files.pythonhosted.org/packages/ce/75/0b8ede18506041c0bf23ac4d8e2971b4161cd6ce630b177d0a08eb0d8857/PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl sha256: 401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1 requires_dist: - - cffi >=1.4.1 - - sphinx >=1.6.5 ; extra == 'docs' + - cffi>=1.4.1 + - sphinx>=1.6.5 ; extra == 'docs' - sphinx-rtd-theme ; extra == 'docs' - - pytest !=3.3.0, >=3.2.1 ; extra == 'tests' - - hypothesis >=3.27.0 ; extra == 'tests' + - pytest!=3.3.0,>=3.2.1 ; extra == 'tests' + - hypothesis>=3.27.0 ; extra == 'tests' requires_python: '>=3.6' - kind: pypi name: pynacl version: 1.5.0 - url: https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl - sha256: 20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93 + url: https://files.pythonhosted.org/packages/59/bb/fddf10acd09637327a97ef89d2a9d621328850a72f1fdc8c08bdf72e385f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl + sha256: 52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92 requires_dist: - - cffi >=1.4.1 - - sphinx >=1.6.5 ; extra == 'docs' + - cffi>=1.4.1 + - sphinx>=1.6.5 ; extra == 'docs' - sphinx-rtd-theme ; extra == 'docs' - - pytest !=3.3.0, >=3.2.1 ; extra == 'tests' - - hypothesis >=3.27.0 ; extra == 'tests' + - pytest!=3.3.0,>=3.2.1 ; extra == 'tests' + - hypothesis>=3.27.0 ; extra == 'tests' requires_python: '>=3.6' - kind: pypi name: pynacl @@ -23833,23 +23850,23 @@ packages: url: https://files.pythonhosted.org/packages/ee/87/f1bb6a595f14a327e8285b9eb54d41fef76c585a0edef0a45f6fc95de125/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl sha256: 0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d requires_dist: - - cffi >=1.4.1 - - sphinx >=1.6.5 ; extra == 'docs' + - cffi>=1.4.1 + - sphinx>=1.6.5 ; extra == 'docs' - sphinx-rtd-theme ; extra == 'docs' - - pytest !=3.3.0, >=3.2.1 ; extra == 'tests' - - hypothesis >=3.27.0 ; extra == 'tests' + - pytest!=3.3.0,>=3.2.1 ; extra == 'tests' + - hypothesis>=3.27.0 ; extra == 'tests' requires_python: '>=3.6' - kind: pypi name: pynacl version: 1.5.0 - url: https://files.pythonhosted.org/packages/59/bb/fddf10acd09637327a97ef89d2a9d621328850a72f1fdc8c08bdf72e385f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl - sha256: 52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92 + url: https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl + sha256: 20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93 requires_dist: - - cffi >=1.4.1 - - sphinx >=1.6.5 ; extra == 'docs' + - cffi>=1.4.1 + - sphinx>=1.6.5 ; extra == 'docs' - sphinx-rtd-theme ; extra == 'docs' - - pytest !=3.3.0, >=3.2.1 ; extra == 'tests' - - hypothesis >=3.27.0 ; extra == 'tests' + - pytest!=3.3.0,>=3.2.1 ; extra == 'tests' + - hypothesis>=3.27.0 ; extra == 'tests' requires_python: '>=3.6' - kind: pypi name: pynndescent @@ -23857,31 +23874,31 @@ packages: url: https://files.pythonhosted.org/packages/bf/06/18c0e17eb245b7caeb861f2ff747adb0575500183b6ec4282d5350d29e9f/pynndescent-0.5.12-py3-none-any.whl sha256: 9023dc5fea520a4e84d0633ae735db97d2509da927bfa86c897e61f3315473c7 requires_dist: - - scikit-learn >=0.18 - - scipy >=1.0 - - numba >=0.51.2 - - llvmlite >=0.30 - - joblib >=0.11 - - importlib-metadata >=4.8.1 ; python_version < '3.8' + - scikit-learn>=0.18 + - scipy>=1.0 + - numba>=0.51.2 + - llvmlite>=0.30 + - joblib>=0.11 + - importlib-metadata>=4.8.1 ; python_version < '3.8' - kind: pypi name: pyopengl version: 3.1.0 - url: https://files.pythonhosted.org/packages/ce/33/ef0e3b40a3f4cbfcfb93511652673fb19d07bafac0611f01f6237d1978ed/PyOpenGL-3.1.0.zip - sha256: efa4e39a49b906ccbe66758812ca81ced13a6f26931ab2ba2dba2750c016c0d0 + url: https://files.pythonhosted.org/packages/9c/1d/4544708aaa89f26c97cc09450bb333a23724a320923e74d73e028b3560f9/PyOpenGL-3.1.0.tar.gz + sha256: 9b47c5c3a094fa518ca88aeed35ae75834d53e4285512c61879f67a48c94ddaf - kind: pypi name: pyopf version: 1.1.1 url: https://files.pythonhosted.org/packages/a8/26/b67fe94cb53c489c5ccaed118f257a5100e7775071515942c9f45d8cd40f/pyopf-1.1.1-py3-none-any.whl sha256: 10971881afcb7ed0dd373f7e88862fa8ad0f70fe4329f2ef5093c152e923831f requires_dist: - - argparse >=1.4.0 - - numpy >=1.24.1 - - pillow >=9.5.0 - - pygltflib >=1.15.3 - - python-dateutil >=2.8.2 - - shapely >=2.0.1 - - tqdm >=4.65.0 - - simplejson >=18.3 ; extra == 'tests' + - argparse>=1.4.0 + - numpy>=1.24.1 + - pillow>=9.5.0 + - pygltflib>=1.15.3 + - python-dateutil>=2.8.2 + - shapely>=2.0.1 + - tqdm>=4.65.0 + - simplejson>=18.3 ; extra == 'tests' requires_python: '>=3.10' - kind: pypi name: pyparsing @@ -23903,8 +23920,8 @@ packages: - networkx - numpy - pillow - - pyglet >=1.4.10 - - pyopengl ==3.1.0 + - pyglet>=1.4.10 + - pyopengl==3.1.0 - scipy - six - trimesh @@ -24262,7 +24279,7 @@ packages: url: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl sha256: a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 requires_dist: - - six >=1.5 + - six>=1.5 requires_python: '!=3.0.*,!=3.1.*,!=3.2.*,>=2.7' - kind: conda name: python_abi @@ -24344,12 +24361,6 @@ packages: version: '2024.1' url: https://files.pythonhosted.org/packages/9c/3d/a121f284241f08268b21359bd425f7d4825cffc5ac5cd0e1b3d82ffd2b10/pytz-2024.1-py2.py3-none-any.whl sha256: 328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319 -- kind: pypi - name: pyyaml - version: 6.0.1 - url: https://files.pythonhosted.org/packages/ec/0d/26fb23e8863e0aeaac0c64e03fd27367ad2ae3f3cccf3798ee98ce160368/PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl - sha256: 6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007 - requires_python: '>=3.6' - kind: pypi name: pyyaml version: 6.0.1 @@ -24368,17 +24379,22 @@ packages: url: https://files.pythonhosted.org/packages/28/09/55f715ddbf95a054b764b547f617e22f1d5e45d83905660e9a088078fe67/PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl sha256: f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab requires_python: '>=3.6' +- kind: pypi + name: pyyaml + version: 6.0.1 + url: https://files.pythonhosted.org/packages/ec/0d/26fb23e8863e0aeaac0c64e03fd27367ad2ae3f3cccf3798ee98ce160368/PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl + sha256: 6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007 + requires_python: '>=3.6' - kind: pypi name: raw-mesh version: 0.1.0 path: examples/python/raw_mesh - sha256: 29d7482ea0dae8ceb7b95c4adeff04bd362cab0842f3f0a9572b2c42013c7656 + sha256: 9006b1b7ca8bd9c90ba0bf0d7a00641b7dd13a6de76a2828f79ec5b853a4ef98 requires_dist: - numpy - - pillow - - requests <3, >=2.31 + - requests>=2.31,<3 - rerun-sdk - - trimesh ==3.15.2 + - trimesh==3.15.2 editable: true - kind: conda name: rdma-core @@ -24645,12 +24661,6 @@ packages: license_family: GPL size: 255870 timestamp: 1679532707590 -- kind: pypi - name: regex - version: 2024.5.10 - url: https://files.pythonhosted.org/packages/6c/99/152009b8f39e38c03dafa07ffdbc1027981dc2249d42919ed54eaeb9450b/regex-2024.5.10-cp311-cp311-macosx_10_9_x86_64.whl - sha256: 45cc13d398b6359a7708986386f72bd156ae781c3e83a68a6d4cee5af04b1ce9 - requires_python: '>=3.8' - kind: pypi name: regex version: 2024.5.10 @@ -24669,18 +24679,24 @@ packages: url: https://files.pythonhosted.org/packages/da/34/3f219ae001d3f52d1567dbeae7ff8d9f08696006989d59ace7cc7c63800c/regex-2024.5.10-cp311-cp311-macosx_11_0_arm64.whl sha256: ad45f3bccfcb00868f2871dce02a755529838d2b86163ab8a246115e80cfb7d6 requires_python: '>=3.8' +- kind: pypi + name: regex + version: 2024.5.10 + url: https://files.pythonhosted.org/packages/6c/99/152009b8f39e38c03dafa07ffdbc1027981dc2249d42919ed54eaeb9450b/regex-2024.5.10-cp311-cp311-macosx_10_9_x86_64.whl + sha256: 45cc13d398b6359a7708986386f72bd156ae781c3e83a68a6d4cee5af04b1ce9 + requires_python: '>=3.8' - kind: pypi name: requests version: 2.31.0 url: https://files.pythonhosted.org/packages/70/8e/0e2d847013cb52cd35b38c009bb167a1a26b2ce6cd6965bf26b47bc0bf44/requests-2.31.0-py3-none-any.whl sha256: 58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f requires_dist: - - charset-normalizer <4, >=2 - - idna <4, >=2.5 - - urllib3 <3, >=1.21.1 - - certifi >=2017.4.17 - - pysocks !=1.5.7, >=1.5.6 ; extra == 'socks' - - chardet <6, >=3.0.2 ; extra == 'use_chardet_on_py3' + - charset-normalizer<4,>=2 + - idna<4,>=2.5 + - urllib3<3,>=1.21.1 + - certifi>=2017.4.17 + - pysocks!=1.5.7,>=1.5.6 ; extra == 'socks' + - chardet<6,>=3.0.2 ; extra == 'use_chardet_on_py3' requires_python: '>=3.7' - kind: pypi name: rerun-sdk @@ -24694,8 +24710,8 @@ packages: sha256: b2ef153b0bedd672c3e0ce89b7be1f64f4344b2b75d71748899faea270383fa2 requires_dist: - numpy - - opencv-python >4.6 - - requests <3, >=2.31 + - opencv-python>4.6 + - requests>=2.31,<3 - rerun-sdk - tqdm editable: true @@ -24766,7 +24782,7 @@ packages: url: https://files.pythonhosted.org/packages/49/97/fa78e3d2f65c02c8e1268b9aba606569fe97f6c8f7c2d74394553347c145/rsa-4.9-py3-none-any.whl sha256: 90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 requires_dist: - - pyasn1 >=0.1.3 + - pyasn1>=0.1.3 requires_python: '>=3.6,<4' - kind: conda name: ruff @@ -24948,34 +24964,34 @@ packages: - kind: pypi name: safetensors version: 0.4.3 - url: https://files.pythonhosted.org/packages/9f/d9/1bd2c06c1e7aff0c6db4affff5c0b8d6b2fa421ee0d2de94408d43e6aa7c/safetensors-0.4.3-cp311-cp311-macosx_10_12_x86_64.whl - sha256: 22f3b5d65e440cec0de8edaa672efa888030802e11c09b3d6203bff60ebff05a + url: https://files.pythonhosted.org/packages/d5/85/1e7d2804cbf82204cde462d16f1cb0ff5814b03f559fb46ceaa6b7020db4/safetensors-0.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 0bf4f9d6323d9f86eef5567eabd88f070691cf031d4c0df27a40d3b4aaee755b requires_dist: - - numpy >=1.21.6 ; extra == 'numpy' + - numpy>=1.21.6 ; extra == 'numpy' - safetensors[numpy] ; extra == 'torch' - - torch >=1.10 ; extra == 'torch' + - torch>=1.10 ; extra == 'torch' - safetensors[numpy] ; extra == 'tensorflow' - - tensorflow >=2.11.0 ; extra == 'tensorflow' + - tensorflow>=2.11.0 ; extra == 'tensorflow' - safetensors[numpy] ; extra == 'pinned-tf' - - tensorflow ==2.11.0 ; extra == 'pinned-tf' + - tensorflow==2.11.0 ; extra == 'pinned-tf' - safetensors[numpy] ; extra == 'jax' - - flax >=0.6.3 ; extra == 'jax' - - jax >=0.3.25 ; extra == 'jax' - - jaxlib >=0.3.25 ; extra == 'jax' - - mlx >=0.0.9 ; extra == 'mlx' + - flax>=0.6.3 ; extra == 'jax' + - jax>=0.3.25 ; extra == 'jax' + - jaxlib>=0.3.25 ; extra == 'jax' + - mlx>=0.0.9 ; extra == 'mlx' - safetensors[numpy] ; extra == 'paddlepaddle' - - paddlepaddle >=2.4.1 ; extra == 'paddlepaddle' - - black ==22.3 ; extra == 'quality' - - click ==8.0.4 ; extra == 'quality' - - isort >=5.5.4 ; extra == 'quality' - - flake8 >=3.8.3 ; extra == 'quality' + - paddlepaddle>=2.4.1 ; extra == 'paddlepaddle' + - black==22.3 ; extra == 'quality' + - click==8.0.4 ; extra == 'quality' + - isort>=5.5.4 ; extra == 'quality' + - flake8>=3.8.3 ; extra == 'quality' - safetensors[numpy] ; extra == 'testing' - - h5py >=3.7.0 ; extra == 'testing' - - huggingface-hub >=0.12.1 ; extra == 'testing' - - setuptools-rust >=1.5.2 ; extra == 'testing' - - pytest >=7.2.0 ; extra == 'testing' - - pytest-benchmark >=4.0.0 ; extra == 'testing' - - hypothesis >=6.70.2 ; extra == 'testing' + - h5py>=3.7.0 ; extra == 'testing' + - huggingface-hub>=0.12.1 ; extra == 'testing' + - setuptools-rust>=1.5.2 ; extra == 'testing' + - pytest>=7.2.0 ; extra == 'testing' + - pytest-benchmark>=4.0.0 ; extra == 'testing' + - hypothesis>=6.70.2 ; extra == 'testing' - safetensors[torch] ; extra == 'all' - safetensors[numpy] ; extra == 'all' - safetensors[pinned-tf] ; extra == 'all' @@ -24988,34 +25004,34 @@ packages: - kind: pypi name: safetensors version: 0.4.3 - url: https://files.pythonhosted.org/packages/d5/85/1e7d2804cbf82204cde462d16f1cb0ff5814b03f559fb46ceaa6b7020db4/safetensors-0.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - sha256: 0bf4f9d6323d9f86eef5567eabd88f070691cf031d4c0df27a40d3b4aaee755b + url: https://files.pythonhosted.org/packages/cb/f6/19f268662be898ff2a23ac06f8dd0d2956b2ecd204c96e1ee07ba292c119/safetensors-0.4.3-cp311-none-win_amd64.whl + sha256: 840b7ac0eff5633e1d053cc9db12fdf56b566e9403b4950b2dc85393d9b88d67 requires_dist: - - numpy >=1.21.6 ; extra == 'numpy' + - numpy>=1.21.6 ; extra == 'numpy' - safetensors[numpy] ; extra == 'torch' - - torch >=1.10 ; extra == 'torch' + - torch>=1.10 ; extra == 'torch' - safetensors[numpy] ; extra == 'tensorflow' - - tensorflow >=2.11.0 ; extra == 'tensorflow' + - tensorflow>=2.11.0 ; extra == 'tensorflow' - safetensors[numpy] ; extra == 'pinned-tf' - - tensorflow ==2.11.0 ; extra == 'pinned-tf' + - tensorflow==2.11.0 ; extra == 'pinned-tf' - safetensors[numpy] ; extra == 'jax' - - flax >=0.6.3 ; extra == 'jax' - - jax >=0.3.25 ; extra == 'jax' - - jaxlib >=0.3.25 ; extra == 'jax' - - mlx >=0.0.9 ; extra == 'mlx' + - flax>=0.6.3 ; extra == 'jax' + - jax>=0.3.25 ; extra == 'jax' + - jaxlib>=0.3.25 ; extra == 'jax' + - mlx>=0.0.9 ; extra == 'mlx' - safetensors[numpy] ; extra == 'paddlepaddle' - - paddlepaddle >=2.4.1 ; extra == 'paddlepaddle' - - black ==22.3 ; extra == 'quality' - - click ==8.0.4 ; extra == 'quality' - - isort >=5.5.4 ; extra == 'quality' - - flake8 >=3.8.3 ; extra == 'quality' + - paddlepaddle>=2.4.1 ; extra == 'paddlepaddle' + - black==22.3 ; extra == 'quality' + - click==8.0.4 ; extra == 'quality' + - isort>=5.5.4 ; extra == 'quality' + - flake8>=3.8.3 ; extra == 'quality' - safetensors[numpy] ; extra == 'testing' - - h5py >=3.7.0 ; extra == 'testing' - - huggingface-hub >=0.12.1 ; extra == 'testing' - - setuptools-rust >=1.5.2 ; extra == 'testing' - - pytest >=7.2.0 ; extra == 'testing' - - pytest-benchmark >=4.0.0 ; extra == 'testing' - - hypothesis >=6.70.2 ; extra == 'testing' + - h5py>=3.7.0 ; extra == 'testing' + - huggingface-hub>=0.12.1 ; extra == 'testing' + - setuptools-rust>=1.5.2 ; extra == 'testing' + - pytest>=7.2.0 ; extra == 'testing' + - pytest-benchmark>=4.0.0 ; extra == 'testing' + - hypothesis>=6.70.2 ; extra == 'testing' - safetensors[torch] ; extra == 'all' - safetensors[numpy] ; extra == 'all' - safetensors[pinned-tf] ; extra == 'all' @@ -25028,34 +25044,34 @@ packages: - kind: pypi name: safetensors version: 0.4.3 - url: https://files.pythonhosted.org/packages/cb/f6/19f268662be898ff2a23ac06f8dd0d2956b2ecd204c96e1ee07ba292c119/safetensors-0.4.3-cp311-none-win_amd64.whl - sha256: 840b7ac0eff5633e1d053cc9db12fdf56b566e9403b4950b2dc85393d9b88d67 + url: https://files.pythonhosted.org/packages/82/61/d4812330b32600972e92ef09a59dc54f9ab8ae570fdca28d8bdfc5577756/safetensors-0.4.3-cp311-cp311-macosx_11_0_arm64.whl + sha256: 7c4fa560ebd4522adddb71dcd25d09bf211b5634003f015a4b815b7647d62ebe requires_dist: - - numpy >=1.21.6 ; extra == 'numpy' + - numpy>=1.21.6 ; extra == 'numpy' - safetensors[numpy] ; extra == 'torch' - - torch >=1.10 ; extra == 'torch' + - torch>=1.10 ; extra == 'torch' - safetensors[numpy] ; extra == 'tensorflow' - - tensorflow >=2.11.0 ; extra == 'tensorflow' + - tensorflow>=2.11.0 ; extra == 'tensorflow' - safetensors[numpy] ; extra == 'pinned-tf' - - tensorflow ==2.11.0 ; extra == 'pinned-tf' + - tensorflow==2.11.0 ; extra == 'pinned-tf' - safetensors[numpy] ; extra == 'jax' - - flax >=0.6.3 ; extra == 'jax' - - jax >=0.3.25 ; extra == 'jax' - - jaxlib >=0.3.25 ; extra == 'jax' - - mlx >=0.0.9 ; extra == 'mlx' + - flax>=0.6.3 ; extra == 'jax' + - jax>=0.3.25 ; extra == 'jax' + - jaxlib>=0.3.25 ; extra == 'jax' + - mlx>=0.0.9 ; extra == 'mlx' - safetensors[numpy] ; extra == 'paddlepaddle' - - paddlepaddle >=2.4.1 ; extra == 'paddlepaddle' - - black ==22.3 ; extra == 'quality' - - click ==8.0.4 ; extra == 'quality' - - isort >=5.5.4 ; extra == 'quality' - - flake8 >=3.8.3 ; extra == 'quality' + - paddlepaddle>=2.4.1 ; extra == 'paddlepaddle' + - black==22.3 ; extra == 'quality' + - click==8.0.4 ; extra == 'quality' + - isort>=5.5.4 ; extra == 'quality' + - flake8>=3.8.3 ; extra == 'quality' - safetensors[numpy] ; extra == 'testing' - - h5py >=3.7.0 ; extra == 'testing' - - huggingface-hub >=0.12.1 ; extra == 'testing' - - setuptools-rust >=1.5.2 ; extra == 'testing' - - pytest >=7.2.0 ; extra == 'testing' - - pytest-benchmark >=4.0.0 ; extra == 'testing' - - hypothesis >=6.70.2 ; extra == 'testing' + - h5py>=3.7.0 ; extra == 'testing' + - huggingface-hub>=0.12.1 ; extra == 'testing' + - setuptools-rust>=1.5.2 ; extra == 'testing' + - pytest>=7.2.0 ; extra == 'testing' + - pytest-benchmark>=4.0.0 ; extra == 'testing' + - hypothesis>=6.70.2 ; extra == 'testing' - safetensors[torch] ; extra == 'all' - safetensors[numpy] ; extra == 'all' - safetensors[pinned-tf] ; extra == 'all' @@ -25068,34 +25084,34 @@ packages: - kind: pypi name: safetensors version: 0.4.3 - url: https://files.pythonhosted.org/packages/82/61/d4812330b32600972e92ef09a59dc54f9ab8ae570fdca28d8bdfc5577756/safetensors-0.4.3-cp311-cp311-macosx_11_0_arm64.whl - sha256: 7c4fa560ebd4522adddb71dcd25d09bf211b5634003f015a4b815b7647d62ebe + url: https://files.pythonhosted.org/packages/9f/d9/1bd2c06c1e7aff0c6db4affff5c0b8d6b2fa421ee0d2de94408d43e6aa7c/safetensors-0.4.3-cp311-cp311-macosx_10_12_x86_64.whl + sha256: 22f3b5d65e440cec0de8edaa672efa888030802e11c09b3d6203bff60ebff05a requires_dist: - - numpy >=1.21.6 ; extra == 'numpy' + - numpy>=1.21.6 ; extra == 'numpy' - safetensors[numpy] ; extra == 'torch' - - torch >=1.10 ; extra == 'torch' + - torch>=1.10 ; extra == 'torch' - safetensors[numpy] ; extra == 'tensorflow' - - tensorflow >=2.11.0 ; extra == 'tensorflow' + - tensorflow>=2.11.0 ; extra == 'tensorflow' - safetensors[numpy] ; extra == 'pinned-tf' - - tensorflow ==2.11.0 ; extra == 'pinned-tf' + - tensorflow==2.11.0 ; extra == 'pinned-tf' - safetensors[numpy] ; extra == 'jax' - - flax >=0.6.3 ; extra == 'jax' - - jax >=0.3.25 ; extra == 'jax' - - jaxlib >=0.3.25 ; extra == 'jax' - - mlx >=0.0.9 ; extra == 'mlx' + - flax>=0.6.3 ; extra == 'jax' + - jax>=0.3.25 ; extra == 'jax' + - jaxlib>=0.3.25 ; extra == 'jax' + - mlx>=0.0.9 ; extra == 'mlx' - safetensors[numpy] ; extra == 'paddlepaddle' - - paddlepaddle >=2.4.1 ; extra == 'paddlepaddle' - - black ==22.3 ; extra == 'quality' - - click ==8.0.4 ; extra == 'quality' - - isort >=5.5.4 ; extra == 'quality' - - flake8 >=3.8.3 ; extra == 'quality' + - paddlepaddle>=2.4.1 ; extra == 'paddlepaddle' + - black==22.3 ; extra == 'quality' + - click==8.0.4 ; extra == 'quality' + - isort>=5.5.4 ; extra == 'quality' + - flake8>=3.8.3 ; extra == 'quality' - safetensors[numpy] ; extra == 'testing' - - h5py >=3.7.0 ; extra == 'testing' - - huggingface-hub >=0.12.1 ; extra == 'testing' - - setuptools-rust >=1.5.2 ; extra == 'testing' - - pytest >=7.2.0 ; extra == 'testing' - - pytest-benchmark >=4.0.0 ; extra == 'testing' - - hypothesis >=6.70.2 ; extra == 'testing' + - h5py>=3.7.0 ; extra == 'testing' + - huggingface-hub>=0.12.1 ; extra == 'testing' + - setuptools-rust>=1.5.2 ; extra == 'testing' + - pytest>=7.2.0 ; extra == 'testing' + - pytest-benchmark>=4.0.0 ; extra == 'testing' + - hypothesis>=6.70.2 ; extra == 'testing' - safetensors[torch] ; extra == 'all' - safetensors[numpy] ; extra == 'all' - safetensors[pinned-tf] ; extra == 'all' @@ -25108,66 +25124,66 @@ packages: - kind: pypi name: scikit-image version: 0.23.2 - url: https://files.pythonhosted.org/packages/78/2b/5f985cf4cf59378f80dc212004a7692b7b49b2a3910c3584d70284db5b89/scikit_image-0.23.2-cp311-cp311-macosx_10_9_x86_64.whl - sha256: ee83fdb1843ee938eabdfeb9498623282935ea30aa20dffc5d5d16698efb4b2a + url: https://files.pythonhosted.org/packages/0a/40/2c57864acd77c168b96cb6e4e62651b9c98733962793293991ef55e2982c/scikit_image-0.23.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: fce619a6d84fe40c1208fa579b646e93ce13ef0afc3652a23e9782b2c183291a requires_dist: - - numpy >=1.23 - - scipy >=1.9 - - networkx >=2.8 - - pillow >=9.1 - - imageio >=2.33 - - tifffile >=2022.8.12 - - packaging >=21 - - lazy-loader >=0.4 - - meson-python >=0.15 ; extra == 'build' + - numpy>=1.23 + - scipy>=1.9 + - networkx>=2.8 + - pillow>=9.1 + - imageio>=2.33 + - tifffile>=2022.8.12 + - packaging>=21 + - lazy-loader>=0.4 + - meson-python>=0.15 ; extra == 'build' - wheel ; extra == 'build' - - setuptools >=67 ; extra == 'build' - - packaging >=21 ; extra == 'build' + - setuptools>=67 ; extra == 'build' + - packaging>=21 ; extra == 'build' - ninja ; extra == 'build' - - cython >=3.0.4 ; extra == 'build' + - cython>=3.0.4 ; extra == 'build' - pythran ; extra == 'build' - - numpy >=2.0.0rc1 ; extra == 'build' - - spin ==0.8 ; extra == 'build' + - numpy>=2.0.0rc1 ; extra == 'build' + - spin==0.8 ; extra == 'build' - build ; extra == 'build' - - pooch >=1.6.0 ; extra == 'data' + - pooch>=1.6.0 ; extra == 'data' - pre-commit ; extra == 'developer' - ipython ; extra == 'developer' - tomli ; python_version < '3.11' and extra == 'developer' - - sphinx >=7.3 ; extra == 'docs' - - sphinx-gallery >=0.14 ; extra == 'docs' - - numpydoc >=1.7 ; extra == 'docs' + - sphinx>=7.3 ; extra == 'docs' + - sphinx-gallery>=0.14 ; extra == 'docs' + - numpydoc>=1.7 ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - pytest-runner ; extra == 'docs' - - matplotlib >=3.6 ; extra == 'docs' - - dask[array] >=2022.9.2 ; extra == 'docs' - - pandas >=1.5 ; extra == 'docs' - - seaborn >=0.11 ; extra == 'docs' - - pooch >=1.6 ; extra == 'docs' - - tifffile >=2022.8.12 ; extra == 'docs' + - matplotlib>=3.6 ; extra == 'docs' + - dask[array]>=2022.9.2 ; extra == 'docs' + - pandas>=1.5 ; extra == 'docs' + - seaborn>=0.11 ; extra == 'docs' + - pooch>=1.6 ; extra == 'docs' + - tifffile>=2022.8.12 ; extra == 'docs' - myst-parser ; extra == 'docs' - ipywidgets ; extra == 'docs' - ipykernel ; extra == 'docs' - - plotly >=5.10 ; extra == 'docs' + - plotly>=5.10 ; extra == 'docs' - kaleido ; extra == 'docs' - - scikit-learn >=1.1 ; extra == 'docs' - - sphinx-design >=0.5 ; extra == 'docs' - - pydata-sphinx-theme >=0.15.2 ; extra == 'docs' - - pywavelets >=1.1.1 ; extra == 'docs' + - scikit-learn>=1.1 ; extra == 'docs' + - sphinx-design>=0.5 ; extra == 'docs' + - pydata-sphinx-theme>=0.15.2 ; extra == 'docs' + - pywavelets>=1.1.1 ; extra == 'docs' - pytest-doctestplus ; extra == 'docs' - simpleitk ; extra == 'optional' - - astropy >=5.0 ; extra == 'optional' - - cloudpickle >=0.2.1 ; extra == 'optional' - - dask[array] >=2021.1.0 ; extra == 'optional' - - matplotlib >=3.6 ; extra == 'optional' - - pooch >=1.6.0 ; extra == 'optional' + - astropy>=5.0 ; extra == 'optional' + - cloudpickle>=0.2.1 ; extra == 'optional' + - dask[array]>=2021.1.0 ; extra == 'optional' + - matplotlib>=3.6 ; extra == 'optional' + - pooch>=1.6.0 ; extra == 'optional' - pyamg ; extra == 'optional' - - pywavelets >=1.1.1 ; extra == 'optional' - - scikit-learn >=1.1 ; extra == 'optional' + - pywavelets>=1.1.1 ; extra == 'optional' + - scikit-learn>=1.1 ; extra == 'optional' - asv ; extra == 'test' - - numpydoc >=1.7 ; extra == 'test' - - pooch >=1.6.0 ; extra == 'test' - - pytest >=7.0 ; extra == 'test' - - pytest-cov >=2.11.0 ; extra == 'test' + - numpydoc>=1.7 ; extra == 'test' + - pooch>=1.6.0 ; extra == 'test' + - pytest>=7.0 ; extra == 'test' + - pytest-cov>=2.11.0 ; extra == 'test' - pytest-localserver ; extra == 'test' - pytest-faulthandler ; extra == 'test' - pytest-doctestplus ; extra == 'test' @@ -25175,66 +25191,66 @@ packages: - kind: pypi name: scikit-image version: 0.23.2 - url: https://files.pythonhosted.org/packages/0a/40/2c57864acd77c168b96cb6e4e62651b9c98733962793293991ef55e2982c/scikit_image-0.23.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - sha256: fce619a6d84fe40c1208fa579b646e93ce13ef0afc3652a23e9782b2c183291a + url: https://files.pythonhosted.org/packages/eb/ab/8791ce3063e6d4ac7f8efe3c993fd2e911c9e08f4c7dd05b603eaa2493b2/scikit_image-0.23.2-cp311-cp311-win_amd64.whl + sha256: ee65669aa586e110346f567ed5c92d1bd63799a19e951cb83da3f54b0caf7c52 requires_dist: - - numpy >=1.23 - - scipy >=1.9 - - networkx >=2.8 - - pillow >=9.1 - - imageio >=2.33 - - tifffile >=2022.8.12 - - packaging >=21 - - lazy-loader >=0.4 - - meson-python >=0.15 ; extra == 'build' + - numpy>=1.23 + - scipy>=1.9 + - networkx>=2.8 + - pillow>=9.1 + - imageio>=2.33 + - tifffile>=2022.8.12 + - packaging>=21 + - lazy-loader>=0.4 + - meson-python>=0.15 ; extra == 'build' - wheel ; extra == 'build' - - setuptools >=67 ; extra == 'build' - - packaging >=21 ; extra == 'build' + - setuptools>=67 ; extra == 'build' + - packaging>=21 ; extra == 'build' - ninja ; extra == 'build' - - cython >=3.0.4 ; extra == 'build' + - cython>=3.0.4 ; extra == 'build' - pythran ; extra == 'build' - - numpy >=2.0.0rc1 ; extra == 'build' - - spin ==0.8 ; extra == 'build' + - numpy>=2.0.0rc1 ; extra == 'build' + - spin==0.8 ; extra == 'build' - build ; extra == 'build' - - pooch >=1.6.0 ; extra == 'data' + - pooch>=1.6.0 ; extra == 'data' - pre-commit ; extra == 'developer' - ipython ; extra == 'developer' - tomli ; python_version < '3.11' and extra == 'developer' - - sphinx >=7.3 ; extra == 'docs' - - sphinx-gallery >=0.14 ; extra == 'docs' - - numpydoc >=1.7 ; extra == 'docs' + - sphinx>=7.3 ; extra == 'docs' + - sphinx-gallery>=0.14 ; extra == 'docs' + - numpydoc>=1.7 ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - pytest-runner ; extra == 'docs' - - matplotlib >=3.6 ; extra == 'docs' - - dask[array] >=2022.9.2 ; extra == 'docs' - - pandas >=1.5 ; extra == 'docs' - - seaborn >=0.11 ; extra == 'docs' - - pooch >=1.6 ; extra == 'docs' - - tifffile >=2022.8.12 ; extra == 'docs' + - matplotlib>=3.6 ; extra == 'docs' + - dask[array]>=2022.9.2 ; extra == 'docs' + - pandas>=1.5 ; extra == 'docs' + - seaborn>=0.11 ; extra == 'docs' + - pooch>=1.6 ; extra == 'docs' + - tifffile>=2022.8.12 ; extra == 'docs' - myst-parser ; extra == 'docs' - ipywidgets ; extra == 'docs' - ipykernel ; extra == 'docs' - - plotly >=5.10 ; extra == 'docs' + - plotly>=5.10 ; extra == 'docs' - kaleido ; extra == 'docs' - - scikit-learn >=1.1 ; extra == 'docs' - - sphinx-design >=0.5 ; extra == 'docs' - - pydata-sphinx-theme >=0.15.2 ; extra == 'docs' - - pywavelets >=1.1.1 ; extra == 'docs' + - scikit-learn>=1.1 ; extra == 'docs' + - sphinx-design>=0.5 ; extra == 'docs' + - pydata-sphinx-theme>=0.15.2 ; extra == 'docs' + - pywavelets>=1.1.1 ; extra == 'docs' - pytest-doctestplus ; extra == 'docs' - simpleitk ; extra == 'optional' - - astropy >=5.0 ; extra == 'optional' - - cloudpickle >=0.2.1 ; extra == 'optional' - - dask[array] >=2021.1.0 ; extra == 'optional' - - matplotlib >=3.6 ; extra == 'optional' - - pooch >=1.6.0 ; extra == 'optional' + - astropy>=5.0 ; extra == 'optional' + - cloudpickle>=0.2.1 ; extra == 'optional' + - dask[array]>=2021.1.0 ; extra == 'optional' + - matplotlib>=3.6 ; extra == 'optional' + - pooch>=1.6.0 ; extra == 'optional' - pyamg ; extra == 'optional' - - pywavelets >=1.1.1 ; extra == 'optional' - - scikit-learn >=1.1 ; extra == 'optional' + - pywavelets>=1.1.1 ; extra == 'optional' + - scikit-learn>=1.1 ; extra == 'optional' - asv ; extra == 'test' - - numpydoc >=1.7 ; extra == 'test' - - pooch >=1.6.0 ; extra == 'test' - - pytest >=7.0 ; extra == 'test' - - pytest-cov >=2.11.0 ; extra == 'test' + - numpydoc>=1.7 ; extra == 'test' + - pooch>=1.6.0 ; extra == 'test' + - pytest>=7.0 ; extra == 'test' + - pytest-cov>=2.11.0 ; extra == 'test' - pytest-localserver ; extra == 'test' - pytest-faulthandler ; extra == 'test' - pytest-doctestplus ; extra == 'test' @@ -25242,66 +25258,66 @@ packages: - kind: pypi name: scikit-image version: 0.23.2 - url: https://files.pythonhosted.org/packages/eb/ab/8791ce3063e6d4ac7f8efe3c993fd2e911c9e08f4c7dd05b603eaa2493b2/scikit_image-0.23.2-cp311-cp311-win_amd64.whl - sha256: ee65669aa586e110346f567ed5c92d1bd63799a19e951cb83da3f54b0caf7c52 + url: https://files.pythonhosted.org/packages/b9/cf/9e5828fa29791bf7ac5c3fad3637ebb02f237a1c3de8233bd6a33c2c4aac/scikit_image-0.23.2-cp311-cp311-macosx_12_0_arm64.whl + sha256: a158f50d3df4867bbd1c698520ede8bc493e430ad83f54ac1f0d8f57b328779b requires_dist: - - numpy >=1.23 - - scipy >=1.9 - - networkx >=2.8 - - pillow >=9.1 - - imageio >=2.33 - - tifffile >=2022.8.12 - - packaging >=21 - - lazy-loader >=0.4 - - meson-python >=0.15 ; extra == 'build' + - numpy>=1.23 + - scipy>=1.9 + - networkx>=2.8 + - pillow>=9.1 + - imageio>=2.33 + - tifffile>=2022.8.12 + - packaging>=21 + - lazy-loader>=0.4 + - meson-python>=0.15 ; extra == 'build' - wheel ; extra == 'build' - - setuptools >=67 ; extra == 'build' - - packaging >=21 ; extra == 'build' + - setuptools>=67 ; extra == 'build' + - packaging>=21 ; extra == 'build' - ninja ; extra == 'build' - - cython >=3.0.4 ; extra == 'build' + - cython>=3.0.4 ; extra == 'build' - pythran ; extra == 'build' - - numpy >=2.0.0rc1 ; extra == 'build' - - spin ==0.8 ; extra == 'build' + - numpy>=2.0.0rc1 ; extra == 'build' + - spin==0.8 ; extra == 'build' - build ; extra == 'build' - - pooch >=1.6.0 ; extra == 'data' + - pooch>=1.6.0 ; extra == 'data' - pre-commit ; extra == 'developer' - ipython ; extra == 'developer' - tomli ; python_version < '3.11' and extra == 'developer' - - sphinx >=7.3 ; extra == 'docs' - - sphinx-gallery >=0.14 ; extra == 'docs' - - numpydoc >=1.7 ; extra == 'docs' + - sphinx>=7.3 ; extra == 'docs' + - sphinx-gallery>=0.14 ; extra == 'docs' + - numpydoc>=1.7 ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - pytest-runner ; extra == 'docs' - - matplotlib >=3.6 ; extra == 'docs' - - dask[array] >=2022.9.2 ; extra == 'docs' - - pandas >=1.5 ; extra == 'docs' - - seaborn >=0.11 ; extra == 'docs' - - pooch >=1.6 ; extra == 'docs' - - tifffile >=2022.8.12 ; extra == 'docs' + - matplotlib>=3.6 ; extra == 'docs' + - dask[array]>=2022.9.2 ; extra == 'docs' + - pandas>=1.5 ; extra == 'docs' + - seaborn>=0.11 ; extra == 'docs' + - pooch>=1.6 ; extra == 'docs' + - tifffile>=2022.8.12 ; extra == 'docs' - myst-parser ; extra == 'docs' - ipywidgets ; extra == 'docs' - ipykernel ; extra == 'docs' - - plotly >=5.10 ; extra == 'docs' + - plotly>=5.10 ; extra == 'docs' - kaleido ; extra == 'docs' - - scikit-learn >=1.1 ; extra == 'docs' - - sphinx-design >=0.5 ; extra == 'docs' - - pydata-sphinx-theme >=0.15.2 ; extra == 'docs' - - pywavelets >=1.1.1 ; extra == 'docs' + - scikit-learn>=1.1 ; extra == 'docs' + - sphinx-design>=0.5 ; extra == 'docs' + - pydata-sphinx-theme>=0.15.2 ; extra == 'docs' + - pywavelets>=1.1.1 ; extra == 'docs' - pytest-doctestplus ; extra == 'docs' - simpleitk ; extra == 'optional' - - astropy >=5.0 ; extra == 'optional' - - cloudpickle >=0.2.1 ; extra == 'optional' - - dask[array] >=2021.1.0 ; extra == 'optional' - - matplotlib >=3.6 ; extra == 'optional' - - pooch >=1.6.0 ; extra == 'optional' + - astropy>=5.0 ; extra == 'optional' + - cloudpickle>=0.2.1 ; extra == 'optional' + - dask[array]>=2021.1.0 ; extra == 'optional' + - matplotlib>=3.6 ; extra == 'optional' + - pooch>=1.6.0 ; extra == 'optional' - pyamg ; extra == 'optional' - - pywavelets >=1.1.1 ; extra == 'optional' - - scikit-learn >=1.1 ; extra == 'optional' + - pywavelets>=1.1.1 ; extra == 'optional' + - scikit-learn>=1.1 ; extra == 'optional' - asv ; extra == 'test' - - numpydoc >=1.7 ; extra == 'test' - - pooch >=1.6.0 ; extra == 'test' - - pytest >=7.0 ; extra == 'test' - - pytest-cov >=2.11.0 ; extra == 'test' + - numpydoc>=1.7 ; extra == 'test' + - pooch>=1.6.0 ; extra == 'test' + - pytest>=7.0 ; extra == 'test' + - pytest-cov>=2.11.0 ; extra == 'test' - pytest-localserver ; extra == 'test' - pytest-faulthandler ; extra == 'test' - pytest-doctestplus ; extra == 'test' @@ -25309,163 +25325,116 @@ packages: - kind: pypi name: scikit-image version: 0.23.2 - url: https://files.pythonhosted.org/packages/b9/cf/9e5828fa29791bf7ac5c3fad3637ebb02f237a1c3de8233bd6a33c2c4aac/scikit_image-0.23.2-cp311-cp311-macosx_12_0_arm64.whl - sha256: a158f50d3df4867bbd1c698520ede8bc493e430ad83f54ac1f0d8f57b328779b + url: https://files.pythonhosted.org/packages/78/2b/5f985cf4cf59378f80dc212004a7692b7b49b2a3910c3584d70284db5b89/scikit_image-0.23.2-cp311-cp311-macosx_10_9_x86_64.whl + sha256: ee83fdb1843ee938eabdfeb9498623282935ea30aa20dffc5d5d16698efb4b2a requires_dist: - - numpy >=1.23 - - scipy >=1.9 - - networkx >=2.8 - - pillow >=9.1 - - imageio >=2.33 - - tifffile >=2022.8.12 - - packaging >=21 - - lazy-loader >=0.4 - - meson-python >=0.15 ; extra == 'build' + - numpy>=1.23 + - scipy>=1.9 + - networkx>=2.8 + - pillow>=9.1 + - imageio>=2.33 + - tifffile>=2022.8.12 + - packaging>=21 + - lazy-loader>=0.4 + - meson-python>=0.15 ; extra == 'build' - wheel ; extra == 'build' - - setuptools >=67 ; extra == 'build' - - packaging >=21 ; extra == 'build' + - setuptools>=67 ; extra == 'build' + - packaging>=21 ; extra == 'build' - ninja ; extra == 'build' - - cython >=3.0.4 ; extra == 'build' + - cython>=3.0.4 ; extra == 'build' - pythran ; extra == 'build' - - numpy >=2.0.0rc1 ; extra == 'build' - - spin ==0.8 ; extra == 'build' + - numpy>=2.0.0rc1 ; extra == 'build' + - spin==0.8 ; extra == 'build' - build ; extra == 'build' - - pooch >=1.6.0 ; extra == 'data' + - pooch>=1.6.0 ; extra == 'data' - pre-commit ; extra == 'developer' - ipython ; extra == 'developer' - tomli ; python_version < '3.11' and extra == 'developer' - - sphinx >=7.3 ; extra == 'docs' - - sphinx-gallery >=0.14 ; extra == 'docs' - - numpydoc >=1.7 ; extra == 'docs' + - sphinx>=7.3 ; extra == 'docs' + - sphinx-gallery>=0.14 ; extra == 'docs' + - numpydoc>=1.7 ; extra == 'docs' - sphinx-copybutton ; extra == 'docs' - pytest-runner ; extra == 'docs' - - matplotlib >=3.6 ; extra == 'docs' - - dask[array] >=2022.9.2 ; extra == 'docs' - - pandas >=1.5 ; extra == 'docs' - - seaborn >=0.11 ; extra == 'docs' - - pooch >=1.6 ; extra == 'docs' - - tifffile >=2022.8.12 ; extra == 'docs' + - matplotlib>=3.6 ; extra == 'docs' + - dask[array]>=2022.9.2 ; extra == 'docs' + - pandas>=1.5 ; extra == 'docs' + - seaborn>=0.11 ; extra == 'docs' + - pooch>=1.6 ; extra == 'docs' + - tifffile>=2022.8.12 ; extra == 'docs' - myst-parser ; extra == 'docs' - ipywidgets ; extra == 'docs' - ipykernel ; extra == 'docs' - - plotly >=5.10 ; extra == 'docs' + - plotly>=5.10 ; extra == 'docs' - kaleido ; extra == 'docs' - - scikit-learn >=1.1 ; extra == 'docs' - - sphinx-design >=0.5 ; extra == 'docs' - - pydata-sphinx-theme >=0.15.2 ; extra == 'docs' - - pywavelets >=1.1.1 ; extra == 'docs' + - scikit-learn>=1.1 ; extra == 'docs' + - sphinx-design>=0.5 ; extra == 'docs' + - pydata-sphinx-theme>=0.15.2 ; extra == 'docs' + - pywavelets>=1.1.1 ; extra == 'docs' - pytest-doctestplus ; extra == 'docs' - simpleitk ; extra == 'optional' - - astropy >=5.0 ; extra == 'optional' - - cloudpickle >=0.2.1 ; extra == 'optional' - - dask[array] >=2021.1.0 ; extra == 'optional' - - matplotlib >=3.6 ; extra == 'optional' - - pooch >=1.6.0 ; extra == 'optional' + - astropy>=5.0 ; extra == 'optional' + - cloudpickle>=0.2.1 ; extra == 'optional' + - dask[array]>=2021.1.0 ; extra == 'optional' + - matplotlib>=3.6 ; extra == 'optional' + - pooch>=1.6.0 ; extra == 'optional' - pyamg ; extra == 'optional' - - pywavelets >=1.1.1 ; extra == 'optional' - - scikit-learn >=1.1 ; extra == 'optional' + - pywavelets>=1.1.1 ; extra == 'optional' + - scikit-learn>=1.1 ; extra == 'optional' - asv ; extra == 'test' - - numpydoc >=1.7 ; extra == 'test' - - pooch >=1.6.0 ; extra == 'test' - - pytest >=7.0 ; extra == 'test' - - pytest-cov >=2.11.0 ; extra == 'test' + - numpydoc>=1.7 ; extra == 'test' + - pooch>=1.6.0 ; extra == 'test' + - pytest>=7.0 ; extra == 'test' + - pytest-cov>=2.11.0 ; extra == 'test' - pytest-localserver ; extra == 'test' - pytest-faulthandler ; extra == 'test' - pytest-doctestplus ; extra == 'test' requires_python: '>=3.10' -- kind: pypi - name: scikit-learn - version: 1.4.2 - url: https://files.pythonhosted.org/packages/59/11/63de36e6933b03490fdfe5cbc9b5a68870a1281d8e705a23b33076dc82fb/scikit_learn-1.4.2-cp311-cp311-macosx_10_9_x86_64.whl - sha256: 45dee87ac5309bb82e3ea633955030df9bbcb8d2cdb30383c6cd483691c546cc - requires_dist: - - numpy >=1.19.5 - - scipy >=1.6.0 - - joblib >=1.2.0 - - threadpoolctl >=2.0.0 - - matplotlib >=3.3.4 ; extra == 'benchmark' - - pandas >=1.1.5 ; extra == 'benchmark' - - memory-profiler >=0.57.0 ; extra == 'benchmark' - - matplotlib >=3.3.4 ; extra == 'docs' - - scikit-image >=0.17.2 ; extra == 'docs' - - pandas >=1.1.5 ; extra == 'docs' - - seaborn >=0.9.0 ; extra == 'docs' - - memory-profiler >=0.57.0 ; extra == 'docs' - - sphinx >=6.0.0 ; extra == 'docs' - - sphinx-copybutton >=0.5.2 ; extra == 'docs' - - sphinx-gallery >=0.15.0 ; extra == 'docs' - - numpydoc >=1.2.0 ; extra == 'docs' - - pillow >=7.1.2 ; extra == 'docs' - - pooch >=1.6.0 ; extra == 'docs' - - sphinx-prompt >=1.3.0 ; extra == 'docs' - - sphinxext-opengraph >=0.4.2 ; extra == 'docs' - - plotly >=5.14.0 ; extra == 'docs' - - matplotlib >=3.3.4 ; extra == 'examples' - - scikit-image >=0.17.2 ; extra == 'examples' - - pandas >=1.1.5 ; extra == 'examples' - - seaborn >=0.9.0 ; extra == 'examples' - - pooch >=1.6.0 ; extra == 'examples' - - plotly >=5.14.0 ; extra == 'examples' - - matplotlib >=3.3.4 ; extra == 'tests' - - scikit-image >=0.17.2 ; extra == 'tests' - - pandas >=1.1.5 ; extra == 'tests' - - pytest >=7.1.2 ; extra == 'tests' - - pytest-cov >=2.9.0 ; extra == 'tests' - - ruff >=0.0.272 ; extra == 'tests' - - black >=23.3.0 ; extra == 'tests' - - mypy >=1.3 ; extra == 'tests' - - pyamg >=4.0.0 ; extra == 'tests' - - polars >=0.19.12 ; extra == 'tests' - - pyarrow >=12.0.0 ; extra == 'tests' - - numpydoc >=1.2.0 ; extra == 'tests' - - pooch >=1.6.0 ; extra == 'tests' - requires_python: '>=3.9' - kind: pypi name: scikit-learn version: 1.4.2 url: https://files.pythonhosted.org/packages/4e/53/14405a47292b59235d811a2af8634aba188ccfd1a38ef4b8042f3447d79a/scikit_learn-1.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl sha256: 44c62f2b124848a28fd695db5bc4da019287abf390bfce602ddc8aa1ec186aae requires_dist: - - numpy >=1.19.5 - - scipy >=1.6.0 - - joblib >=1.2.0 - - threadpoolctl >=2.0.0 - - matplotlib >=3.3.4 ; extra == 'benchmark' - - pandas >=1.1.5 ; extra == 'benchmark' - - memory-profiler >=0.57.0 ; extra == 'benchmark' - - matplotlib >=3.3.4 ; extra == 'docs' - - scikit-image >=0.17.2 ; extra == 'docs' - - pandas >=1.1.5 ; extra == 'docs' - - seaborn >=0.9.0 ; extra == 'docs' - - memory-profiler >=0.57.0 ; extra == 'docs' - - sphinx >=6.0.0 ; extra == 'docs' - - sphinx-copybutton >=0.5.2 ; extra == 'docs' - - sphinx-gallery >=0.15.0 ; extra == 'docs' - - numpydoc >=1.2.0 ; extra == 'docs' - - pillow >=7.1.2 ; extra == 'docs' - - pooch >=1.6.0 ; extra == 'docs' - - sphinx-prompt >=1.3.0 ; extra == 'docs' - - sphinxext-opengraph >=0.4.2 ; extra == 'docs' - - plotly >=5.14.0 ; extra == 'docs' - - matplotlib >=3.3.4 ; extra == 'examples' - - scikit-image >=0.17.2 ; extra == 'examples' - - pandas >=1.1.5 ; extra == 'examples' - - seaborn >=0.9.0 ; extra == 'examples' - - pooch >=1.6.0 ; extra == 'examples' - - plotly >=5.14.0 ; extra == 'examples' - - matplotlib >=3.3.4 ; extra == 'tests' - - scikit-image >=0.17.2 ; extra == 'tests' - - pandas >=1.1.5 ; extra == 'tests' - - pytest >=7.1.2 ; extra == 'tests' - - pytest-cov >=2.9.0 ; extra == 'tests' - - ruff >=0.0.272 ; extra == 'tests' - - black >=23.3.0 ; extra == 'tests' - - mypy >=1.3 ; extra == 'tests' - - pyamg >=4.0.0 ; extra == 'tests' - - polars >=0.19.12 ; extra == 'tests' - - pyarrow >=12.0.0 ; extra == 'tests' - - numpydoc >=1.2.0 ; extra == 'tests' - - pooch >=1.6.0 ; extra == 'tests' + - numpy>=1.19.5 + - scipy>=1.6.0 + - joblib>=1.2.0 + - threadpoolctl>=2.0.0 + - matplotlib>=3.3.4 ; extra == 'benchmark' + - pandas>=1.1.5 ; extra == 'benchmark' + - memory-profiler>=0.57.0 ; extra == 'benchmark' + - matplotlib>=3.3.4 ; extra == 'docs' + - scikit-image>=0.17.2 ; extra == 'docs' + - pandas>=1.1.5 ; extra == 'docs' + - seaborn>=0.9.0 ; extra == 'docs' + - memory-profiler>=0.57.0 ; extra == 'docs' + - sphinx>=6.0.0 ; extra == 'docs' + - sphinx-copybutton>=0.5.2 ; extra == 'docs' + - sphinx-gallery>=0.15.0 ; extra == 'docs' + - numpydoc>=1.2.0 ; extra == 'docs' + - pillow>=7.1.2 ; extra == 'docs' + - pooch>=1.6.0 ; extra == 'docs' + - sphinx-prompt>=1.3.0 ; extra == 'docs' + - sphinxext-opengraph>=0.4.2 ; extra == 'docs' + - plotly>=5.14.0 ; extra == 'docs' + - matplotlib>=3.3.4 ; extra == 'examples' + - scikit-image>=0.17.2 ; extra == 'examples' + - pandas>=1.1.5 ; extra == 'examples' + - seaborn>=0.9.0 ; extra == 'examples' + - pooch>=1.6.0 ; extra == 'examples' + - plotly>=5.14.0 ; extra == 'examples' + - matplotlib>=3.3.4 ; extra == 'tests' + - scikit-image>=0.17.2 ; extra == 'tests' + - pandas>=1.1.5 ; extra == 'tests' + - pytest>=7.1.2 ; extra == 'tests' + - pytest-cov>=2.9.0 ; extra == 'tests' + - ruff>=0.0.272 ; extra == 'tests' + - black>=23.3.0 ; extra == 'tests' + - mypy>=1.3 ; extra == 'tests' + - pyamg>=4.0.0 ; extra == 'tests' + - polars>=0.19.12 ; extra == 'tests' + - pyarrow>=12.0.0 ; extra == 'tests' + - numpydoc>=1.2.0 ; extra == 'tests' + - pooch>=1.6.0 ; extra == 'tests' requires_python: '>=3.9' - kind: pypi name: scikit-learn @@ -25473,46 +25442,46 @@ packages: url: https://files.pythonhosted.org/packages/79/3d/02d5d3ed359498fec3abdf65407d3c07e3b8765af17464969055aaec5171/scikit_learn-1.4.2-cp311-cp311-win_amd64.whl sha256: 5cd7b524115499b18b63f0c96f4224eb885564937a0b3477531b2b63ce331904 requires_dist: - - numpy >=1.19.5 - - scipy >=1.6.0 - - joblib >=1.2.0 - - threadpoolctl >=2.0.0 - - matplotlib >=3.3.4 ; extra == 'benchmark' - - pandas >=1.1.5 ; extra == 'benchmark' - - memory-profiler >=0.57.0 ; extra == 'benchmark' - - matplotlib >=3.3.4 ; extra == 'docs' - - scikit-image >=0.17.2 ; extra == 'docs' - - pandas >=1.1.5 ; extra == 'docs' - - seaborn >=0.9.0 ; extra == 'docs' - - memory-profiler >=0.57.0 ; extra == 'docs' - - sphinx >=6.0.0 ; extra == 'docs' - - sphinx-copybutton >=0.5.2 ; extra == 'docs' - - sphinx-gallery >=0.15.0 ; extra == 'docs' - - numpydoc >=1.2.0 ; extra == 'docs' - - pillow >=7.1.2 ; extra == 'docs' - - pooch >=1.6.0 ; extra == 'docs' - - sphinx-prompt >=1.3.0 ; extra == 'docs' - - sphinxext-opengraph >=0.4.2 ; extra == 'docs' - - plotly >=5.14.0 ; extra == 'docs' - - matplotlib >=3.3.4 ; extra == 'examples' - - scikit-image >=0.17.2 ; extra == 'examples' - - pandas >=1.1.5 ; extra == 'examples' - - seaborn >=0.9.0 ; extra == 'examples' - - pooch >=1.6.0 ; extra == 'examples' - - plotly >=5.14.0 ; extra == 'examples' - - matplotlib >=3.3.4 ; extra == 'tests' - - scikit-image >=0.17.2 ; extra == 'tests' - - pandas >=1.1.5 ; extra == 'tests' - - pytest >=7.1.2 ; extra == 'tests' - - pytest-cov >=2.9.0 ; extra == 'tests' - - ruff >=0.0.272 ; extra == 'tests' - - black >=23.3.0 ; extra == 'tests' - - mypy >=1.3 ; extra == 'tests' - - pyamg >=4.0.0 ; extra == 'tests' - - polars >=0.19.12 ; extra == 'tests' - - pyarrow >=12.0.0 ; extra == 'tests' - - numpydoc >=1.2.0 ; extra == 'tests' - - pooch >=1.6.0 ; extra == 'tests' + - numpy>=1.19.5 + - scipy>=1.6.0 + - joblib>=1.2.0 + - threadpoolctl>=2.0.0 + - matplotlib>=3.3.4 ; extra == 'benchmark' + - pandas>=1.1.5 ; extra == 'benchmark' + - memory-profiler>=0.57.0 ; extra == 'benchmark' + - matplotlib>=3.3.4 ; extra == 'docs' + - scikit-image>=0.17.2 ; extra == 'docs' + - pandas>=1.1.5 ; extra == 'docs' + - seaborn>=0.9.0 ; extra == 'docs' + - memory-profiler>=0.57.0 ; extra == 'docs' + - sphinx>=6.0.0 ; extra == 'docs' + - sphinx-copybutton>=0.5.2 ; extra == 'docs' + - sphinx-gallery>=0.15.0 ; extra == 'docs' + - numpydoc>=1.2.0 ; extra == 'docs' + - pillow>=7.1.2 ; extra == 'docs' + - pooch>=1.6.0 ; extra == 'docs' + - sphinx-prompt>=1.3.0 ; extra == 'docs' + - sphinxext-opengraph>=0.4.2 ; extra == 'docs' + - plotly>=5.14.0 ; extra == 'docs' + - matplotlib>=3.3.4 ; extra == 'examples' + - scikit-image>=0.17.2 ; extra == 'examples' + - pandas>=1.1.5 ; extra == 'examples' + - seaborn>=0.9.0 ; extra == 'examples' + - pooch>=1.6.0 ; extra == 'examples' + - plotly>=5.14.0 ; extra == 'examples' + - matplotlib>=3.3.4 ; extra == 'tests' + - scikit-image>=0.17.2 ; extra == 'tests' + - pandas>=1.1.5 ; extra == 'tests' + - pytest>=7.1.2 ; extra == 'tests' + - pytest-cov>=2.9.0 ; extra == 'tests' + - ruff>=0.0.272 ; extra == 'tests' + - black>=23.3.0 ; extra == 'tests' + - mypy>=1.3 ; extra == 'tests' + - pyamg>=4.0.0 ; extra == 'tests' + - polars>=0.19.12 ; extra == 'tests' + - pyarrow>=12.0.0 ; extra == 'tests' + - numpydoc>=1.2.0 ; extra == 'tests' + - pooch>=1.6.0 ; extra == 'tests' requires_python: '>=3.9' - kind: pypi name: scikit-learn @@ -25520,54 +25489,101 @@ packages: url: https://files.pythonhosted.org/packages/f2/30/1299e84d2ba3bc735baf17cebbf5b9d55144243c41b3ec6559ce3cf61e23/scikit_learn-1.4.2-cp311-cp311-macosx_12_0_arm64.whl sha256: 1d0b25d9c651fd050555aadd57431b53d4cf664e749069da77f3d52c5ad14b3b requires_dist: - - numpy >=1.19.5 - - scipy >=1.6.0 - - joblib >=1.2.0 - - threadpoolctl >=2.0.0 - - matplotlib >=3.3.4 ; extra == 'benchmark' - - pandas >=1.1.5 ; extra == 'benchmark' - - memory-profiler >=0.57.0 ; extra == 'benchmark' - - matplotlib >=3.3.4 ; extra == 'docs' - - scikit-image >=0.17.2 ; extra == 'docs' - - pandas >=1.1.5 ; extra == 'docs' - - seaborn >=0.9.0 ; extra == 'docs' - - memory-profiler >=0.57.0 ; extra == 'docs' - - sphinx >=6.0.0 ; extra == 'docs' - - sphinx-copybutton >=0.5.2 ; extra == 'docs' - - sphinx-gallery >=0.15.0 ; extra == 'docs' - - numpydoc >=1.2.0 ; extra == 'docs' - - pillow >=7.1.2 ; extra == 'docs' - - pooch >=1.6.0 ; extra == 'docs' - - sphinx-prompt >=1.3.0 ; extra == 'docs' - - sphinxext-opengraph >=0.4.2 ; extra == 'docs' - - plotly >=5.14.0 ; extra == 'docs' - - matplotlib >=3.3.4 ; extra == 'examples' - - scikit-image >=0.17.2 ; extra == 'examples' - - pandas >=1.1.5 ; extra == 'examples' - - seaborn >=0.9.0 ; extra == 'examples' - - pooch >=1.6.0 ; extra == 'examples' - - plotly >=5.14.0 ; extra == 'examples' - - matplotlib >=3.3.4 ; extra == 'tests' - - scikit-image >=0.17.2 ; extra == 'tests' - - pandas >=1.1.5 ; extra == 'tests' - - pytest >=7.1.2 ; extra == 'tests' - - pytest-cov >=2.9.0 ; extra == 'tests' - - ruff >=0.0.272 ; extra == 'tests' - - black >=23.3.0 ; extra == 'tests' - - mypy >=1.3 ; extra == 'tests' - - pyamg >=4.0.0 ; extra == 'tests' - - polars >=0.19.12 ; extra == 'tests' - - pyarrow >=12.0.0 ; extra == 'tests' - - numpydoc >=1.2.0 ; extra == 'tests' - - pooch >=1.6.0 ; extra == 'tests' + - numpy>=1.19.5 + - scipy>=1.6.0 + - joblib>=1.2.0 + - threadpoolctl>=2.0.0 + - matplotlib>=3.3.4 ; extra == 'benchmark' + - pandas>=1.1.5 ; extra == 'benchmark' + - memory-profiler>=0.57.0 ; extra == 'benchmark' + - matplotlib>=3.3.4 ; extra == 'docs' + - scikit-image>=0.17.2 ; extra == 'docs' + - pandas>=1.1.5 ; extra == 'docs' + - seaborn>=0.9.0 ; extra == 'docs' + - memory-profiler>=0.57.0 ; extra == 'docs' + - sphinx>=6.0.0 ; extra == 'docs' + - sphinx-copybutton>=0.5.2 ; extra == 'docs' + - sphinx-gallery>=0.15.0 ; extra == 'docs' + - numpydoc>=1.2.0 ; extra == 'docs' + - pillow>=7.1.2 ; extra == 'docs' + - pooch>=1.6.0 ; extra == 'docs' + - sphinx-prompt>=1.3.0 ; extra == 'docs' + - sphinxext-opengraph>=0.4.2 ; extra == 'docs' + - plotly>=5.14.0 ; extra == 'docs' + - matplotlib>=3.3.4 ; extra == 'examples' + - scikit-image>=0.17.2 ; extra == 'examples' + - pandas>=1.1.5 ; extra == 'examples' + - seaborn>=0.9.0 ; extra == 'examples' + - pooch>=1.6.0 ; extra == 'examples' + - plotly>=5.14.0 ; extra == 'examples' + - matplotlib>=3.3.4 ; extra == 'tests' + - scikit-image>=0.17.2 ; extra == 'tests' + - pandas>=1.1.5 ; extra == 'tests' + - pytest>=7.1.2 ; extra == 'tests' + - pytest-cov>=2.9.0 ; extra == 'tests' + - ruff>=0.0.272 ; extra == 'tests' + - black>=23.3.0 ; extra == 'tests' + - mypy>=1.3 ; extra == 'tests' + - pyamg>=4.0.0 ; extra == 'tests' + - polars>=0.19.12 ; extra == 'tests' + - pyarrow>=12.0.0 ; extra == 'tests' + - numpydoc>=1.2.0 ; extra == 'tests' + - pooch>=1.6.0 ; extra == 'tests' + requires_python: '>=3.9' +- kind: pypi + name: scikit-learn + version: 1.4.2 + url: https://files.pythonhosted.org/packages/59/11/63de36e6933b03490fdfe5cbc9b5a68870a1281d8e705a23b33076dc82fb/scikit_learn-1.4.2-cp311-cp311-macosx_10_9_x86_64.whl + sha256: 45dee87ac5309bb82e3ea633955030df9bbcb8d2cdb30383c6cd483691c546cc + requires_dist: + - numpy>=1.19.5 + - scipy>=1.6.0 + - joblib>=1.2.0 + - threadpoolctl>=2.0.0 + - matplotlib>=3.3.4 ; extra == 'benchmark' + - pandas>=1.1.5 ; extra == 'benchmark' + - memory-profiler>=0.57.0 ; extra == 'benchmark' + - matplotlib>=3.3.4 ; extra == 'docs' + - scikit-image>=0.17.2 ; extra == 'docs' + - pandas>=1.1.5 ; extra == 'docs' + - seaborn>=0.9.0 ; extra == 'docs' + - memory-profiler>=0.57.0 ; extra == 'docs' + - sphinx>=6.0.0 ; extra == 'docs' + - sphinx-copybutton>=0.5.2 ; extra == 'docs' + - sphinx-gallery>=0.15.0 ; extra == 'docs' + - numpydoc>=1.2.0 ; extra == 'docs' + - pillow>=7.1.2 ; extra == 'docs' + - pooch>=1.6.0 ; extra == 'docs' + - sphinx-prompt>=1.3.0 ; extra == 'docs' + - sphinxext-opengraph>=0.4.2 ; extra == 'docs' + - plotly>=5.14.0 ; extra == 'docs' + - matplotlib>=3.3.4 ; extra == 'examples' + - scikit-image>=0.17.2 ; extra == 'examples' + - pandas>=1.1.5 ; extra == 'examples' + - seaborn>=0.9.0 ; extra == 'examples' + - pooch>=1.6.0 ; extra == 'examples' + - plotly>=5.14.0 ; extra == 'examples' + - matplotlib>=3.3.4 ; extra == 'tests' + - scikit-image>=0.17.2 ; extra == 'tests' + - pandas>=1.1.5 ; extra == 'tests' + - pytest>=7.1.2 ; extra == 'tests' + - pytest-cov>=2.9.0 ; extra == 'tests' + - ruff>=0.0.272 ; extra == 'tests' + - black>=23.3.0 ; extra == 'tests' + - mypy>=1.3 ; extra == 'tests' + - pyamg>=4.0.0 ; extra == 'tests' + - polars>=0.19.12 ; extra == 'tests' + - pyarrow>=12.0.0 ; extra == 'tests' + - numpydoc>=1.2.0 ; extra == 'tests' + - pooch>=1.6.0 ; extra == 'tests' requires_python: '>=3.9' - kind: pypi name: scipy version: 1.13.0 - url: https://files.pythonhosted.org/packages/be/e3/236639c51636ec7e678f2aa608fe89acb9d02ef64e1fe1d8eb40373bc62b/scipy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl - sha256: 0fbcf8abaf5aa2dc8d6400566c1a727aed338b5fe880cde64907596a89d576fa + url: https://files.pythonhosted.org/packages/e8/fb/e5955e2ddbdf2baee461eb53ec8d0adedd20a6dfc5510ef8d5e7e44ba461/scipy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 9ff7dad5d24a8045d836671e082a490848e8639cabb3dbdacb29f943a678683d requires_dist: - - numpy <2.3, >=1.22.4 + - numpy<2.3,>=1.22.4 - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-timeout ; extra == 'test' @@ -25578,35 +25594,35 @@ packages: - threadpoolctl ; extra == 'test' - scikit-umfpack ; extra == 'test' - pooch ; extra == 'test' - - hypothesis >=6.30 ; extra == 'test' + - hypothesis>=6.30 ; extra == 'test' - array-api-strict ; extra == 'test' - - sphinx >=5.0.0 ; extra == 'doc' - - pydata-sphinx-theme >=0.15.2 ; extra == 'doc' - - sphinx-design >=0.4.0 ; extra == 'doc' - - matplotlib >=3.5 ; extra == 'doc' + - sphinx>=5.0.0 ; extra == 'doc' + - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' + - sphinx-design>=0.4.0 ; extra == 'doc' + - matplotlib>=3.5 ; extra == 'doc' - numpydoc ; extra == 'doc' - jupytext ; extra == 'doc' - myst-nb ; extra == 'doc' - pooch ; extra == 'doc' - - jupyterlite-sphinx >=0.12.0 ; extra == 'doc' + - jupyterlite-sphinx>=0.12.0 ; extra == 'doc' - jupyterlite-pyodide-kernel ; extra == 'doc' - mypy ; extra == 'dev' - typing-extensions ; extra == 'dev' - types-psutil ; extra == 'dev' - pycodestyle ; extra == 'dev' - ruff ; extra == 'dev' - - cython-lint >=0.12.2 ; extra == 'dev' + - cython-lint>=0.12.2 ; extra == 'dev' - rich-click ; extra == 'dev' - - doit >=0.36.0 ; extra == 'dev' + - doit>=0.36.0 ; extra == 'dev' - pydevtool ; extra == 'dev' requires_python: '>=3.9' - kind: pypi name: scipy version: 1.13.0 - url: https://files.pythonhosted.org/packages/e8/fb/e5955e2ddbdf2baee461eb53ec8d0adedd20a6dfc5510ef8d5e7e44ba461/scipy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - sha256: 9ff7dad5d24a8045d836671e082a490848e8639cabb3dbdacb29f943a678683d + url: https://files.pythonhosted.org/packages/d4/a1/d4adf25b6d2bef8d0ad1682829dcfcba97f3f96bb5b6f137bc3e41003cc7/scipy-1.13.0-cp311-cp311-win_amd64.whl + sha256: a2f471de4d01200718b2b8927f7d76b5d9bde18047ea0fa8bd15c5ba3f26a1d6 requires_dist: - - numpy <2.3, >=1.22.4 + - numpy<2.3,>=1.22.4 - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-timeout ; extra == 'test' @@ -25617,35 +25633,35 @@ packages: - threadpoolctl ; extra == 'test' - scikit-umfpack ; extra == 'test' - pooch ; extra == 'test' - - hypothesis >=6.30 ; extra == 'test' + - hypothesis>=6.30 ; extra == 'test' - array-api-strict ; extra == 'test' - - sphinx >=5.0.0 ; extra == 'doc' - - pydata-sphinx-theme >=0.15.2 ; extra == 'doc' - - sphinx-design >=0.4.0 ; extra == 'doc' - - matplotlib >=3.5 ; extra == 'doc' + - sphinx>=5.0.0 ; extra == 'doc' + - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' + - sphinx-design>=0.4.0 ; extra == 'doc' + - matplotlib>=3.5 ; extra == 'doc' - numpydoc ; extra == 'doc' - jupytext ; extra == 'doc' - myst-nb ; extra == 'doc' - pooch ; extra == 'doc' - - jupyterlite-sphinx >=0.12.0 ; extra == 'doc' + - jupyterlite-sphinx>=0.12.0 ; extra == 'doc' - jupyterlite-pyodide-kernel ; extra == 'doc' - mypy ; extra == 'dev' - typing-extensions ; extra == 'dev' - types-psutil ; extra == 'dev' - pycodestyle ; extra == 'dev' - ruff ; extra == 'dev' - - cython-lint >=0.12.2 ; extra == 'dev' + - cython-lint>=0.12.2 ; extra == 'dev' - rich-click ; extra == 'dev' - - doit >=0.36.0 ; extra == 'dev' + - doit>=0.36.0 ; extra == 'dev' - pydevtool ; extra == 'dev' requires_python: '>=3.9' - kind: pypi name: scipy version: 1.13.0 - url: https://files.pythonhosted.org/packages/d4/a1/d4adf25b6d2bef8d0ad1682829dcfcba97f3f96bb5b6f137bc3e41003cc7/scipy-1.13.0-cp311-cp311-win_amd64.whl - sha256: a2f471de4d01200718b2b8927f7d76b5d9bde18047ea0fa8bd15c5ba3f26a1d6 + url: https://files.pythonhosted.org/packages/51/b6/188c8974d747b2998d672040c5b62a635a72240c515dc4577a28e1dedc80/scipy-1.13.0-cp311-cp311-macosx_12_0_arm64.whl + sha256: 5e4a756355522eb60fcd61f8372ac2549073c8788f6114449b37e9e8104f15a5 requires_dist: - - numpy <2.3, >=1.22.4 + - numpy<2.3,>=1.22.4 - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-timeout ; extra == 'test' @@ -25656,35 +25672,35 @@ packages: - threadpoolctl ; extra == 'test' - scikit-umfpack ; extra == 'test' - pooch ; extra == 'test' - - hypothesis >=6.30 ; extra == 'test' + - hypothesis>=6.30 ; extra == 'test' - array-api-strict ; extra == 'test' - - sphinx >=5.0.0 ; extra == 'doc' - - pydata-sphinx-theme >=0.15.2 ; extra == 'doc' - - sphinx-design >=0.4.0 ; extra == 'doc' - - matplotlib >=3.5 ; extra == 'doc' + - sphinx>=5.0.0 ; extra == 'doc' + - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' + - sphinx-design>=0.4.0 ; extra == 'doc' + - matplotlib>=3.5 ; extra == 'doc' - numpydoc ; extra == 'doc' - jupytext ; extra == 'doc' - myst-nb ; extra == 'doc' - pooch ; extra == 'doc' - - jupyterlite-sphinx >=0.12.0 ; extra == 'doc' + - jupyterlite-sphinx>=0.12.0 ; extra == 'doc' - jupyterlite-pyodide-kernel ; extra == 'doc' - mypy ; extra == 'dev' - typing-extensions ; extra == 'dev' - types-psutil ; extra == 'dev' - pycodestyle ; extra == 'dev' - ruff ; extra == 'dev' - - cython-lint >=0.12.2 ; extra == 'dev' + - cython-lint>=0.12.2 ; extra == 'dev' - rich-click ; extra == 'dev' - - doit >=0.36.0 ; extra == 'dev' + - doit>=0.36.0 ; extra == 'dev' - pydevtool ; extra == 'dev' requires_python: '>=3.9' - kind: pypi name: scipy version: 1.13.0 - url: https://files.pythonhosted.org/packages/51/b6/188c8974d747b2998d672040c5b62a635a72240c515dc4577a28e1dedc80/scipy-1.13.0-cp311-cp311-macosx_12_0_arm64.whl - sha256: 5e4a756355522eb60fcd61f8372ac2549073c8788f6114449b37e9e8104f15a5 + url: https://files.pythonhosted.org/packages/be/e3/236639c51636ec7e678f2aa608fe89acb9d02ef64e1fe1d8eb40373bc62b/scipy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl + sha256: 0fbcf8abaf5aa2dc8d6400566c1a727aed338b5fe880cde64907596a89d576fa requires_dist: - - numpy <2.3, >=1.22.4 + - numpy<2.3,>=1.22.4 - pytest ; extra == 'test' - pytest-cov ; extra == 'test' - pytest-timeout ; extra == 'test' @@ -25695,26 +25711,26 @@ packages: - threadpoolctl ; extra == 'test' - scikit-umfpack ; extra == 'test' - pooch ; extra == 'test' - - hypothesis >=6.30 ; extra == 'test' + - hypothesis>=6.30 ; extra == 'test' - array-api-strict ; extra == 'test' - - sphinx >=5.0.0 ; extra == 'doc' - - pydata-sphinx-theme >=0.15.2 ; extra == 'doc' - - sphinx-design >=0.4.0 ; extra == 'doc' - - matplotlib >=3.5 ; extra == 'doc' + - sphinx>=5.0.0 ; extra == 'doc' + - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' + - sphinx-design>=0.4.0 ; extra == 'doc' + - matplotlib>=3.5 ; extra == 'doc' - numpydoc ; extra == 'doc' - jupytext ; extra == 'doc' - myst-nb ; extra == 'doc' - pooch ; extra == 'doc' - - jupyterlite-sphinx >=0.12.0 ; extra == 'doc' + - jupyterlite-sphinx>=0.12.0 ; extra == 'doc' - jupyterlite-pyodide-kernel ; extra == 'doc' - mypy ; extra == 'dev' - typing-extensions ; extra == 'dev' - types-psutil ; extra == 'dev' - pycodestyle ; extra == 'dev' - ruff ; extra == 'dev' - - cython-lint >=0.12.2 ; extra == 'dev' + - cython-lint>=0.12.2 ; extra == 'dev' - rich-click ; extra == 'dev' - - doit >=0.36.0 ; extra == 'dev' + - doit>=0.36.0 ; extra == 'dev' - pydevtool ; extra == 'dev' requires_python: '>=3.9' - kind: pypi @@ -25737,12 +25753,12 @@ packages: path: examples/python/segment_anything_model sha256: 85bc241bedf212c63a39d0251a9dcc0fb3a435087a024d4eafd7f49342a75926 requires_dist: + - segment-anything @ git+https://github.com/facebookresearch/segment-anything.git - numpy - opencv-python - - requests <3, >=2.31 + - requests>=2.31,<3 - rerun-sdk - - segment-anything @ git+https://github.com/facebookresearch/segment-anything.git - - torch ==2.2.2 + - torch==2.2.2 - torchvision - tqdm editable: true @@ -25821,11 +25837,11 @@ packages: - kind: pypi name: shapely version: 2.0.4 - url: https://files.pythonhosted.org/packages/93/fd/b205661ed60294a344406fb04227042fcede9501e81ee1e7018e9159455a/shapely-2.0.4-cp311-cp311-macosx_10_9_x86_64.whl - sha256: 7d56ce3e2a6a556b59a288771cf9d091470116867e578bebced8bfc4147fbfd7 + url: https://files.pythonhosted.org/packages/d5/fb/bcf6a8164ed307c99f1a8fabe5acd86ac99a33f52530a3ca84b0936f95bd/shapely-2.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 4310b5494271e18580d61022c0857eb85d30510d88606fa3b8314790df7f367d requires_dist: - - numpy <3, >=1.14 - - numpydoc ==1.1.* ; extra == 'docs' + - numpy<3,>=1.14 + - numpydoc==1.1.* ; extra == 'docs' - matplotlib ; extra == 'docs' - sphinx ; extra == 'docs' - sphinx-book-theme ; extra == 'docs' @@ -25836,11 +25852,11 @@ packages: - kind: pypi name: shapely version: 2.0.4 - url: https://files.pythonhosted.org/packages/d5/fb/bcf6a8164ed307c99f1a8fabe5acd86ac99a33f52530a3ca84b0936f95bd/shapely-2.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - sha256: 4310b5494271e18580d61022c0857eb85d30510d88606fa3b8314790df7f367d + url: https://files.pythonhosted.org/packages/6a/5c/3330f499ca860f0b92db4ceaebd7090096a83c1ea3ae7d8d4c6111761b82/shapely-2.0.4-cp311-cp311-win_amd64.whl + sha256: c52ed79f683f721b69a10fb9e3d940a468203f5054927215586c5d49a072de8d requires_dist: - - numpy <3, >=1.14 - - numpydoc ==1.1.* ; extra == 'docs' + - numpy<3,>=1.14 + - numpydoc==1.1.* ; extra == 'docs' - matplotlib ; extra == 'docs' - sphinx ; extra == 'docs' - sphinx-book-theme ; extra == 'docs' @@ -25851,11 +25867,11 @@ packages: - kind: pypi name: shapely version: 2.0.4 - url: https://files.pythonhosted.org/packages/6a/5c/3330f499ca860f0b92db4ceaebd7090096a83c1ea3ae7d8d4c6111761b82/shapely-2.0.4-cp311-cp311-win_amd64.whl - sha256: c52ed79f683f721b69a10fb9e3d940a468203f5054927215586c5d49a072de8d + url: https://files.pythonhosted.org/packages/2a/fb/e3f72b10a90e26bb1a92a38b3f30f3074ebac6d532f87848ac09c3e8a73b/shapely-2.0.4-cp311-cp311-macosx_11_0_arm64.whl + sha256: 58b0ecc505bbe49a99551eea3f2e8a9b3b24b3edd2a4de1ac0dc17bc75c9ec07 requires_dist: - - numpy <3, >=1.14 - - numpydoc ==1.1.* ; extra == 'docs' + - numpy<3,>=1.14 + - numpydoc==1.1.* ; extra == 'docs' - matplotlib ; extra == 'docs' - sphinx ; extra == 'docs' - sphinx-book-theme ; extra == 'docs' @@ -25866,11 +25882,11 @@ packages: - kind: pypi name: shapely version: 2.0.4 - url: https://files.pythonhosted.org/packages/2a/fb/e3f72b10a90e26bb1a92a38b3f30f3074ebac6d532f87848ac09c3e8a73b/shapely-2.0.4-cp311-cp311-macosx_11_0_arm64.whl - sha256: 58b0ecc505bbe49a99551eea3f2e8a9b3b24b3edd2a4de1ac0dc17bc75c9ec07 + url: https://files.pythonhosted.org/packages/93/fd/b205661ed60294a344406fb04227042fcede9501e81ee1e7018e9159455a/shapely-2.0.4-cp311-cp311-macosx_10_9_x86_64.whl + sha256: 7d56ce3e2a6a556b59a288771cf9d091470116867e578bebced8bfc4147fbfd7 requires_dist: - - numpy <3, >=1.14 - - numpydoc ==1.1.* ; extra == 'docs' + - numpy<3,>=1.14 + - numpydoc==1.1.* ; extra == 'docs' - matplotlib ; extra == 'docs' - sphinx ; extra == 'docs' - sphinx-book-theme ; extra == 'docs' @@ -25894,10 +25910,10 @@ packages: requires_dist: - mesh-to-sdf @ git+https://github.com/marian42/mesh_to_sdf.git - numpy - - requests <3, >=2.31 + - requests>=2.31,<3 - rerun-sdk - - scikit-learn >=1.1.3 - - trimesh ==3.15.2 + - scikit-learn>=1.1.3 + - trimesh==3.15.2 editable: true - kind: conda name: sigtool @@ -26108,28 +26124,28 @@ packages: - kind: pypi name: sounddevice version: 0.4.6 - url: https://files.pythonhosted.org/packages/24/5a/c0b9066fcaf783054b3f35254938dcba2d8cf02576ebdc56b6b4e85661f2/sounddevice-0.4.6-py3-none-macosx_10_6_x86_64.macosx_10_6_universal2.whl - sha256: 8b0b806c205dd3e3cd5a97262b2482624fd21db7d47083b887090148a08051c8 + url: https://files.pythonhosted.org/packages/d7/d5/f0a0aba169f23657c7af3f0c878db7413a9a3b113026fc759862a697c611/sounddevice-0.4.6-py3-none-any.whl + sha256: 5de768ba6fe56ad2b5aaa2eea794b76b73e427961c95acad2ee2ed7f866a4b20 requires_dist: - - cffi >=1.0 + - cffi>=1.0 - numpy ; extra == 'numpy' requires_python: '>=3.7' - kind: pypi name: sounddevice version: 0.4.6 - url: https://files.pythonhosted.org/packages/d7/d5/f0a0aba169f23657c7af3f0c878db7413a9a3b113026fc759862a697c611/sounddevice-0.4.6-py3-none-any.whl - sha256: 5de768ba6fe56ad2b5aaa2eea794b76b73e427961c95acad2ee2ed7f866a4b20 + url: https://files.pythonhosted.org/packages/39/ae/5e84220bfca4256e4ca2a62a174636089ab6ff671b5f9ddd7e8238587acd/sounddevice-0.4.6-py3-none-win_amd64.whl + sha256: 7830d4f8f8570f2e5552942f81d96999c5fcd9a0b682d6fc5d5c5529df23be2c requires_dist: - - cffi >=1.0 + - cffi>=1.0 - numpy ; extra == 'numpy' requires_python: '>=3.7' - kind: pypi name: sounddevice version: 0.4.6 - url: https://files.pythonhosted.org/packages/39/ae/5e84220bfca4256e4ca2a62a174636089ab6ff671b5f9ddd7e8238587acd/sounddevice-0.4.6-py3-none-win_amd64.whl - sha256: 7830d4f8f8570f2e5552942f81d96999c5fcd9a0b682d6fc5d5c5529df23be2c + url: https://files.pythonhosted.org/packages/24/5a/c0b9066fcaf783054b3f35254938dcba2d8cf02576ebdc56b6b4e85661f2/sounddevice-0.4.6-py3-none-macosx_10_6_x86_64.macosx_10_6_universal2.whl + sha256: 8b0b806c205dd3e3cd5a97262b2482624fd21db7d47083b887090148a08051c8 requires_dist: - - cffi >=1.0 + - cffi>=1.0 - numpy ; extra == 'numpy' requires_python: '>=3.7' - kind: pypi @@ -26157,9 +26173,9 @@ packages: path: examples/python/structure_from_motion sha256: b20b79aa7bb2b4225b37d3cb28872a70dc7e9ab2ca9ab138b90d60fc8d7b4c15 requires_dist: + - opencv-python>4.6 - numpy - - opencv-python >4.6 - - requests <3, >=2.31 + - requests>=2.31,<3 - rerun-sdk - tqdm editable: true @@ -26169,7 +26185,7 @@ packages: url: https://files.pythonhosted.org/packages/d2/05/e6600db80270777c4a64238a98d442f0fd07cc8915be2a1c16da7f2b9e74/sympy-1.12-py3-none-any.whl sha256: c3588cd4295d0c0f603d0f2ae780587e64e2efeedb3521e46b9bb1d08d184fa5 requires_dist: - - mpmath >=0.19 + - mpmath>=0.19 requires_python: '>=3.8' - kind: conda name: sysroot_linux-64 @@ -26360,7 +26376,7 @@ packages: sha256: 4154f091aa24d4e75bfad9ab2d5424a68c70e67b8220188066dc61946d4551bd requires_dist: - numpy - - imagecodecs >=2023.8.12 ; extra == 'all' + - imagecodecs>=2023.8.12 ; extra == 'all' - matplotlib ; extra == 'all' - defusedxml ; extra == 'all' - lxml ; extra == 'all' @@ -26373,7 +26389,7 @@ packages: url: https://files.pythonhosted.org/packages/76/aa/4b54f6047c442883243f68f6f9e3a0ab77aaae4b3e6e51a98b371e73dd77/timm-0.9.11-py3-none-any.whl sha256: 02bba56786633ff46b55ee0ce3b991fa85375556844e500ad18e6b12921dc3da requires_dist: - - torch >=1.7 + - torch>=1.7 - torchvision - pyyaml - huggingface-hub @@ -26527,15 +26543,15 @@ packages: - kind: pypi name: tokenizers version: 0.19.1 - url: https://files.pythonhosted.org/packages/c8/d6/6e1d728d765eb4102767f071bf7f6439ab10d7f4a975c9217db65715207a/tokenizers-0.19.1-cp311-cp311-macosx_10_12_x86_64.whl - sha256: 5c88d1481f1882c2e53e6bb06491e474e420d9ac7bdff172610c4f9ad3898059 + url: https://files.pythonhosted.org/packages/a7/03/fb50fc03f86016b227a967c8d474f90230c885c0d18f78acdfda7a96ce56/tokenizers-0.19.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: d16ff18907f4909dca9b076b9c2d899114dd6abceeb074eca0c93e2353f943aa requires_dist: - - huggingface-hub >=0.16.4, <1.0 + - huggingface-hub>=0.16.4,<1.0 - pytest ; extra == 'testing' - requests ; extra == 'testing' - numpy ; extra == 'testing' - datasets ; extra == 'testing' - - black ==22.3 ; extra == 'testing' + - black==22.3 ; extra == 'testing' - ruff ; extra == 'testing' - sphinx ; extra == 'docs' - sphinx-rtd-theme ; extra == 'docs' @@ -26545,15 +26561,15 @@ packages: - kind: pypi name: tokenizers version: 0.19.1 - url: https://files.pythonhosted.org/packages/a7/03/fb50fc03f86016b227a967c8d474f90230c885c0d18f78acdfda7a96ce56/tokenizers-0.19.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - sha256: d16ff18907f4909dca9b076b9c2d899114dd6abceeb074eca0c93e2353f943aa + url: https://files.pythonhosted.org/packages/65/8e/6d7d72b28f22c422cff8beae10ac3c2e4376b9be721ef8167b7eecd1da62/tokenizers-0.19.1-cp311-none-win_amd64.whl + sha256: ad57d59341710b94a7d9dbea13f5c1e7d76fd8d9bcd944a7a6ab0b0da6e0cc66 requires_dist: - - huggingface-hub >=0.16.4, <1.0 + - huggingface-hub>=0.16.4,<1.0 - pytest ; extra == 'testing' - requests ; extra == 'testing' - numpy ; extra == 'testing' - datasets ; extra == 'testing' - - black ==22.3 ; extra == 'testing' + - black==22.3 ; extra == 'testing' - ruff ; extra == 'testing' - sphinx ; extra == 'docs' - sphinx-rtd-theme ; extra == 'docs' @@ -26563,15 +26579,15 @@ packages: - kind: pypi name: tokenizers version: 0.19.1 - url: https://files.pythonhosted.org/packages/65/8e/6d7d72b28f22c422cff8beae10ac3c2e4376b9be721ef8167b7eecd1da62/tokenizers-0.19.1-cp311-none-win_amd64.whl - sha256: ad57d59341710b94a7d9dbea13f5c1e7d76fd8d9bcd944a7a6ab0b0da6e0cc66 + url: https://files.pythonhosted.org/packages/90/79/d17a0f491d10817cd30f1121a07aa09c8e97a81114b116e473baf1577f09/tokenizers-0.19.1-cp311-cp311-macosx_11_0_arm64.whl + sha256: ddf672ed719b4ed82b51499100f5417d7d9f6fb05a65e232249268f35de5ed14 requires_dist: - - huggingface-hub >=0.16.4, <1.0 + - huggingface-hub>=0.16.4,<1.0 - pytest ; extra == 'testing' - requests ; extra == 'testing' - numpy ; extra == 'testing' - datasets ; extra == 'testing' - - black ==22.3 ; extra == 'testing' + - black==22.3 ; extra == 'testing' - ruff ; extra == 'testing' - sphinx ; extra == 'docs' - sphinx-rtd-theme ; extra == 'docs' @@ -26581,15 +26597,15 @@ packages: - kind: pypi name: tokenizers version: 0.19.1 - url: https://files.pythonhosted.org/packages/90/79/d17a0f491d10817cd30f1121a07aa09c8e97a81114b116e473baf1577f09/tokenizers-0.19.1-cp311-cp311-macosx_11_0_arm64.whl - sha256: ddf672ed719b4ed82b51499100f5417d7d9f6fb05a65e232249268f35de5ed14 + url: https://files.pythonhosted.org/packages/c8/d6/6e1d728d765eb4102767f071bf7f6439ab10d7f4a975c9217db65715207a/tokenizers-0.19.1-cp311-cp311-macosx_10_12_x86_64.whl + sha256: 5c88d1481f1882c2e53e6bb06491e474e420d9ac7bdff172610c4f9ad3898059 requires_dist: - - huggingface-hub >=0.16.4, <1.0 + - huggingface-hub>=0.16.4,<1.0 - pytest ; extra == 'testing' - requests ; extra == 'testing' - numpy ; extra == 'testing' - datasets ; extra == 'testing' - - black ==22.3 ; extra == 'testing' + - black==22.3 ; extra == 'testing' - ruff ; extra == 'testing' - sphinx ; extra == 'docs' - sphinx-rtd-theme ; extra == 'docs' @@ -26637,56 +26653,56 @@ packages: - kind: pypi name: torch version: 2.2.2 - url: https://files.pythonhosted.org/packages/02/af/81abea3d73fddfde26afd1ce52a4ddfa389cd2b684c89d6c4d0d5d8d0dfa/torch-2.2.2-cp311-cp311-manylinux2014_aarch64.whl - sha256: 32827fa1fbe5da8851686256b4cd94cc7b11be962862c2293811c94eea9457bf + url: https://files.pythonhosted.org/packages/3f/14/e105b8ef6d324e789c1589e95cb0ab63f3e07c2216d68b1178b7c21b7d2a/torch-2.2.2-cp311-none-macosx_10_9_x86_64.whl + sha256: 95b9b44f3bcebd8b6cd8d37ec802048c872d9c567ba52c894bba90863a439059 requires_dist: - filelock - - typing-extensions >=4.8.0 + - typing-extensions>=4.8.0 - sympy - networkx - jinja2 - fsspec - - nvidia-cuda-nvrtc-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cuda-runtime-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cuda-cupti-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cudnn-cu12 ==8.9.2.26 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cublas-cu12 ==12.1.3.1 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cufft-cu12 ==11.0.2.54 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-curand-cu12 ==10.3.2.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cusolver-cu12 ==11.4.5.107 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cusparse-cu12 ==12.1.0.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-nccl-cu12 ==2.19.3 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-nvtx-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - triton ==2.2.0 ; platform_system == 'Linux' and platform_machine == 'x86_64' and python_version < '3.12' - - opt-einsum >=3.3 ; extra == 'opt-einsum' - - optree >=0.9.1 ; extra == 'optree' + - nvidia-cuda-nvrtc-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cuda-runtime-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cuda-cupti-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cudnn-cu12==8.9.2.26 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cublas-cu12==12.1.3.1 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cufft-cu12==11.0.2.54 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-curand-cu12==10.3.2.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cusolver-cu12==11.4.5.107 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cusparse-cu12==12.1.0.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-nccl-cu12==2.19.3 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-nvtx-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - triton==2.2.0 ; platform_system == 'Linux' and platform_machine == 'x86_64' and python_version < '3.12' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - optree>=0.9.1 ; extra == 'optree' requires_python: '>=3.8.0' - kind: pypi name: torch version: 2.2.2 - url: https://files.pythonhosted.org/packages/5c/01/5ab75f138bf32d7a69df61e4997e24eccad87cc009f5fb7e2a31af8a4036/torch-2.2.2-cp311-cp311-win_amd64.whl - sha256: f9ef0a648310435511e76905f9b89612e45ef2c8b023bee294f5e6f7e73a3e7c + url: https://files.pythonhosted.org/packages/02/af/81abea3d73fddfde26afd1ce52a4ddfa389cd2b684c89d6c4d0d5d8d0dfa/torch-2.2.2-cp311-cp311-manylinux2014_aarch64.whl + sha256: 32827fa1fbe5da8851686256b4cd94cc7b11be962862c2293811c94eea9457bf requires_dist: - filelock - - typing-extensions >=4.8.0 + - typing-extensions>=4.8.0 - sympy - networkx - jinja2 - fsspec - - nvidia-cuda-nvrtc-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cuda-runtime-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cuda-cupti-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cudnn-cu12 ==8.9.2.26 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cublas-cu12 ==12.1.3.1 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cufft-cu12 ==11.0.2.54 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-curand-cu12 ==10.3.2.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cusolver-cu12 ==11.4.5.107 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cusparse-cu12 ==12.1.0.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-nccl-cu12 ==2.19.3 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-nvtx-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - triton ==2.2.0 ; platform_system == 'Linux' and platform_machine == 'x86_64' and python_version < '3.12' - - opt-einsum >=3.3 ; extra == 'opt-einsum' - - optree >=0.9.1 ; extra == 'optree' + - nvidia-cuda-nvrtc-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cuda-runtime-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cuda-cupti-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cudnn-cu12==8.9.2.26 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cublas-cu12==12.1.3.1 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cufft-cu12==11.0.2.54 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-curand-cu12==10.3.2.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cusolver-cu12==11.4.5.107 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cusparse-cu12==12.1.0.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-nccl-cu12==2.19.3 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-nvtx-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - triton==2.2.0 ; platform_system == 'Linux' and platform_machine == 'x86_64' and python_version < '3.12' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - optree>=0.9.1 ; extra == 'optree' requires_python: '>=3.8.0' - kind: pypi name: torch @@ -26695,122 +26711,122 @@ packages: sha256: ad4c03b786e074f46606f4151c0a1e3740268bcf29fbd2fdf6666d66341c1dcb requires_dist: - filelock - - typing-extensions >=4.8.0 + - typing-extensions>=4.8.0 - sympy - networkx - jinja2 - fsspec - - nvidia-cuda-nvrtc-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cuda-runtime-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cuda-cupti-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cudnn-cu12 ==8.9.2.26 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cublas-cu12 ==12.1.3.1 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cufft-cu12 ==11.0.2.54 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-curand-cu12 ==10.3.2.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cusolver-cu12 ==11.4.5.107 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cusparse-cu12 ==12.1.0.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-nccl-cu12 ==2.19.3 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-nvtx-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - triton ==2.2.0 ; platform_system == 'Linux' and platform_machine == 'x86_64' and python_version < '3.12' - - opt-einsum >=3.3 ; extra == 'opt-einsum' - - optree >=0.9.1 ; extra == 'optree' + - nvidia-cuda-nvrtc-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cuda-runtime-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cuda-cupti-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cudnn-cu12==8.9.2.26 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cublas-cu12==12.1.3.1 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cufft-cu12==11.0.2.54 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-curand-cu12==10.3.2.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cusolver-cu12==11.4.5.107 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cusparse-cu12==12.1.0.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-nccl-cu12==2.19.3 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-nvtx-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - triton==2.2.0 ; platform_system == 'Linux' and platform_machine == 'x86_64' and python_version < '3.12' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - optree>=0.9.1 ; extra == 'optree' requires_python: '>=3.8.0' - kind: pypi name: torch version: 2.2.2 - url: https://files.pythonhosted.org/packages/96/23/18b9c16c18a77755e7f15173821c7100f11e6b3b7717bea8d729bdeb92c0/torch-2.2.2-cp311-none-macosx_11_0_arm64.whl - sha256: 49aa4126ede714c5aeef7ae92969b4b0bbe67f19665106463c39f22e0a1860d1 + url: https://files.pythonhosted.org/packages/5c/01/5ab75f138bf32d7a69df61e4997e24eccad87cc009f5fb7e2a31af8a4036/torch-2.2.2-cp311-cp311-win_amd64.whl + sha256: f9ef0a648310435511e76905f9b89612e45ef2c8b023bee294f5e6f7e73a3e7c requires_dist: - filelock - - typing-extensions >=4.8.0 + - typing-extensions>=4.8.0 - sympy - networkx - jinja2 - fsspec - - nvidia-cuda-nvrtc-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cuda-runtime-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cuda-cupti-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cudnn-cu12 ==8.9.2.26 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cublas-cu12 ==12.1.3.1 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cufft-cu12 ==11.0.2.54 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-curand-cu12 ==10.3.2.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cusolver-cu12 ==11.4.5.107 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cusparse-cu12 ==12.1.0.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-nccl-cu12 ==2.19.3 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-nvtx-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - triton ==2.2.0 ; platform_system == 'Linux' and platform_machine == 'x86_64' and python_version < '3.12' - - opt-einsum >=3.3 ; extra == 'opt-einsum' - - optree >=0.9.1 ; extra == 'optree' + - nvidia-cuda-nvrtc-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cuda-runtime-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cuda-cupti-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cudnn-cu12==8.9.2.26 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cublas-cu12==12.1.3.1 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cufft-cu12==11.0.2.54 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-curand-cu12==10.3.2.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cusolver-cu12==11.4.5.107 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cusparse-cu12==12.1.0.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-nccl-cu12==2.19.3 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-nvtx-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - triton==2.2.0 ; platform_system == 'Linux' and platform_machine == 'x86_64' and python_version < '3.12' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - optree>=0.9.1 ; extra == 'optree' requires_python: '>=3.8.0' - kind: pypi name: torch version: 2.2.2 - url: https://files.pythonhosted.org/packages/3f/14/e105b8ef6d324e789c1589e95cb0ab63f3e07c2216d68b1178b7c21b7d2a/torch-2.2.2-cp311-none-macosx_10_9_x86_64.whl - sha256: 95b9b44f3bcebd8b6cd8d37ec802048c872d9c567ba52c894bba90863a439059 + url: https://files.pythonhosted.org/packages/96/23/18b9c16c18a77755e7f15173821c7100f11e6b3b7717bea8d729bdeb92c0/torch-2.2.2-cp311-none-macosx_11_0_arm64.whl + sha256: 49aa4126ede714c5aeef7ae92969b4b0bbe67f19665106463c39f22e0a1860d1 requires_dist: - filelock - - typing-extensions >=4.8.0 + - typing-extensions>=4.8.0 - sympy - networkx - jinja2 - fsspec - - nvidia-cuda-nvrtc-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cuda-runtime-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cuda-cupti-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cudnn-cu12 ==8.9.2.26 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cublas-cu12 ==12.1.3.1 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cufft-cu12 ==11.0.2.54 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-curand-cu12 ==10.3.2.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cusolver-cu12 ==11.4.5.107 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-cusparse-cu12 ==12.1.0.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-nccl-cu12 ==2.19.3 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - nvidia-nvtx-cu12 ==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' - - triton ==2.2.0 ; platform_system == 'Linux' and platform_machine == 'x86_64' and python_version < '3.12' - - opt-einsum >=3.3 ; extra == 'opt-einsum' - - optree >=0.9.1 ; extra == 'optree' + - nvidia-cuda-nvrtc-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cuda-runtime-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cuda-cupti-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cudnn-cu12==8.9.2.26 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cublas-cu12==12.1.3.1 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cufft-cu12==11.0.2.54 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-curand-cu12==10.3.2.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cusolver-cu12==11.4.5.107 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-cusparse-cu12==12.1.0.106 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-nccl-cu12==2.19.3 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - nvidia-nvtx-cu12==12.1.105 ; platform_system == 'Linux' and platform_machine == 'x86_64' + - triton==2.2.0 ; platform_system == 'Linux' and platform_machine == 'x86_64' and python_version < '3.12' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - optree>=0.9.1 ; extra == 'optree' requires_python: '>=3.8.0' - kind: pypi name: torchvision version: 0.17.2 - url: https://files.pythonhosted.org/packages/46/95/179dd1bf8fd6bd689f0907f4baed557d2b12d2cf3d7ed1a8ecefe0a63d83/torchvision-0.17.2-cp311-cp311-macosx_10_13_x86_64.whl - sha256: 9b83e55ee7d0a1704f52b9c0ac87388e7a6d1d98a6bde7b0b35f9ab54d7bda54 + url: https://files.pythonhosted.org/packages/68/49/5e1c771294407bb25e6dbcf169aef5cffefcddf27b0176125a9b0af06a1e/torchvision-0.17.2-cp311-cp311-manylinux1_x86_64.whl + sha256: 3bbc24b7713e8f22766992562547d8b4b10001208d372fe599255af84bfd1a69 requires_dist: - numpy - - torch ==2.2.2 - - pillow !=8.3.*, >=5.3.0 + - torch==2.2.2 + - pillow!=8.3.*,>=5.3.0 - scipy ; extra == 'scipy' requires_python: '>=3.8' - kind: pypi name: torchvision version: 0.17.2 - url: https://files.pythonhosted.org/packages/68/49/5e1c771294407bb25e6dbcf169aef5cffefcddf27b0176125a9b0af06a1e/torchvision-0.17.2-cp311-cp311-manylinux1_x86_64.whl - sha256: 3bbc24b7713e8f22766992562547d8b4b10001208d372fe599255af84bfd1a69 + url: https://files.pythonhosted.org/packages/c6/75/d869f600fc33df8b8ca99943e165a4ca23b73c68dc1942098fde0a6b46f3/torchvision-0.17.2-cp311-cp311-win_amd64.whl + sha256: 6835897df852fad1015e6a106c167c83848114cbcc7d86112384a973404e4431 requires_dist: - numpy - - torch ==2.2.2 - - pillow !=8.3.*, >=5.3.0 + - torch==2.2.2 + - pillow!=8.3.*,>=5.3.0 - scipy ; extra == 'scipy' requires_python: '>=3.8' - kind: pypi name: torchvision version: 0.17.2 - url: https://files.pythonhosted.org/packages/c6/75/d869f600fc33df8b8ca99943e165a4ca23b73c68dc1942098fde0a6b46f3/torchvision-0.17.2-cp311-cp311-win_amd64.whl - sha256: 6835897df852fad1015e6a106c167c83848114cbcc7d86112384a973404e4431 + url: https://files.pythonhosted.org/packages/36/15/c48f74f8f8d382677ef016b65f09969028a1549b8a518c18894deb95b544/torchvision-0.17.2-cp311-cp311-macosx_11_0_arm64.whl + sha256: e031004a1bc432c980a7bd642f6c189a3efc316e423fc30b5569837166a4e28d requires_dist: - numpy - - torch ==2.2.2 - - pillow !=8.3.*, >=5.3.0 + - torch==2.2.2 + - pillow!=8.3.*,>=5.3.0 - scipy ; extra == 'scipy' requires_python: '>=3.8' - kind: pypi name: torchvision version: 0.17.2 - url: https://files.pythonhosted.org/packages/36/15/c48f74f8f8d382677ef016b65f09969028a1549b8a518c18894deb95b544/torchvision-0.17.2-cp311-cp311-macosx_11_0_arm64.whl - sha256: e031004a1bc432c980a7bd642f6c189a3efc316e423fc30b5569837166a4e28d + url: https://files.pythonhosted.org/packages/46/95/179dd1bf8fd6bd689f0907f4baed557d2b12d2cf3d7ed1a8ecefe0a63d83/torchvision-0.17.2-cp311-cp311-macosx_10_13_x86_64.whl + sha256: 9b83e55ee7d0a1704f52b9c0ac87388e7a6d1d98a6bde7b0b35f9ab54d7bda54 requires_dist: - numpy - - torch ==2.2.2 - - pillow !=8.3.*, >=5.3.0 + - torch==2.2.2 + - pillow!=8.3.*,>=5.3.0 - scipy ; extra == 'scipy' requires_python: '>=3.8' - kind: pypi @@ -26820,11 +26836,11 @@ packages: sha256: b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644 requires_dist: - colorama ; platform_system == 'Windows' - - pytest >=6 ; extra == 'dev' + - pytest>=6 ; extra == 'dev' - pytest-cov ; extra == 'dev' - pytest-timeout ; extra == 'dev' - pytest-xdist ; extra == 'dev' - - ipywidgets >=6 ; extra == 'notebook' + - ipywidgets>=6 ; extra == 'notebook' - slack-sdk ; extra == 'slack' - requests ; extra == 'telegram' requires_python: '>=3.7' @@ -26852,308 +26868,308 @@ packages: sha256: 71cb94301ec211a2e1d4b8c8d18dcfaa902dfa00a089dceca167a8aa265d6f2d requires_dist: - filelock - - huggingface-hub <1.0, >=0.19.3 - - numpy >=1.17 - - packaging >=20.0 - - pyyaml >=5.1 - - regex !=2019.12.17 + - huggingface-hub<1.0,>=0.19.3 + - numpy>=1.17 + - packaging>=20.0 + - pyyaml>=5.1 + - regex!=2019.12.17 - requests - - tokenizers <0.20, >=0.19 - - safetensors >=0.4.1 - - tqdm >=4.27 - - accelerate >=0.21.0 ; extra == 'accelerate' + - tokenizers<0.20,>=0.19 + - safetensors>=0.4.1 + - tqdm>=4.27 + - accelerate>=0.21.0 ; extra == 'accelerate' - diffusers ; extra == 'agents' - - accelerate >=0.21.0 ; extra == 'agents' - - datasets !=2.5.0 ; extra == 'agents' + - accelerate>=0.21.0 ; extra == 'agents' + - datasets!=2.5.0 ; extra == 'agents' - torch ; extra == 'agents' - - sentencepiece !=0.1.92, >=0.1.91 ; extra == 'agents' + - sentencepiece!=0.1.92,>=0.1.91 ; extra == 'agents' - opencv-python ; extra == 'agents' - - pillow <=15.0, >=10.0.1 ; extra == 'agents' - - tensorflow <2.16, >=2.6 ; extra == 'all' + - pillow<=15.0,>=10.0.1 ; extra == 'agents' + - tensorflow<2.16,>=2.6 ; extra == 'all' - onnxconverter-common ; extra == 'all' - tf2onnx ; extra == 'all' - - tensorflow-text <2.16 ; extra == 'all' - - keras-nlp >=0.3.1 ; extra == 'all' + - tensorflow-text<2.16 ; extra == 'all' + - keras-nlp>=0.3.1 ; extra == 'all' - torch ; extra == 'all' - - accelerate >=0.21.0 ; extra == 'all' - - jax <=0.4.13, >=0.4.1 ; extra == 'all' - - jaxlib <=0.4.13, >=0.4.1 ; extra == 'all' - - flax <=0.7.0, >=0.4.1 ; extra == 'all' - - optax <=0.1.4, >=0.0.8 ; extra == 'all' - - sentencepiece !=0.1.92, >=0.1.91 ; extra == 'all' + - accelerate>=0.21.0 ; extra == 'all' + - jax<=0.4.13,>=0.4.1 ; extra == 'all' + - jaxlib<=0.4.13,>=0.4.1 ; extra == 'all' + - flax<=0.7.0,>=0.4.1 ; extra == 'all' + - optax<=0.1.4,>=0.0.8 ; extra == 'all' + - sentencepiece!=0.1.92,>=0.1.91 ; extra == 'all' - protobuf ; extra == 'all' - - tokenizers <0.20, >=0.19 ; extra == 'all' + - tokenizers<0.20,>=0.19 ; extra == 'all' - torchaudio ; extra == 'all' - librosa ; extra == 'all' - - pyctcdecode >=0.4.0 ; extra == 'all' + - pyctcdecode>=0.4.0 ; extra == 'all' - phonemizer ; extra == 'all' - kenlm ; extra == 'all' - - pillow <=15.0, >=10.0.1 ; extra == 'all' + - pillow<=15.0,>=10.0.1 ; extra == 'all' - optuna ; extra == 'all' - - ray[tune] >=2.7.0 ; extra == 'all' + - ray[tune]>=2.7.0 ; extra == 'all' - sigopt ; extra == 'all' - timm ; extra == 'all' - torchvision ; extra == 'all' - - codecarbon ==1.2.0 ; extra == 'all' - - decord ==0.6.0 ; extra == 'all' - - av ==9.2.0 ; extra == 'all' + - codecarbon==1.2.0 ; extra == 'all' + - decord==0.6.0 ; extra == 'all' + - av==9.2.0 ; extra == 'all' - librosa ; extra == 'audio' - - pyctcdecode >=0.4.0 ; extra == 'audio' + - pyctcdecode>=0.4.0 ; extra == 'audio' - phonemizer ; extra == 'audio' - kenlm ; extra == 'audio' - - codecarbon ==1.2.0 ; extra == 'codecarbon' - - deepspeed >=0.9.3 ; extra == 'deepspeed' - - accelerate >=0.21.0 ; extra == 'deepspeed' - - deepspeed >=0.9.3 ; extra == 'deepspeed-testing' - - accelerate >=0.21.0 ; extra == 'deepspeed-testing' - - pytest <8.0.0, >=7.2.0 ; extra == 'deepspeed-testing' + - codecarbon==1.2.0 ; extra == 'codecarbon' + - deepspeed>=0.9.3 ; extra == 'deepspeed' + - accelerate>=0.21.0 ; extra == 'deepspeed' + - deepspeed>=0.9.3 ; extra == 'deepspeed-testing' + - accelerate>=0.21.0 ; extra == 'deepspeed-testing' + - pytest<8.0.0,>=7.2.0 ; extra == 'deepspeed-testing' - pytest-xdist ; extra == 'deepspeed-testing' - timeout-decorator ; extra == 'deepspeed-testing' - parameterized ; extra == 'deepspeed-testing' - psutil ; extra == 'deepspeed-testing' - - datasets !=2.5.0 ; extra == 'deepspeed-testing' - - dill <0.3.5 ; extra == 'deepspeed-testing' - - evaluate >=0.2.0 ; extra == 'deepspeed-testing' + - datasets!=2.5.0 ; extra == 'deepspeed-testing' + - dill<0.3.5 ; extra == 'deepspeed-testing' + - evaluate>=0.2.0 ; extra == 'deepspeed-testing' - pytest-timeout ; extra == 'deepspeed-testing' - - ruff ==0.1.5 ; extra == 'deepspeed-testing' - - sacrebleu <2.0.0, >=1.4.12 ; extra == 'deepspeed-testing' - - rouge-score !=0.0.7, !=0.0.8, !=0.1, !=0.1.1 ; extra == 'deepspeed-testing' + - ruff==0.1.5 ; extra == 'deepspeed-testing' + - sacrebleu<2.0.0,>=1.4.12 ; extra == 'deepspeed-testing' + - rouge-score!=0.0.7,!=0.0.8,!=0.1,!=0.1.1 ; extra == 'deepspeed-testing' - nltk ; extra == 'deepspeed-testing' - - gitpython <3.1.19 ; extra == 'deepspeed-testing' - - hf-doc-builder >=0.3.0 ; extra == 'deepspeed-testing' + - gitpython<3.1.19 ; extra == 'deepspeed-testing' + - hf-doc-builder>=0.3.0 ; extra == 'deepspeed-testing' - protobuf ; extra == 'deepspeed-testing' - sacremoses ; extra == 'deepspeed-testing' - rjieba ; extra == 'deepspeed-testing' - beautifulsoup4 ; extra == 'deepspeed-testing' - tensorboard ; extra == 'deepspeed-testing' - pydantic ; extra == 'deepspeed-testing' - - sentencepiece !=0.1.92, >=0.1.91 ; extra == 'deepspeed-testing' + - sentencepiece!=0.1.92,>=0.1.91 ; extra == 'deepspeed-testing' - faiss-cpu ; extra == 'deepspeed-testing' - - cookiecutter ==1.7.3 ; extra == 'deepspeed-testing' + - cookiecutter==1.7.3 ; extra == 'deepspeed-testing' - optuna ; extra == 'deepspeed-testing' - - tensorflow <2.16, >=2.6 ; extra == 'dev' + - tensorflow<2.16,>=2.6 ; extra == 'dev' - onnxconverter-common ; extra == 'dev' - tf2onnx ; extra == 'dev' - - tensorflow-text <2.16 ; extra == 'dev' - - keras-nlp >=0.3.1 ; extra == 'dev' + - tensorflow-text<2.16 ; extra == 'dev' + - keras-nlp>=0.3.1 ; extra == 'dev' - torch ; extra == 'dev' - - accelerate >=0.21.0 ; extra == 'dev' - - jax <=0.4.13, >=0.4.1 ; extra == 'dev' - - jaxlib <=0.4.13, >=0.4.1 ; extra == 'dev' - - flax <=0.7.0, >=0.4.1 ; extra == 'dev' - - optax <=0.1.4, >=0.0.8 ; extra == 'dev' - - sentencepiece !=0.1.92, >=0.1.91 ; extra == 'dev' + - accelerate>=0.21.0 ; extra == 'dev' + - jax<=0.4.13,>=0.4.1 ; extra == 'dev' + - jaxlib<=0.4.13,>=0.4.1 ; extra == 'dev' + - flax<=0.7.0,>=0.4.1 ; extra == 'dev' + - optax<=0.1.4,>=0.0.8 ; extra == 'dev' + - sentencepiece!=0.1.92,>=0.1.91 ; extra == 'dev' - protobuf ; extra == 'dev' - - tokenizers <0.20, >=0.19 ; extra == 'dev' + - tokenizers<0.20,>=0.19 ; extra == 'dev' - torchaudio ; extra == 'dev' - librosa ; extra == 'dev' - - pyctcdecode >=0.4.0 ; extra == 'dev' + - pyctcdecode>=0.4.0 ; extra == 'dev' - phonemizer ; extra == 'dev' - kenlm ; extra == 'dev' - - pillow <=15.0, >=10.0.1 ; extra == 'dev' + - pillow<=15.0,>=10.0.1 ; extra == 'dev' - optuna ; extra == 'dev' - - ray[tune] >=2.7.0 ; extra == 'dev' + - ray[tune]>=2.7.0 ; extra == 'dev' - sigopt ; extra == 'dev' - timm ; extra == 'dev' - torchvision ; extra == 'dev' - - codecarbon ==1.2.0 ; extra == 'dev' - - decord ==0.6.0 ; extra == 'dev' - - av ==9.2.0 ; extra == 'dev' - - pytest <8.0.0, >=7.2.0 ; extra == 'dev' + - codecarbon==1.2.0 ; extra == 'dev' + - decord==0.6.0 ; extra == 'dev' + - av==9.2.0 ; extra == 'dev' + - pytest<8.0.0,>=7.2.0 ; extra == 'dev' - pytest-xdist ; extra == 'dev' - timeout-decorator ; extra == 'dev' - parameterized ; extra == 'dev' - psutil ; extra == 'dev' - - datasets !=2.5.0 ; extra == 'dev' - - dill <0.3.5 ; extra == 'dev' - - evaluate >=0.2.0 ; extra == 'dev' + - datasets!=2.5.0 ; extra == 'dev' + - dill<0.3.5 ; extra == 'dev' + - evaluate>=0.2.0 ; extra == 'dev' - pytest-timeout ; extra == 'dev' - - ruff ==0.1.5 ; extra == 'dev' - - sacrebleu <2.0.0, >=1.4.12 ; extra == 'dev' - - rouge-score !=0.0.7, !=0.0.8, !=0.1, !=0.1.1 ; extra == 'dev' + - ruff==0.1.5 ; extra == 'dev' + - sacrebleu<2.0.0,>=1.4.12 ; extra == 'dev' + - rouge-score!=0.0.7,!=0.0.8,!=0.1,!=0.1.1 ; extra == 'dev' - nltk ; extra == 'dev' - - gitpython <3.1.19 ; extra == 'dev' - - hf-doc-builder >=0.3.0 ; extra == 'dev' + - gitpython<3.1.19 ; extra == 'dev' + - hf-doc-builder>=0.3.0 ; extra == 'dev' - sacremoses ; extra == 'dev' - rjieba ; extra == 'dev' - beautifulsoup4 ; extra == 'dev' - tensorboard ; extra == 'dev' - pydantic ; extra == 'dev' - faiss-cpu ; extra == 'dev' - - cookiecutter ==1.7.3 ; extra == 'dev' - - isort >=5.5.4 ; extra == 'dev' - - urllib3 <2.0.0 ; extra == 'dev' - - fugashi >=1.0 ; extra == 'dev' - - ipadic <2.0, >=1.0.0 ; extra == 'dev' - - unidic-lite >=1.0.7 ; extra == 'dev' - - unidic >=1.0.2 ; extra == 'dev' - - sudachipy >=0.6.6 ; extra == 'dev' - - sudachidict-core >=20220729 ; extra == 'dev' - - rhoknp <1.3.1, >=1.1.0 ; extra == 'dev' + - cookiecutter==1.7.3 ; extra == 'dev' + - isort>=5.5.4 ; extra == 'dev' + - urllib3<2.0.0 ; extra == 'dev' + - fugashi>=1.0 ; extra == 'dev' + - ipadic<2.0,>=1.0.0 ; extra == 'dev' + - unidic-lite>=1.0.7 ; extra == 'dev' + - unidic>=1.0.2 ; extra == 'dev' + - sudachipy>=0.6.6 ; extra == 'dev' + - sudachidict-core>=20220729 ; extra == 'dev' + - rhoknp<1.3.1,>=1.1.0 ; extra == 'dev' - hf-doc-builder ; extra == 'dev' - scikit-learn ; extra == 'dev' - - pytest <8.0.0, >=7.2.0 ; extra == 'dev-tensorflow' + - pytest<8.0.0,>=7.2.0 ; extra == 'dev-tensorflow' - pytest-xdist ; extra == 'dev-tensorflow' - timeout-decorator ; extra == 'dev-tensorflow' - parameterized ; extra == 'dev-tensorflow' - psutil ; extra == 'dev-tensorflow' - - datasets !=2.5.0 ; extra == 'dev-tensorflow' - - dill <0.3.5 ; extra == 'dev-tensorflow' - - evaluate >=0.2.0 ; extra == 'dev-tensorflow' + - datasets!=2.5.0 ; extra == 'dev-tensorflow' + - dill<0.3.5 ; extra == 'dev-tensorflow' + - evaluate>=0.2.0 ; extra == 'dev-tensorflow' - pytest-timeout ; extra == 'dev-tensorflow' - - ruff ==0.1.5 ; extra == 'dev-tensorflow' - - sacrebleu <2.0.0, >=1.4.12 ; extra == 'dev-tensorflow' - - rouge-score !=0.0.7, !=0.0.8, !=0.1, !=0.1.1 ; extra == 'dev-tensorflow' + - ruff==0.1.5 ; extra == 'dev-tensorflow' + - sacrebleu<2.0.0,>=1.4.12 ; extra == 'dev-tensorflow' + - rouge-score!=0.0.7,!=0.0.8,!=0.1,!=0.1.1 ; extra == 'dev-tensorflow' - nltk ; extra == 'dev-tensorflow' - - gitpython <3.1.19 ; extra == 'dev-tensorflow' - - hf-doc-builder >=0.3.0 ; extra == 'dev-tensorflow' + - gitpython<3.1.19 ; extra == 'dev-tensorflow' + - hf-doc-builder>=0.3.0 ; extra == 'dev-tensorflow' - protobuf ; extra == 'dev-tensorflow' - sacremoses ; extra == 'dev-tensorflow' - rjieba ; extra == 'dev-tensorflow' - beautifulsoup4 ; extra == 'dev-tensorflow' - tensorboard ; extra == 'dev-tensorflow' - pydantic ; extra == 'dev-tensorflow' - - sentencepiece !=0.1.92, >=0.1.91 ; extra == 'dev-tensorflow' + - sentencepiece!=0.1.92,>=0.1.91 ; extra == 'dev-tensorflow' - faiss-cpu ; extra == 'dev-tensorflow' - - cookiecutter ==1.7.3 ; extra == 'dev-tensorflow' - - tensorflow <2.16, >=2.6 ; extra == 'dev-tensorflow' + - cookiecutter==1.7.3 ; extra == 'dev-tensorflow' + - tensorflow<2.16,>=2.6 ; extra == 'dev-tensorflow' - onnxconverter-common ; extra == 'dev-tensorflow' - tf2onnx ; extra == 'dev-tensorflow' - - tensorflow-text <2.16 ; extra == 'dev-tensorflow' - - keras-nlp >=0.3.1 ; extra == 'dev-tensorflow' - - tokenizers <0.20, >=0.19 ; extra == 'dev-tensorflow' - - pillow <=15.0, >=10.0.1 ; extra == 'dev-tensorflow' - - isort >=5.5.4 ; extra == 'dev-tensorflow' - - urllib3 <2.0.0 ; extra == 'dev-tensorflow' + - tensorflow-text<2.16 ; extra == 'dev-tensorflow' + - keras-nlp>=0.3.1 ; extra == 'dev-tensorflow' + - tokenizers<0.20,>=0.19 ; extra == 'dev-tensorflow' + - pillow<=15.0,>=10.0.1 ; extra == 'dev-tensorflow' + - isort>=5.5.4 ; extra == 'dev-tensorflow' + - urllib3<2.0.0 ; extra == 'dev-tensorflow' - hf-doc-builder ; extra == 'dev-tensorflow' - scikit-learn ; extra == 'dev-tensorflow' - - onnxruntime >=1.4.0 ; extra == 'dev-tensorflow' - - onnxruntime-tools >=1.4.2 ; extra == 'dev-tensorflow' + - onnxruntime>=1.4.0 ; extra == 'dev-tensorflow' + - onnxruntime-tools>=1.4.2 ; extra == 'dev-tensorflow' - librosa ; extra == 'dev-tensorflow' - - pyctcdecode >=0.4.0 ; extra == 'dev-tensorflow' + - pyctcdecode>=0.4.0 ; extra == 'dev-tensorflow' - phonemizer ; extra == 'dev-tensorflow' - kenlm ; extra == 'dev-tensorflow' - - pytest <8.0.0, >=7.2.0 ; extra == 'dev-torch' + - pytest<8.0.0,>=7.2.0 ; extra == 'dev-torch' - pytest-xdist ; extra == 'dev-torch' - timeout-decorator ; extra == 'dev-torch' - parameterized ; extra == 'dev-torch' - psutil ; extra == 'dev-torch' - - datasets !=2.5.0 ; extra == 'dev-torch' - - dill <0.3.5 ; extra == 'dev-torch' - - evaluate >=0.2.0 ; extra == 'dev-torch' + - datasets!=2.5.0 ; extra == 'dev-torch' + - dill<0.3.5 ; extra == 'dev-torch' + - evaluate>=0.2.0 ; extra == 'dev-torch' - pytest-timeout ; extra == 'dev-torch' - - ruff ==0.1.5 ; extra == 'dev-torch' - - sacrebleu <2.0.0, >=1.4.12 ; extra == 'dev-torch' - - rouge-score !=0.0.7, !=0.0.8, !=0.1, !=0.1.1 ; extra == 'dev-torch' + - ruff==0.1.5 ; extra == 'dev-torch' + - sacrebleu<2.0.0,>=1.4.12 ; extra == 'dev-torch' + - rouge-score!=0.0.7,!=0.0.8,!=0.1,!=0.1.1 ; extra == 'dev-torch' - nltk ; extra == 'dev-torch' - - gitpython <3.1.19 ; extra == 'dev-torch' - - hf-doc-builder >=0.3.0 ; extra == 'dev-torch' + - gitpython<3.1.19 ; extra == 'dev-torch' + - hf-doc-builder>=0.3.0 ; extra == 'dev-torch' - protobuf ; extra == 'dev-torch' - sacremoses ; extra == 'dev-torch' - rjieba ; extra == 'dev-torch' - beautifulsoup4 ; extra == 'dev-torch' - tensorboard ; extra == 'dev-torch' - pydantic ; extra == 'dev-torch' - - sentencepiece !=0.1.92, >=0.1.91 ; extra == 'dev-torch' + - sentencepiece!=0.1.92,>=0.1.91 ; extra == 'dev-torch' - faiss-cpu ; extra == 'dev-torch' - - cookiecutter ==1.7.3 ; extra == 'dev-torch' + - cookiecutter==1.7.3 ; extra == 'dev-torch' - torch ; extra == 'dev-torch' - - accelerate >=0.21.0 ; extra == 'dev-torch' - - tokenizers <0.20, >=0.19 ; extra == 'dev-torch' + - accelerate>=0.21.0 ; extra == 'dev-torch' + - tokenizers<0.20,>=0.19 ; extra == 'dev-torch' - torchaudio ; extra == 'dev-torch' - librosa ; extra == 'dev-torch' - - pyctcdecode >=0.4.0 ; extra == 'dev-torch' + - pyctcdecode>=0.4.0 ; extra == 'dev-torch' - phonemizer ; extra == 'dev-torch' - kenlm ; extra == 'dev-torch' - - pillow <=15.0, >=10.0.1 ; extra == 'dev-torch' + - pillow<=15.0,>=10.0.1 ; extra == 'dev-torch' - optuna ; extra == 'dev-torch' - - ray[tune] >=2.7.0 ; extra == 'dev-torch' + - ray[tune]>=2.7.0 ; extra == 'dev-torch' - sigopt ; extra == 'dev-torch' - timm ; extra == 'dev-torch' - torchvision ; extra == 'dev-torch' - - codecarbon ==1.2.0 ; extra == 'dev-torch' - - isort >=5.5.4 ; extra == 'dev-torch' - - urllib3 <2.0.0 ; extra == 'dev-torch' - - fugashi >=1.0 ; extra == 'dev-torch' - - ipadic <2.0, >=1.0.0 ; extra == 'dev-torch' - - unidic-lite >=1.0.7 ; extra == 'dev-torch' - - unidic >=1.0.2 ; extra == 'dev-torch' - - sudachipy >=0.6.6 ; extra == 'dev-torch' - - sudachidict-core >=20220729 ; extra == 'dev-torch' - - rhoknp <1.3.1, >=1.1.0 ; extra == 'dev-torch' + - codecarbon==1.2.0 ; extra == 'dev-torch' + - isort>=5.5.4 ; extra == 'dev-torch' + - urllib3<2.0.0 ; extra == 'dev-torch' + - fugashi>=1.0 ; extra == 'dev-torch' + - ipadic<2.0,>=1.0.0 ; extra == 'dev-torch' + - unidic-lite>=1.0.7 ; extra == 'dev-torch' + - unidic>=1.0.2 ; extra == 'dev-torch' + - sudachipy>=0.6.6 ; extra == 'dev-torch' + - sudachidict-core>=20220729 ; extra == 'dev-torch' + - rhoknp<1.3.1,>=1.1.0 ; extra == 'dev-torch' - hf-doc-builder ; extra == 'dev-torch' - scikit-learn ; extra == 'dev-torch' - - onnxruntime >=1.4.0 ; extra == 'dev-torch' - - onnxruntime-tools >=1.4.2 ; extra == 'dev-torch' - - tensorflow <2.16, >=2.6 ; extra == 'docs' + - onnxruntime>=1.4.0 ; extra == 'dev-torch' + - onnxruntime-tools>=1.4.2 ; extra == 'dev-torch' + - tensorflow<2.16,>=2.6 ; extra == 'docs' - onnxconverter-common ; extra == 'docs' - tf2onnx ; extra == 'docs' - - tensorflow-text <2.16 ; extra == 'docs' - - keras-nlp >=0.3.1 ; extra == 'docs' + - tensorflow-text<2.16 ; extra == 'docs' + - keras-nlp>=0.3.1 ; extra == 'docs' - torch ; extra == 'docs' - - accelerate >=0.21.0 ; extra == 'docs' - - jax <=0.4.13, >=0.4.1 ; extra == 'docs' - - jaxlib <=0.4.13, >=0.4.1 ; extra == 'docs' - - flax <=0.7.0, >=0.4.1 ; extra == 'docs' - - optax <=0.1.4, >=0.0.8 ; extra == 'docs' - - sentencepiece !=0.1.92, >=0.1.91 ; extra == 'docs' + - accelerate>=0.21.0 ; extra == 'docs' + - jax<=0.4.13,>=0.4.1 ; extra == 'docs' + - jaxlib<=0.4.13,>=0.4.1 ; extra == 'docs' + - flax<=0.7.0,>=0.4.1 ; extra == 'docs' + - optax<=0.1.4,>=0.0.8 ; extra == 'docs' + - sentencepiece!=0.1.92,>=0.1.91 ; extra == 'docs' - protobuf ; extra == 'docs' - - tokenizers <0.20, >=0.19 ; extra == 'docs' + - tokenizers<0.20,>=0.19 ; extra == 'docs' - torchaudio ; extra == 'docs' - librosa ; extra == 'docs' - - pyctcdecode >=0.4.0 ; extra == 'docs' + - pyctcdecode>=0.4.0 ; extra == 'docs' - phonemizer ; extra == 'docs' - kenlm ; extra == 'docs' - - pillow <=15.0, >=10.0.1 ; extra == 'docs' + - pillow<=15.0,>=10.0.1 ; extra == 'docs' - optuna ; extra == 'docs' - - ray[tune] >=2.7.0 ; extra == 'docs' + - ray[tune]>=2.7.0 ; extra == 'docs' - sigopt ; extra == 'docs' - timm ; extra == 'docs' - torchvision ; extra == 'docs' - - codecarbon ==1.2.0 ; extra == 'docs' - - decord ==0.6.0 ; extra == 'docs' - - av ==9.2.0 ; extra == 'docs' + - codecarbon==1.2.0 ; extra == 'docs' + - decord==0.6.0 ; extra == 'docs' + - av==9.2.0 ; extra == 'docs' - hf-doc-builder ; extra == 'docs' - hf-doc-builder ; extra == 'docs_specific' - - jax <=0.4.13, >=0.4.1 ; extra == 'flax' - - jaxlib <=0.4.13, >=0.4.1 ; extra == 'flax' - - flax <=0.7.0, >=0.4.1 ; extra == 'flax' - - optax <=0.1.4, >=0.0.8 ; extra == 'flax' + - jax<=0.4.13,>=0.4.1 ; extra == 'flax' + - jaxlib<=0.4.13,>=0.4.1 ; extra == 'flax' + - flax<=0.7.0,>=0.4.1 ; extra == 'flax' + - optax<=0.1.4,>=0.0.8 ; extra == 'flax' - librosa ; extra == 'flax-speech' - - pyctcdecode >=0.4.0 ; extra == 'flax-speech' + - pyctcdecode>=0.4.0 ; extra == 'flax-speech' - phonemizer ; extra == 'flax-speech' - kenlm ; extra == 'flax-speech' - ftfy ; extra == 'ftfy' - optuna ; extra == 'integrations' - - ray[tune] >=2.7.0 ; extra == 'integrations' + - ray[tune]>=2.7.0 ; extra == 'integrations' - sigopt ; extra == 'integrations' - - fugashi >=1.0 ; extra == 'ja' - - ipadic <2.0, >=1.0.0 ; extra == 'ja' - - unidic-lite >=1.0.7 ; extra == 'ja' - - unidic >=1.0.2 ; extra == 'ja' - - sudachipy >=0.6.6 ; extra == 'ja' - - sudachidict-core >=20220729 ; extra == 'ja' - - rhoknp <1.3.1, >=1.1.0 ; extra == 'ja' - - cookiecutter ==1.7.3 ; extra == 'modelcreation' - - natten <0.15.0, >=0.14.6 ; extra == 'natten' + - fugashi>=1.0 ; extra == 'ja' + - ipadic<2.0,>=1.0.0 ; extra == 'ja' + - unidic-lite>=1.0.7 ; extra == 'ja' + - unidic>=1.0.2 ; extra == 'ja' + - sudachipy>=0.6.6 ; extra == 'ja' + - sudachidict-core>=20220729 ; extra == 'ja' + - rhoknp<1.3.1,>=1.1.0 ; extra == 'ja' + - cookiecutter==1.7.3 ; extra == 'modelcreation' + - natten<0.15.0,>=0.14.6 ; extra == 'natten' - onnxconverter-common ; extra == 'onnx' - tf2onnx ; extra == 'onnx' - - onnxruntime >=1.4.0 ; extra == 'onnx' - - onnxruntime-tools >=1.4.2 ; extra == 'onnx' - - onnxruntime >=1.4.0 ; extra == 'onnxruntime' - - onnxruntime-tools >=1.4.2 ; extra == 'onnxruntime' + - onnxruntime>=1.4.0 ; extra == 'onnx' + - onnxruntime-tools>=1.4.2 ; extra == 'onnx' + - onnxruntime>=1.4.0 ; extra == 'onnxruntime' + - onnxruntime-tools>=1.4.2 ; extra == 'onnxruntime' - optuna ; extra == 'optuna' - - datasets !=2.5.0 ; extra == 'quality' - - isort >=5.5.4 ; extra == 'quality' - - ruff ==0.1.5 ; extra == 'quality' - - gitpython <3.1.19 ; extra == 'quality' - - hf-doc-builder >=0.3.0 ; extra == 'quality' - - urllib3 <2.0.0 ; extra == 'quality' - - ray[tune] >=2.7.0 ; extra == 'ray' + - datasets!=2.5.0 ; extra == 'quality' + - isort>=5.5.4 ; extra == 'quality' + - ruff==0.1.5 ; extra == 'quality' + - gitpython<3.1.19 ; extra == 'quality' + - hf-doc-builder>=0.3.0 ; extra == 'quality' + - urllib3<2.0.0 ; extra == 'quality' + - ray[tune]>=2.7.0 ; extra == 'ray' - faiss-cpu ; extra == 'retrieval' - - datasets !=2.5.0 ; extra == 'retrieval' - - sagemaker >=2.31.0 ; extra == 'sagemaker' - - sentencepiece !=0.1.92, >=0.1.91 ; extra == 'sentencepiece' + - datasets!=2.5.0 ; extra == 'retrieval' + - sagemaker>=2.31.0 ; extra == 'sagemaker' + - sentencepiece!=0.1.92,>=0.1.91 ; extra == 'sentencepiece' - protobuf ; extra == 'sentencepiece' - pydantic ; extra == 'serving' - uvicorn ; extra == 'serving' @@ -27163,73 +27179,73 @@ packages: - scikit-learn ; extra == 'sklearn' - torchaudio ; extra == 'speech' - librosa ; extra == 'speech' - - pyctcdecode >=0.4.0 ; extra == 'speech' + - pyctcdecode>=0.4.0 ; extra == 'speech' - phonemizer ; extra == 'speech' - kenlm ; extra == 'speech' - - pytest <8.0.0, >=7.2.0 ; extra == 'testing' + - pytest<8.0.0,>=7.2.0 ; extra == 'testing' - pytest-xdist ; extra == 'testing' - timeout-decorator ; extra == 'testing' - parameterized ; extra == 'testing' - psutil ; extra == 'testing' - - datasets !=2.5.0 ; extra == 'testing' - - dill <0.3.5 ; extra == 'testing' - - evaluate >=0.2.0 ; extra == 'testing' + - datasets!=2.5.0 ; extra == 'testing' + - dill<0.3.5 ; extra == 'testing' + - evaluate>=0.2.0 ; extra == 'testing' - pytest-timeout ; extra == 'testing' - - ruff ==0.1.5 ; extra == 'testing' - - sacrebleu <2.0.0, >=1.4.12 ; extra == 'testing' - - rouge-score !=0.0.7, !=0.0.8, !=0.1, !=0.1.1 ; extra == 'testing' + - ruff==0.1.5 ; extra == 'testing' + - sacrebleu<2.0.0,>=1.4.12 ; extra == 'testing' + - rouge-score!=0.0.7,!=0.0.8,!=0.1,!=0.1.1 ; extra == 'testing' - nltk ; extra == 'testing' - - gitpython <3.1.19 ; extra == 'testing' - - hf-doc-builder >=0.3.0 ; extra == 'testing' + - gitpython<3.1.19 ; extra == 'testing' + - hf-doc-builder>=0.3.0 ; extra == 'testing' - protobuf ; extra == 'testing' - sacremoses ; extra == 'testing' - rjieba ; extra == 'testing' - beautifulsoup4 ; extra == 'testing' - tensorboard ; extra == 'testing' - pydantic ; extra == 'testing' - - sentencepiece !=0.1.92, >=0.1.91 ; extra == 'testing' + - sentencepiece!=0.1.92,>=0.1.91 ; extra == 'testing' - faiss-cpu ; extra == 'testing' - - cookiecutter ==1.7.3 ; extra == 'testing' - - tensorflow <2.16, >=2.6 ; extra == 'tf' + - cookiecutter==1.7.3 ; extra == 'testing' + - tensorflow<2.16,>=2.6 ; extra == 'tf' - onnxconverter-common ; extra == 'tf' - tf2onnx ; extra == 'tf' - - tensorflow-text <2.16 ; extra == 'tf' - - keras-nlp >=0.3.1 ; extra == 'tf' - - tensorflow-cpu <2.16, >=2.6 ; extra == 'tf-cpu' + - tensorflow-text<2.16 ; extra == 'tf' + - keras-nlp>=0.3.1 ; extra == 'tf' + - tensorflow-cpu<2.16,>=2.6 ; extra == 'tf-cpu' - onnxconverter-common ; extra == 'tf-cpu' - tf2onnx ; extra == 'tf-cpu' - - tensorflow-text <2.16 ; extra == 'tf-cpu' - - keras-nlp >=0.3.1 ; extra == 'tf-cpu' + - tensorflow-text<2.16 ; extra == 'tf-cpu' + - keras-nlp>=0.3.1 ; extra == 'tf-cpu' - librosa ; extra == 'tf-speech' - - pyctcdecode >=0.4.0 ; extra == 'tf-speech' + - pyctcdecode>=0.4.0 ; extra == 'tf-speech' - phonemizer ; extra == 'tf-speech' - kenlm ; extra == 'tf-speech' - timm ; extra == 'timm' - - tokenizers <0.20, >=0.19 ; extra == 'tokenizers' + - tokenizers<0.20,>=0.19 ; extra == 'tokenizers' - torch ; extra == 'torch' - - accelerate >=0.21.0 ; extra == 'torch' + - accelerate>=0.21.0 ; extra == 'torch' - torchaudio ; extra == 'torch-speech' - librosa ; extra == 'torch-speech' - - pyctcdecode >=0.4.0 ; extra == 'torch-speech' + - pyctcdecode>=0.4.0 ; extra == 'torch-speech' - phonemizer ; extra == 'torch-speech' - kenlm ; extra == 'torch-speech' - torchvision ; extra == 'torch-vision' - - pillow <=15.0, >=10.0.1 ; extra == 'torch-vision' + - pillow<=15.0,>=10.0.1 ; extra == 'torch-vision' - filelock ; extra == 'torchhub' - - huggingface-hub <1.0, >=0.19.3 ; extra == 'torchhub' + - huggingface-hub<1.0,>=0.19.3 ; extra == 'torchhub' - importlib-metadata ; extra == 'torchhub' - - numpy >=1.17 ; extra == 'torchhub' - - packaging >=20.0 ; extra == 'torchhub' + - numpy>=1.17 ; extra == 'torchhub' + - packaging>=20.0 ; extra == 'torchhub' - protobuf ; extra == 'torchhub' - - regex !=2019.12.17 ; extra == 'torchhub' + - regex!=2019.12.17 ; extra == 'torchhub' - requests ; extra == 'torchhub' - - sentencepiece !=0.1.92, >=0.1.91 ; extra == 'torchhub' + - sentencepiece!=0.1.92,>=0.1.91 ; extra == 'torchhub' - torch ; extra == 'torchhub' - - tokenizers <0.20, >=0.19 ; extra == 'torchhub' - - tqdm >=4.27 ; extra == 'torchhub' - - decord ==0.6.0 ; extra == 'video' - - av ==9.2.0 ; extra == 'video' - - pillow <=15.0, >=10.0.1 ; extra == 'vision' + - tokenizers<0.20,>=0.19 ; extra == 'torchhub' + - tqdm>=4.27 ; extra == 'torchhub' + - decord==0.6.0 ; extra == 'video' + - av==9.2.0 ; extra == 'video' + - pillow<=15.0,>=10.0.1 ; extra == 'vision' requires_python: '>=3.8.0' - kind: pypi name: trimesh @@ -27292,14 +27308,14 @@ packages: sha256: da58a152bddb62cafa9a857dd2bc1f886dbf9f9c90a2b5da82157cd2b34392b0 requires_dist: - filelock - - cmake >=3.20 ; extra == 'build' + - cmake>=3.20 ; extra == 'build' - lit ; extra == 'build' - autopep8 ; extra == 'tests' - flake8 ; extra == 'tests' - isort ; extra == 'tests' - numpy ; extra == 'tests' - pytest ; extra == 'tests' - - scipy >=1.7.1 ; extra == 'tests' + - scipy>=1.7.1 ; extra == 'tests' - torch ; extra == 'tests' - matplotlib ; extra == 'tutorials' - pandas ; extra == 'tutorials' @@ -27316,7 +27332,7 @@ packages: url: https://files.pythonhosted.org/packages/8b/ea/91b718b8c0b88e4f61cdd61357cc4a1f8767b32be691fb388299003a3ae3/types_requests-2.31.0.20240406-py3-none-any.whl sha256: 6216cdac377c6b9a040ac1c0404f7284bd13199c0e1bb235f4324627e8898cf5 requires_dist: - - urllib3 >=2 + - urllib3>=2 requires_python: '>=3.8' - kind: pypi name: typing-extensions @@ -27330,9 +27346,9 @@ packages: url: https://files.pythonhosted.org/packages/65/f3/107a22063bf27bdccf2024833d3445f4eea42b2e598abfbd46f6a63b6cb0/typing_inspect-0.9.0-py3-none-any.whl sha256: 9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f requires_dist: - - mypy-extensions >=0.3.0 - - typing-extensions >=3.7.4 - - typing >=3.7.4 ; python_version < '3.5' + - mypy-extensions>=0.3.0 + - typing-extensions>=3.7.4 + - typing>=3.7.4 ; python_version < '3.5' - kind: conda name: typing_extensions version: 4.8.0 @@ -27736,13 +27752,13 @@ packages: url: https://files.pythonhosted.org/packages/d1/1b/46802a050b1c55d10c4f59fc6afd2b45ac9b4f62b2e12092d3f599286f14/umap_learn-0.5.6-py3-none-any.whl sha256: 881cc0c2ee845b790bf0455aa1664f9f68b838d9d0fe12a1291b85c5a559c913 requires_dist: - - numpy >=1.17 - - scipy >=1.3.1 - - scikit-learn >=0.22 - - numba >=0.51.2 - - pynndescent >=0.5 + - numpy>=1.17 + - scipy>=1.3.1 + - scikit-learn>=0.22 + - numba>=0.51.2 + - pynndescent>=0.5 - tqdm - - tensorflow >=2.1 ; extra == 'parametric_umap' + - tensorflow>=2.1 ; extra == 'parametric_umap' - pandas ; extra == 'plot' - matplotlib ; extra == 'plot' - datashader ; extra == 'plot' @@ -27751,18 +27767,18 @@ packages: - colorcet ; extra == 'plot' - seaborn ; extra == 'plot' - scikit-image ; extra == 'plot' - - tbb >=2019.0 ; extra == 'tbb' + - tbb>=2019.0 ; extra == 'tbb' - kind: pypi name: urllib3 version: 2.2.1 url: https://files.pythonhosted.org/packages/a2/73/a68704750a7679d0b6d3ad7aa8d4da8e14e151ae82e6fee774e6e0d05ec8/urllib3-2.2.1-py3-none-any.whl sha256: 450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d requires_dist: - - brotli >=1.0.9 ; platform_python_implementation == 'CPython' and extra == 'brotli' - - brotlicffi >=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'brotli' - - h2 <5, >=4 ; extra == 'h2' - - pysocks !=1.5.7, <2.0, >=1.5.6 ; extra == 'socks' - - zstandard >=0.18.0 ; extra == 'zstd' + - brotli>=1.0.9 ; platform_python_implementation == 'CPython' and extra == 'brotli' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'brotli' + - h2<5,>=4 ; extra == 'h2' + - pysocks!=1.5.7,<2.0,>=1.5.6 ; extra == 'socks' + - zstandard>=0.18.0 ; extra == 'zstd' requires_python: '>=3.8' - kind: conda name: vc @@ -27842,29 +27858,29 @@ packages: url: https://files.pythonhosted.org/packages/ca/28/19728b052c52b588fa117e80561d4b6e872664f4df73628d58593218becd/virtualenv-20.26.1-py3-none-any.whl sha256: 7aa9982a728ae5892558bff6a2839c00b9ed145523ece2274fad6f414690ae75 requires_dist: - - distlib <1, >=0.3.7 - - filelock <4, >=3.12.2 - - importlib-metadata >=6.6 ; python_version < '3.8' - - platformdirs <5, >=3.9.1 - - furo >=2023.7.26 ; extra == 'docs' - - proselint >=0.13 ; extra == 'docs' - - sphinx !=7.3, >=7.1.2 ; extra == 'docs' - - sphinx-argparse >=0.4 ; extra == 'docs' - - sphinxcontrib-towncrier >=0.2.1a0 ; extra == 'docs' - - towncrier >=23.6 ; extra == 'docs' - - covdefaults >=2.3 ; extra == 'test' - - coverage-enable-subprocess >=1 ; extra == 'test' - - coverage >=7.2.7 ; extra == 'test' - - flaky >=3.7 ; extra == 'test' - - packaging >=23.1 ; extra == 'test' - - pytest-env >=0.8.2 ; extra == 'test' - - pytest-freezer >=0.4.8 ; platform_python_implementation == 'PyPy' and extra == 'test' - - pytest-mock >=3.11.1 ; extra == 'test' - - pytest-randomly >=3.12 ; extra == 'test' - - pytest-timeout >=2.1 ; extra == 'test' - - pytest >=7.4 ; extra == 'test' - - setuptools >=68 ; extra == 'test' - - time-machine >=2.10 ; platform_python_implementation == 'CPython' and extra == 'test' + - distlib<1,>=0.3.7 + - filelock<4,>=3.12.2 + - importlib-metadata>=6.6 ; python_version < '3.8' + - platformdirs<5,>=3.9.1 + - furo>=2023.7.26 ; extra == 'docs' + - proselint>=0.13 ; extra == 'docs' + - sphinx!=7.3,>=7.1.2 ; extra == 'docs' + - sphinx-argparse>=0.4 ; extra == 'docs' + - sphinxcontrib-towncrier>=0.2.1a0 ; extra == 'docs' + - towncrier>=23.6 ; extra == 'docs' + - covdefaults>=2.3 ; extra == 'test' + - coverage-enable-subprocess>=1 ; extra == 'test' + - coverage>=7.2.7 ; extra == 'test' + - flaky>=3.7 ; extra == 'test' + - packaging>=23.1 ; extra == 'test' + - pytest-env>=0.8.2 ; extra == 'test' + - pytest-freezer>=0.4.8 ; platform_python_implementation == 'PyPy' and extra == 'test' + - pytest-mock>=3.11.1 ; extra == 'test' + - pytest-randomly>=3.12 ; extra == 'test' + - pytest-timeout>=2.1 ; extra == 'test' + - pytest>=7.4 ; extra == 'test' + - setuptools>=68 ; extra == 'test' + - time-machine>=2.10 ; platform_python_implementation == 'CPython' and extra == 'test' requires_python: '>=3.7' - kind: conda name: vs2015_runtime @@ -27972,14 +27988,14 @@ packages: - kind: pypi name: wrapt version: 1.16.0 - url: https://files.pythonhosted.org/packages/0f/16/ea627d7817394db04518f62934a5de59874b587b792300991b3c347ff5e0/wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl - sha256: 75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d + url: https://files.pythonhosted.org/packages/fd/03/c188ac517f402775b90d6f312955a5e53b866c964b32119f2ed76315697e/wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl + sha256: 1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 requires_python: '>=3.6' - kind: pypi name: wrapt version: 1.16.0 - url: https://files.pythonhosted.org/packages/cf/c3/0084351951d9579ae83a3d9e38c140371e4c6b038136909235079f2e6e78/wrapt-1.16.0-cp311-cp311-win_amd64.whl - sha256: aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89 + url: https://files.pythonhosted.org/packages/7f/a7/f1212ba098f3de0fd244e2de0f8791ad2539c03bef6c05a9fcb03e45b089/wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl + sha256: a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389 requires_python: '>=3.6' - kind: pypi name: wrapt @@ -27990,14 +28006,14 @@ packages: - kind: pypi name: wrapt version: 1.16.0 - url: https://files.pythonhosted.org/packages/7f/a7/f1212ba098f3de0fd244e2de0f8791ad2539c03bef6c05a9fcb03e45b089/wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl - sha256: a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389 + url: https://files.pythonhosted.org/packages/0f/16/ea627d7817394db04518f62934a5de59874b587b792300991b3c347ff5e0/wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl + sha256: 75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d requires_python: '>=3.6' - kind: pypi name: wrapt version: 1.16.0 - url: https://files.pythonhosted.org/packages/fd/03/c188ac517f402775b90d6f312955a5e53b866c964b32119f2ed76315697e/wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl - sha256: 1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 + url: https://files.pythonhosted.org/packages/cf/c3/0084351951d9579ae83a3d9e38c140371e4c6b038136909235079f2e6e78/wrapt-1.16.0-cp311-cp311-win_amd64.whl + sha256: aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89 requires_python: '>=3.6' - kind: conda name: xz @@ -28169,37 +28185,37 @@ packages: url: https://files.pythonhosted.org/packages/d5/b5/70bb98ee38ce532ee29fab76fb668382291fe6e1aa69a8c1ac7e6bc108e7/yfinance-0.2.38-py2.py3-none-any.whl sha256: 07525cf84414272723a3e2b9d4c0a2898ddb60cc0828aa190de26664fac6f676 requires_dist: - - pandas >=1.3.0 - - numpy >=1.16.5 - - requests >=2.31 - - multitasking >=0.0.7 - - lxml >=4.9.1 - - appdirs >=1.4.4 - - pytz >=2022.5 - - frozendict >=2.3.4 - - peewee >=3.16.2 - - beautifulsoup4 >=4.11.1 - - html5lib >=1.1 - - requests-cache >=1.0 ; extra == 'nospam' - - requests-ratelimiter >=0.3.1 ; extra == 'nospam' - - scipy >=1.6.3 ; extra == 'repair' + - pandas>=1.3.0 + - numpy>=1.16.5 + - requests>=2.31 + - multitasking>=0.0.7 + - lxml>=4.9.1 + - appdirs>=1.4.4 + - pytz>=2022.5 + - frozendict>=2.3.4 + - peewee>=3.16.2 + - beautifulsoup4>=4.11.1 + - html5lib>=1.1 + - requests-cache>=1.0 ; extra == 'nospam' + - requests-ratelimiter>=0.3.1 ; extra == 'nospam' + - scipy>=1.6.3 ; extra == 'repair' - kind: pypi name: zipp version: 3.18.1 url: https://files.pythonhosted.org/packages/c2/0a/ba9d0ee9536d3ef73a3448e931776e658b36f128d344e175bc32b092a8bf/zipp-3.18.1-py3-none-any.whl sha256: 206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b requires_dist: - - sphinx >=3.5 ; extra == 'docs' - - jaraco-packaging >=9.3 ; extra == 'docs' - - rst-linker >=1.9 ; extra == 'docs' + - sphinx>=3.5 ; extra == 'docs' + - jaraco-packaging>=9.3 ; extra == 'docs' + - rst-linker>=1.9 ; extra == 'docs' - furo ; extra == 'docs' - sphinx-lint ; extra == 'docs' - - jaraco-tidelift >=1.4 ; extra == 'docs' - - pytest >=6 ; extra == 'testing' - - pytest-checkdocs >=2.4 ; extra == 'testing' + - jaraco-tidelift>=1.4 ; extra == 'docs' + - pytest>=6 ; extra == 'testing' + - pytest-checkdocs>=2.4 ; extra == 'testing' - pytest-cov ; extra == 'testing' - - pytest-enabler >=2.2 ; extra == 'testing' - - pytest-ruff >=0.2.1 ; extra == 'testing' + - pytest-enabler>=2.2 ; extra == 'testing' + - pytest-ruff>=0.2.1 ; extra == 'testing' - jaraco-itertools ; extra == 'testing' - jaraco-functools ; extra == 'testing' - more-itertools ; extra == 'testing' diff --git a/rerun_py/pyproject.toml b/rerun_py/pyproject.toml index b50b77daf7164..69336dd23cca6 100644 --- a/rerun_py/pyproject.toml +++ b/rerun_py/pyproject.toml @@ -15,7 +15,7 @@ dependencies = [ # Must match list in `.github/workflows/reusable_test_wheels.yml` "attrs>=23.1.0", "numpy>=1.23,<2", - "pillow", # Used for JPEG encoding + "pillow>=8.0.0", # Used for JPEG encoding. 8.0.0 added the `format` arguments to `Image.open` "pyarrow>=14.0.2", "typing_extensions>=4.5", # Used for PEP-702 deprecated decorator ] From cb35d38f1dcf4477865889f894042d38072571e2 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Wed, 15 May 2024 11:23:11 +0200 Subject: [PATCH 11/40] Fix python example links (#6331) ### What * Fixes problematic links mentioned in #6077 --- docs/content/getting-started/data-in/python.md | 2 +- docs/content/howto/ros2-nav-turtlebot.md | 2 +- docs/content/reference/sdk-operating-modes.md | 2 +- examples/cpp/external_data_loader/README.md | 2 +- examples/python/external_data_loader/README.md | 2 +- examples/rust/external_data_loader/README.md | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/content/getting-started/data-in/python.md b/docs/content/getting-started/data-in/python.md index 6387b5f918ade..77805a67b5191 100644 --- a/docs/content/getting-started/data-in/python.md +++ b/docs/content/getting-started/data-in/python.md @@ -14,7 +14,7 @@ In a few lines of code, we'll go from a blank sheet to something you don't see e This guide aims to go wide instead of deep. There are links to other doc pages where you can learn more about specific topics. -At any time, you can checkout the complete code listing for this tutorial [here](https://github.com/rerun-io/rerun/tree/latest/examples/python/dna/main.py) to better keep track of the overall picture. +At any time, you can checkout the complete code listing for this tutorial [here](https://github.com/rerun-io/rerun/tree/latest/examples/python/dna/dna.py?speculative-link) to better keep track of the overall picture. ## Prerequisites diff --git a/docs/content/howto/ros2-nav-turtlebot.md b/docs/content/howto/ros2-nav-turtlebot.md index a70ec8f2f77e2..a58bfcf9e2c57 100644 --- a/docs/content/howto/ros2-nav-turtlebot.md +++ b/docs/content/howto/ros2-nav-turtlebot.md @@ -124,7 +124,7 @@ If you are familiar with the turtlebot nav example and rviz, this view will like ## Code explanation -It may be helpful to open [rerun/examples/python/ros_node/main.py](https://github.com/rerun-io/rerun/blob/main/examples/python/ros_node/main.py) +It may be helpful to open [rerun/examples/python/ros_node/main.py](https://github.com/rerun-io/rerun/blob/latest/examples/python/ros_node/main.py) to follow along. Outside of TF, the node is mostly stateless. At a very high level, for each ROS message we are interested in, we create a diff --git a/docs/content/reference/sdk-operating-modes.md b/docs/content/reference/sdk-operating-modes.md index 72ebf64199470..869f6d4613fb6 100644 --- a/docs/content/reference/sdk-operating-modes.md +++ b/docs/content/reference/sdk-operating-modes.md @@ -90,7 +90,7 @@ Check out our [dedicated example](https://github.com/rerun-io/rerun/tree/latest/ Use [`rr.stdout`](https://ref.rerun.io/docs/python/stable/common/initialization_functions/#rerun.stdout). -Check out our [dedicated example](https://github.com/rerun-io/rerun/tree/latest/examples/python/stdio/main.py). +Check out our [dedicated example](https://github.com/rerun-io/rerun/tree/latest/examples/python/stdio/stdio.py?speculative-link). #### Rust diff --git a/examples/cpp/external_data_loader/README.md b/examples/cpp/external_data_loader/README.md index 00b1be4ed2837..5a202d8e71565 100644 --- a/examples/cpp/external_data_loader/README.md +++ b/examples/cpp/external_data_loader/README.md @@ -1,6 +1,6 @@ --- title: External data-loader example -python: https://github.com/rerun-io/rerun/tree/latest/examples/python/external_data_loader/main.py +python: https://github.com/rerun-io/rerun/tree/latest/examples/python/external_data_loader/rerun-loader-python-file.py?speculative-link rust: https://github.com/rerun-io/rerun/tree/latest/examples/rust/external_data_loader/src/main.rs cpp: https://github.com/rerun-io/rerun/tree/latest/examples/cpp/external_data_loader/main.cpp thumbnail: https://static.rerun.io/external_data_loader_cpp/83cd3c2a322911cf597cf74aeda01c8fe83e275f/480w.png diff --git a/examples/python/external_data_loader/README.md b/examples/python/external_data_loader/README.md index 798ef3f4eed28..5d7919dbf5ffd 100644 --- a/examples/python/external_data_loader/README.md +++ b/examples/python/external_data_loader/README.md @@ -1,6 +1,6 @@ --- title: External data-loader example -python: https://github.com/rerun-io/rerun/tree/latest/examples/python/external_data_loader/main.py +python: https://github.com/rerun-io/rerun/tree/latest/examples/python/external_data_loader/rerun-loader-python-file.py?speculative-link rust: https://github.com/rerun-io/rerun/tree/latest/examples/rust/external_data_loader/src/main.rs cpp: https://github.com/rerun-io/rerun/tree/latest/examples/cpp/external_data_loader/main.cpp thumbnail: https://static.rerun.io/external_data_loader_py/6c5609f5dd7d1de373c81babe19221b72d616da3/480w.png diff --git a/examples/rust/external_data_loader/README.md b/examples/rust/external_data_loader/README.md index 2f407b1dfa777..79215fec6a202 100644 --- a/examples/rust/external_data_loader/README.md +++ b/examples/rust/external_data_loader/README.md @@ -1,6 +1,6 @@ --- title: External data-loader example -python: https://github.com/rerun-io/rerun/tree/latest/examples/python/external_data_loader/main.py +python: https://github.com/rerun-io/rerun/tree/latest/examples/python/external_data_loader/rerun-loader-python-file.py?speculative-link rust: https://github.com/rerun-io/rerun/tree/latest/examples/rust/external_data_loader/src/main.rs cpp: https://github.com/rerun-io/rerun/tree/latest/examples/cpp/external_data_loader/main.cpp thumbnail: https://static.rerun.io/external_data_loader_rs/74eecea3b16fee7fab01045e3bfdd90ba6c59bc9/480w.png From a869562ad7f09a9f2240cc93a3c30289fcf069d8 Mon Sep 17 00:00:00 2001 From: Jeremy Leibs Date: Wed, 15 May 2024 16:04:07 +0200 Subject: [PATCH 12/40] Make it possible to open http-streamed RRDs in follow mode via JS API. (#6326) ### What - Resolves: https://github.com/rerun-io/rerun/issues/6243 In the context of the Gradio integration, although we are streaming over http, from the perspective of system operation it feels more like a websocket. In many situations we want new data to update immediately once computation is done, rather than playing over time abstract time domain. Eventually we would like to control all of this behavior through blueprint, but moving TimeControls to blueprint is a lot more work. We already use the SmartChannelSource to make the determination of follow mode, so with a little bit of additional plumbing, it's possible for us to indicate this from the js API. This is a pretty advanced edge-case and so I haven't exposed it to the other mechanism through which an http source might be added. I assume this will eventually be removed again once we have TimeControls available via blueprint. ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6326?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6326?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6326) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- crates/re_data_source/src/data_source.rs | 24 +++++++++++++------ .../src/stream_rrd_from_http.rs | 11 ++++++++- crates/re_smart_channel/src/lib.rs | 6 +++-- crates/re_smart_channel/src/receive_set.rs | 2 +- crates/re_viewer/src/app.rs | 2 +- crates/re_viewer/src/app_state.rs | 5 ++-- crates/re_viewer/src/ui/recordings_panel.rs | 2 +- crates/re_viewer/src/ui/top_panel.rs | 2 +- .../src/ui/welcome_screen/example_section.rs | 6 ++++- crates/re_viewer/src/web.rs | 18 +++++++++++--- crates/re_viewer/src/web_tools.rs | 7 +++++- crates/re_viewer_context/src/store_hub.rs | 2 +- rerun_js/web-viewer/index.js | 7 ++++-- 13 files changed, 70 insertions(+), 24 deletions(-) diff --git a/crates/re_data_source/src/data_source.rs b/crates/re_data_source/src/data_source.rs index 9f3d537ecb5d9..efc671b5d0e3f 100644 --- a/crates/re_data_source/src/data_source.rs +++ b/crates/re_data_source/src/data_source.rs @@ -11,8 +11,10 @@ use anyhow::Context as _; pub enum DataSource { /// A remote RRD file, served over http. /// + /// If `follow` is `true`, the viewer will open the stream in `Following` mode rather than `Playing` mode. + /// /// Could be either an `.rrd` recording or a `.rbl` blueprint. - RrdHttpUrl(String), + RrdHttpUrl { url: String, follow: bool }, /// A path to a local file. #[cfg(not(target_arch = "wasm32"))] @@ -90,7 +92,10 @@ impl DataSource { || uri.starts_with("https://") || (uri.starts_with("www.") && (uri.ends_with(".rrd") || uri.ends_with(".rbl"))) { - DataSource::RrdHttpUrl(uri) + DataSource::RrdHttpUrl { + url: uri, + follow: false, + } } else if uri.starts_with("ws://") || uri.starts_with("wss://") { DataSource::WebSocketAddr(uri) @@ -98,7 +103,10 @@ impl DataSource { } else if looks_like_a_file_path(&uri) { DataSource::FilePath(file_source, path) } else if uri.ends_with(".rrd") || uri.ends_with(".rbl") { - DataSource::RrdHttpUrl(uri) + DataSource::RrdHttpUrl { + url: uri, + follow: false, + } } else { // If this is sometyhing like `foo.com` we can't know what it is until we connect to it. // We could/should connect and see what it is, but for now we just take a wild guess instead: @@ -112,7 +120,7 @@ impl DataSource { pub fn file_name(&self) -> Option { match self { - DataSource::RrdHttpUrl(url) => url.split('/').last().map(|r| r.to_owned()), + DataSource::RrdHttpUrl { url, .. } => url.split('/').last().map(|r| r.to_owned()), #[cfg(not(target_arch = "wasm32"))] DataSource::FilePath(_, path) => { path.file_name().map(|s| s.to_string_lossy().to_string()) @@ -140,8 +148,10 @@ impl DataSource { ) -> anyhow::Result> { re_tracing::profile_function!(); match self { - DataSource::RrdHttpUrl(url) => Ok( - re_log_encoding::stream_rrd_from_http::stream_rrd_from_http_to_channel(url, on_msg), + DataSource::RrdHttpUrl { url, follow } => Ok( + re_log_encoding::stream_rrd_from_http::stream_rrd_from_http_to_channel( + url, follow, on_msg, + ), ), #[cfg(not(target_arch = "wasm32"))] @@ -256,7 +266,7 @@ fn test_data_source_from_uri() { assert!( matches!( DataSource::from_uri(file_source, uri.to_owned()), - DataSource::RrdHttpUrl(_) + DataSource::RrdHttpUrl { .. } ), "Expected {uri:?} to be categorized as RrdHttpUrl" ); diff --git a/crates/re_log_encoding/src/stream_rrd_from_http.rs b/crates/re_log_encoding/src/stream_rrd_from_http.rs index bf9be45a0cf08..25170a58ecfc7 100644 --- a/crates/re_log_encoding/src/stream_rrd_from_http.rs +++ b/crates/re_log_encoding/src/stream_rrd_from_http.rs @@ -5,14 +5,23 @@ use std::sync::Arc; use re_log::ResultExt as _; use re_log_types::LogMsg; +/// Stream an rrd file from a HTTP server. +/// +/// If `follow_if_http` is `true`, and the url is an HTTP source, the viewer will open the stream +/// in `Following` mode rather than `Playing` mode. +/// /// `on_msg` can be used to wake up the UI thread on Wasm. pub fn stream_rrd_from_http_to_channel( url: String, + follow: bool, on_msg: Option>, ) -> re_smart_channel::Receiver { let (tx, rx) = re_smart_channel::smart_channel( re_smart_channel::SmartMessageSource::RrdHttpStream { url: url.clone() }, - re_smart_channel::SmartChannelSource::RrdHttpStream { url: url.clone() }, + re_smart_channel::SmartChannelSource::RrdHttpStream { + url: url.clone(), + follow, + }, ); stream_rrd_from_http( url.clone(), diff --git a/crates/re_smart_channel/src/lib.rs b/crates/re_smart_channel/src/lib.rs index 46137ca5f185c..1fcb6b70f8500 100644 --- a/crates/re_smart_channel/src/lib.rs +++ b/crates/re_smart_channel/src/lib.rs @@ -25,7 +25,9 @@ pub enum SmartChannelSource { File(std::path::PathBuf), /// The channel was created in the context of loading an `.rrd` file over http. - RrdHttpStream { url: String }, + /// + /// The `follow` flag indicates whether the viewer should open the stream in `Following` mode rather than `Playing` mode. + RrdHttpStream { url: String, follow: bool }, /// The channel was created in the context of loading an `.rrd` file from a `postMessage` /// js event. @@ -66,7 +68,7 @@ impl std::fmt::Display for SmartChannelSource { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Self::File(path) => path.display().fmt(f), - Self::RrdHttpStream { url } => url.fmt(f), + Self::RrdHttpStream { url, follow: _ } => url.fmt(f), Self::RrdWebEventListener => "Web event listener".fmt(f), Self::JsChannel { channel_name } => write!(f, "Javascript channel: {channel_name}"), Self::Sdk => "SDK".fmt(f), diff --git a/crates/re_smart_channel/src/receive_set.rs b/crates/re_smart_channel/src/receive_set.rs index 1a9ecc6f0c91f..91123cdc17a4d 100644 --- a/crates/re_smart_channel/src/receive_set.rs +++ b/crates/re_smart_channel/src/receive_set.rs @@ -52,7 +52,7 @@ impl ReceiveSet { // retain only sources which: // - aren't network sources // - don't point at the given `uri` - SmartChannelSource::RrdHttpStream { url } => url != uri, + SmartChannelSource::RrdHttpStream { url, .. } => url != uri, SmartChannelSource::WsClient { ws_server_url } => ws_server_url != uri, _ => true, }); diff --git a/crates/re_viewer/src/app.rs b/crates/re_viewer/src/app.rs index 8773cacf01e0f..62d4ad8c42259 100644 --- a/crates/re_viewer/src/app.rs +++ b/crates/re_viewer/src/app.rs @@ -793,7 +793,7 @@ impl App { .map(|ctx| ctx.recording) .and_then(|rec| rec.data_source.as_ref()) { - Some(SmartChannelSource::RrdHttpStream { url }) => format!("{href}?url={url}"), + Some(SmartChannelSource::RrdHttpStream { url, .. }) => format!("{href}?url={url}"), _ => href, }; diff --git a/crates/re_viewer/src/app_state.rs b/crates/re_viewer/src/app_state.rs index 700f51113bc8d..d43f6fdbf0867 100644 --- a/crates/re_viewer/src/app_state.rs +++ b/crates/re_viewer/src/app_state.rs @@ -510,11 +510,12 @@ fn recording_config_entry<'cfgs>( // Play files from the start by default - it feels nice and alive. // We assume the `RrdHttpStream` is a done recording. re_smart_channel::SmartChannelSource::File(_) - | re_smart_channel::SmartChannelSource::RrdHttpStream { .. } + | re_smart_channel::SmartChannelSource::RrdHttpStream { follow: false, .. } | re_smart_channel::SmartChannelSource::RrdWebEventListener => PlayState::Playing, // Live data - follow it! - re_smart_channel::SmartChannelSource::Sdk + re_smart_channel::SmartChannelSource::RrdHttpStream { follow: true, .. } + | re_smart_channel::SmartChannelSource::Sdk | re_smart_channel::SmartChannelSource::WsClient { .. } | re_smart_channel::SmartChannelSource::TcpServer { .. } | re_smart_channel::SmartChannelSource::Stdin diff --git a/crates/re_viewer/src/ui/recordings_panel.rs b/crates/re_viewer/src/ui/recordings_panel.rs index 26b3856519af3..bf1ec190d296b 100644 --- a/crates/re_viewer/src/ui/recordings_panel.rs +++ b/crates/re_viewer/src/ui/recordings_panel.rs @@ -59,7 +59,7 @@ fn loading_receivers_ui(ctx: &ViewerContext<'_>, rx: &ReceiveSet, ui: &m let string = match source.as_ref() { // We only show things we know are very-soon-to-be recordings: SmartChannelSource::File(path) => format!("Loading {}…", path.display()), - SmartChannelSource::RrdHttpStream { url } => format!("Loading {url}…"), + SmartChannelSource::RrdHttpStream { url, .. } => format!("Loading {url}…"), SmartChannelSource::RrdWebEventListener | SmartChannelSource::JsChannel { .. } diff --git a/crates/re_viewer/src/ui/top_panel.rs b/crates/re_viewer/src/ui/top_panel.rs index 95f12bb590421..5744b7cec6540 100644 --- a/crates/re_viewer/src/ui/top_panel.rs +++ b/crates/re_viewer/src/ui/top_panel.rs @@ -205,7 +205,7 @@ fn connection_status_ui(ui: &mut egui::Ui, rx: &ReceiveSet format!("Loading {}…", path.display()) } re_smart_channel::SmartChannelSource::Stdin => "Loading stdin…".to_owned(), - re_smart_channel::SmartChannelSource::RrdHttpStream { url } => { + re_smart_channel::SmartChannelSource::RrdHttpStream { url, .. } => { format!("Loading {url}…") } re_smart_channel::SmartChannelSource::RrdWebEventListener diff --git a/crates/re_viewer/src/ui/welcome_screen/example_section.rs b/crates/re_viewer/src/ui/welcome_screen/example_section.rs index dca00b3e4bd2a..5a36a66e50388 100644 --- a/crates/re_viewer/src/ui/welcome_screen/example_section.rs +++ b/crates/re_viewer/src/ui/welcome_screen/example_section.rs @@ -459,12 +459,16 @@ fn open_example_url( } } - let data_source = re_data_source::DataSource::RrdHttpUrl(rrd_url.to_owned()); + let data_source = re_data_source::DataSource::RrdHttpUrl { + url: rrd_url.to_owned(), + follow: false, + }; // If the user re-download an already open recording, clear it out first command_sender.send_system(SystemCommand::ClearSourceAndItsStores( re_smart_channel::SmartChannelSource::RrdHttpStream { url: rrd_url.to_owned(), + follow: false, }, )); diff --git a/crates/re_viewer/src/web.rs b/crates/re_viewer/src/web.rs index cc1de611a7491..bd6512210b191 100644 --- a/crates/re_viewer/src/web.rs +++ b/crates/re_viewer/src/web.rs @@ -100,12 +100,21 @@ impl WebHandle { self.runner.panic_summary().map(|s| s.callstack()) } + /// Add a new receiver streaming data from the given url. + /// + /// If `follow_if_http` is `true`, and the url is an HTTP source, the viewer will open the stream + /// in `Following` mode rather than `Playing` mode. + /// + /// Websocket streams are always opened in `Following` mode. + /// + /// It is an error to open a channel twice with the same id. #[wasm_bindgen] - pub fn add_receiver(&self, url: &str) { + pub fn add_receiver(&self, url: &str, follow_if_http: Option) { let Some(mut app) = self.runner.app_mut::() else { return; }; - let rx = url_to_receiver(app.re_ui.egui_ctx.clone(), url); + let follow_if_http = follow_if_http.unwrap_or(false); + let rx = url_to_receiver(app.re_ui.egui_ctx.clone(), follow_if_http, url); if let Some(rx) = rx.ok_or_log_error() { app.add_receiver(rx); } @@ -252,7 +261,10 @@ fn create_app( } if let Some(url) = url { - if let Some(receiver) = url_to_receiver(cc.egui_ctx.clone(), url).ok_or_log_error() { + let follow_if_http = false; + if let Some(receiver) = + url_to_receiver(cc.egui_ctx.clone(), follow_if_http, url).ok_or_log_error() + { app.add_receiver(receiver); } } else { diff --git a/crates/re_viewer/src/web_tools.rs b/crates/re_viewer/src/web_tools.rs index 6be84efc27d7c..fc64730cb079e 100644 --- a/crates/re_viewer/src/web_tools.rs +++ b/crates/re_viewer/src/web_tools.rs @@ -144,8 +144,11 @@ pub fn translate_query_into_commands(egui_ctx: &egui::Context, command_sender: & .flatten() .collect(); if !urls.is_empty() { + let follow_if_http = false; for url in urls { - if let Some(receiver) = url_to_receiver(egui_ctx.clone(), url).ok_or_log_error() { + if let Some(receiver) = + url_to_receiver(egui_ctx.clone(), follow_if_http, url).ok_or_log_error() + { // We may be here because the user clicked Back/Forward in the browser while trying // out examples. If we re-download the same file we should clear out the old data first. command_sender.send_system(SystemCommand::ClearSourceAndItsStores( @@ -197,6 +200,7 @@ impl EndpointCategory { /// Start receiving from the given url. pub fn url_to_receiver( egui_ctx: egui::Context, + follow_if_http: bool, url: &str, ) -> anyhow::Result> { let ui_waker = Box::new(move || { @@ -208,6 +212,7 @@ pub fn url_to_receiver( EndpointCategory::HttpRrd(url) => Ok( re_log_encoding::stream_rrd_from_http::stream_rrd_from_http_to_channel( url, + follow_if_http, Some(ui_waker), ), ), diff --git a/crates/re_viewer_context/src/store_hub.rs b/crates/re_viewer_context/src/store_hub.rs index 6b8f824e76f3f..3227e95e6ff26 100644 --- a/crates/re_viewer_context/src/store_hub.rs +++ b/crates/re_viewer_context/src/store_hub.rs @@ -605,7 +605,7 @@ impl StoreHub { // - aren't network sources // - don't point at the given `uri` match data_source { - re_smart_channel::SmartChannelSource::RrdHttpStream { url } => url != uri, + re_smart_channel::SmartChannelSource::RrdHttpStream { url, .. } => url != uri, re_smart_channel::SmartChannelSource::WsClient { ws_server_url } => { ws_server_url != uri } diff --git a/rerun_js/web-viewer/index.js b/rerun_js/web-viewer/index.js index 5681592e597e7..95187fa58e7a7 100644 --- a/rerun_js/web-viewer/index.js +++ b/rerun_js/web-viewer/index.js @@ -88,14 +88,17 @@ export class WebViewer { * @see {WebViewer.start} * * @param {string | string[]} rrd URLs to `.rrd` files or WebSocket connections to our SDK. + * @param {{ follow_if_http?: boolean }} options + * - follow_if_http: Whether Rerun should open the resource in "Following" mode when streaming + * from an HTTP url. Defaults to `false`. Ignored for non-HTTP URLs. */ - open(rrd) { + open(rrd, options = {}) { if (!this.#handle) { throw new Error(`attempted to open \`${rrd}\` in a stopped viewer`); } const urls = Array.isArray(rrd) ? rrd : [rrd]; for (const url of urls) { - this.#handle.add_receiver(url); + this.#handle.add_receiver(url, options.follow_if_http); if (this.#handle.has_panicked()) { throw new Error(`Web viewer crashed: ${this.#handle.panic_message()}`); } From 037697ed6d5edea3ca588680288988bbe0eafd55 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Wed, 15 May 2024 16:08:57 +0200 Subject: [PATCH 13/40] Make sure all log messages are sent when using `.serve()` (#6335) ### What * Closes https://github.com/rerun-io/rerun/issues/6286 See commit messages for details ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6335?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6335?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6335) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- crates/re_sdk/src/web_viewer.rs | 65 ++++++++++++++++++-------- crates/re_smart_channel/src/lib.rs | 26 ++++++++--- crates/re_smart_channel/src/sender.rs | 21 ++++++++- crates/re_viewer/src/app.rs | 6 +++ crates/re_web_viewer_server/src/lib.rs | 23 ++++++--- crates/re_ws_comms/src/server.rs | 32 ++++++++++++- crates/rerun/src/run.rs | 5 ++ pixi.toml | 2 +- rerun_py/Cargo.toml | 8 ++-- 9 files changed, 147 insertions(+), 41 deletions(-) diff --git a/crates/re_sdk/src/web_viewer.rs b/crates/re_sdk/src/web_viewer.rs index d6d32053df624..0905d818b878d 100644 --- a/crates/re_sdk/src/web_viewer.rs +++ b/crates/re_sdk/src/web_viewer.rs @@ -1,13 +1,15 @@ use re_log_types::LogMsg; -use re_web_viewer_server::{WebViewerServer, WebViewerServerPort}; +use re_web_viewer_server::{WebViewerServer, WebViewerServerError, WebViewerServerPort}; use re_ws_comms::{RerunServer, RerunServerPort}; +// ---------------------------------------------------------------------------- + /// Failure to host a web viewer and/or Rerun server. #[derive(thiserror::Error, Debug)] pub enum WebViewerSinkError { /// Failure to host the web viewer. #[error(transparent)] - WebViewerServer(#[from] re_web_viewer_server::WebViewerServerError), + WebViewerServer(#[from] WebViewerServerError), /// Failure to host the Rerun WebSocket server. #[error(transparent)] @@ -16,13 +18,15 @@ pub enum WebViewerSinkError { /// A [`crate::sink::LogSink`] tied to a hosted Rerun web viewer. This internally stores two servers: /// * A [`re_ws_comms::RerunServer`] to relay messages from the sink to a websocket connection -/// * A [`re_web_viewer_server::WebViewerServer`] to serve the Wasm+HTML +/// * A [`WebViewerServer`] to serve the Wasm+HTML struct WebViewerSink { + open_browser: bool, + /// Sender to send messages to the [`re_ws_comms::RerunServer`] sender: re_smart_channel::Sender, /// Rerun websocket server. - _rerun_server: RerunServer, + rerun_server: RerunServer, /// The http server serving wasm & html. _webviewer_server: WebViewerServer, @@ -61,14 +65,48 @@ impl WebViewerSink { } Ok(Self { + open_browser, sender: rerun_tx, - _rerun_server: rerun_server, + rerun_server, _webviewer_server: webviewer_server, }) } } -/// Helper to spawn an instance of the [`re_web_viewer_server::WebViewerServer`]. +impl crate::sink::LogSink for WebViewerSink { + fn send(&self, msg: LogMsg) { + if let Err(err) = self.sender.send(msg) { + re_log::error_once!("Failed to send log message to web server: {err}"); + } + } + + #[inline] + fn flush_blocking(&self) { + if let Err(err) = self.sender.flush_blocking() { + re_log::error_once!("Failed to flush: {err}"); + } + } +} + +impl Drop for WebViewerSink { + fn drop(&mut self) { + if self.open_browser && self.rerun_server.num_accepted_clients() == 0 { + // For small scripts that execute fast we run the risk of finishing + // before the browser has a chance to connect. + // Let's give it a little more time: + re_log::info!("Sleeping a short while to give the browser time to connect…"); + std::thread::sleep(std::time::Duration::from_millis(1000)); + } + + if self.rerun_server.num_accepted_clients() == 0 { + re_log::info!("Shutting down without any clients ever having connected. Consider sleeping to give them more time to connect"); + } + } +} + +// ---------------------------------------------------------------------------- + +/// Helper to spawn an instance of the [`WebViewerServer`]. /// This serves the HTTP+Wasm+JS files that make up the web-viewer. /// /// Optionally opens a browser with the web-viewer and connects to the provided `target_url`. @@ -82,8 +120,8 @@ pub fn host_web_viewer( force_wgpu_backend: Option, open_browser: bool, source_url: &str, -) -> anyhow::Result { - let web_server = re_web_viewer_server::WebViewerServer::new(bind_ip, web_port)?; +) -> anyhow::Result { + let web_server = WebViewerServer::new(bind_ip, web_port)?; let http_web_viewer_url = web_server.server_url(); let mut viewer_url = format!("{http_web_viewer_url}?url={source_url}"); @@ -99,17 +137,6 @@ pub fn host_web_viewer( Ok(web_server) } -impl crate::sink::LogSink for WebViewerSink { - fn send(&self, msg: LogMsg) { - if let Err(err) = self.sender.send(msg) { - re_log::error_once!("Failed to send log message to web server: {err}"); - } - } - - #[inline] - fn flush_blocking(&self) {} -} - // ---------------------------------------------------------------------------- /// Serve log-data over WebSockets and serve a Rerun web viewer over HTTP. diff --git a/crates/re_smart_channel/src/lib.rs b/crates/re_smart_channel/src/lib.rs index 1fcb6b70f8500..886487f0c8f14 100644 --- a/crates/re_smart_channel/src/lib.rs +++ b/crates/re_smart_channel/src/lib.rs @@ -197,17 +197,31 @@ pub(crate) fn smart_channel_with_stats( /// The payload of a [`SmartMessage`]. /// /// Either data or an end-of-stream marker. -#[derive(Debug)] pub enum SmartMessagePayload { /// A message sent down the channel. Msg(T), + /// When received, flush anything already received and then call the given callback. + Flush { + on_flush_done: Box, + }, + /// The [`Sender`] has quit. /// /// `None` indicates the sender left gracefully, an error indicates otherwise. Quit(Option>), } +impl std::fmt::Debug for SmartMessagePayload { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + SmartMessagePayload::Msg(_) => f.write_str("Msg(_)"), + SmartMessagePayload::Flush { .. } => f.write_str("Flush"), + SmartMessagePayload::Quit(_) => f.write_str("Quit"), + } + } +} + impl PartialEq for SmartMessagePayload { fn eq(&self, rhs: &Self) -> bool { match (self, rhs) { @@ -226,18 +240,16 @@ pub struct SmartMessage { impl SmartMessage { pub fn data(&self) -> Option<&T> { - use SmartMessagePayload::{Msg, Quit}; match &self.payload { - Msg(msg) => Some(msg), - Quit(_) => None, + SmartMessagePayload::Msg(msg) => Some(msg), + SmartMessagePayload::Flush { .. } | SmartMessagePayload::Quit(_) => None, } } pub fn into_data(self) -> Option { - use SmartMessagePayload::{Msg, Quit}; match self.payload { - Msg(msg) => Some(msg), - Quit(_) => None, + SmartMessagePayload::Msg(msg) => Some(msg), + SmartMessagePayload::Flush { .. } | SmartMessagePayload::Quit(_) => None, } } } diff --git a/crates/re_smart_channel/src/sender.rs b/crates/re_smart_channel/src/sender.rs index 47929a21e568d..76167bb528986 100644 --- a/crates/re_smart_channel/src/sender.rs +++ b/crates/re_smart_channel/src/sender.rs @@ -37,7 +37,7 @@ impl Sender { ) .map_err(|SendError(msg)| match msg { SmartMessagePayload::Msg(msg) => SendError(msg), - SmartMessagePayload::Quit(_) => unreachable!(), + SmartMessagePayload::Flush { .. } | SmartMessagePayload::Quit(_) => unreachable!(), }) } @@ -60,6 +60,25 @@ impl Sender { .map_err(|SendError(msg)| SendError(msg.payload)) } + /// Blocks until all previously sent messages have been received. + pub fn flush_blocking(&self) -> Result<(), SendError<()>> { + let (tx, rx) = std::sync::mpsc::sync_channel(0); // oneshot + self.tx + .send(SmartMessage { + time: Instant::now(), + source: Arc::clone(&self.source), + payload: SmartMessagePayload::Flush { + on_flush_done: Box::new(move || { + tx.send(()).ok(); + }), + }, + }) + .map_err(|_ignored| SendError(()))?; + + // Block: + rx.recv().map_err(|_ignored| SendError(())) + } + /// Used to indicate that a sender has left. /// /// This sends a message down the channel allowing the receiving end to know whether one of the diff --git a/crates/re_viewer/src/app.rs b/crates/re_viewer/src/app.rs index 62d4ad8c42259..ba35ed9834aa5 100644 --- a/crates/re_viewer/src/app.rs +++ b/crates/re_viewer/src/app.rs @@ -971,6 +971,12 @@ impl App { while let Some((channel_source, msg)) = self.rx.try_recv() { let msg = match msg.payload { re_smart_channel::SmartMessagePayload::Msg(msg) => msg, + + re_smart_channel::SmartMessagePayload::Flush { on_flush_done } => { + on_flush_done(); + continue; + } + re_smart_channel::SmartMessagePayload::Quit(err) => { if let Some(err) = err { let log_msg = diff --git a/crates/re_web_viewer_server/src/lib.rs b/crates/re_web_viewer_server/src/lib.rs index 853be4d107a1b..92105147e3367 100644 --- a/crates/re_web_viewer_server/src/lib.rs +++ b/crates/re_web_viewer_server/src/lib.rs @@ -10,7 +10,10 @@ use std::{ fmt::Display, str::FromStr, - sync::{atomic::AtomicBool, Arc}, + sync::{ + atomic::{AtomicBool, AtomicU64, Ordering}, + Arc, + }, }; pub const DEFAULT_WEB_VIEWER_SERVER_PORT: u16 = 9090; @@ -86,6 +89,7 @@ pub struct WebViewerServer { struct WebViewerServerInner { server: tiny_http::Server, shutdown: AtomicBool, + num_wasm_served: AtomicU64, // NOTE: Optional because it is possible to have the `analytics` feature flag enabled // while at the same time opting-out of analytics at run-time. @@ -119,6 +123,7 @@ impl WebViewerServer { let inner = Arc::new(WebViewerServerInner { server, shutdown, + num_wasm_served: Default::default(), #[cfg(feature = "analytics")] analytics: match re_analytics::Analytics::new(std::time::Duration::from_secs(2)) { @@ -169,9 +174,12 @@ impl WebViewerServer { impl Drop for WebViewerServer { fn drop(&mut self) { if let Some(thread_handle) = self.thread_handle.take() { - self.inner - .shutdown - .store(true, std::sync::atomic::Ordering::Release); + let num_wasm_served = self.inner.num_wasm_served.load(Ordering::Relaxed); + re_log::debug!( + "Shutting down web server after serving the Wasm {num_wasm_served} time(s)" + ); + + self.inner.shutdown.store(true, Ordering::Release); self.inner.server.unblock(); thread_handle.join().ok(); } @@ -182,7 +190,7 @@ impl WebViewerServerInner { fn serve(&self) { loop { let request = self.server.recv(); - if self.shutdown.load(std::sync::atomic::Ordering::Acquire) { + if self.shutdown.load(Ordering::Acquire) { return; } @@ -200,8 +208,10 @@ impl WebViewerServerInner { } } - #[cfg(feature = "analytics")] fn on_serve_wasm(&self) { + self.num_wasm_served.fetch_add(1, Ordering::Relaxed); + + #[cfg(feature = "analytics")] if let Some(analytics) = &self.analytics { analytics.record(re_analytics::event::ServeWasm); } @@ -229,7 +239,6 @@ impl WebViewerServerInner { "/sw.js" => ("text/javascript", data::SW_JS), "/re_viewer.js" => ("text/javascript", data::VIEWER_JS), "/re_viewer_bg.wasm" => { - #[cfg(feature = "analytics")] self.on_serve_wasm(); ("application/wasm", data::VIEWER_WASM) } diff --git a/crates/re_ws_comms/src/server.rs b/crates/re_ws_comms/src/server.rs index b6a18f7a6eb35..97b7bede2bd66 100644 --- a/crates/re_ws_comms/src/server.rs +++ b/crates/re_ws_comms/src/server.rs @@ -9,7 +9,10 @@ use std::{ collections::VecDeque, net::{TcpListener, TcpStream}, - sync::{atomic::AtomicBool, Arc}, + sync::{ + atomic::{AtomicBool, AtomicU64, Ordering}, + Arc, + }, }; use parking_lot::Mutex; @@ -86,6 +89,9 @@ pub struct RerunServer { listener_join_handle: Option>, poller: Arc, shutdown_flag: Arc, + + /// Total count; never decreasing. + num_accepted_clients: Arc, } impl RerunServer { @@ -120,10 +126,12 @@ impl RerunServer { let poller = Arc::new(Poller::new()?); let shutdown_flag = Arc::new(AtomicBool::new(false)); + let num_accepted_clients = Arc::new(AtomicU64::new(0)); let local_addr = listener_socket.local_addr()?; let poller_copy = poller.clone(); let shutdown_flag_copy = shutdown_flag.clone(); + let num_clients_copy = num_accepted_clients.clone(); let listener_join_handle = std::thread::Builder::new() .name("rerun_ws_server: listener".to_owned()) @@ -133,6 +141,7 @@ impl RerunServer { &listener_socket, &ReceiveSetBroadcaster::new(rerun_rx, server_memory_limit), &shutdown_flag, + &num_accepted_clients, ); })?; @@ -141,6 +150,7 @@ impl RerunServer { poller: poller_copy, listener_join_handle: Some(listener_join_handle), shutdown_flag: shutdown_flag_copy, + num_accepted_clients: num_clients_copy, }; re_log::info!( @@ -156,11 +166,17 @@ impl RerunServer { server_url(&self.local_addr) } + /// Total count; never decreasing. + pub fn num_accepted_clients(&self) -> u64 { + self.num_accepted_clients.load(Ordering::Relaxed) + } + fn listen_thread_func( poller: &Poller, listener_socket: &TcpListener, message_broadcaster: &ReceiveSetBroadcaster, shutdown_flag: &AtomicBool, + num_accepted_clients: &AtomicU64, ) { // Each socket in `poll::Poller` needs a "name". // Doesn't matter much what we're using here, as long as it's not used for something else @@ -190,6 +206,7 @@ impl RerunServer { message_broadcaster, poller, listener_poll_key, + num_accepted_clients, ); } } @@ -201,6 +218,7 @@ impl RerunServer { message_broadcaster: &ReceiveSetBroadcaster, poller: &Poller, listener_poll_key: usize, + num_accepted_clients: &AtomicU64, ) { match listener_socket.accept() { Ok((tcp_stream, _)) => { @@ -214,6 +232,7 @@ impl RerunServer { match tungstenite::accept(tcp_stream) { Ok(ws_stream) => { message_broadcaster.add_client(ws_stream); + num_accepted_clients.fetch_add(1, Ordering::Relaxed); } Err(err) => { re_log::warn!("Error accepting WebSocket connection: {err}"); @@ -251,7 +270,11 @@ impl RerunServer { impl Drop for RerunServer { fn drop(&mut self) { - re_log::info!("Shutting down Rerun server on {}", self.server_url()); + let num_accepted_clients = self.num_accepted_clients.load(Ordering::Relaxed); + re_log::info!( + "Shutting down Rerun server on {} after serving {num_accepted_clients} client(s)", + self.server_url() + ); self.stop_listener(); } } @@ -328,6 +351,11 @@ impl ReceiveSetBroadcaster { inner.history.push(msg); } + + re_smart_channel::SmartMessagePayload::Flush { on_flush_done } => { + on_flush_done(); + } + re_smart_channel::SmartMessagePayload::Quit(err) => { if let Some(err) = err { re_log::warn!("Sender {} has left unexpectedly: {err}", msg.source); diff --git a/crates/rerun/src/run.rs b/crates/rerun/src/run.rs index 19062d0c7dbd0..5b2f344305fcc 100644 --- a/crates/rerun/src/run.rs +++ b/crates/rerun/src/run.rs @@ -830,6 +830,11 @@ fn assert_receive_into_entity_db( mut_db.add(&msg)?; num_messages += 1; } + + re_smart_channel::SmartMessagePayload::Flush { on_flush_done } => { + on_flush_done(); + } + SmartMessagePayload::Quit(err) => { if let Some(err) = err { anyhow::bail!("data source has disconnected unexpectedly: {err}") diff --git a/pixi.toml b/pixi.toml index bc2449d75e19e..e59ea9096ac3e 100644 --- a/pixi.toml +++ b/pixi.toml @@ -147,7 +147,7 @@ py-lint = "mypy --install-types --non-interactive --no-warn-unused-ignore" # - RERUN_ALLOW_MISSING_BIN is needed to allow maturin to run without the `rerun` binary being part of the rerun-sdk # package. py-build = { cmd = "PIP_REQUIRE_VIRTUALENV=0 RERUN_ALLOW_MISSING_BIN=1 maturin develop --manifest-path rerun_py/Cargo.toml --extras=tests", depends_on = [ - "rerun-build", + "rerun-build", # We need to build rerun-cli since it is bundled in the python package. ] } # Python example utilities diff --git a/rerun_py/Cargo.toml b/rerun_py/Cargo.toml index 8af8cf5f22399..64f36937bb4aa 100644 --- a/rerun_py/Cargo.toml +++ b/rerun_py/Cargo.toml @@ -15,7 +15,7 @@ name = "rerun_bindings" # name of the .so library that the Python module will im [features] -default = ["extension-module"] +default = ["extension-module", "web_viewer"] ## The features we turn on when building the `rerun-sdk` PyPi package ## for . @@ -23,15 +23,15 @@ pypi = ["extension-module", "web_viewer"] ## We need to enable the `pyo3/extension-module` when building the SDK, ## but we cannot enable it when building tests and benchmarks, so we -## must make it an opt-in feature. +## must make it an optional feature. ## * ## * extension-module = ["pyo3/extension-module"] ## Support serving a web viewer over HTTP with `serve()`. ## -## Enabling this adds quite a bit to the compile time and binary size, -## since it requires compiling and bundling the viewer as wasm. +## Enabling this adds quite a bit to the binary size, +## since it requires bundling the viewer as wasm. web_viewer = [ "re_sdk/web_viewer", "dep:re_web_viewer_server", From 0f83263583f2973b5f40a7115097705c38060fc1 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Wed, 15 May 2024 17:05:18 +0200 Subject: [PATCH 14/40] Rename VisualBounds to VisualBounds2D, Introduce VisualBounds2D component replacing Range2D component (#6333) ### What This changeset makes the 2D visual bound more similar to what we want it to look like once introducing `DataRange`, i.e. it means that when we fix: * https://github.com/rerun-io/rerun/issues/6247 the api won't break ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6333?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6333?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6333) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- .../re_data_ui/src/component_ui_registry.rs | 2 +- crates/re_data_ui/src/data.rs | 5 +- .../src/latest_at/to_archetype/.gitattributes | 2 +- .../src/latest_at/to_archetype/mod.rs | 2 +- .../latest_at/to_archetype/visual_bounds.rs | 44 --------- .../latest_at/to_archetype/visual_bounds2d.rs | 51 ++++++++++ .../src/space_view_2d.rs | 17 ++-- crates/re_space_view_spatial/src/ui_2d.rs | 10 +- .../re_types/definitions/rerun/blueprint.fbs | 3 +- .../blueprint/archetypes/visual_bounds.fbs | 22 ----- .../blueprint/archetypes/visual_bounds2d.fbs | 25 +++++ .../components/visual_bounds2d.fbs} | 10 +- .../rerun/blueprint/views/spatial2d.fbs | 2 +- .../re_types/definitions/rerun/components.fbs | 1 - .../re_types/src/archetypes/line_strips2d.rs | 2 +- crates/re_types/src/archetypes/points2d.rs | 2 +- .../src/blueprint/archetypes/.gitattributes | 2 +- .../re_types/src/blueprint/archetypes/mod.rs | 4 +- .../{visual_bounds.rs => visual_bounds2d.rs} | 97 +++++++++---------- .../src/blueprint/components/.gitattributes | 1 + .../re_types/src/blueprint/components/mod.rs | 3 + .../components/visual_bounds2d.rs} | 29 +++--- .../components/visual_bounds2d_ext.rs | 8 ++ .../src/blueprint/views/spatial2d_view.rs | 4 +- crates/re_types/src/components/.gitattributes | 1 - crates/re_types/src/components/mod.rs | 3 - crates/re_types/src/components/range2d_ext.rs | 8 -- .../src/blueprint/validation_gen/mod.rs | 2 + docs/content/reference/types/components.md | 1 - .../reference/types/components/.gitattributes | 1 - .../reference/types/components/range2d.md | 17 ---- .../reference/types/datatypes/range2d.md | 3 - .../all/archetypes/line_segments2d_simple.cpp | 2 +- .../all/archetypes/line_segments2d_simple.py | 2 +- .../all/archetypes/line_segments2d_simple.rs | 2 +- .../all/archetypes/line_strip2d_batch.cpp | 2 +- .../all/archetypes/line_strip2d_batch.py | 2 +- .../all/archetypes/line_strip2d_batch.rs | 2 +- .../all/archetypes/line_strip2d_simple.cpp | 2 +- .../all/archetypes/line_strip2d_simple.py | 2 +- .../all/archetypes/line_strip2d_simple.rs | 2 +- .../all/archetypes/point2d_random.cpp | 2 +- .../snippets/all/archetypes/point2d_random.py | 2 +- .../snippets/all/archetypes/point2d_random.rs | 2 +- .../all/archetypes/point2d_simple.cpp | 2 +- .../snippets/all/archetypes/point2d_simple.py | 2 +- .../snippets/all/archetypes/point2d_simple.rs | 2 +- docs/snippets/all/tutorials/extra_values.py | 2 +- docs/snippets/all/views/spatial2d.py | 2 +- .../src/rerun/archetypes/line_strips2d.hpp | 2 +- rerun_cpp/src/rerun/archetypes/points2d.hpp | 2 +- rerun_cpp/src/rerun/blueprint/archetypes.hpp | 2 +- .../rerun/blueprint/archetypes/.gitattributes | 4 +- .../blueprint/archetypes/visual_bounds.hpp | 64 ------------ ...{visual_bounds.cpp => visual_bounds2d.cpp} | 14 +-- .../blueprint/archetypes/visual_bounds2d.hpp | 60 ++++++++++++ rerun_cpp/src/rerun/blueprint/components.hpp | 1 + .../rerun/blueprint/components/.gitattributes | 1 + .../blueprint/components/visual_bounds2d.hpp | 60 ++++++++++++ rerun_cpp/src/rerun/components.hpp | 1 - rerun_cpp/src/rerun/components/.gitattributes | 1 - rerun_cpp/src/rerun/components/range2d.hpp | 57 ----------- .../rerun/archetypes/line_strips2d.py | 2 +- .../rerun_sdk/rerun/archetypes/points2d.py | 2 +- .../rerun_sdk/rerun/blueprint/__init__.py | 2 +- .../rerun/blueprint/archetypes/.gitattributes | 2 +- .../rerun/blueprint/archetypes/__init__.py | 4 +- .../blueprint/archetypes/visual_bounds.py | 49 ---------- .../blueprint/archetypes/visual_bounds2d.py | 55 +++++++++++ ...l_bounds_ext.py => visual_bounds2d_ext.py} | 11 ++- .../rerun/blueprint/components/.gitattributes | 1 + .../rerun/blueprint/components/__init__.py | 4 + .../blueprint/components/visual_bounds2d.py | 29 ++++++ .../components/visual_bounds2d_ext.py} | 8 +- .../rerun/blueprint/views/spatial2d_view.py | 10 +- .../rerun_sdk/rerun/components/.gitattributes | 1 - .../rerun_sdk/rerun/components/__init__.py | 4 - .../rerun_sdk/rerun/components/range2d.py | 29 ------ 78 files changed, 453 insertions(+), 447 deletions(-) delete mode 100644 crates/re_query/src/latest_at/to_archetype/visual_bounds.rs create mode 100644 crates/re_query/src/latest_at/to_archetype/visual_bounds2d.rs delete mode 100644 crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds.fbs create mode 100644 crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds2d.fbs rename crates/re_types/definitions/rerun/{components/range2d.fbs => blueprint/components/visual_bounds2d.fbs} (58%) rename crates/re_types/src/blueprint/archetypes/{visual_bounds.rs => visual_bounds2d.rs} (57%) rename crates/re_types/src/{components/range2d.rs => blueprint/components/visual_bounds2d.rs} (80%) create mode 100644 crates/re_types/src/blueprint/components/visual_bounds2d_ext.rs delete mode 100644 crates/re_types/src/components/range2d_ext.rs delete mode 100644 docs/content/reference/types/components/range2d.md delete mode 100644 rerun_cpp/src/rerun/blueprint/archetypes/visual_bounds.hpp rename rerun_cpp/src/rerun/blueprint/archetypes/{visual_bounds.cpp => visual_bounds2d.cpp} (76%) create mode 100644 rerun_cpp/src/rerun/blueprint/archetypes/visual_bounds2d.hpp create mode 100644 rerun_cpp/src/rerun/blueprint/components/visual_bounds2d.hpp delete mode 100644 rerun_cpp/src/rerun/components/range2d.hpp delete mode 100644 rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds.py create mode 100644 rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds2d.py rename rerun_py/rerun_sdk/rerun/blueprint/archetypes/{visual_bounds_ext.py => visual_bounds2d_ext.py} (64%) create mode 100644 rerun_py/rerun_sdk/rerun/blueprint/components/visual_bounds2d.py rename rerun_py/rerun_sdk/rerun/{components/range2d_ext.py => blueprint/components/visual_bounds2d_ext.py} (70%) delete mode 100644 rerun_py/rerun_sdk/rerun/components/range2d.py diff --git a/crates/re_data_ui/src/component_ui_registry.rs b/crates/re_data_ui/src/component_ui_registry.rs index 052981f3de5a3..5154ec45337e4 100644 --- a/crates/re_data_ui/src/component_ui_registry.rs +++ b/crates/re_data_ui/src/component_ui_registry.rs @@ -21,7 +21,6 @@ pub fn create_component_ui_registry() -> ComponentUiRegistry { add_to_registry::(&mut registry); add_to_registry::(&mut registry); add_to_registry::(&mut registry); - add_to_registry::(&mut registry); add_to_registry::(&mut registry); add_to_registry::(&mut registry); add_to_registry::(&mut registry); @@ -32,6 +31,7 @@ pub fn create_component_ui_registry() -> ComponentUiRegistry { add_to_registry::(&mut registry); add_to_registry::(&mut registry); + add_to_registry::(&mut registry); register_editors(&mut registry); diff --git a/crates/re_data_ui/src/data.rs b/crates/re_data_ui/src/data.rs index 04ccc68f13e17..e186b5a8f308b 100644 --- a/crates/re_data_ui/src/data.rs +++ b/crates/re_data_ui/src/data.rs @@ -3,7 +3,8 @@ use re_data_store::LatestAtQuery; use re_entity_db::EntityDb; use re_format::format_f32; -use re_types::components::{Color, LineStrip2D, LineStrip3D, Range1D, Range2D, ViewCoordinates}; +use re_types::blueprint::components::VisualBounds2D; +use re_types::components::{Color, LineStrip2D, LineStrip3D, Range1D, ViewCoordinates}; use re_viewer_context::{UiLayout, ViewerContext}; use super::{data_label_for_ui_layout, label_for_ui_layout, table_for_ui_layout, DataUi}; @@ -195,7 +196,7 @@ impl DataUi for Range1D { } } -impl DataUi for Range2D { +impl DataUi for VisualBounds2D { fn data_ui( &self, _ctx: &ViewerContext<'_>, diff --git a/crates/re_query/src/latest_at/to_archetype/.gitattributes b/crates/re_query/src/latest_at/to_archetype/.gitattributes index bd2e8c8bd9124..543824a5a8257 100644 --- a/crates/re_query/src/latest_at/to_archetype/.gitattributes +++ b/crates/re_query/src/latest_at/to_archetype/.gitattributes @@ -37,4 +37,4 @@ transform3d.rs linguist-generated=true view_coordinates.rs linguist-generated=true viewport_blueprint.rs linguist-generated=true visible_time_ranges.rs linguist-generated=true -visual_bounds.rs linguist-generated=true +visual_bounds2d.rs linguist-generated=true diff --git a/crates/re_query/src/latest_at/to_archetype/mod.rs b/crates/re_query/src/latest_at/to_archetype/mod.rs index dbf5e55a975a0..6348f1adce28c 100644 --- a/crates/re_query/src/latest_at/to_archetype/mod.rs +++ b/crates/re_query/src/latest_at/to_archetype/mod.rs @@ -35,4 +35,4 @@ mod transform3d; mod view_coordinates; mod viewport_blueprint; mod visible_time_ranges; -mod visual_bounds; +mod visual_bounds2d; diff --git a/crates/re_query/src/latest_at/to_archetype/visual_bounds.rs b/crates/re_query/src/latest_at/to_archetype/visual_bounds.rs deleted file mode 100644 index e48c84259e327..0000000000000 --- a/crates/re_query/src/latest_at/to_archetype/visual_bounds.rs +++ /dev/null @@ -1,44 +0,0 @@ -// DO NOT EDIT! This file was auto-generated by crates/re_types_builder/src/codegen/rust/to_archetype.rs - -#![allow(unused_imports)] -#![allow(unused_parens)] -#![allow(clippy::clone_on_copy)] -#![allow(clippy::cloned_instead_of_copied)] - -use crate::{LatestAtResults, PromiseResolver, PromiseResult}; -use re_types_core::{Archetype, Loggable as _}; -use std::sync::Arc; - -impl crate::ToArchetype for LatestAtResults { - #[inline] - fn to_archetype( - &self, - resolver: &PromiseResolver, - ) -> PromiseResult> { - re_tracing::profile_function!(::name()); - - // --- Required --- - - // --- Recommended/Optional --- - - use re_types::components::Range2D; - let range2d = if let Some(range2d) = self.get(::name()) { - match range2d.to_dense::(resolver) { - PromiseResult::Pending => return PromiseResult::Pending, - PromiseResult::Error(promise_err) => return PromiseResult::Error(promise_err), - PromiseResult::Ready(query_res) => match query_res { - Ok(data) => data.first().cloned(), - Err(query_err) => return PromiseResult::Ready(Err(query_err)), - }, - } - } else { - None - }; - - // --- - - let arch = re_types::blueprint::archetypes::VisualBounds { range2d }; - - PromiseResult::Ready(Ok(arch)) - } -} diff --git a/crates/re_query/src/latest_at/to_archetype/visual_bounds2d.rs b/crates/re_query/src/latest_at/to_archetype/visual_bounds2d.rs new file mode 100644 index 0000000000000..82a16d8ecfeab --- /dev/null +++ b/crates/re_query/src/latest_at/to_archetype/visual_bounds2d.rs @@ -0,0 +1,51 @@ +// DO NOT EDIT! This file was auto-generated by crates/re_types_builder/src/codegen/rust/to_archetype.rs + +#![allow(unused_imports)] +#![allow(unused_parens)] +#![allow(clippy::clone_on_copy)] +#![allow(clippy::cloned_instead_of_copied)] + +use crate::{LatestAtResults, PromiseResolver, PromiseResult}; +use re_types_core::{Archetype, Loggable as _}; +use std::sync::Arc; + +impl crate::ToArchetype for LatestAtResults { + #[inline] + fn to_archetype( + &self, + resolver: &PromiseResolver, + ) -> PromiseResult> { + re_tracing::profile_function!(::name()); + + // --- Required --- + + use re_types::blueprint::components::VisualBounds2D; + let range = match self.get_required(::name()) { + Ok(range) => range, + Err(query_err) => return PromiseResult::Ready(Err(query_err)), + }; + let range = match range.to_dense::(resolver) { + PromiseResult::Pending => return PromiseResult::Pending, + PromiseResult::Error(promise_err) => return PromiseResult::Error(promise_err), + PromiseResult::Ready(query_res) => match query_res { + Ok(data) => { + let Some(first) = data.first().cloned() else { + return PromiseResult::Error(std::sync::Arc::new( + re_types_core::DeserializationError::missing_data(), + )); + }; + first + } + Err(query_err) => return PromiseResult::Ready(Err(query_err)), + }, + }; + + // --- Recommended/Optional --- + + // --- + + let arch = re_types::blueprint::archetypes::VisualBounds2D { range }; + + PromiseResult::Ready(Ok(arch)) + } +} diff --git a/crates/re_space_view_spatial/src/space_view_2d.rs b/crates/re_space_view_spatial/src/space_view_2d.rs index fd9d6de556918..d262e1b1e7f06 100644 --- a/crates/re_space_view_spatial/src/space_view_2d.rs +++ b/crates/re_space_view_spatial/src/space_view_2d.rs @@ -6,7 +6,8 @@ use re_format::format_f32; use re_log_types::EntityPath; use re_types::{ archetypes::{DepthImage, Image}, - blueprint::archetypes::{Background, VisualBounds}, + blueprint::archetypes::{Background, VisualBounds2D}, + blueprint::components as blueprint_components, Archetype, ComponentName, SpaceViewClassIdentifier, }; use re_viewer_context::{ @@ -283,24 +284,28 @@ impl SpaceViewClass for SpatialSpaceView2D { fn visual_bounds_ui(ctx: &ViewerContext<'_>, space_view_id: SpaceViewId, ui: &mut egui::Ui) { let tooltip = "The area guaranteed to be visible.\n\ Depending on the view's current aspect ratio the actually visible area might be larger either horizontally or vertically."; - re_space_view::edit_blueprint_component::( + re_space_view::edit_blueprint_component::< + VisualBounds2D, + blueprint_components::VisualBounds2D, + (), + >( ctx, space_view_id, - |range2d_opt: &mut Option| { + |bounds2d_opt: &mut Option| { ctx.re_ui .grid_left_hand_label(ui, "Visible bounds") .on_hover_text(tooltip); ui.vertical(|ui| { ui.style_mut().wrap = Some(false); - if let Some(range2d) = range2d_opt { - let rect = egui::Rect::from(*range2d); + if let Some(bounds2d) = bounds2d_opt { + let rect = egui::Rect::from(*bounds2d); let (min, max) = (rect.min, rect.max); ui.label(format!("x [{} - {}]", format_f32(min.x), format_f32(max.x),)); ui.label(format!("y [{} - {}]", format_f32(min.y), format_f32(max.y),)); if ui.button("Reset visible bounds").clicked() { - *range2d_opt = None; + *bounds2d_opt = None; } } else { ui.weak("Default"); diff --git a/crates/re_space_view_spatial/src/ui_2d.rs b/crates/re_space_view_spatial/src/ui_2d.rs index c26a614b634ad..dcce82da23d9e 100644 --- a/crates/re_space_view_spatial/src/ui_2d.rs +++ b/crates/re_space_view_spatial/src/ui_2d.rs @@ -5,8 +5,8 @@ use re_entity_db::EntityPath; use re_renderer::view_builder::{TargetConfiguration, ViewBuilder}; use re_space_view::controls::{DRAG_PAN2D_BUTTON, RESET_VIEW_BUTTON_TEXT, ZOOM_SCROLL_MODIFIER}; use re_types::{ - archetypes::Pinhole, blueprint::archetypes::Background, blueprint::archetypes::VisualBounds, - components::ViewCoordinates, + archetypes::Pinhole, blueprint::archetypes::Background, blueprint::archetypes::VisualBounds2D, + blueprint::components as blueprint_components, components::ViewCoordinates, }; use re_viewer_context::{ gpu_bridge, ItemSpaceContext, SpaceViewId, SpaceViewSystemExecutionError, @@ -119,13 +119,13 @@ fn ui_from_scene( } re_space_view::edit_blueprint_component::< - VisualBounds, - re_types::components::Range2D, + VisualBounds2D, + blueprint_components::VisualBounds2D, RectTransform, >( ctx, space_view_id, - |range2d: &mut Option| { + |range2d: &mut Option| { // Convert to a Rect let mut rect = range2d.map(Rect::from); diff --git a/crates/re_types/definitions/rerun/blueprint.fbs b/crates/re_types/definitions/rerun/blueprint.fbs index 1fba95149bd73..eba82a3a46a90 100644 --- a/crates/re_types/definitions/rerun/blueprint.fbs +++ b/crates/re_types/definitions/rerun/blueprint.fbs @@ -20,6 +20,7 @@ include "./blueprint/components/space_view_origin.fbs"; include "./blueprint/components/viewer_recommendation_hash.fbs"; include "./blueprint/components/visible_time_range.fbs"; include "./blueprint/components/visible.fbs"; +include "./blueprint/components/visual_bounds2d.fbs"; include "./blueprint/archetypes/background.fbs"; include "./blueprint/archetypes/container_blueprint.fbs"; @@ -28,7 +29,7 @@ include "./blueprint/archetypes/space_view_blueprint.fbs"; include "./blueprint/archetypes/space_view_contents.fbs"; include "./blueprint/archetypes/viewport_blueprint.fbs"; include "./blueprint/archetypes/visible_time_ranges.fbs"; -include "./blueprint/archetypes/visual_bounds.fbs"; +include "./blueprint/archetypes/visual_bounds2d.fbs"; include "./blueprint/archetypes/plot_legend.fbs"; include "./blueprint/archetypes/scalar_axis.fbs"; diff --git a/crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds.fbs b/crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds.fbs deleted file mode 100644 index ce68bde907491..0000000000000 --- a/crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds.fbs +++ /dev/null @@ -1,22 +0,0 @@ -include "arrow/attributes.fbs"; -include "python/attributes.fbs"; -include "rust/attributes.fbs"; - -include "rerun/datatypes.fbs"; -include "rerun/attributes.fbs"; - -namespace rerun.blueprint.archetypes; - - -/// Controls the visual bounds of a 2D space view. -table VisualBounds ( - "attr.docs.unreleased", - "attr.rerun.scope": "blueprint", - "attr.rust.derive": "Copy" -) { - /// The visible parts of a 2D space view, in the coordinate space of the scene. - /// - /// Everything within these bounds are guaranteed to be visible. - /// Somethings outside of these bounds may also be visible due to letterboxing. - range2d: rerun.components.Range2D ("attr.rerun.component_optional", nullable, order: 1000); -} diff --git a/crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds2d.fbs b/crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds2d.fbs new file mode 100644 index 0000000000000..77c75c04b4059 --- /dev/null +++ b/crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds2d.fbs @@ -0,0 +1,25 @@ +include "arrow/attributes.fbs"; +include "python/attributes.fbs"; +include "rust/attributes.fbs"; + +include "rerun/blueprint/components/visual_bounds2d.fbs"; + +namespace rerun.blueprint.archetypes; + + +/// Controls the visual bounds of a 2D view. +/// +/// Everything within these bounds are guaranteed to be visible. +/// Somethings outside of these bounds may also be visible due to letterboxing. +/// +/// If no visual bounds are set, it will be determined automatically, +/// based on the bounding-box of the data or other camera information present in the view. +table VisualBounds2D ( + "attr.rerun.scope": "blueprint", + "attr.rust.derive": "Copy" +) { + /// Controls the visible range of a 2D view. + /// + /// Use this to control pan & zoom of the view. + range: rerun.blueprint.components.VisualBounds2D ("attr.rerun.component_required", order: 1000); +} diff --git a/crates/re_types/definitions/rerun/components/range2d.fbs b/crates/re_types/definitions/rerun/blueprint/components/visual_bounds2d.fbs similarity index 58% rename from crates/re_types/definitions/rerun/components/range2d.fbs rename to crates/re_types/definitions/rerun/blueprint/components/visual_bounds2d.fbs index 4a02119f5f5dc..11ae2ac4c4e82 100644 --- a/crates/re_types/definitions/rerun/components/range2d.fbs +++ b/crates/re_types/definitions/rerun/blueprint/components/visual_bounds2d.fbs @@ -3,17 +3,19 @@ include "python/attributes.fbs"; include "fbs/attributes.fbs"; include "rust/attributes.fbs"; -include "../datatypes/range2d.fbs"; +include "rerun/datatypes/range2d.fbs"; -namespace rerun.components; +namespace rerun.blueprint.components; // --- -/// An Axis-Aligned Bounding Box in 2D space. -struct Range2D ( +/// Visual bounds in 2D space used for `Spatial2DView`. +struct VisualBounds2D ( "attr.docs.unreleased", + "attr.rerun.scope": "blueprint", "attr.rust.derive": "Copy, PartialEq, bytemuck::Pod, bytemuck::Zeroable", "attr.rust.repr": "transparent" ) { + /// X and y ranges that should be visible. range2d: rerun.datatypes.Range2D (order: 100); } diff --git a/crates/re_types/definitions/rerun/blueprint/views/spatial2d.fbs b/crates/re_types/definitions/rerun/blueprint/views/spatial2d.fbs index dde4566c65646..b139a7323c306 100644 --- a/crates/re_types/definitions/rerun/blueprint/views/spatial2d.fbs +++ b/crates/re_types/definitions/rerun/blueprint/views/spatial2d.fbs @@ -16,7 +16,7 @@ table Spatial2DView ( /// /// Everything within these bounds are guaranteed to be visible. /// Somethings outside of these bounds may also be visible due to letterboxing. - visual_bounds: rerun.blueprint.archetypes.VisualBounds (order: 2000); + visual_bounds: rerun.blueprint.archetypes.VisualBounds2D (order: 2000); /// Configures which range on each timeline is shown by this view (unless specified differently per entity). /// diff --git a/crates/re_types/definitions/rerun/components.fbs b/crates/re_types/definitions/rerun/components.fbs index ec7fdbe15b47f..121d579150bcf 100644 --- a/crates/re_types/definitions/rerun/components.fbs +++ b/crates/re_types/definitions/rerun/components.fbs @@ -22,7 +22,6 @@ include "./components/position2d.fbs"; include "./components/position3d.fbs"; include "./components/radius.fbs"; include "./components/range1d.fbs"; -include "./components/range2d.fbs"; include "./components/resolution.fbs"; include "./components/rotation3d.fbs"; include "./components/scalar.fbs"; diff --git a/crates/re_types/src/archetypes/line_strips2d.rs b/crates/re_types/src/archetypes/line_strips2d.rs index 56586673f41c3..fa1854bc559c4 100644 --- a/crates/re_types/src/archetypes/line_strips2d.rs +++ b/crates/re_types/src/archetypes/line_strips2d.rs @@ -42,7 +42,7 @@ use ::re_types_core::{DeserializationError, DeserializationResult}; /// .with_labels(["one strip here", "and one strip there"]), /// )?; /// -/// // TODO(#5521): log VisualBounds +/// // TODO(#5521): log VisualBounds2D /// /// Ok(()) /// } diff --git a/crates/re_types/src/archetypes/points2d.rs b/crates/re_types/src/archetypes/points2d.rs index 47928995bc072..a2b4df20574eb 100644 --- a/crates/re_types/src/archetypes/points2d.rs +++ b/crates/re_types/src/archetypes/points2d.rs @@ -43,7 +43,7 @@ use ::re_types_core::{DeserializationError, DeserializationResult}; /// .with_radii((0..10).map(|_| rng.gen::())), /// )?; /// -/// // TODO(#5521): log VisualBounds +/// // TODO(#5521): log VisualBounds2D /// /// Ok(()) /// } diff --git a/crates/re_types/src/blueprint/archetypes/.gitattributes b/crates/re_types/src/blueprint/archetypes/.gitattributes index 9349a1b6395ca..388a6ee2824d9 100644 --- a/crates/re_types/src/blueprint/archetypes/.gitattributes +++ b/crates/re_types/src/blueprint/archetypes/.gitattributes @@ -8,4 +8,4 @@ scalar_axis.rs linguist-generated=true space_view_blueprint.rs linguist-generated=true space_view_contents.rs linguist-generated=true visible_time_ranges.rs linguist-generated=true -visual_bounds.rs linguist-generated=true +visual_bounds2d.rs linguist-generated=true diff --git a/crates/re_types/src/blueprint/archetypes/mod.rs b/crates/re_types/src/blueprint/archetypes/mod.rs index d6f30bda8fee1..de7f012204471 100644 --- a/crates/re_types/src/blueprint/archetypes/mod.rs +++ b/crates/re_types/src/blueprint/archetypes/mod.rs @@ -8,7 +8,7 @@ mod space_view_blueprint; mod space_view_contents; mod visible_time_ranges; mod visible_time_ranges_ext; -mod visual_bounds; +mod visual_bounds2d; pub use self::background::Background; pub use self::plot_legend::PlotLegend; @@ -16,4 +16,4 @@ pub use self::scalar_axis::ScalarAxis; pub use self::space_view_blueprint::SpaceViewBlueprint; pub use self::space_view_contents::SpaceViewContents; pub use self::visible_time_ranges::VisibleTimeRanges; -pub use self::visual_bounds::VisualBounds; +pub use self::visual_bounds2d::VisualBounds2D; diff --git a/crates/re_types/src/blueprint/archetypes/visual_bounds.rs b/crates/re_types/src/blueprint/archetypes/visual_bounds2d.rs similarity index 57% rename from crates/re_types/src/blueprint/archetypes/visual_bounds.rs rename to crates/re_types/src/blueprint/archetypes/visual_bounds2d.rs index e4b3eb5961bcd..9beedf88dc7d6 100644 --- a/crates/re_types/src/blueprint/archetypes/visual_bounds.rs +++ b/crates/re_types/src/blueprint/archetypes/visual_bounds2d.rs @@ -1,5 +1,5 @@ // DO NOT EDIT! This file was auto-generated by crates/re_types_builder/src/codegen/rust/api.rs -// Based on "crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds.fbs". +// Based on "crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds2d.fbs". #![allow(trivial_numeric_casts)] #![allow(unused_imports)] @@ -22,64 +22,69 @@ use ::re_types_core::SerializationResult; use ::re_types_core::{ComponentBatch, MaybeOwnedComponentBatch}; use ::re_types_core::{DeserializationError, DeserializationResult}; -/// **Archetype**: Controls the visual bounds of a 2D space view. +/// **Archetype**: Controls the visual bounds of a 2D view. +/// +/// Everything within these bounds are guaranteed to be visible. +/// Somethings outside of these bounds may also be visible due to letterboxing. +/// +/// If no visual bounds are set, it will be determined automatically, +/// based on the bounding-box of the data or other camera information present in the view. #[derive(Clone, Debug, Copy)] -pub struct VisualBounds { - /// The visible parts of a 2D space view, in the coordinate space of the scene. +pub struct VisualBounds2D { + /// Controls the visible range of a 2D view. /// - /// Everything within these bounds are guaranteed to be visible. - /// Somethings outside of these bounds may also be visible due to letterboxing. - pub range2d: Option, + /// Use this to control pan & zoom of the view. + pub range: crate::blueprint::components::VisualBounds2D, } -impl ::re_types_core::SizeBytes for VisualBounds { +impl ::re_types_core::SizeBytes for VisualBounds2D { #[inline] fn heap_size_bytes(&self) -> u64 { - self.range2d.heap_size_bytes() + self.range.heap_size_bytes() } #[inline] fn is_pod() -> bool { - >::is_pod() + ::is_pod() } } -static REQUIRED_COMPONENTS: once_cell::sync::Lazy<[ComponentName; 0usize]> = - once_cell::sync::Lazy::new(|| []); +static REQUIRED_COMPONENTS: once_cell::sync::Lazy<[ComponentName; 1usize]> = + once_cell::sync::Lazy::new(|| ["rerun.blueprint.components.VisualBounds2D".into()]); static RECOMMENDED_COMPONENTS: once_cell::sync::Lazy<[ComponentName; 1usize]> = - once_cell::sync::Lazy::new(|| ["rerun.blueprint.components.VisualBoundsIndicator".into()]); + once_cell::sync::Lazy::new(|| ["rerun.blueprint.components.VisualBounds2DIndicator".into()]); -static OPTIONAL_COMPONENTS: once_cell::sync::Lazy<[ComponentName; 1usize]> = - once_cell::sync::Lazy::new(|| ["rerun.components.Range2D".into()]); +static OPTIONAL_COMPONENTS: once_cell::sync::Lazy<[ComponentName; 0usize]> = + once_cell::sync::Lazy::new(|| []); static ALL_COMPONENTS: once_cell::sync::Lazy<[ComponentName; 2usize]> = once_cell::sync::Lazy::new(|| { [ - "rerun.blueprint.components.VisualBoundsIndicator".into(), - "rerun.components.Range2D".into(), + "rerun.blueprint.components.VisualBounds2D".into(), + "rerun.blueprint.components.VisualBounds2DIndicator".into(), ] }); -impl VisualBounds { - /// The total number of components in the archetype: 0 required, 1 recommended, 1 optional +impl VisualBounds2D { + /// The total number of components in the archetype: 1 required, 1 recommended, 0 optional pub const NUM_COMPONENTS: usize = 2usize; } -/// Indicator component for the [`VisualBounds`] [`::re_types_core::Archetype`] -pub type VisualBoundsIndicator = ::re_types_core::GenericIndicatorComponent; +/// Indicator component for the [`VisualBounds2D`] [`::re_types_core::Archetype`] +pub type VisualBounds2DIndicator = ::re_types_core::GenericIndicatorComponent; -impl ::re_types_core::Archetype for VisualBounds { - type Indicator = VisualBoundsIndicator; +impl ::re_types_core::Archetype for VisualBounds2D { + type Indicator = VisualBounds2DIndicator; #[inline] fn name() -> ::re_types_core::ArchetypeName { - "rerun.blueprint.archetypes.VisualBounds".into() + "rerun.blueprint.archetypes.VisualBounds2D".into() } #[inline] fn indicator() -> MaybeOwnedComponentBatch<'static> { - static INDICATOR: VisualBoundsIndicator = VisualBoundsIndicator::DEFAULT; + static INDICATOR: VisualBounds2DIndicator = VisualBounds2DIndicator::DEFAULT; MaybeOwnedComponentBatch::Ref(&INDICATOR) } @@ -113,28 +118,30 @@ impl ::re_types_core::Archetype for VisualBounds { .into_iter() .map(|(name, array)| (name.full_name(), array)) .collect(); - let range2d = if let Some(array) = arrays_by_name.get("rerun.components.Range2D") { - ::from_arrow_opt(&**array) - .with_context("rerun.blueprint.archetypes.VisualBounds#range2d")? + let range = { + let array = arrays_by_name + .get("rerun.blueprint.components.VisualBounds2D") + .ok_or_else(DeserializationError::missing_data) + .with_context("rerun.blueprint.archetypes.VisualBounds2D#range")?; + ::from_arrow_opt(&**array) + .with_context("rerun.blueprint.archetypes.VisualBounds2D#range")? .into_iter() .next() .flatten() - } else { - None + .ok_or_else(DeserializationError::missing_data) + .with_context("rerun.blueprint.archetypes.VisualBounds2D#range")? }; - Ok(Self { range2d }) + Ok(Self { range }) } } -impl ::re_types_core::AsComponents for VisualBounds { +impl ::re_types_core::AsComponents for VisualBounds2D { fn as_component_batches(&self) -> Vec> { re_tracing::profile_function!(); use ::re_types_core::Archetype as _; [ Some(Self::indicator()), - self.range2d - .as_ref() - .map(|comp| (comp as &dyn ComponentBatch).into()), + Some((&self.range as &dyn ComponentBatch).into()), ] .into_iter() .flatten() @@ -142,20 +149,12 @@ impl ::re_types_core::AsComponents for VisualBounds { } } -impl VisualBounds { - /// Create a new `VisualBounds`. - #[inline] - pub fn new() -> Self { - Self { range2d: None } - } - - /// The visible parts of a 2D space view, in the coordinate space of the scene. - /// - /// Everything within these bounds are guaranteed to be visible. - /// Somethings outside of these bounds may also be visible due to letterboxing. +impl VisualBounds2D { + /// Create a new `VisualBounds2D`. #[inline] - pub fn with_range2d(mut self, range2d: impl Into) -> Self { - self.range2d = Some(range2d.into()); - self + pub fn new(range: impl Into) -> Self { + Self { + range: range.into(), + } } } diff --git a/crates/re_types/src/blueprint/components/.gitattributes b/crates/re_types/src/blueprint/components/.gitattributes index bcc6988a5622b..e3243dff3cb0a 100644 --- a/crates/re_types/src/blueprint/components/.gitattributes +++ b/crates/re_types/src/blueprint/components/.gitattributes @@ -16,3 +16,4 @@ space_view_origin.rs linguist-generated=true viewer_recommendation_hash.rs linguist-generated=true visible.rs linguist-generated=true visible_time_range.rs linguist-generated=true +visual_bounds2d.rs linguist-generated=true diff --git a/crates/re_types/src/blueprint/components/mod.rs b/crates/re_types/src/blueprint/components/mod.rs index 0f29a47819ee1..0d49749ea1d96 100644 --- a/crates/re_types/src/blueprint/components/mod.rs +++ b/crates/re_types/src/blueprint/components/mod.rs @@ -17,6 +17,8 @@ mod viewer_recommendation_hash_ext; mod visible; mod visible_ext; mod visible_time_range; +mod visual_bounds2d; +mod visual_bounds2d_ext; pub use self::active_tab::ActiveTab; pub use self::background_kind::BackgroundKind; @@ -32,3 +34,4 @@ pub use self::space_view_origin::SpaceViewOrigin; pub use self::viewer_recommendation_hash::ViewerRecommendationHash; pub use self::visible::Visible; pub use self::visible_time_range::VisibleTimeRange; +pub use self::visual_bounds2d::VisualBounds2D; diff --git a/crates/re_types/src/components/range2d.rs b/crates/re_types/src/blueprint/components/visual_bounds2d.rs similarity index 80% rename from crates/re_types/src/components/range2d.rs rename to crates/re_types/src/blueprint/components/visual_bounds2d.rs index fe5711935f17e..6b22413abee2b 100644 --- a/crates/re_types/src/components/range2d.rs +++ b/crates/re_types/src/blueprint/components/visual_bounds2d.rs @@ -1,5 +1,5 @@ // DO NOT EDIT! This file was auto-generated by crates/re_types_builder/src/codegen/rust/api.rs -// Based on "crates/re_types/definitions/rerun/components/range2d.fbs". +// Based on "crates/re_types/definitions/rerun/blueprint/components/visual_bounds2d.fbs". #![allow(trivial_numeric_casts)] #![allow(unused_imports)] @@ -22,12 +22,15 @@ use ::re_types_core::SerializationResult; use ::re_types_core::{ComponentBatch, MaybeOwnedComponentBatch}; use ::re_types_core::{DeserializationError, DeserializationResult}; -/// **Component**: An Axis-Aligned Bounding Box in 2D space. +/// **Component**: Visual bounds in 2D space used for `Spatial2DView`. #[derive(Clone, Debug, Copy, PartialEq, bytemuck::Pod, bytemuck::Zeroable)] #[repr(transparent)] -pub struct Range2D(pub crate::datatypes::Range2D); +pub struct VisualBounds2D( + /// X and y ranges that should be visible. + pub crate::datatypes::Range2D, +); -impl ::re_types_core::SizeBytes for Range2D { +impl ::re_types_core::SizeBytes for VisualBounds2D { #[inline] fn heap_size_bytes(&self) -> u64 { self.0.heap_size_bytes() @@ -39,20 +42,20 @@ impl ::re_types_core::SizeBytes for Range2D { } } -impl> From for Range2D { +impl> From for VisualBounds2D { fn from(v: T) -> Self { Self(v.into()) } } -impl std::borrow::Borrow for Range2D { +impl std::borrow::Borrow for VisualBounds2D { #[inline] fn borrow(&self) -> &crate::datatypes::Range2D { &self.0 } } -impl std::ops::Deref for Range2D { +impl std::ops::Deref for VisualBounds2D { type Target = crate::datatypes::Range2D; #[inline] @@ -61,14 +64,14 @@ impl std::ops::Deref for Range2D { } } -::re_types_core::macros::impl_into_cow!(Range2D); +::re_types_core::macros::impl_into_cow!(VisualBounds2D); -impl ::re_types_core::Loggable for Range2D { +impl ::re_types_core::Loggable for VisualBounds2D { type Name = ::re_types_core::ComponentName; #[inline] fn name() -> Self::Name { - "rerun.components.Range2D".into() + "rerun.blueprint.components.VisualBounds2D".into() } #[allow(clippy::wildcard_imports)] @@ -128,12 +131,12 @@ impl ::re_types_core::Loggable for Range2D { use ::re_types_core::{Loggable as _, ResultExt as _}; use arrow2::{array::*, buffer::*, datatypes::*}; Ok(crate::datatypes::Range2D::from_arrow_opt(arrow_data) - .with_context("rerun.components.Range2D#range2d")? + .with_context("rerun.blueprint.components.VisualBounds2D#range2d")? .into_iter() .map(|v| v.ok_or_else(DeserializationError::missing_data)) .map(|res| res.map(|v| Some(Self(v)))) .collect::>>>() - .with_context("rerun.components.Range2D#range2d") - .with_context("rerun.components.Range2D")?) + .with_context("rerun.blueprint.components.VisualBounds2D#range2d") + .with_context("rerun.blueprint.components.VisualBounds2D")?) } } diff --git a/crates/re_types/src/blueprint/components/visual_bounds2d_ext.rs b/crates/re_types/src/blueprint/components/visual_bounds2d_ext.rs new file mode 100644 index 0000000000000..658f3241e9625 --- /dev/null +++ b/crates/re_types/src/blueprint/components/visual_bounds2d_ext.rs @@ -0,0 +1,8 @@ +use super::VisualBounds2D; + +impl From for emath::Rect { + #[inline] + fn from(v: VisualBounds2D) -> Self { + Self::from(v.0) + } +} diff --git a/crates/re_types/src/blueprint/views/spatial2d_view.rs b/crates/re_types/src/blueprint/views/spatial2d_view.rs index 06fdae7b4bbfe..f3ca9334da4a7 100644 --- a/crates/re_types/src/blueprint/views/spatial2d_view.rs +++ b/crates/re_types/src/blueprint/views/spatial2d_view.rs @@ -32,7 +32,7 @@ pub struct Spatial2DView { /// /// Everything within these bounds are guaranteed to be visible. /// Somethings outside of these bounds may also be visible due to letterboxing. - pub visual_bounds: crate::blueprint::archetypes::VisualBounds, + pub visual_bounds: crate::blueprint::archetypes::VisualBounds2D, /// Configures which range on each timeline is shown by this view (unless specified differently per entity). /// @@ -52,7 +52,7 @@ impl ::re_types_core::SizeBytes for Spatial2DView { #[inline] fn is_pod() -> bool { ::is_pod() - && ::is_pod() + && ::is_pod() && ::is_pod() } } diff --git a/crates/re_types/src/components/.gitattributes b/crates/re_types/src/components/.gitattributes index 7751e942983ee..e8ee3a8b89929 100644 --- a/crates/re_types/src/components/.gitattributes +++ b/crates/re_types/src/components/.gitattributes @@ -25,7 +25,6 @@ position2d.rs linguist-generated=true position3d.rs linguist-generated=true radius.rs linguist-generated=true range1d.rs linguist-generated=true -range2d.rs linguist-generated=true resolution.rs linguist-generated=true rotation3d.rs linguist-generated=true scalar.rs linguist-generated=true diff --git a/crates/re_types/src/components/mod.rs b/crates/re_types/src/components/mod.rs index c016586b451ad..a0db22dcfb15a 100644 --- a/crates/re_types/src/components/mod.rs +++ b/crates/re_types/src/components/mod.rs @@ -43,8 +43,6 @@ mod radius; mod radius_ext; mod range1d; mod range1d_ext; -mod range2d; -mod range2d_ext; mod resolution; mod rotation3d; mod rotation3d_ext; @@ -93,7 +91,6 @@ pub use self::position2d::Position2D; pub use self::position3d::Position3D; pub use self::radius::Radius; pub use self::range1d::Range1D; -pub use self::range2d::Range2D; pub use self::resolution::Resolution; pub use self::rotation3d::Rotation3D; pub use self::scalar::Scalar; diff --git a/crates/re_types/src/components/range2d_ext.rs b/crates/re_types/src/components/range2d_ext.rs deleted file mode 100644 index eae3cfe20fe3f..0000000000000 --- a/crates/re_types/src/components/range2d_ext.rs +++ /dev/null @@ -1,8 +0,0 @@ -use super::Range2D; - -impl From for emath::Rect { - #[inline] - fn from(v: Range2D) -> Self { - Self::from(v.0) - } -} diff --git a/crates/re_viewer/src/blueprint/validation_gen/mod.rs b/crates/re_viewer/src/blueprint/validation_gen/mod.rs index c21897873f931..4474c87f96087 100644 --- a/crates/re_viewer/src/blueprint/validation_gen/mod.rs +++ b/crates/re_viewer/src/blueprint/validation_gen/mod.rs @@ -16,6 +16,7 @@ pub use re_types::blueprint::components::SpaceViewOrigin; pub use re_types::blueprint::components::ViewerRecommendationHash; pub use re_types::blueprint::components::Visible; pub use re_types::blueprint::components::VisibleTimeRange; +pub use re_types::blueprint::components::VisualBounds2D; pub use re_types_blueprint::blueprint::components::AutoLayout; pub use re_types_blueprint::blueprint::components::AutoSpaceViews; pub use re_types_blueprint::blueprint::components::ContainerKind; @@ -50,4 +51,5 @@ pub fn is_valid_blueprint(blueprint: &EntityDb) -> bool { && validate_component::(blueprint) && validate_component::(blueprint) && validate_component::(blueprint) + && validate_component::(blueprint) } diff --git a/docs/content/reference/types/components.md b/docs/content/reference/types/components.md index 278637b827fab..31c346b7f6366 100644 --- a/docs/content/reference/types/components.md +++ b/docs/content/reference/types/components.md @@ -37,7 +37,6 @@ on [Entities and Components](../../concepts/entity-component.md). * [`Position3D`](components/position3d.md): A position in 3D space. * [`Radius`](components/radius.md): A Radius component. * [`Range1D`](components/range1d.md): A 1D range, specifying a lower and upper bound. -* [`Range2D`](components/range2d.md): An Axis-Aligned Bounding Box in 2D space. * [`Resolution`](components/resolution.md): Pixel resolution width & height, e.g. of a camera sensor. * [`Rotation3D`](components/rotation3d.md): A 3D rotation, represented either by a quaternion or a rotation around axis. * [`Scalar`](components/scalar.md): A double-precision scalar. diff --git a/docs/content/reference/types/components/.gitattributes b/docs/content/reference/types/components/.gitattributes index fa07eadc51fe9..31c716006d5aa 100644 --- a/docs/content/reference/types/components/.gitattributes +++ b/docs/content/reference/types/components/.gitattributes @@ -25,7 +25,6 @@ position2d.md linguist-generated=true position3d.md linguist-generated=true radius.md linguist-generated=true range1d.md linguist-generated=true -range2d.md linguist-generated=true resolution.md linguist-generated=true rotation3d.md linguist-generated=true scalar.md linguist-generated=true diff --git a/docs/content/reference/types/components/range2d.md b/docs/content/reference/types/components/range2d.md deleted file mode 100644 index 807581063f884..0000000000000 --- a/docs/content/reference/types/components/range2d.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Range2D" ---- - - -An Axis-Aligned Bounding Box in 2D space. - -## Fields - -* range2d: [`Range2D`](../datatypes/range2d.md) - -## API reference links - * 🌊 [C++ API docs for `Range2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Range2D.html?speculative-link) - * 🐍 [Python API docs for `Range2D`](https://ref.rerun.io/docs/python/stable/common/components?speculative-link#rerun.components.Range2D) - * πŸ¦€ [Rust API docs for `Range2D`](https://docs.rs/rerun/latest/rerun/components/struct.Range2D.html?speculative-link) - - diff --git a/docs/content/reference/types/datatypes/range2d.md b/docs/content/reference/types/datatypes/range2d.md index d72c37639a21a..ff726327918e4 100644 --- a/docs/content/reference/types/datatypes/range2d.md +++ b/docs/content/reference/types/datatypes/range2d.md @@ -16,6 +16,3 @@ An Axis-Aligned Bounding Box in 2D space, implemented as the minimum and maximum * πŸ¦€ [Rust API docs for `Range2D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Range2D.html?speculative-link) -## Used by - -* [`Range2D`](../components/range2d.md?speculative-link) diff --git a/docs/snippets/all/archetypes/line_segments2d_simple.cpp b/docs/snippets/all/archetypes/line_segments2d_simple.cpp index c4bad78d6c66a..a09db3e72e675 100644 --- a/docs/snippets/all/archetypes/line_segments2d_simple.cpp +++ b/docs/snippets/all/archetypes/line_segments2d_simple.cpp @@ -12,5 +12,5 @@ int main() { }; rec.log("segments", rerun::LineStrips2D(points)); - // TODO(#5520): log VisualBounds + // TODO(#5520): log VisualBounds2D } diff --git a/docs/snippets/all/archetypes/line_segments2d_simple.py b/docs/snippets/all/archetypes/line_segments2d_simple.py index 50c6d009d0420..8d083ce4a2838 100644 --- a/docs/snippets/all/archetypes/line_segments2d_simple.py +++ b/docs/snippets/all/archetypes/line_segments2d_simple.py @@ -12,4 +12,4 @@ ) # Set view bounds: -rr.send_blueprint(rrb.Spatial2DView(visual_bounds=rrb.VisualBounds(x_range=[-1, 7], y_range=[-3, 3]))) +rr.send_blueprint(rrb.Spatial2DView(visual_bounds=rrb.VisualBounds2D(x_range=[-1, 7], y_range=[-3, 3]))) diff --git a/docs/snippets/all/archetypes/line_segments2d_simple.rs b/docs/snippets/all/archetypes/line_segments2d_simple.rs index 9b4d7ad3c51c0..c926a0a301440 100644 --- a/docs/snippets/all/archetypes/line_segments2d_simple.rs +++ b/docs/snippets/all/archetypes/line_segments2d_simple.rs @@ -6,7 +6,7 @@ fn main() -> Result<(), Box> { let points = [[0., 0.], [2., 1.], [4., -1.], [6., 0.]]; rec.log("segments", &rerun::LineStrips2D::new(points.chunks(2)))?; - // TODO(#5521): log VisualBounds + // TODO(#5521): log VisualBounds2D Ok(()) } diff --git a/docs/snippets/all/archetypes/line_strip2d_batch.cpp b/docs/snippets/all/archetypes/line_strip2d_batch.cpp index 9df91de80c467..5efa2a6a0d50a 100644 --- a/docs/snippets/all/archetypes/line_strip2d_batch.cpp +++ b/docs/snippets/all/archetypes/line_strip2d_batch.cpp @@ -19,5 +19,5 @@ int main() { .with_labels({"one strip here", "and one strip there"}) ); - // TODO(#5520): log VisualBounds + // TODO(#5520): log VisualBounds2D } diff --git a/docs/snippets/all/archetypes/line_strip2d_batch.py b/docs/snippets/all/archetypes/line_strip2d_batch.py index 3aec7afa695d8..c13d510103261 100644 --- a/docs/snippets/all/archetypes/line_strip2d_batch.py +++ b/docs/snippets/all/archetypes/line_strip2d_batch.py @@ -19,4 +19,4 @@ ) # Set view bounds: -rr.send_blueprint(rrb.Spatial2DView(visual_bounds=rrb.VisualBounds(x_range=[-1, 7], y_range=[-3, 6]))) +rr.send_blueprint(rrb.Spatial2DView(visual_bounds=rrb.VisualBounds2D(x_range=[-1, 7], y_range=[-3, 6]))) diff --git a/docs/snippets/all/archetypes/line_strip2d_batch.rs b/docs/snippets/all/archetypes/line_strip2d_batch.rs index bb0b27ab793a7..2425ecea2a45d 100644 --- a/docs/snippets/all/archetypes/line_strip2d_batch.rs +++ b/docs/snippets/all/archetypes/line_strip2d_batch.rs @@ -14,7 +14,7 @@ fn main() -> Result<(), Box> { .with_labels(["one strip here", "and one strip there"]), )?; - // TODO(#5521): log VisualBounds + // TODO(#5521): log VisualBounds2D Ok(()) } diff --git a/docs/snippets/all/archetypes/line_strip2d_simple.cpp b/docs/snippets/all/archetypes/line_strip2d_simple.cpp index c58ed459da441..46022d896901d 100644 --- a/docs/snippets/all/archetypes/line_strip2d_simple.cpp +++ b/docs/snippets/all/archetypes/line_strip2d_simple.cpp @@ -9,5 +9,5 @@ int main() { const auto strip = rerun::LineStrip2D({{0.f, 0.f}, {2.f, 1.f}, {4.f, -1.f}, {6.f, 0.f}}); rec.log("strip", rerun::LineStrips2D(strip)); - // TODO(#5520): log VisualBounds + // TODO(#5520): log VisualBounds2D } diff --git a/docs/snippets/all/archetypes/line_strip2d_simple.py b/docs/snippets/all/archetypes/line_strip2d_simple.py index 60135bd37ed29..9c536d7bd9c4b 100644 --- a/docs/snippets/all/archetypes/line_strip2d_simple.py +++ b/docs/snippets/all/archetypes/line_strip2d_simple.py @@ -11,4 +11,4 @@ ) # Set view bounds: -rr.send_blueprint(rrb.Spatial2DView(visual_bounds=rrb.VisualBounds(x_range=[-1, 7], y_range=[-3, 3]))) +rr.send_blueprint(rrb.Spatial2DView(visual_bounds=rrb.VisualBounds2D(x_range=[-1, 7], y_range=[-3, 3]))) diff --git a/docs/snippets/all/archetypes/line_strip2d_simple.rs b/docs/snippets/all/archetypes/line_strip2d_simple.rs index 1a80c2d218ac5..589ce8ae00fda 100644 --- a/docs/snippets/all/archetypes/line_strip2d_simple.rs +++ b/docs/snippets/all/archetypes/line_strip2d_simple.rs @@ -6,7 +6,7 @@ fn main() -> Result<(), Box> { let points = [[0., 0.], [2., 1.], [4., -1.], [6., 0.]]; rec.log("strip", &rerun::LineStrips2D::new([points]))?; - // TODO(#5521): log VisualBounds + // TODO(#5521): log VisualBounds2D Ok(()) } diff --git a/docs/snippets/all/archetypes/point2d_random.cpp b/docs/snippets/all/archetypes/point2d_random.cpp index 26d74f7119d20..6da4f904a2610 100644 --- a/docs/snippets/all/archetypes/point2d_random.cpp +++ b/docs/snippets/all/archetypes/point2d_random.cpp @@ -33,5 +33,5 @@ int main() { rec.log("random", rerun::Points2D(points2d).with_colors(colors).with_radii(radii)); - // TODO(#5520): log VisualBounds + // TODO(#5520): log VisualBounds2D } diff --git a/docs/snippets/all/archetypes/point2d_random.py b/docs/snippets/all/archetypes/point2d_random.py index ecd6f2d937b13..2b3e52105f3e4 100644 --- a/docs/snippets/all/archetypes/point2d_random.py +++ b/docs/snippets/all/archetypes/point2d_random.py @@ -14,4 +14,4 @@ rr.log("random", rr.Points2D(positions, colors=colors, radii=radii)) # Set view bounds: -rr.send_blueprint(rrb.Spatial2DView(visual_bounds=rrb.VisualBounds(x_range=[-4, 4], y_range=[-4, 4]))) +rr.send_blueprint(rrb.Spatial2DView(visual_bounds=rrb.VisualBounds2D(x_range=[-4, 4], y_range=[-4, 4]))) diff --git a/docs/snippets/all/archetypes/point2d_random.rs b/docs/snippets/all/archetypes/point2d_random.rs index d1d77d601172f..dda2f759dd178 100644 --- a/docs/snippets/all/archetypes/point2d_random.rs +++ b/docs/snippets/all/archetypes/point2d_random.rs @@ -15,7 +15,7 @@ fn main() -> Result<(), Box> { .with_radii((0..10).map(|_| rng.gen::())), )?; - // TODO(#5521): log VisualBounds + // TODO(#5521): log VisualBounds2D Ok(()) } diff --git a/docs/snippets/all/archetypes/point2d_simple.cpp b/docs/snippets/all/archetypes/point2d_simple.cpp index 62cc7389c9106..0e93096561a50 100644 --- a/docs/snippets/all/archetypes/point2d_simple.cpp +++ b/docs/snippets/all/archetypes/point2d_simple.cpp @@ -8,5 +8,5 @@ int main() { rec.log("points", rerun::Points2D({{0.0f, 0.0f}, {1.0f, 1.0f}})); - // TODO(#5520): log VisualBounds + // TODO(#5520): log VisualBounds2D } diff --git a/docs/snippets/all/archetypes/point2d_simple.py b/docs/snippets/all/archetypes/point2d_simple.py index a1e729198ec69..c26ee8d9355d9 100644 --- a/docs/snippets/all/archetypes/point2d_simple.py +++ b/docs/snippets/all/archetypes/point2d_simple.py @@ -8,4 +8,4 @@ rr.log("points", rr.Points2D([[0, 0], [1, 1]])) # Set view bounds: -rr.send_blueprint(rrb.Spatial2DView(visual_bounds=rrb.VisualBounds(x_range=[-1, 2], y_range=[-1, 2]))) +rr.send_blueprint(rrb.Spatial2DView(visual_bounds=rrb.VisualBounds2D(x_range=[-1, 2], y_range=[-1, 2]))) diff --git a/docs/snippets/all/archetypes/point2d_simple.rs b/docs/snippets/all/archetypes/point2d_simple.rs index 3b21307e7c31a..1df6f6ffdf175 100644 --- a/docs/snippets/all/archetypes/point2d_simple.rs +++ b/docs/snippets/all/archetypes/point2d_simple.rs @@ -5,7 +5,7 @@ fn main() -> Result<(), Box> { rec.log("points", &rerun::Points2D::new([(0.0, 0.0), (1.0, 1.0)]))?; - // TODO(#5521): log VisualBounds + // TODO(#5521): log VisualBounds2D Ok(()) } diff --git a/docs/snippets/all/tutorials/extra_values.py b/docs/snippets/all/tutorials/extra_values.py index 103b2de5c6f44..d8d65fea4af45 100644 --- a/docs/snippets/all/tutorials/extra_values.py +++ b/docs/snippets/all/tutorials/extra_values.py @@ -14,4 +14,4 @@ ) # Set view bounds: -rr.send_blueprint(rrb.Spatial2DView(visual_bounds=rrb.VisualBounds(x_range=[-1.5, 1.5], y_range=[-1.5, 1.5]))) +rr.send_blueprint(rrb.Spatial2DView(visual_bounds=rrb.VisualBounds2D(x_range=[-1.5, 1.5], y_range=[-1.5, 1.5]))) diff --git a/docs/snippets/all/views/spatial2d.py b/docs/snippets/all/views/spatial2d.py index f8d82733579b7..445f116b3e375 100644 --- a/docs/snippets/all/views/spatial2d.py +++ b/docs/snippets/all/views/spatial2d.py @@ -24,7 +24,7 @@ background=[100, 149, 237], # Note that this range is smaller than the range of the points, # so some points will not be visible. - visual_bounds=rrb.VisualBounds(x_range=[-5, 5], y_range=[-5, 5]), + visual_bounds=rrb.VisualBounds2D(x_range=[-5, 5], y_range=[-5, 5]), ), collapse_panels=True, ) diff --git a/rerun_cpp/src/rerun/archetypes/line_strips2d.hpp b/rerun_cpp/src/rerun/archetypes/line_strips2d.hpp index a6b4f5e6b239c..0e1b5439c22b8 100644 --- a/rerun_cpp/src/rerun/archetypes/line_strips2d.hpp +++ b/rerun_cpp/src/rerun/archetypes/line_strips2d.hpp @@ -48,7 +48,7 @@ namespace rerun::archetypes { /// .with_labels({"one strip here", "and one strip there"}) /// ); /// - /// // TODO(#5520): log VisualBounds + /// // TODO(#5520): log VisualBounds2D /// } /// ``` struct LineStrips2D { diff --git a/rerun_cpp/src/rerun/archetypes/points2d.hpp b/rerun_cpp/src/rerun/archetypes/points2d.hpp index 171718d731f35..d4b080df3dea6 100644 --- a/rerun_cpp/src/rerun/archetypes/points2d.hpp +++ b/rerun_cpp/src/rerun/archetypes/points2d.hpp @@ -63,7 +63,7 @@ namespace rerun::archetypes { /// /// rec.log("random", rerun::Points2D(points2d).with_colors(colors).with_radii(radii)); /// - /// // TODO(#5520): log VisualBounds + /// // TODO(#5520): log VisualBounds2D /// } /// ``` struct Points2D { diff --git a/rerun_cpp/src/rerun/blueprint/archetypes.hpp b/rerun_cpp/src/rerun/blueprint/archetypes.hpp index 2f11a6bd23a9f..85623edf92c13 100644 --- a/rerun_cpp/src/rerun/blueprint/archetypes.hpp +++ b/rerun_cpp/src/rerun/blueprint/archetypes.hpp @@ -11,4 +11,4 @@ #include "blueprint/archetypes/space_view_contents.hpp" #include "blueprint/archetypes/viewport_blueprint.hpp" #include "blueprint/archetypes/visible_time_ranges.hpp" -#include "blueprint/archetypes/visual_bounds.hpp" +#include "blueprint/archetypes/visual_bounds2d.hpp" diff --git a/rerun_cpp/src/rerun/blueprint/archetypes/.gitattributes b/rerun_cpp/src/rerun/blueprint/archetypes/.gitattributes index 074e39be8ce0f..fb2878e3676c4 100644 --- a/rerun_cpp/src/rerun/blueprint/archetypes/.gitattributes +++ b/rerun_cpp/src/rerun/blueprint/archetypes/.gitattributes @@ -19,5 +19,5 @@ viewport_blueprint.cpp linguist-generated=true viewport_blueprint.hpp linguist-generated=true visible_time_ranges.cpp linguist-generated=true visible_time_ranges.hpp linguist-generated=true -visual_bounds.cpp linguist-generated=true -visual_bounds.hpp linguist-generated=true +visual_bounds2d.cpp linguist-generated=true +visual_bounds2d.hpp linguist-generated=true diff --git a/rerun_cpp/src/rerun/blueprint/archetypes/visual_bounds.hpp b/rerun_cpp/src/rerun/blueprint/archetypes/visual_bounds.hpp deleted file mode 100644 index fd844c98eb658..0000000000000 --- a/rerun_cpp/src/rerun/blueprint/archetypes/visual_bounds.hpp +++ /dev/null @@ -1,64 +0,0 @@ -// DO NOT EDIT! This file was auto-generated by crates/re_types_builder/src/codegen/cpp/mod.rs -// Based on "crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds.fbs". - -#pragma once - -#include "../../collection.hpp" -#include "../../compiler_utils.hpp" -#include "../../components/range2d.hpp" -#include "../../data_cell.hpp" -#include "../../indicator_component.hpp" -#include "../../result.hpp" - -#include -#include -#include -#include - -namespace rerun::blueprint::archetypes { - /// **Archetype**: Controls the visual bounds of a 2D space view. - struct VisualBounds { - /// The visible parts of a 2D space view, in the coordinate space of the scene. - /// - /// Everything within these bounds are guaranteed to be visible. - /// Somethings outside of these bounds may also be visible due to letterboxing. - std::optional range2d; - - public: - static constexpr const char IndicatorComponentName[] = - "rerun.blueprint.components.VisualBoundsIndicator"; - - /// Indicator component, used to identify the archetype when converting to a list of components. - using IndicatorComponent = rerun::components::IndicatorComponent; - - public: - VisualBounds() = default; - VisualBounds(VisualBounds&& other) = default; - - /// The visible parts of a 2D space view, in the coordinate space of the scene. - /// - /// Everything within these bounds are guaranteed to be visible. - /// Somethings outside of these bounds may also be visible due to letterboxing. - VisualBounds with_range2d(rerun::components::Range2D _range2d) && { - range2d = std::move(_range2d); - // See: https://github.com/rerun-io/rerun/issues/4027 - RR_WITH_MAYBE_UNINITIALIZED_DISABLED(return std::move(*this);) - } - }; - -} // namespace rerun::blueprint::archetypes - -namespace rerun { - /// \private - template - struct AsComponents; - - /// \private - template <> - struct AsComponents { - /// Serialize all set component batches. - static Result> serialize( - const blueprint::archetypes::VisualBounds& archetype - ); - }; -} // namespace rerun diff --git a/rerun_cpp/src/rerun/blueprint/archetypes/visual_bounds.cpp b/rerun_cpp/src/rerun/blueprint/archetypes/visual_bounds2d.cpp similarity index 76% rename from rerun_cpp/src/rerun/blueprint/archetypes/visual_bounds.cpp rename to rerun_cpp/src/rerun/blueprint/archetypes/visual_bounds2d.cpp index 5cfa2d5ed8e0e..6ca963482781a 100644 --- a/rerun_cpp/src/rerun/blueprint/archetypes/visual_bounds.cpp +++ b/rerun_cpp/src/rerun/blueprint/archetypes/visual_bounds2d.cpp @@ -1,7 +1,7 @@ // DO NOT EDIT! This file was auto-generated by crates/re_types_builder/src/codegen/cpp/mod.rs -// Based on "crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds.fbs". +// Based on "crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds2d.fbs". -#include "visual_bounds.hpp" +#include "visual_bounds2d.hpp" #include "../../collection_adapter_builtins.hpp" @@ -9,20 +9,20 @@ namespace rerun::blueprint::archetypes {} namespace rerun { - Result> AsComponents::serialize( - const blueprint::archetypes::VisualBounds& archetype + Result> AsComponents::serialize( + const blueprint::archetypes::VisualBounds2D& archetype ) { using namespace blueprint::archetypes; std::vector cells; cells.reserve(2); - if (archetype.range2d.has_value()) { - auto result = DataCell::from_loggable(archetype.range2d.value()); + { + auto result = DataCell::from_loggable(archetype.range); RR_RETURN_NOT_OK(result.error); cells.push_back(std::move(result.value)); } { - auto indicator = VisualBounds::IndicatorComponent(); + auto indicator = VisualBounds2D::IndicatorComponent(); auto result = DataCell::from_loggable(indicator); RR_RETURN_NOT_OK(result.error); cells.emplace_back(std::move(result.value)); diff --git a/rerun_cpp/src/rerun/blueprint/archetypes/visual_bounds2d.hpp b/rerun_cpp/src/rerun/blueprint/archetypes/visual_bounds2d.hpp new file mode 100644 index 0000000000000..cc9cba755d4da --- /dev/null +++ b/rerun_cpp/src/rerun/blueprint/archetypes/visual_bounds2d.hpp @@ -0,0 +1,60 @@ +// DO NOT EDIT! This file was auto-generated by crates/re_types_builder/src/codegen/cpp/mod.rs +// Based on "crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds2d.fbs". + +#pragma once + +#include "../../blueprint/components/visual_bounds2d.hpp" +#include "../../collection.hpp" +#include "../../data_cell.hpp" +#include "../../indicator_component.hpp" +#include "../../result.hpp" + +#include +#include +#include + +namespace rerun::blueprint::archetypes { + /// **Archetype**: Controls the visual bounds of a 2D view. + /// + /// Everything within these bounds are guaranteed to be visible. + /// Somethings outside of these bounds may also be visible due to letterboxing. + /// + /// If no visual bounds are set, it will be determined automatically, + /// based on the bounding-box of the data or other camera information present in the view. + struct VisualBounds2D { + /// Controls the visible range of a 2D view. + /// + /// Use this to control pan & zoom of the view. + rerun::blueprint::components::VisualBounds2D range; + + public: + static constexpr const char IndicatorComponentName[] = + "rerun.blueprint.components.VisualBounds2DIndicator"; + + /// Indicator component, used to identify the archetype when converting to a list of components. + using IndicatorComponent = rerun::components::IndicatorComponent; + + public: + VisualBounds2D() = default; + VisualBounds2D(VisualBounds2D&& other) = default; + + explicit VisualBounds2D(rerun::blueprint::components::VisualBounds2D _range) + : range(std::move(_range)) {} + }; + +} // namespace rerun::blueprint::archetypes + +namespace rerun { + /// \private + template + struct AsComponents; + + /// \private + template <> + struct AsComponents { + /// Serialize all set component batches. + static Result> serialize( + const blueprint::archetypes::VisualBounds2D& archetype + ); + }; +} // namespace rerun diff --git a/rerun_cpp/src/rerun/blueprint/components.hpp b/rerun_cpp/src/rerun/blueprint/components.hpp index acc1c7879ee73..2853643b21fac 100644 --- a/rerun_cpp/src/rerun/blueprint/components.hpp +++ b/rerun_cpp/src/rerun/blueprint/components.hpp @@ -24,3 +24,4 @@ #include "blueprint/components/viewer_recommendation_hash.hpp" #include "blueprint/components/visible.hpp" #include "blueprint/components/visible_time_range.hpp" +#include "blueprint/components/visual_bounds2d.hpp" diff --git a/rerun_cpp/src/rerun/blueprint/components/.gitattributes b/rerun_cpp/src/rerun/blueprint/components/.gitattributes index bea2a6a8f0de7..50269a81697ec 100644 --- a/rerun_cpp/src/rerun/blueprint/components/.gitattributes +++ b/rerun_cpp/src/rerun/blueprint/components/.gitattributes @@ -33,3 +33,4 @@ viewer_recommendation_hash.hpp linguist-generated=true visible.cpp linguist-generated=true visible.hpp linguist-generated=true visible_time_range.hpp linguist-generated=true +visual_bounds2d.hpp linguist-generated=true diff --git a/rerun_cpp/src/rerun/blueprint/components/visual_bounds2d.hpp b/rerun_cpp/src/rerun/blueprint/components/visual_bounds2d.hpp new file mode 100644 index 0000000000000..b9e9ba6183196 --- /dev/null +++ b/rerun_cpp/src/rerun/blueprint/components/visual_bounds2d.hpp @@ -0,0 +1,60 @@ +// DO NOT EDIT! This file was auto-generated by crates/re_types_builder/src/codegen/cpp/mod.rs +// Based on "crates/re_types/definitions/rerun/blueprint/components/visual_bounds2d.fbs". + +#pragma once + +#include "../../datatypes/range2d.hpp" +#include "../../result.hpp" + +#include +#include + +namespace rerun::blueprint::components { + /// **Component**: Visual bounds in 2D space used for `Spatial2DView`. + struct VisualBounds2D { + /// X and y ranges that should be visible. + rerun::datatypes::Range2D range2d; + + public: + VisualBounds2D() = default; + + VisualBounds2D(rerun::datatypes::Range2D range2d_) : range2d(range2d_) {} + + VisualBounds2D& operator=(rerun::datatypes::Range2D range2d_) { + range2d = range2d_; + return *this; + } + + /// Cast to the underlying Range2D datatype + operator rerun::datatypes::Range2D() const { + return range2d; + } + }; +} // namespace rerun::blueprint::components + +namespace rerun { + static_assert( + sizeof(rerun::datatypes::Range2D) == sizeof(blueprint::components::VisualBounds2D) + ); + + /// \private + template <> + struct Loggable { + static constexpr const char Name[] = "rerun.blueprint.components.VisualBounds2D"; + + /// Returns the arrow data type this type corresponds to. + static const std::shared_ptr& arrow_datatype() { + return Loggable::arrow_datatype(); + } + + /// Serializes an array of `rerun::blueprint:: components::VisualBounds2D` into an arrow array. + static Result> to_arrow( + const blueprint::components::VisualBounds2D* instances, size_t num_instances + ) { + return Loggable::to_arrow( + &instances->range2d, + num_instances + ); + } + }; +} // namespace rerun diff --git a/rerun_cpp/src/rerun/components.hpp b/rerun_cpp/src/rerun/components.hpp index 5df270cf0f25d..58477cdbe467a 100644 --- a/rerun_cpp/src/rerun/components.hpp +++ b/rerun_cpp/src/rerun/components.hpp @@ -26,7 +26,6 @@ #include "components/position3d.hpp" #include "components/radius.hpp" #include "components/range1d.hpp" -#include "components/range2d.hpp" #include "components/resolution.hpp" #include "components/rotation3d.hpp" #include "components/scalar.hpp" diff --git a/rerun_cpp/src/rerun/components/.gitattributes b/rerun_cpp/src/rerun/components/.gitattributes index 856afbcbc2e3e..d7cab86db5d69 100644 --- a/rerun_cpp/src/rerun/components/.gitattributes +++ b/rerun_cpp/src/rerun/components/.gitattributes @@ -36,7 +36,6 @@ position3d.hpp linguist-generated=true radius.cpp linguist-generated=true radius.hpp linguist-generated=true range1d.hpp linguist-generated=true -range2d.hpp linguist-generated=true resolution.hpp linguist-generated=true rotation3d.hpp linguist-generated=true scalar.cpp linguist-generated=true diff --git a/rerun_cpp/src/rerun/components/range2d.hpp b/rerun_cpp/src/rerun/components/range2d.hpp deleted file mode 100644 index bf38a2736c633..0000000000000 --- a/rerun_cpp/src/rerun/components/range2d.hpp +++ /dev/null @@ -1,57 +0,0 @@ -// DO NOT EDIT! This file was auto-generated by crates/re_types_builder/src/codegen/cpp/mod.rs -// Based on "crates/re_types/definitions/rerun/components/range2d.fbs". - -#pragma once - -#include "../datatypes/range2d.hpp" -#include "../result.hpp" - -#include -#include - -namespace rerun::components { - /// **Component**: An Axis-Aligned Bounding Box in 2D space. - struct Range2D { - rerun::datatypes::Range2D range2d; - - public: - Range2D() = default; - - Range2D(rerun::datatypes::Range2D range2d_) : range2d(range2d_) {} - - Range2D& operator=(rerun::datatypes::Range2D range2d_) { - range2d = range2d_; - return *this; - } - - /// Cast to the underlying Range2D datatype - operator rerun::datatypes::Range2D() const { - return range2d; - } - }; -} // namespace rerun::components - -namespace rerun { - static_assert(sizeof(rerun::datatypes::Range2D) == sizeof(components::Range2D)); - - /// \private - template <> - struct Loggable { - static constexpr const char Name[] = "rerun.components.Range2D"; - - /// Returns the arrow data type this type corresponds to. - static const std::shared_ptr& arrow_datatype() { - return Loggable::arrow_datatype(); - } - - /// Serializes an array of `rerun::components::Range2D` into an arrow array. - static Result> to_arrow( - const components::Range2D* instances, size_t num_instances - ) { - return Loggable::to_arrow( - &instances->range2d, - num_instances - ); - } - }; -} // namespace rerun diff --git a/rerun_py/rerun_sdk/rerun/archetypes/line_strips2d.py b/rerun_py/rerun_sdk/rerun/archetypes/line_strips2d.py index 6e9a828abc493..62a20a5550241 100644 --- a/rerun_py/rerun_sdk/rerun/archetypes/line_strips2d.py +++ b/rerun_py/rerun_sdk/rerun/archetypes/line_strips2d.py @@ -44,7 +44,7 @@ class LineStrips2D(Archetype): ) # Set view bounds: - rr.send_blueprint(rrb.Spatial2DView(visual_bounds=rrb.VisualBounds(x_range=[-1, 7], y_range=[-3, 6]))) + rr.send_blueprint(rrb.Spatial2DView(visual_bounds=rrb.VisualBounds2D(x_range=[-1, 7], y_range=[-3, 6]))) ```
diff --git a/rerun_py/rerun_sdk/rerun/archetypes/points2d.py b/rerun_py/rerun_sdk/rerun/archetypes/points2d.py index 756e96f7c5487..a6214b8048ec5 100644 --- a/rerun_py/rerun_sdk/rerun/archetypes/points2d.py +++ b/rerun_py/rerun_sdk/rerun/archetypes/points2d.py @@ -37,7 +37,7 @@ class Points2D(Points2DExt, Archetype): rr.log("random", rr.Points2D(positions, colors=colors, radii=radii)) # Set view bounds: - rr.send_blueprint(rrb.Spatial2DView(visual_bounds=rrb.VisualBounds(x_range=[-4, 4], y_range=[-4, 4]))) + rr.send_blueprint(rrb.Spatial2DView(visual_bounds=rrb.VisualBounds2D(x_range=[-4, 4], y_range=[-4, 4]))) ```
diff --git a/rerun_py/rerun_sdk/rerun/blueprint/__init__.py b/rerun_py/rerun_sdk/rerun/blueprint/__init__.py index 8e0da903a3909..edeecdb62dd0c 100644 --- a/rerun_py/rerun_sdk/rerun/blueprint/__init__.py +++ b/rerun_py/rerun_sdk/rerun/blueprint/__init__.py @@ -22,7 +22,7 @@ PlotLegend, ScalarAxis, # VisibleTimeRanges, # Don't expose this mono-archetype directly - one can always use the component instead! - VisualBounds, + VisualBounds2D, ) from .components import ( BackgroundKind, diff --git a/rerun_py/rerun_sdk/rerun/blueprint/archetypes/.gitattributes b/rerun_py/rerun_sdk/rerun/blueprint/archetypes/.gitattributes index 3b8b39e5ad8f1..7c0a9c78e67b0 100644 --- a/rerun_py/rerun_sdk/rerun/blueprint/archetypes/.gitattributes +++ b/rerun_py/rerun_sdk/rerun/blueprint/archetypes/.gitattributes @@ -11,4 +11,4 @@ space_view_blueprint.py linguist-generated=true space_view_contents.py linguist-generated=true viewport_blueprint.py linguist-generated=true visible_time_ranges.py linguist-generated=true -visual_bounds.py linguist-generated=true +visual_bounds2d.py linguist-generated=true diff --git a/rerun_py/rerun_sdk/rerun/blueprint/archetypes/__init__.py b/rerun_py/rerun_sdk/rerun/blueprint/archetypes/__init__.py index 4e2a2e25e3b7d..89260513384e6 100644 --- a/rerun_py/rerun_sdk/rerun/blueprint/archetypes/__init__.py +++ b/rerun_py/rerun_sdk/rerun/blueprint/archetypes/__init__.py @@ -11,7 +11,7 @@ from .space_view_contents import SpaceViewContents from .viewport_blueprint import ViewportBlueprint from .visible_time_ranges import VisibleTimeRanges -from .visual_bounds import VisualBounds +from .visual_bounds2d import VisualBounds2D __all__ = [ "Background", @@ -23,5 +23,5 @@ "SpaceViewContents", "ViewportBlueprint", "VisibleTimeRanges", - "VisualBounds", + "VisualBounds2D", ] diff --git a/rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds.py b/rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds.py deleted file mode 100644 index 2e8f1f5fcde01..0000000000000 --- a/rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds.py +++ /dev/null @@ -1,49 +0,0 @@ -# DO NOT EDIT! This file was auto-generated by crates/re_types_builder/src/codegen/python/mod.rs -# Based on "crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds.fbs". - -# You can extend this class by creating a "VisualBoundsExt" class in "visual_bounds_ext.py". - -from __future__ import annotations - -from attrs import define, field - -from ... import components -from ..._baseclasses import Archetype -from .visual_bounds_ext import VisualBoundsExt - -__all__ = ["VisualBounds"] - - -@define(str=False, repr=False, init=False) -class VisualBounds(VisualBoundsExt, Archetype): - """**Archetype**: Controls the visual bounds of a 2D space view.""" - - # __init__ can be found in visual_bounds_ext.py - - def __attrs_clear__(self) -> None: - """Convenience method for calling `__attrs_init__` with all `None`s.""" - self.__attrs_init__( - range2d=None, # type: ignore[arg-type] - ) - - @classmethod - def _clear(cls) -> VisualBounds: - """Produce an empty VisualBounds, bypassing `__init__`.""" - inst = cls.__new__(cls) - inst.__attrs_clear__() - return inst - - range2d: components.Range2DBatch | None = field( - metadata={"component": "optional"}, - default=None, - converter=components.Range2DBatch._optional, # type: ignore[misc] - ) - # The visible parts of a 2D space view, in the coordinate space of the scene. - # - # Everything within these bounds are guaranteed to be visible. - # Somethings outside of these bounds may also be visible due to letterboxing. - # - # (Docstring intentionally commented out to hide this field from the docs) - - __str__ = Archetype.__str__ - __repr__ = Archetype.__repr__ # type: ignore[assignment] diff --git a/rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds2d.py b/rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds2d.py new file mode 100644 index 0000000000000..c9b746f4868a1 --- /dev/null +++ b/rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds2d.py @@ -0,0 +1,55 @@ +# DO NOT EDIT! This file was auto-generated by crates/re_types_builder/src/codegen/python/mod.rs +# Based on "crates/re_types/definitions/rerun/blueprint/archetypes/visual_bounds2d.fbs". + +# You can extend this class by creating a "VisualBounds2DExt" class in "visual_bounds2d_ext.py". + +from __future__ import annotations + +from attrs import define, field + +from ..._baseclasses import Archetype +from ...blueprint import components as blueprint_components +from .visual_bounds2d_ext import VisualBounds2DExt + +__all__ = ["VisualBounds2D"] + + +@define(str=False, repr=False, init=False) +class VisualBounds2D(VisualBounds2DExt, Archetype): + """ + **Archetype**: Controls the visual bounds of a 2D view. + + Everything within these bounds are guaranteed to be visible. + Somethings outside of these bounds may also be visible due to letterboxing. + + If no visual bounds are set, it will be determined automatically, + based on the bounding-box of the data or other camera information present in the view. + """ + + # __init__ can be found in visual_bounds2d_ext.py + + def __attrs_clear__(self) -> None: + """Convenience method for calling `__attrs_init__` with all `None`s.""" + self.__attrs_init__( + range=None, # type: ignore[arg-type] + ) + + @classmethod + def _clear(cls) -> VisualBounds2D: + """Produce an empty VisualBounds2D, bypassing `__init__`.""" + inst = cls.__new__(cls) + inst.__attrs_clear__() + return inst + + range: blueprint_components.VisualBounds2DBatch = field( + metadata={"component": "required"}, + converter=blueprint_components.VisualBounds2DBatch._required, # type: ignore[misc] + ) + # Controls the visible range of a 2D view. + # + # Use this to control pan & zoom of the view. + # + # (Docstring intentionally commented out to hide this field from the docs) + + __str__ = Archetype.__str__ + __repr__ = Archetype.__repr__ # type: ignore[assignment] diff --git a/rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds_ext.py b/rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds2d_ext.py similarity index 64% rename from rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds_ext.py rename to rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds2d_ext.py index 04088d2a3d00b..424e3fb5ea933 100644 --- a/rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds_ext.py +++ b/rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds2d_ext.py @@ -2,12 +2,13 @@ from typing import Any -from ... import components, datatypes +from ... import datatypes from ...error_utils import catch_and_log_exceptions +from .. import components as blueprint_components -class VisualBoundsExt: - """Extension for [VisualBounds][rerun.blueprint.archetypes.VisualBounds].""" +class VisualBounds2DExt: + """Extension for [VisualBounds2D][rerun.blueprint.archetypes.VisualBounds2D].""" def __init__( self: Any, @@ -16,7 +17,7 @@ def __init__( y_range: datatypes.Range1DLike, ): """ - Create a new instance of the VisualBounds archetype. + Create a new instance of the VisualBounds2D archetype. Parameters ---------- @@ -28,6 +29,6 @@ def __init__( """ with catch_and_log_exceptions(context=self.__class__.__name__): - self.__attrs_init__(range2d=components.Range2D(x_range=x_range, y_range=y_range)) + self.__attrs_init__(range2d=blueprint_components.VisualBounds2D(x_range=x_range, y_range=y_range)) return self.__attrs_clear__() diff --git a/rerun_py/rerun_sdk/rerun/blueprint/components/.gitattributes b/rerun_py/rerun_sdk/rerun/blueprint/components/.gitattributes index 5f570fe846515..decf79627807a 100644 --- a/rerun_py/rerun_sdk/rerun/blueprint/components/.gitattributes +++ b/rerun_py/rerun_sdk/rerun/blueprint/components/.gitattributes @@ -24,3 +24,4 @@ space_view_origin.py linguist-generated=true viewer_recommendation_hash.py linguist-generated=true visible.py linguist-generated=true visible_time_range.py linguist-generated=true +visual_bounds2d.py linguist-generated=true diff --git a/rerun_py/rerun_sdk/rerun/blueprint/components/__init__.py b/rerun_py/rerun_sdk/rerun/blueprint/components/__init__.py index c398116775ac1..48556e4455b95 100644 --- a/rerun_py/rerun_sdk/rerun/blueprint/components/__init__.py +++ b/rerun_py/rerun_sdk/rerun/blueprint/components/__init__.py @@ -52,6 +52,7 @@ ) from .visible import Visible, VisibleArrayLike, VisibleBatch, VisibleLike, VisibleType from .visible_time_range import VisibleTimeRange, VisibleTimeRangeBatch, VisibleTimeRangeType +from .visual_bounds2d import VisualBounds2D, VisualBounds2DBatch, VisualBounds2DType __all__ = [ "ActiveTab", @@ -140,4 +141,7 @@ "VisibleTimeRangeBatch", "VisibleTimeRangeType", "VisibleType", + "VisualBounds2D", + "VisualBounds2DBatch", + "VisualBounds2DType", ] diff --git a/rerun_py/rerun_sdk/rerun/blueprint/components/visual_bounds2d.py b/rerun_py/rerun_sdk/rerun/blueprint/components/visual_bounds2d.py new file mode 100644 index 0000000000000..c73389d047456 --- /dev/null +++ b/rerun_py/rerun_sdk/rerun/blueprint/components/visual_bounds2d.py @@ -0,0 +1,29 @@ +# DO NOT EDIT! This file was auto-generated by crates/re_types_builder/src/codegen/python/mod.rs +# Based on "crates/re_types/definitions/rerun/blueprint/components/visual_bounds2d.fbs". + +# You can extend this class by creating a "VisualBounds2DExt" class in "visual_bounds2d_ext.py". + +from __future__ import annotations + +from ... import datatypes +from ..._baseclasses import ComponentBatchMixin +from .visual_bounds2d_ext import VisualBounds2DExt + +__all__ = ["VisualBounds2D", "VisualBounds2DBatch", "VisualBounds2DType"] + + +class VisualBounds2D(VisualBounds2DExt, datatypes.Range2D): + """**Component**: Visual bounds in 2D space used for `Spatial2DView`.""" + + # __init__ can be found in visual_bounds2d_ext.py + + # Note: there are no fields here because VisualBounds2D delegates to datatypes.Range2D + pass + + +class VisualBounds2DType(datatypes.Range2DType): + _TYPE_NAME: str = "rerun.blueprint.components.VisualBounds2D" + + +class VisualBounds2DBatch(datatypes.Range2DBatch, ComponentBatchMixin): + _ARROW_TYPE = VisualBounds2DType() diff --git a/rerun_py/rerun_sdk/rerun/components/range2d_ext.py b/rerun_py/rerun_sdk/rerun/blueprint/components/visual_bounds2d_ext.py similarity index 70% rename from rerun_py/rerun_sdk/rerun/components/range2d_ext.py rename to rerun_py/rerun_sdk/rerun/blueprint/components/visual_bounds2d_ext.py index e6a0d3902484d..eb399eb1d40a8 100644 --- a/rerun_py/rerun_sdk/rerun/components/range2d_ext.py +++ b/rerun_py/rerun_sdk/rerun/blueprint/components/visual_bounds2d_ext.py @@ -2,11 +2,11 @@ from typing import Any -from ..datatypes import Range1DLike +from ...datatypes import Range1DLike -class Range2DExt: - """Extension for [Range2D][rerun.components.Range2D].""" +class VisualBounds2DExt: + """Extension for [VisualBounds2D][rerun.blueprint.components.VisualBounds2D].""" def __init__( self: Any, @@ -15,7 +15,7 @@ def __init__( y_range: Range1DLike, ): """ - Create a new instance of the Range2D component. + Create a new instance of the VisualBounds2D component. Parameters ---------- diff --git a/rerun_py/rerun_sdk/rerun/blueprint/views/spatial2d_view.py b/rerun_py/rerun_sdk/rerun/blueprint/views/spatial2d_view.py index dbc29d6ed133f..6c6f980fe4221 100644 --- a/rerun_py/rerun_sdk/rerun/blueprint/views/spatial2d_view.py +++ b/rerun_py/rerun_sdk/rerun/blueprint/views/spatial2d_view.py @@ -48,7 +48,7 @@ class Spatial2DView(SpaceView): background=[100, 149, 237], # Note that this range is smaller than the range of the points, # so some points will not be visible. - visual_bounds=rrb.VisualBounds(x_range=[-5, 5], y_range=[-5, 5]), + visual_bounds=rrb.VisualBounds2D(x_range=[-5, 5], y_range=[-5, 5]), ), collapse_panels=True, ) @@ -78,7 +78,7 @@ def __init__( | datatypes.Rgba32Like | blueprint_components.BackgroundKindLike | None = None, - visual_bounds: blueprint_archetypes.VisualBounds | None = None, + visual_bounds: blueprint_archetypes.VisualBounds2D | None = None, time_ranges: blueprint_archetypes.VisibleTimeRanges | datatypes.VisibleTimeRangeLike | Sequence[datatypes.VisibleTimeRangeLike] @@ -124,9 +124,9 @@ def __init__( properties["Background"] = background if visual_bounds is not None: - if not isinstance(visual_bounds, blueprint_archetypes.VisualBounds): - visual_bounds = blueprint_archetypes.VisualBounds(visual_bounds) - properties["VisualBounds"] = visual_bounds + if not isinstance(visual_bounds, blueprint_archetypes.VisualBounds2D): + visual_bounds = blueprint_archetypes.VisualBounds2D(visual_bounds) + properties["VisualBounds2D"] = visual_bounds if time_ranges is not None: if not isinstance(time_ranges, blueprint_archetypes.VisibleTimeRanges): diff --git a/rerun_py/rerun_sdk/rerun/components/.gitattributes b/rerun_py/rerun_sdk/rerun/components/.gitattributes index a134fec0401e8..62c74553605c1 100644 --- a/rerun_py/rerun_sdk/rerun/components/.gitattributes +++ b/rerun_py/rerun_sdk/rerun/components/.gitattributes @@ -26,7 +26,6 @@ position2d.py linguist-generated=true position3d.py linguist-generated=true radius.py linguist-generated=true range1d.py linguist-generated=true -range2d.py linguist-generated=true resolution.py linguist-generated=true rotation3d.py linguist-generated=true scalar.py linguist-generated=true diff --git a/rerun_py/rerun_sdk/rerun/components/__init__.py b/rerun_py/rerun_sdk/rerun/components/__init__.py index b30cc4d803df1..bee8e3c8aec1c 100644 --- a/rerun_py/rerun_sdk/rerun/components/__init__.py +++ b/rerun_py/rerun_sdk/rerun/components/__init__.py @@ -44,7 +44,6 @@ from .position3d import Position3D, Position3DBatch, Position3DType from .radius import Radius, RadiusArrayLike, RadiusBatch, RadiusLike, RadiusType from .range1d import Range1D, Range1DBatch, Range1DType -from .range2d import Range2D, Range2DBatch, Range2DType from .resolution import Resolution, ResolutionBatch, ResolutionType from .rotation3d import Rotation3D, Rotation3DBatch, Rotation3DType from .scalar import Scalar, ScalarArrayLike, ScalarBatch, ScalarLike, ScalarType @@ -174,9 +173,6 @@ "Range1D", "Range1DBatch", "Range1DType", - "Range2D", - "Range2DBatch", - "Range2DType", "Resolution", "ResolutionBatch", "ResolutionType", diff --git a/rerun_py/rerun_sdk/rerun/components/range2d.py b/rerun_py/rerun_sdk/rerun/components/range2d.py deleted file mode 100644 index e58da57c4bb7b..0000000000000 --- a/rerun_py/rerun_sdk/rerun/components/range2d.py +++ /dev/null @@ -1,29 +0,0 @@ -# DO NOT EDIT! This file was auto-generated by crates/re_types_builder/src/codegen/python/mod.rs -# Based on "crates/re_types/definitions/rerun/components/range2d.fbs". - -# You can extend this class by creating a "Range2DExt" class in "range2d_ext.py". - -from __future__ import annotations - -from .. import datatypes -from .._baseclasses import ComponentBatchMixin -from .range2d_ext import Range2DExt - -__all__ = ["Range2D", "Range2DBatch", "Range2DType"] - - -class Range2D(Range2DExt, datatypes.Range2D): - """**Component**: An Axis-Aligned Bounding Box in 2D space.""" - - # __init__ can be found in range2d_ext.py - - # Note: there are no fields here because Range2D delegates to datatypes.Range2D - pass - - -class Range2DType(datatypes.Range2DType): - _TYPE_NAME: str = "rerun.components.Range2D" - - -class Range2DBatch(datatypes.Range2DBatch, ComponentBatchMixin): - _ARROW_TYPE = Range2DType() From 03c9fa21579ac61ccd7f187012a9b0b13783dc85 Mon Sep 17 00:00:00 2001 From: Jeremy Leibs Date: Wed, 15 May 2024 18:08:35 +0200 Subject: [PATCH 15/40] Move sort out of inner loop to fix perf regression on updating range cache (#6338) ### What - Resolves: https://github.com/rerun-io/rerun/issues/6336 ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6338?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6338?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6338) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- crates/re_query/src/range/query.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/crates/re_query/src/range/query.rs b/crates/re_query/src/range/query.rs index e1756ba30d48a..cdd49e505d793 100644 --- a/crates/re_query/src/range/query.rs +++ b/crates/re_query/src/range/query.rs @@ -242,6 +242,9 @@ impl RangeCache { per_data_time .promises_front .push(((data_time, row_id), Promise::new(cell))); + } + { + re_tracing::profile_scope!("sort front"); per_data_time .promises_front .sort_by_key(|(index, _)| *index); @@ -267,6 +270,9 @@ impl RangeCache { per_data_time .promises_back .push(((data_time, row_id), Promise::new(cell))); + } + { + re_tracing::profile_scope!("sort back"); per_data_time.promises_back.sort_by_key(|(index, _)| *index); } } From d5411b93820d506e3bbdbff7e134a62c4328c6e8 Mon Sep 17 00:00:00 2001 From: Jeremy Leibs Date: Wed, 15 May 2024 19:57:16 +0200 Subject: [PATCH 16/40] Disable flush_blocking in Sender on wasm (#6339) ### What This avoids a lint related to using blocking `recv()` on wasm buids. This method was added as part of https://github.com/rerun-io/rerun/pull/6335 but is not actually needed by the viewer, only the SDK, which we don't build on wasm yet. ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6339?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6339?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6339) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --------- Co-authored-by: Andreas Reich --- clippy.toml | 2 +- crates/re_smart_channel/src/sender.rs | 4 ++++ scripts/ci/rust_checks.py | 16 +++++++++++----- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/clippy.toml b/clippy.toml index 1a16dbf77e78c..b02e9286c0277 100644 --- a/clippy.toml +++ b/clippy.toml @@ -50,7 +50,7 @@ disallowed-methods = [ # There are many things that aren't allowed on wasm, # but we cannot disable them all here (because of e.g. https://github.com/rust-lang/rust-clippy/issues/10406) - # so we do that in `clipppy_wasm.toml` instead. + # so we do that in `clippy_wasm.toml` instead. ] # https://rust-lang.github.io/rust-clippy/master/index.html#disallowed_names diff --git a/crates/re_smart_channel/src/sender.rs b/crates/re_smart_channel/src/sender.rs index 76167bb528986..58374dd1ecabb 100644 --- a/crates/re_smart_channel/src/sender.rs +++ b/crates/re_smart_channel/src/sender.rs @@ -61,6 +61,10 @@ impl Sender { } /// Blocks until all previously sent messages have been received. + /// + /// Note: This is only implemented for non-wasm targets since we cannot make + /// blocking calls on web. + #[cfg(not(target_arch = "wasm32"))] pub fn flush_blocking(&self) -> Result<(), SendError<()>> { let (tx, rx) = std::sync::mpsc::sync_channel(0); // oneshot self.tx diff --git a/scripts/ci/rust_checks.py b/scripts/ci/rust_checks.py index c1942ee9be442..a4686a43877bb 100755 --- a/scripts/ci/rust_checks.py +++ b/scripts/ci/rust_checks.py @@ -29,17 +29,23 @@ def run_cargo(cargo_cmd: str, cargo_args: str, clippy_conf: str | None = None) - print(f"> {cmd_str}") start_time = time.time() - env = os.environ.copy() - env["RUSTFLAGS"] = "--deny warnings" - env["RUSTDOCFLAGS"] = "--deny warnings" + additional_env_vars = {} + additional_env_vars["RUSTFLAGS"] = "--deny warnings" + additional_env_vars["RUSTDOCFLAGS"] = "--deny warnings" if clippy_conf is not None: - env["CLIPPY_CONF_DIR"] = ( + additional_env_vars["CLIPPY_CONF_DIR"] = ( f"{os.getcwd()}/{clippy_conf}" # Clippy has issues finding this directory on CI when we're not using an absolute path here. ) + env = os.environ.copy() + env.update(additional_env_vars) + result = subprocess.run(args, env=env, check=False, capture_output=True, text=True) if result.returncode != 0: - print(f"'{cmd_str}' failed with exit-code {result.returncode}. Output:\n{result.stdout}\n{result.stderr}") + env_var_string = " ".join([f'{env_var}="{value}"' for env_var, value in additional_env_vars.items()]) + print( + f"'{env_var_string} {cmd_str}' failed with exit-code {result.returncode}. Output:\n{result.stdout}\n{result.stderr}" + ) sys.exit(result.returncode) return Timing(cmd_str, time.time() - start_time) From 4bca59fb39879d14bc89d0bb8dc0400fdfd73213 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Wed, 15 May 2024 19:58:40 +0200 Subject: [PATCH 17/40] fix incorrect roundtrips.py test exception (#6340) ### What trivial oversight in #6333 ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6340?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6340?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6340) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- tests/roundtrips.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/roundtrips.py b/tests/roundtrips.py index 2f81c6b8ec4b0..0621d14497ae4 100755 --- a/tests/roundtrips.py +++ b/tests/roundtrips.py @@ -43,7 +43,7 @@ "space_view_blueprint": ["cpp", "py", "rust"], "space_view_contents": ["cpp", "py", "rust"], "viewport_blueprint": ["cpp", "py", "rust"], - "visual_bounds": ["cpp", "py", "rust"], + "visual_bounds2d": ["cpp", "py", "rust"], } From 88a74d34f0ff955eba77f19239a54abfbcf39b73 Mon Sep 17 00:00:00 2001 From: Jeremy Leibs Date: Thu, 16 May 2024 00:43:31 +0200 Subject: [PATCH 18/40] Respect the RERUN_STRICT environment variable if not specified in rr.init (#6341) ### What Any time we used `rr.init()` such as in our example scripts, we were forcing strict to be False in a way that would not be overridden by the RERUN_STRICT environment variable. We now only set strict if it's passed in as an arg. ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6341?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6341?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6341) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- rerun_py/rerun_sdk/rerun/__init__.py | 9 ++++++--- rerun_py/tests/unit/test_exceptions.py | 13 ++++++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/rerun_py/rerun_sdk/rerun/__init__.py b/rerun_py/rerun_sdk/rerun/__init__.py index ad3d344bb9af5..cc0b2c147b52f 100644 --- a/rerun_py/rerun_sdk/rerun/__init__.py +++ b/rerun_py/rerun_sdk/rerun/__init__.py @@ -166,7 +166,7 @@ def init( spawn: bool = False, init_logging: bool = True, default_enabled: bool = True, - strict: bool = False, + strict: bool | None = None, default_blueprint: BlueprintLike | None = None, ) -> None: """ @@ -233,8 +233,10 @@ def init( init_logging Should we initialize the logging for this application? strict - If `True`, an exceptions is raised on use error (wrong parameter types, etc.). + If `True`, an exception is raised on use error (wrong parameter types, etc.). If `False`, errors are logged as warnings instead. + If unset, this can alternatively be overridden using the RERUN_STRICT environment variable. + If not otherwise specified, the default behavior will be equivalent to `False`. default_blueprint Optionally set a default blueprint to use for this application. If the application already has an active blueprint, the new blueprint won't become active until the user @@ -248,7 +250,8 @@ def init( random.seed(0) np.random.seed(0) - set_strict_mode(strict) + if strict is not None: + set_strict_mode(strict) # Always check whether we are a forked child when calling init. This should have happened # via `_register_on_fork` but it's worth being conservative. diff --git a/rerun_py/tests/unit/test_exceptions.py b/rerun_py/tests/unit/test_exceptions.py index 737c5c688b29b..3ffd72d896c83 100644 --- a/rerun_py/tests/unit/test_exceptions.py +++ b/rerun_py/tests/unit/test_exceptions.py @@ -56,7 +56,7 @@ def expected_warnings(warnings: Any, mem: Any, starting_msgs: int, count: int, e def test_stack_tracking() -> None: # Force flushing so we can count the messages os.environ["RERUN_FLUSH_NUM_ROWS"] = "0" - rr.init("rerun_example_strict_mode", spawn=False) + rr.init("rerun_example_strict_mode", strict=False, spawn=False) mem = rr.memory_recording() with pytest.warns(RerunWarning) as warnings: @@ -117,17 +117,24 @@ def test_stack_tracking() -> None: def test_strict_mode() -> None: - # We can disable strict on just this function + rr.set_strict_mode(False) + + # Confirm strict mode is off + with pytest.warns(RerunWarning): + assert outer() == 42 + + # We can enable strict on just this function with pytest.raises(ValueError): outer(strict=True) with pytest.raises(ValueError): uses_context(strict=True) - # We can disable strict mode globally + # We can enable strict mode globally rr.set_strict_mode(True) with pytest.raises(ValueError): outer() + # Clear the global strict mode again rr.set_strict_mode(False) From 1ff16a8ed2abede3b7b202dc0966271ee33b3332 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Thu, 16 May 2024 02:19:59 +0200 Subject: [PATCH 19/40] Fix typo in VisualBounds2DExt causing it to throw (#6342) ### What Oversight in recent visualbounds2d refactor, made _a lot_ harder to identify by the fact that we never ran tests with strict mode https://github.com/rerun-io/rerun/pull/6341 ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6342?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6342?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6342) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --------- Co-authored-by: Jeremy Leibs --- crates/re_dev_tools/src/build_examples/snippets.rs | 2 +- docs/snippets/compare_snippet_output.py | 3 +-- docs/snippets/snippets.toml | 4 ++-- .../rerun/blueprint/archetypes/visual_bounds2d_ext.py | 2 +- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/crates/re_dev_tools/src/build_examples/snippets.rs b/crates/re_dev_tools/src/build_examples/snippets.rs index 10b54c10e6b78..ddb104f08e169 100644 --- a/crates/re_dev_tools/src/build_examples/snippets.rs +++ b/crates/re_dev_tools/src/build_examples/snippets.rs @@ -133,7 +133,7 @@ fn collect_snippets_recursively( .cloned() .unwrap_or_default() .into_iter() - .map(|value| value.replace("$config_dir", dir.as_str())) + .map(|value| value.replace("$config_dir", snippet_root_path.parent().unwrap().as_str())) .collect(); snippets.push(Snippet { extra_args, diff --git a/docs/snippets/compare_snippet_output.py b/docs/snippets/compare_snippet_output.py index 341d44c35ac3f..7c98806ea1e7d 100755 --- a/docs/snippets/compare_snippet_output.py +++ b/docs/snippets/compare_snippet_output.py @@ -45,8 +45,7 @@ def extra_args(self) -> list[str]: for key in [self.subdir, self.subdir + "/" + self.name]: if key in EXTRA_ARGS: return [ - arg.replace("$config_dir", str(Path(__file__).parent.parent.absolute())) - for arg in EXTRA_ARGS.get(key, []) + arg.replace("$config_dir", str(Path(__file__).parent.absolute())) for arg in EXTRA_ARGS.get(key, []) ] return [] diff --git a/docs/snippets/snippets.toml b/docs/snippets/snippets.toml index 664c2816a648b..2ebf04ebd3504 100644 --- a/docs/snippets/snippets.toml +++ b/docs/snippets/snippets.toml @@ -125,5 +125,5 @@ quick_start = [ # These examples don't have exactly the same implementation. # `$config_dir` will be replaced with the absolute path of `docs/snippets`. [extra_args] -"archetypes/asset3d_simple" = ["$config_dir/assets/cube.glb"] -"archetypes/asset3d_out_of_tree" = ["$config_dir/assets/cube.glb"] +"archetypes/asset3d_simple" = ["$config_dir/../assets/cube.glb"] +"archetypes/asset3d_out_of_tree" = ["$config_dir/../assets/cube.glb"] diff --git a/rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds2d_ext.py b/rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds2d_ext.py index 424e3fb5ea933..78cc1158bbfc8 100644 --- a/rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds2d_ext.py +++ b/rerun_py/rerun_sdk/rerun/blueprint/archetypes/visual_bounds2d_ext.py @@ -29,6 +29,6 @@ def __init__( """ with catch_and_log_exceptions(context=self.__class__.__name__): - self.__attrs_init__(range2d=blueprint_components.VisualBounds2D(x_range=x_range, y_range=y_range)) + self.__attrs_init__(range=blueprint_components.VisualBounds2D(x_range=x_range, y_range=y_range)) return self.__attrs_clear__() From ce20dc3c640cd45fb54206c60558a69806944340 Mon Sep 17 00:00:00 2001 From: Antoine Beyeler <49431240+abey79@users.noreply.github.com> Date: Thu, 16 May 2024 09:14:53 +0200 Subject: [PATCH 20/40] Quick fix for `check_all_components_ui.py` (#6345) ### What Fixes two issues with `check_all_components_ui.py` - an array one item too long (would fail with `strict=True`) - removes `VisualBounds2D`, formerly `Range2D`, now moved to blueprint components Much needed follow-up: #6344 ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6345?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6345?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6345) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- tests/python/release_checklist/check_all_components_ui.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/python/release_checklist/check_all_components_ui.py b/tests/python/release_checklist/check_all_components_ui.py index ead94f8004b01..4b1fb806f1044 100644 --- a/tests/python/release_checklist/check_all_components_ui.py +++ b/tests/python/release_checklist/check_all_components_ui.py @@ -128,7 +128,6 @@ def alternatives(self) -> list[Any] | None: "Position3DBatch": TestCase(batch=[(0, 3, 4), (1, 4, 5), (2, 5, 6)]), "RadiusBatch": TestCase(batch=[4.5, 5, 6, 7]), "Range1DBatch": TestCase((0, 5)), - "Range2DBatch": TestCase(rr.datatypes.Range2D(x_range=(0, 5), y_range=(0, 5))), "ResolutionBatch": TestCase((1920, 1080)), "Rotation3DBatch": TestCase( alternatives=[ @@ -147,7 +146,7 @@ def alternatives(self) -> list[Any] | None: rr.datatypes.TensorData(array=np.random.randint(0, 255, (5, 3, 6, 4), dtype=np.uint8)), rr.datatypes.TensorData( array=np.random.randint(0, 255, (5, 3, 6, 4), dtype=np.uint8), - dim_names=[None, "hello", None, "world", None], + dim_names=[None, "hello", None, "world"], ), rr.datatypes.TensorData(array=np.random.randint(0, 255, (5, 3, 6, 4, 3), dtype=np.uint8)), ] From b08d8bdabb65b633b37ccbb8fc12d8fad2a79713 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Thu, 16 May 2024 10:18:49 +0200 Subject: [PATCH 21/40] Better docstrings for views (#6346) ### What I thought this was a bit lackluster: Screenshot 2024-05-16 at 09 52 56 ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6346?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6346?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6346) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- .../definitions/rerun/blueprint/views/spatial2d.fbs | 2 +- .../definitions/rerun/blueprint/views/spatial3d.fbs | 2 +- .../definitions/rerun/blueprint/views/tensor.fbs | 2 +- .../rerun/blueprint/views/text_document.fbs | 2 +- .../definitions/rerun/blueprint/views/text_log.fbs | 2 +- .../rerun/blueprint/views/time_series.fbs | 2 +- .../re_types/src/blueprint/views/spatial2d_view.rs | 2 +- .../re_types/src/blueprint/views/spatial3d_view.rs | 2 +- crates/re_types/src/blueprint/views/tensor_view.rs | 2 +- .../src/blueprint/views/text_document_view.rs | 2 +- crates/re_types/src/blueprint/views/text_log_view.rs | 2 +- .../re_types/src/blueprint/views/time_series_view.rs | 2 +- docs/content/reference/types/views.md | 12 ++++++------ docs/content/reference/types/views/spatial2d_view.md | 2 +- docs/content/reference/types/views/spatial3d_view.md | 2 +- docs/content/reference/types/views/tensor_view.md | 2 +- .../reference/types/views/text_document_view.md | 2 +- docs/content/reference/types/views/text_log_view.md | 2 +- .../reference/types/views/time_series_view.md | 2 +- .../rerun/blueprint/views/spatial2d_view.py | 2 +- .../rerun/blueprint/views/spatial3d_view.py | 2 +- .../rerun_sdk/rerun/blueprint/views/tensor_view.py | 2 +- .../rerun/blueprint/views/text_document_view.py | 2 +- .../rerun_sdk/rerun/blueprint/views/text_log_view.py | 2 +- .../rerun/blueprint/views/time_series_view.py | 2 +- 25 files changed, 30 insertions(+), 30 deletions(-) diff --git a/crates/re_types/definitions/rerun/blueprint/views/spatial2d.fbs b/crates/re_types/definitions/rerun/blueprint/views/spatial2d.fbs index b139a7323c306..f5160a95a4677 100644 --- a/crates/re_types/definitions/rerun/blueprint/views/spatial2d.fbs +++ b/crates/re_types/definitions/rerun/blueprint/views/spatial2d.fbs @@ -2,7 +2,7 @@ include "rerun/attributes.fbs"; namespace rerun.blueprint.views; -/// A Spatial 2D view. +/// For viewing spatial 2D data. /// /// \example views/spatial2d title="Use a blueprint to customize a Spatial2DView." image="https://static.rerun.io/spatial2d/074c0822870325d6502c9f51c165c1181a20e83f/1200w.png" table Spatial2DView ( diff --git a/crates/re_types/definitions/rerun/blueprint/views/spatial3d.fbs b/crates/re_types/definitions/rerun/blueprint/views/spatial3d.fbs index 78e83aaf31665..8e416d3a12d1f 100644 --- a/crates/re_types/definitions/rerun/blueprint/views/spatial3d.fbs +++ b/crates/re_types/definitions/rerun/blueprint/views/spatial3d.fbs @@ -2,7 +2,7 @@ include "rerun/attributes.fbs"; namespace rerun.blueprint.views; -/// A Spatial 3D view. +/// For viewing spatial 3D data. /// /// \example views/spatial3d title="Use a blueprint to customize a Spatial3DView." image="https://static.rerun.io/spatial3d/4816694fc4176cc284ff30d9c8f06c936a625ac9/1200w.png" table Spatial3DView ( diff --git a/crates/re_types/definitions/rerun/blueprint/views/tensor.fbs b/crates/re_types/definitions/rerun/blueprint/views/tensor.fbs index d65274632d5d4..3f5c970507e10 100644 --- a/crates/re_types/definitions/rerun/blueprint/views/tensor.fbs +++ b/crates/re_types/definitions/rerun/blueprint/views/tensor.fbs @@ -2,7 +2,7 @@ include "rerun/attributes.fbs"; namespace rerun.blueprint.views; -/// A tensor view. +/// A view on a tensor of any dimensionality. /// /// \example views/tensor title="Use a blueprint to create a TensorView." image="https://static.rerun.io/tensor_view/3b452ace3cdb29ada1a613eae8e8e8e165a1d396/1200w.png" table TensorView ( diff --git a/crates/re_types/definitions/rerun/blueprint/views/text_document.fbs b/crates/re_types/definitions/rerun/blueprint/views/text_document.fbs index 1a405fe3f49fe..3dbbe16770279 100644 --- a/crates/re_types/definitions/rerun/blueprint/views/text_document.fbs +++ b/crates/re_types/definitions/rerun/blueprint/views/text_document.fbs @@ -2,7 +2,7 @@ include "rerun/attributes.fbs"; namespace rerun.blueprint.views; -/// A text document view. +/// A view of a single text document, for use with the `TextDocument` archetype. /// /// \example views/text_document title="Use a blueprint to show a text document." image="https://static.rerun.io/text_log/27f15235fe9639ff42b6ea0d2f0ce580685c021c/1200w.png" table TextDocumentView ( diff --git a/crates/re_types/definitions/rerun/blueprint/views/text_log.fbs b/crates/re_types/definitions/rerun/blueprint/views/text_log.fbs index fbf1e7a6db1da..9bf3adacce4f7 100644 --- a/crates/re_types/definitions/rerun/blueprint/views/text_log.fbs +++ b/crates/re_types/definitions/rerun/blueprint/views/text_log.fbs @@ -2,7 +2,7 @@ include "rerun/attributes.fbs"; namespace rerun.blueprint.views; -/// A text log view. +/// A view of a text log, for use with the `TextLog` archetype. /// /// \example views/text_log title="Use a blueprint to show a TextLogView." image="https://static.rerun.io/text_log/457ab91ec42a481bacae4146c0fc01eee397bb86/1200w.png" table TextLogView ( diff --git a/crates/re_types/definitions/rerun/blueprint/views/time_series.fbs b/crates/re_types/definitions/rerun/blueprint/views/time_series.fbs index c253d14c3970c..2d4b667931d91 100644 --- a/crates/re_types/definitions/rerun/blueprint/views/time_series.fbs +++ b/crates/re_types/definitions/rerun/blueprint/views/time_series.fbs @@ -2,7 +2,7 @@ include "rerun/attributes.fbs"; namespace rerun.blueprint.views; -/// A time series view. +/// A time series view for scalars over time, for use with the `Scalars` archetype. /// /// \example views/timeseries title="Use a blueprint to customize a TimeSeriesView." image="https://static.rerun.io/timeseries_view/c87150647feb413627fdb8563afe33b39d7dbf57/1200w.png" table TimeSeriesView ( diff --git a/crates/re_types/src/blueprint/views/spatial2d_view.rs b/crates/re_types/src/blueprint/views/spatial2d_view.rs index f3ca9334da4a7..4a46129cfe02d 100644 --- a/crates/re_types/src/blueprint/views/spatial2d_view.rs +++ b/crates/re_types/src/blueprint/views/spatial2d_view.rs @@ -22,7 +22,7 @@ use ::re_types_core::SerializationResult; use ::re_types_core::{ComponentBatch, MaybeOwnedComponentBatch}; use ::re_types_core::{DeserializationError, DeserializationResult}; -/// **View**: A Spatial 2D view. +/// **View**: For viewing spatial 2D data. #[derive(Clone, Debug)] pub struct Spatial2DView { /// Configuration for the background of the view. diff --git a/crates/re_types/src/blueprint/views/spatial3d_view.rs b/crates/re_types/src/blueprint/views/spatial3d_view.rs index 4aff252cfe276..d6ff903d20d18 100644 --- a/crates/re_types/src/blueprint/views/spatial3d_view.rs +++ b/crates/re_types/src/blueprint/views/spatial3d_view.rs @@ -22,7 +22,7 @@ use ::re_types_core::SerializationResult; use ::re_types_core::{ComponentBatch, MaybeOwnedComponentBatch}; use ::re_types_core::{DeserializationError, DeserializationResult}; -/// **View**: A Spatial 3D view. +/// **View**: For viewing spatial 3D data. #[derive(Clone, Debug)] pub struct Spatial3DView { /// Configuration for the background of the view. diff --git a/crates/re_types/src/blueprint/views/tensor_view.rs b/crates/re_types/src/blueprint/views/tensor_view.rs index f2515bff86a89..d37eb0dc210cb 100644 --- a/crates/re_types/src/blueprint/views/tensor_view.rs +++ b/crates/re_types/src/blueprint/views/tensor_view.rs @@ -22,7 +22,7 @@ use ::re_types_core::SerializationResult; use ::re_types_core::{ComponentBatch, MaybeOwnedComponentBatch}; use ::re_types_core::{DeserializationError, DeserializationResult}; -/// **View**: A tensor view. +/// **View**: A view on a tensor of any dimensionality. #[derive(Clone, Debug)] pub struct TensorView {} diff --git a/crates/re_types/src/blueprint/views/text_document_view.rs b/crates/re_types/src/blueprint/views/text_document_view.rs index 1b39d1535ffba..eba81d8ffd865 100644 --- a/crates/re_types/src/blueprint/views/text_document_view.rs +++ b/crates/re_types/src/blueprint/views/text_document_view.rs @@ -22,7 +22,7 @@ use ::re_types_core::SerializationResult; use ::re_types_core::{ComponentBatch, MaybeOwnedComponentBatch}; use ::re_types_core::{DeserializationError, DeserializationResult}; -/// **View**: A text document view. +/// **View**: A view of a single text document, for use with the `TextDocument` archetype. #[derive(Clone, Debug)] pub struct TextDocumentView {} diff --git a/crates/re_types/src/blueprint/views/text_log_view.rs b/crates/re_types/src/blueprint/views/text_log_view.rs index f96ec96b7ba26..a14559fc7af3d 100644 --- a/crates/re_types/src/blueprint/views/text_log_view.rs +++ b/crates/re_types/src/blueprint/views/text_log_view.rs @@ -22,7 +22,7 @@ use ::re_types_core::SerializationResult; use ::re_types_core::{ComponentBatch, MaybeOwnedComponentBatch}; use ::re_types_core::{DeserializationError, DeserializationResult}; -/// **View**: A text log view. +/// **View**: A view of a text log, for use with the `TextLog` archetype. #[derive(Clone, Debug)] pub struct TextLogView {} diff --git a/crates/re_types/src/blueprint/views/time_series_view.rs b/crates/re_types/src/blueprint/views/time_series_view.rs index f78fae7348352..bd2d6118250ed 100644 --- a/crates/re_types/src/blueprint/views/time_series_view.rs +++ b/crates/re_types/src/blueprint/views/time_series_view.rs @@ -22,7 +22,7 @@ use ::re_types_core::SerializationResult; use ::re_types_core::{ComponentBatch, MaybeOwnedComponentBatch}; use ::re_types_core::{DeserializationError, DeserializationResult}; -/// **View**: A time series view. +/// **View**: A time series view for scalars over time, for use with the `Scalars` archetype. #[derive(Clone, Debug)] pub struct TimeSeriesView { /// Configures the vertical axis of the plot. diff --git a/docs/content/reference/types/views.md b/docs/content/reference/types/views.md index 84fb95e6423df..100e8f6766721 100644 --- a/docs/content/reference/types/views.md +++ b/docs/content/reference/types/views.md @@ -8,10 +8,10 @@ Views are the panels shown in the viewer's viewport and the primary means of ins * [`BarChartView`](views/bar_chart_view.md): A bar chart view. -* [`Spatial2DView`](views/spatial2d_view.md): A Spatial 2D view. -* [`Spatial3DView`](views/spatial3d_view.md): A Spatial 3D view. -* [`TensorView`](views/tensor_view.md): A tensor view. -* [`TextDocumentView`](views/text_document_view.md): A text document view. -* [`TextLogView`](views/text_log_view.md): A text log view. -* [`TimeSeriesView`](views/time_series_view.md): A time series view. +* [`Spatial2DView`](views/spatial2d_view.md): For viewing spatial 2D data. +* [`Spatial3DView`](views/spatial3d_view.md): For viewing spatial 3D data. +* [`TensorView`](views/tensor_view.md): A view on a tensor of any dimensionality. +* [`TextDocumentView`](views/text_document_view.md): A view of a single text document, for use with the `TextDocument` archetype. +* [`TextLogView`](views/text_log_view.md): A view of a text log, for use with the `TextLog` archetype. +* [`TimeSeriesView`](views/time_series_view.md): A time series view for scalars over time, for use with the `Scalars` archetype. diff --git a/docs/content/reference/types/views/spatial2d_view.md b/docs/content/reference/types/views/spatial2d_view.md index 56286fc32bfef..a199042c514e7 100644 --- a/docs/content/reference/types/views/spatial2d_view.md +++ b/docs/content/reference/types/views/spatial2d_view.md @@ -3,7 +3,7 @@ title: "Spatial2DView" --- -A Spatial 2D view. +For viewing spatial 2D data. ## Properties diff --git a/docs/content/reference/types/views/spatial3d_view.md b/docs/content/reference/types/views/spatial3d_view.md index 347c247b3ca27..8248272f5a733 100644 --- a/docs/content/reference/types/views/spatial3d_view.md +++ b/docs/content/reference/types/views/spatial3d_view.md @@ -3,7 +3,7 @@ title: "Spatial3DView" --- -A Spatial 3D view. +For viewing spatial 3D data. ## Properties diff --git a/docs/content/reference/types/views/tensor_view.md b/docs/content/reference/types/views/tensor_view.md index 1bb329bd85c3f..f66ed6abc3417 100644 --- a/docs/content/reference/types/views/tensor_view.md +++ b/docs/content/reference/types/views/tensor_view.md @@ -3,7 +3,7 @@ title: "TensorView" --- -A tensor view. +A view on a tensor of any dimensionality. ## API reference links diff --git a/docs/content/reference/types/views/text_document_view.md b/docs/content/reference/types/views/text_document_view.md index f4fe3d92105b8..c30425656fcb4 100644 --- a/docs/content/reference/types/views/text_document_view.md +++ b/docs/content/reference/types/views/text_document_view.md @@ -3,7 +3,7 @@ title: "TextDocumentView" --- -A text document view. +A view of a single text document, for use with the `TextDocument` archetype. ## API reference links diff --git a/docs/content/reference/types/views/text_log_view.md b/docs/content/reference/types/views/text_log_view.md index da2c829b76e01..6d83ad09706e7 100644 --- a/docs/content/reference/types/views/text_log_view.md +++ b/docs/content/reference/types/views/text_log_view.md @@ -3,7 +3,7 @@ title: "TextLogView" --- -A text log view. +A view of a text log, for use with the `TextLog` archetype. ## API reference links diff --git a/docs/content/reference/types/views/time_series_view.md b/docs/content/reference/types/views/time_series_view.md index ee72f847aede4..4916b0ed6d634 100644 --- a/docs/content/reference/types/views/time_series_view.md +++ b/docs/content/reference/types/views/time_series_view.md @@ -3,7 +3,7 @@ title: "TimeSeriesView" --- -A time series view. +A time series view for scalars over time, for use with the `Scalars` archetype. ## Properties diff --git a/rerun_py/rerun_sdk/rerun/blueprint/views/spatial2d_view.py b/rerun_py/rerun_sdk/rerun/blueprint/views/spatial2d_view.py index 6c6f980fe4221..7f7df90f819fd 100644 --- a/rerun_py/rerun_sdk/rerun/blueprint/views/spatial2d_view.py +++ b/rerun_py/rerun_sdk/rerun/blueprint/views/spatial2d_view.py @@ -18,7 +18,7 @@ class Spatial2DView(SpaceView): """ - **View**: A Spatial 2D view. + **View**: For viewing spatial 2D data. Example ------- diff --git a/rerun_py/rerun_sdk/rerun/blueprint/views/spatial3d_view.py b/rerun_py/rerun_sdk/rerun/blueprint/views/spatial3d_view.py index 603453e726607..a164059b18045 100644 --- a/rerun_py/rerun_sdk/rerun/blueprint/views/spatial3d_view.py +++ b/rerun_py/rerun_sdk/rerun/blueprint/views/spatial3d_view.py @@ -18,7 +18,7 @@ class Spatial3DView(SpaceView): """ - **View**: A Spatial 3D view. + **View**: For viewing spatial 3D data. Example ------- diff --git a/rerun_py/rerun_sdk/rerun/blueprint/views/tensor_view.py b/rerun_py/rerun_sdk/rerun/blueprint/views/tensor_view.py index 2ee386aea31fd..c1a08ca4a2525 100644 --- a/rerun_py/rerun_sdk/rerun/blueprint/views/tensor_view.py +++ b/rerun_py/rerun_sdk/rerun/blueprint/views/tensor_view.py @@ -14,7 +14,7 @@ class TensorView(SpaceView): """ - **View**: A tensor view. + **View**: A view on a tensor of any dimensionality. Example ------- diff --git a/rerun_py/rerun_sdk/rerun/blueprint/views/text_document_view.py b/rerun_py/rerun_sdk/rerun/blueprint/views/text_document_view.py index e02c8a49e2dab..1e8fec0ceaf12 100644 --- a/rerun_py/rerun_sdk/rerun/blueprint/views/text_document_view.py +++ b/rerun_py/rerun_sdk/rerun/blueprint/views/text_document_view.py @@ -14,7 +14,7 @@ class TextDocumentView(SpaceView): """ - **View**: A text document view. + **View**: A view of a single text document, for use with the `TextDocument` archetype. Example ------- diff --git a/rerun_py/rerun_sdk/rerun/blueprint/views/text_log_view.py b/rerun_py/rerun_sdk/rerun/blueprint/views/text_log_view.py index bf905e749bb69..9ed40a57bd1e3 100644 --- a/rerun_py/rerun_sdk/rerun/blueprint/views/text_log_view.py +++ b/rerun_py/rerun_sdk/rerun/blueprint/views/text_log_view.py @@ -14,7 +14,7 @@ class TextLogView(SpaceView): """ - **View**: A text log view. + **View**: A view of a text log, for use with the `TextLog` archetype. Example ------- diff --git a/rerun_py/rerun_sdk/rerun/blueprint/views/time_series_view.py b/rerun_py/rerun_sdk/rerun/blueprint/views/time_series_view.py index 675fa780ec76e..b6d69442d1911 100644 --- a/rerun_py/rerun_sdk/rerun/blueprint/views/time_series_view.py +++ b/rerun_py/rerun_sdk/rerun/blueprint/views/time_series_view.py @@ -18,7 +18,7 @@ class TimeSeriesView(SpaceView): """ - **View**: A time series view. + **View**: A time series view for scalars over time, for use with the `Scalars` archetype. Example ------- From a223368d50b8370f82225c911d487da769ca462d Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Thu, 16 May 2024 12:15:25 +0200 Subject: [PATCH 22/40] Explain static vs temporal components in the UI (#6350) ### What Screenshot 2024-05-16 at 11 25 08 image Screenshot 2024-05-16 at 11 25 51 Screenshot 2024-05-16 at 11 25 58 Screenshot 2024-05-16 at 11 28 02 Screenshot 2024-05-16 at 11 27 59 ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6350?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6350?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6350) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- crates/re_data_ui/src/component.rs | 16 ++++++--- crates/re_data_ui/src/item_ui.rs | 40 +++++++++++++++++----- crates/re_smart_channel/src/lib.rs | 7 ++-- crates/re_time_panel/src/lib.rs | 24 +++++++++++-- crates/re_ui/src/icons.rs | 14 +++++--- crates/re_viewer/src/ui/selection_panel.rs | 10 ++++-- 6 files changed, 87 insertions(+), 24 deletions(-) diff --git a/crates/re_data_ui/src/component.rs b/crates/re_data_ui/src/component.rs index 5ffd16debc6af..13a34b5859c36 100644 --- a/crates/re_data_ui/src/component.rs +++ b/crates/re_data_ui/src/component.rs @@ -55,13 +55,19 @@ impl DataUi for EntityLatestAtResults { // Display data time and additional diagnostic information for static components. if ui_layout != UiLayout::List { - ui.label(format!( - "Data time: {}", - query + let time = self.results.index().0; + if time.is_static() { + // No need to show anything here. We already tell the user this is a static component elsewhere. + } else { + let formatted_time = query .timeline() .typ() - .format(self.results.index().0, ctx.app_options.time_zone), - )); + .format(time, ctx.app_options.time_zone); + ui.horizontal(|ui| { + ui.add(re_ui::icons::COMPONENT_TEMPORAL.as_image()); + ui.label(format!("Temporal component at {formatted_time}")); + }); + } // if the component is static, we display extra diagnostic information if self.results.is_static() { diff --git a/crates/re_data_ui/src/item_ui.rs b/crates/re_data_ui/src/item_ui.rs index e66d6b8298751..8ef3397c6d7b6 100644 --- a/crates/re_data_ui/src/item_ui.rs +++ b/crates/re_data_ui/src/item_ui.rs @@ -185,7 +185,7 @@ pub fn guess_query_and_db_for_selected_entity<'a>( pub fn guess_instance_path_icon( ctx: &ViewerContext<'_>, instance_path: &InstancePath, -) -> &'static re_ui::icons::Icon { +) -> &'static icons::Icon { let (query, db) = guess_query_and_db_for_selected_entity(ctx, &instance_path.entity_path); instance_path_icon(&query.timeline(), db, instance_path) } @@ -383,7 +383,6 @@ pub fn component_path_button( component_path, db, ) - .on_hover_text(component_path.component_name.full_name()) // we should show the full name somewhere } /// Show a component path and make it selectable. @@ -395,18 +394,43 @@ pub fn component_path_button_to( db: &re_entity_db::EntityDb, ) -> egui::Response { let item = Item::ComponentPath(component_path.clone()); - let is_component_static = db.is_component_static(component_path).unwrap_or_default(); + let is_static = db.is_component_static(component_path).unwrap_or_default(); + let icon = if is_static { + &icons::COMPONENT_STATIC + } else { + &icons::COMPONENT_TEMPORAL + }; let response = ctx.re_ui.selectable_label_with_icon( ui, - if is_component_static { - &icons::COMPONENT_STATIC - } else { - &icons::COMPONENT - }, + icon, text, ctx.selection().contains_item(&item), re_ui::LabelStyle::Normal, ); + + let response = response.on_hover_ui(|ui| { + // TODO(egui#4471): better tooltip size management + ui.set_max_width(250.0); + ui.style_mut().wrap = Some(false); + + re_ui::ListItem::new( + ctx.re_ui, + if is_static { + "Static component" + } else { + "Temporal component" + }, + ) + .with_icon(icon) + .interactive(false) + .show_flat(ui); + + ui.label(format!( + "Full name: {}", + component_path.component_name.full_name() + )); + }); + cursor_interact_with_selectable(ctx, response, item) } diff --git a/crates/re_smart_channel/src/lib.rs b/crates/re_smart_channel/src/lib.rs index 886487f0c8f14..c5f0cb849ce5d 100644 --- a/crates/re_smart_channel/src/lib.rs +++ b/crates/re_smart_channel/src/lib.rs @@ -109,7 +109,10 @@ pub enum SmartMessageSource { File(std::path::PathBuf), /// The sender is a background thread fetching data from an HTTP file server. - RrdHttpStream { url: String }, + RrdHttpStream { + /// Should include `http(s)://` prefix. + url: String, + }, /// The sender is a javascript callback triggered by a `postMessage` event. /// @@ -146,7 +149,7 @@ impl std::fmt::Display for SmartMessageSource { f.write_str(&match self { SmartMessageSource::Unknown => "unknown".into(), SmartMessageSource::File(path) => format!("file://{}", path.to_string_lossy()), - SmartMessageSource::RrdHttpStream { url } => format!("http://{url}"), + SmartMessageSource::RrdHttpStream { url } => url.clone(), SmartMessageSource::RrdWebEventCallback => "web_callback".into(), SmartMessageSource::JsChannelPush => "javascript".into(), SmartMessageSource::Sdk => "sdk".into(), diff --git a/crates/re_time_panel/src/lib.rs b/crates/re_time_panel/src/lib.rs index 36eba04bf1006..005819393f62e 100644 --- a/crates/re_time_panel/src/lib.rs +++ b/crates/re_time_panel/src/lib.rs @@ -750,7 +750,7 @@ impl TimePanel { .with_icon(if is_static { &re_ui::icons::COMPONENT_STATIC } else { - &re_ui::icons::COMPONENT + &re_ui::icons::COMPONENT_TEMPORAL }) .show_hierarchical(ui); @@ -780,10 +780,30 @@ impl TimePanel { timeline.name() ))); } else { - ui.label(format!("Number of events: {total_num_messages}")); + re_ui::ListItem::new( + ctx.re_ui, + format!( + "{} component, logged {}", + if is_static { "Static" } else { "Temporal" }, + if total_num_messages == 1 { + "once".to_owned() + } else { + format!("{} times", re_format::format_uint(total_num_messages)) + }, + ), + ) + .with_icon(if is_static { + &re_ui::icons::COMPONENT_STATIC + } else { + &re_ui::icons::COMPONENT_TEMPORAL + }) + .interactive(false) + .show_flat(ui); // Static components are not displayed at all on the timeline, so cannot be // previewed there. So we display their content in this tooltip instead. + // Conversely, temporal components change over time, and so showing a specific instance here + // can be confusing. if is_static { let query = re_data_store::LatestAtQuery::new( *time_ctrl.timeline(), diff --git a/crates/re_ui/src/icons.rs b/crates/re_ui/src/icons.rs index 6dbebf9a3a7e1..dca5166f58d7a 100644 --- a/crates/re_ui/src/icons.rs +++ b/crates/re_ui/src/icons.rs @@ -15,11 +15,16 @@ impl Icon { } #[inline] - pub fn as_image(&self) -> Image<'static> { - Image::new(ImageSource::Bytes { + pub fn as_image_source(&self) -> ImageSource<'static> { + ImageSource::Bytes { uri: self.id.into(), bytes: self.png_bytes.into(), - }) + } + } + + #[inline] + pub fn as_image(&self) -> Image<'static> { + Image::new(self.as_image_source()) } } @@ -143,7 +148,8 @@ pub const ENTITY_EMPTY: Icon = Icon::new( include_bytes!("../data/icons/entity_empty.png"), ); pub const LINK: Icon = Icon::new("link", include_bytes!("../data/icons/link.png")); -pub const COMPONENT: Icon = Icon::new("component", include_bytes!("../data/icons/component.png")); +pub const COMPONENT_TEMPORAL: Icon = + Icon::new("component", include_bytes!("../data/icons/component.png")); pub const COMPONENT_STATIC: Icon = Icon::new( "component_static", include_bytes!("../data/icons/component_static.png"), diff --git a/crates/re_viewer/src/ui/selection_panel.rs b/crates/re_viewer/src/ui/selection_panel.rs index 5e138d096d55a..b68ec3a5d5f60 100644 --- a/crates/re_viewer/src/ui/selection_panel.rs +++ b/crates/re_viewer/src/ui/selection_panel.rs @@ -367,17 +367,21 @@ fn what_is_selected_ui( Some(if is_static { &icons::COMPONENT_STATIC } else { - &icons::COMPONENT + &icons::COMPONENT_TEMPORAL }), &format!( - "Component {} of entity '{}'", + "{} component {} of entity '{}'", + if is_static { "Static" } else { "Temporal" }, component_name.full_name(), entity_path ), ); ui.horizontal(|ui| { - ui.label("component of"); + ui.label(format!( + "{} component of", + if is_static { "Static" } else { "Temporal" } + )); item_ui::entity_path_button(ctx, &query, db, ui, None, entity_path); }); From 48ff64e50ab0953798698edbb7f34d4fa1a2cc68 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Thu, 16 May 2024 13:55:13 +0200 Subject: [PATCH 23/40] Use nicer colors for the `Spatial2DView` snippet (#6351) ### What ![image](https://github.com/rerun-io/rerun/assets/1148717/ca53012b-ff94-4874-ae80-65361b665894) ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6351?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6351?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6351) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --------- Co-authored-by: Andreas Reich --- .../rerun/blueprint/views/spatial2d.fbs | 2 +- .../reference/types/views/spatial2d_view.md | 10 +++---- docs/snippets/all/views/spatial2d.py | 17 ++++++------ .../rerun/blueprint/views/spatial2d_view.py | 27 ++++++++++--------- 4 files changed, 29 insertions(+), 27 deletions(-) diff --git a/crates/re_types/definitions/rerun/blueprint/views/spatial2d.fbs b/crates/re_types/definitions/rerun/blueprint/views/spatial2d.fbs index f5160a95a4677..6abcc4e0da8fe 100644 --- a/crates/re_types/definitions/rerun/blueprint/views/spatial2d.fbs +++ b/crates/re_types/definitions/rerun/blueprint/views/spatial2d.fbs @@ -4,7 +4,7 @@ namespace rerun.blueprint.views; /// For viewing spatial 2D data. /// -/// \example views/spatial2d title="Use a blueprint to customize a Spatial2DView." image="https://static.rerun.io/spatial2d/074c0822870325d6502c9f51c165c1181a20e83f/1200w.png" +/// \example views/spatial2d title="Use a blueprint to customize a Spatial2DView." image="https://static.rerun.io/Spatial2DVIew/824a075e0c50ea4110eb6ddd60257f087cb2264d/1200w.png" table Spatial2DView ( "attr.docs.unreleased", "attr.rerun.view_identifier": "2D" diff --git a/docs/content/reference/types/views/spatial2d_view.md b/docs/content/reference/types/views/spatial2d_view.md index a199042c514e7..5e26fe96eb6c8 100644 --- a/docs/content/reference/types/views/spatial2d_view.md +++ b/docs/content/reference/types/views/spatial2d_view.md @@ -33,11 +33,11 @@ If a timeline is specified more than once, the first entry will be used. snippet: views/spatial2d - - - - - + + + + + diff --git a/docs/snippets/all/views/spatial2d.py b/docs/snippets/all/views/spatial2d.py index 445f116b3e375..782e3ce6439e4 100644 --- a/docs/snippets/all/views/spatial2d.py +++ b/docs/snippets/all/views/spatial2d.py @@ -7,21 +7,22 @@ rr.init("rerun_example_spatial_2d", spawn=True) # Create a spiral of points: -theta = np.linspace(0, 10 * np.pi, 300) -radius = np.linspace(0, 10, 300) -positions = np.column_stack((np.cos(theta) * radius, np.sin(theta) * radius)) -colors = np.random.randint(0, 255, size=(len(theta), 3)) +n = 150 +angle = np.linspace(0, 10 * np.pi, n) +spiral_radius = np.linspace(0.0, 3.0, n) ** 2 +positions = np.column_stack((np.cos(angle) * spiral_radius, np.sin(angle) * spiral_radius)) +colors = np.dstack((np.linspace(255, 255, n), np.linspace(255, 0, n), np.linspace(0, 255, n)))[0].astype(int) +radii = np.linspace(0.01, 0.7, n) -rr.log("points", rr.Points2D(positions, colors=colors, radii=0.1)) -rr.log("box", rr.Boxes2D(half_sizes=[3, 3], colors=0)) +rr.log("points", rr.Points2D(positions, colors=colors, radii=radii)) # Create a Spatial2D view to display the points. blueprint = rrb.Blueprint( rrb.Spatial2DView( origin="/", name="2D Scene", - # Set the background color to light blue. - background=[100, 149, 237], + # Set the background color + background=[105, 20, 105], # Note that this range is smaller than the range of the points, # so some points will not be visible. visual_bounds=rrb.VisualBounds2D(x_range=[-5, 5], y_range=[-5, 5]), diff --git a/rerun_py/rerun_sdk/rerun/blueprint/views/spatial2d_view.py b/rerun_py/rerun_sdk/rerun/blueprint/views/spatial2d_view.py index 7f7df90f819fd..511aa5d5874e9 100644 --- a/rerun_py/rerun_sdk/rerun/blueprint/views/spatial2d_view.py +++ b/rerun_py/rerun_sdk/rerun/blueprint/views/spatial2d_view.py @@ -31,21 +31,22 @@ class Spatial2DView(SpaceView): rr.init("rerun_example_spatial_2d", spawn=True) # Create a spiral of points: - theta = np.linspace(0, 10 * np.pi, 300) - radius = np.linspace(0, 10, 300) - positions = np.column_stack((np.cos(theta) * radius, np.sin(theta) * radius)) - colors = np.random.randint(0, 255, size=(len(theta), 3)) + n = 150 + angle = np.linspace(0, 10 * np.pi, n) + spiral_radius = np.linspace(0.0, 3.0, n) ** 2 + positions = np.column_stack((np.cos(angle) * spiral_radius, np.sin(angle) * spiral_radius)) + colors = np.dstack((np.linspace(255, 255, n), np.linspace(255, 0, n), np.linspace(0, 255, n)))[0].astype(int) + radii = np.linspace(0.01, 0.7, n) - rr.log("points", rr.Points2D(positions, colors=colors, radii=0.1)) - rr.log("box", rr.Boxes2D(half_sizes=[3, 3], colors=0)) + rr.log("points", rr.Points2D(positions, colors=colors, radii=radii)) # Create a Spatial2D view to display the points. blueprint = rrb.Blueprint( rrb.Spatial2DView( origin="/", name="2D Scene", - # Set the background color to light blue. - background=[100, 149, 237], + # Set the background color + background=[105, 20, 105], # Note that this range is smaller than the range of the points, # so some points will not be visible. visual_bounds=rrb.VisualBounds2D(x_range=[-5, 5], y_range=[-5, 5]), @@ -57,11 +58,11 @@ class Spatial2DView(SpaceView): ```
- - - - - + + + + +
From 692b6b6acb185f96d90e0e5a7bf392d6a802d0a3 Mon Sep 17 00:00:00 2001 From: Artur J <108059518+Artxiom@users.noreply.github.com> Date: Thu, 16 May 2024 13:55:50 +0100 Subject: [PATCH 24/40] Cleanup usage of `unwrap()` in `re_data_store` (#6334) ### What Part of #6330 Removes or explicitly allows unwrap() where it makes sense. ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6334?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6334?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [ ] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6334) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- Cargo.toml | 7 +------ crates/re_data_store/src/arrow_util.rs | 4 ++-- crates/re_data_store/src/lib.rs | 4 ---- crates/re_data_store/src/store_gc.rs | 1 + crates/re_data_store/src/store_read.rs | 2 ++ crates/re_data_store/src/store_write.rs | 2 ++ crates/re_data_store/src/test_util.rs | 2 ++ 7 files changed, 10 insertions(+), 12 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 090f363c079b0..cb8cba25c53a6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -423,6 +423,7 @@ unnested_or_patterns = "warn" unused_peekable = "warn" unused_rounding = "warn" unused_self = "warn" +unwrap_used = "warn" useless_transmute = "warn" verbose_file_reads = "warn" wildcard_dependencies = "warn" @@ -440,12 +441,6 @@ let_underscore_untyped = "allow" missing_assert_message = "allow" missing_errors_doc = "allow" -# TODO(#3408): Forbid `.unwrap()` -# This would be nice to enable, but we have way too many unwraps right now 😭 -# Enabling this lint in 2023-04-27 yielded 556 hits. -# Enabling this lint in 2023-09-23 yielded 352 hits -unwrap_used = "warn" - [patch.crates-io] # Try to avoid patching crates! It prevents us from publishing the crates on crates.io. # If you do patch always prefer to patch to a commit on the trunk of the upstream repo. diff --git a/crates/re_data_store/src/arrow_util.rs b/crates/re_data_store/src/arrow_util.rs index 898025d49845d..cf6cbed43ad31 100644 --- a/crates/re_data_store/src/arrow_util.rs +++ b/crates/re_data_store/src/arrow_util.rs @@ -19,10 +19,10 @@ impl ArrayExt for dyn Array { fn get_child_length(&self, child_nr: usize) -> usize { self.as_any() .downcast_ref::>() - .unwrap() + .expect("not a ListArray") .offsets() .lengths() .nth(child_nr) - .unwrap() + .unwrap_or_else(|| panic!("no child at index {child_nr}")) } } diff --git a/crates/re_data_store/src/lib.rs b/crates/re_data_store/src/lib.rs index 477bb87ae64af..aec5b1705286f 100644 --- a/crates/re_data_store/src/lib.rs +++ b/crates/re_data_store/src/lib.rs @@ -14,9 +14,6 @@ #![doc = document_features::document_features!()] //! -// TODO(#3408): remove unwrap() -#![allow(clippy::unwrap_used)] - mod arrow_util; mod store; mod store_arrow; @@ -34,7 +31,6 @@ mod store_write; #[doc(hidden)] pub mod test_util; -pub use self::arrow_util::ArrayExt; pub use self::store::{DataStore, DataStoreConfig, StoreGeneration}; pub use self::store_event::{StoreDiff, StoreDiffKind, StoreEvent}; pub use self::store_gc::{GarbageCollectionOptions, GarbageCollectionTarget}; diff --git a/crates/re_data_store/src/store_gc.rs b/crates/re_data_store/src/store_gc.rs index bd2fd890e1535..b32705bbce973 100644 --- a/crates/re_data_store/src/store_gc.rs +++ b/crates/re_data_store/src/store_gc.rs @@ -163,6 +163,7 @@ impl DataStore { } #[cfg(debug_assertions)] + #[allow(clippy::unwrap_used)] self.sanity_check().unwrap(); // NOTE: only temporal data and row metadata get purged! diff --git a/crates/re_data_store/src/store_read.rs b/crates/re_data_store/src/store_read.rs index cb81dfe9039f5..c76e04d66197f 100644 --- a/crates/re_data_store/src/store_read.rs +++ b/crates/re_data_store/src/store_read.rs @@ -454,6 +454,7 @@ impl IndexedTable { pub fn find_bucket(&self, time: TimeInt) -> (TimeInt, &IndexedBucket) { // This cannot fail, `iter_bucket` is guaranteed to always yield at least one bucket, // since indexed tables always spawn with a default bucket that covers [-∞;+∞]. + #[allow(clippy::unwrap_used)] self.range_buckets_rev(..=time).next().unwrap() } @@ -466,6 +467,7 @@ impl IndexedTable { pub fn find_bucket_mut(&mut self, time: TimeInt) -> (TimeInt, &mut IndexedBucket) { // This cannot fail, `iter_bucket_mut` is guaranteed to always yield at least one bucket, // since indexed tables always spawn with a default bucket that covers [-∞;+∞]. + #[allow(clippy::unwrap_used)] self.range_bucket_rev_mut(..=time).next().unwrap() } diff --git a/crates/re_data_store/src/store_write.rs b/crates/re_data_store/src/store_write.rs index 2279314d310e2..1df6d2fd04fdd 100644 --- a/crates/re_data_store/src/store_write.rs +++ b/crates/re_data_store/src/store_write.rs @@ -401,6 +401,7 @@ impl IndexedBucket { *size_bytes += size_bytes_added; #[cfg(debug_assertions)] + #[allow(clippy::unwrap_used)] { drop(inner); self.sanity_check().unwrap(); @@ -534,6 +535,7 @@ impl IndexedBucket { // sanity checks #[cfg(debug_assertions)] + #[allow(clippy::unwrap_used)] { drop(inner1); // sanity checking will grab the lock! self.sanity_check().unwrap(); diff --git a/crates/re_data_store/src/test_util.rs b/crates/re_data_store/src/test_util.rs index f928c4f455a6b..498d7132bd33d 100644 --- a/crates/re_data_store/src/test_util.rs +++ b/crates/re_data_store/src/test_util.rs @@ -66,12 +66,14 @@ pub fn sanity_unwrap(store: &DataStore) { if let err @ Err(_) = store.sanity_check() { store.sort_indices_if_needed(); eprintln!("{store}"); + #[allow(clippy::unwrap_used)] // we want to panic here err.unwrap(); } } // We very often re-use RowIds when generating test data. pub fn insert_table_with_retries(store: &mut DataStore, table: &DataTable) { + #[allow(clippy::unwrap_used)] // ok for tests for row in table.to_rows() { let mut row = row.unwrap(); loop { From c588705b30e8a1790032aca7191e8d8376e9856f Mon Sep 17 00:00:00 2001 From: Jeremy Leibs Date: Thu, 16 May 2024 16:08:07 +0200 Subject: [PATCH 25/40] Quiet the 'not a mono-batch' log spam when selecting keypoint with a batch class-id (#6359) ### What - Partially mitigates: https://github.com/rerun-io/rerun/issues/6358 ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6359?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6359?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6359) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- crates/re_data_ui/src/annotation_context.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/re_data_ui/src/annotation_context.rs b/crates/re_data_ui/src/annotation_context.rs index 07c126d4e074f..516ee67e4b1b5 100644 --- a/crates/re_data_ui/src/annotation_context.rs +++ b/crates/re_data_ui/src/annotation_context.rs @@ -94,9 +94,13 @@ fn annotation_info( keypoint_id: KeypointId, ) -> Option { // TODO(#5607): what should happen if the promise is still pending? + + // TODO(#6358): this needs to use the index of the keypoint to look up the correct + // class_id. For now we use `latest_at_component_quiet` to avoid the warning spam. let class_id = ctx .recording() - .latest_at_component::(entity_path, query)?; + .latest_at_component_quiet::(entity_path, query)?; + let annotations = crate::annotations(ctx, query, entity_path); let class = annotations.resolved_class_description(Some(class_id.value)); class.keypoint_map?.get(&keypoint_id).cloned() From b3fddff0399ee7ebff119f6e59fcb2c65faf3b56 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Thu, 16 May 2024 16:35:38 +0200 Subject: [PATCH 26/40] Fix clearing mesh3d causing a warning (#6361) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### What * Fixes #6355 ... and improve re_renderers internal error messaging a little bit. Guess we could react to re_renderer's errors directly instead of doing a separate check, but I found it cleaner 🀷 ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6361?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6361?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6361) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --------- Co-authored-by: Clement Rey --- crates/re_renderer/src/mesh.rs | 37 ++++++++++++++++--- .../src/visualizers/meshes.rs | 7 ++++ 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/crates/re_renderer/src/mesh.rs b/crates/re_renderer/src/mesh.rs index 63ae08ca83a8e..debcb7ef757d7 100644 --- a/crates/re_renderer/src/mesh.rs +++ b/crates/re_renderer/src/mesh.rs @@ -50,8 +50,12 @@ pub mod mesh_vertices { pub struct Mesh { pub label: DebugLabel, + /// Non-empty array of vertex triangle indices. + /// + /// The length has to be a multiple of 3. pub triangle_indices: Vec, + /// Non-empty array of vertex positions. pub vertex_positions: Vec, /// Per-vertex albedo color. @@ -72,10 +76,20 @@ impl Mesh { pub fn sanity_check(&self) -> Result<(), MeshError> { re_tracing::profile_function!(); - let num_pos = self.vertex_positions.len(); - let num_color = self.vertex_colors.len(); - let num_normals = self.vertex_normals.len(); - let num_texcoords = self.vertex_texcoords.len(); + let Mesh { + label: _, + triangle_indices, + vertex_positions, + vertex_colors, + vertex_normals, + vertex_texcoords, + materials: _, + } = self; + + let num_pos = vertex_positions.len(); + let num_color = vertex_colors.len(); + let num_normals = vertex_normals.len(); + let num_texcoords = vertex_texcoords.len(); if num_pos != num_color { return Err(MeshError::WrongNumberOfColors { num_pos, num_color }); @@ -92,8 +106,15 @@ impl Mesh { num_texcoords, }); } + if self.vertex_positions.is_empty() { + return Err(MeshError::ZeroVertices); + } + + if self.triangle_indices.is_empty() { + return Err(MeshError::ZeroIndices); + } - for indices in &self.triangle_indices { + for indices in triangle_indices { let max_index = indices.max_element(); if num_pos <= max_index as usize { return Err(MeshError::IndexOutOfBounds { @@ -121,6 +142,12 @@ pub enum MeshError { num_texcoords: usize, }, + #[error("Mesh has no vertices.")] + ZeroVertices, + + #[error("Mesh has no triangle indices.")] + ZeroIndices, + #[error("Index {index} was out of bounds for {num_pos} vertex positions")] IndexOutOfBounds { num_pos: usize, index: u32 }, } diff --git a/crates/re_space_view_spatial/src/visualizers/meshes.rs b/crates/re_space_view_spatial/src/visualizers/meshes.rs index 323c6563f14df..d756eedd15516 100644 --- a/crates/re_space_view_spatial/src/visualizers/meshes.rs +++ b/crates/re_space_view_spatial/src/visualizers/meshes.rs @@ -67,6 +67,13 @@ impl Mesh3DVisualizer { let picking_instance_hash = re_entity_db::InstancePathHash::entity_all(entity_path); let outline_mask_ids = ent_context.highlight.index_outline_mask(Instance::ALL); + // Skip over empty meshes. + // Note that we can deal with zero normals/colors/texcoords/indices just fine (we generate them), + // but re_renderer insists on having at a non-zero vertex list. + if data.vertex_positions.is_empty() { + continue; + } + let mesh = ctx.cache.entry(|c: &mut MeshCache| { let key = MeshCacheKey { versioned_instance_path_hash: picking_instance_hash.versioned(primary_row_id), From 838eab1b57e76be86b9d805ea73fd31dea2eb242 Mon Sep 17 00:00:00 2001 From: Clement Rey Date: Thu, 16 May 2024 17:08:06 +0200 Subject: [PATCH 27/40] Fix width/height/channel extraction logic (#6360) - Fixes #6357 ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6360?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6360?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6360) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --------- Co-authored-by: Emil Ernerfeldt Co-authored-by: Jeremy Leibs --- .../re_types/src/datatypes/tensor_data_ext.rs | 97 ++++++++++++++++++- 1 file changed, 96 insertions(+), 1 deletion(-) diff --git a/crates/re_types/src/datatypes/tensor_data_ext.rs b/crates/re_types/src/datatypes/tensor_data_ext.rs index 28940661780f5..fb13cbafd82e3 100644 --- a/crates/re_types/src/datatypes/tensor_data_ext.rs +++ b/crates/re_types/src/datatypes/tensor_data_ext.rs @@ -47,7 +47,30 @@ impl TensorData { /// If the tensor can be interpreted as an image, return the height, width, and channels/depth of it. pub fn image_height_width_channels(&self) -> Option<[u64; 3]> { - let shape_short = self.shape_short(); + let mut shape_short = self.shape.as_slice(); + + // Ignore trailing dimensions of size 1: + while 2 < shape_short.len() && shape_short.last().map_or(false, |d| d.size == 1) { + shape_short = &shape_short[..shape_short.len() - 1]; + } + + // If the trailing dimension looks like a channel we ignore leading dimensions of size 1 down to + // a minimum of 3 dimensions. Otherwise we ignore leading dimensions of size 1 down to 2 dimensions. + let shrink_to = if shape_short + .last() + .map_or(false, |d| matches!(d.size, 1 | 3 | 4)) + { + 3 + } else { + 2 + }; + + while shrink_to < shape_short.len() && shape_short.first().map_or(false, |d| d.size == 1) { + shape_short = &shape_short[1..]; + } + + // TODO(emilk): check dimension names against our standard dimension names ("height", "width", "depth") + match &self.buffer { // In the case of NV12, return the shape of the RGB image, not the tensor size. TensorBuffer::Nv12(_) => { @@ -811,3 +834,75 @@ where Self::from_image(value) } } + +#[test] +fn test_image_height_width_channels() { + let test_cases = [ + // Normal grayscale: + (vec![1, 1, 480, 640, 1, 1], Some([480, 640, 1])), + (vec![1, 1, 480, 640, 1], Some([480, 640, 1])), + (vec![1, 1, 480, 640], Some([480, 640, 1])), + (vec![1, 480, 640, 1, 1], Some([480, 640, 1])), + (vec![1, 480, 640], Some([480, 640, 1])), + (vec![480, 640, 1, 1], Some([480, 640, 1])), + (vec![480, 640, 1], Some([480, 640, 1])), + (vec![480, 640], Some([480, 640, 1])), + // + // Normal RGB: + (vec![1, 1, 480, 640, 3, 1], Some([480, 640, 3])), + (vec![1, 1, 480, 640, 3], Some([480, 640, 3])), + (vec![1, 480, 640, 3, 1], Some([480, 640, 3])), + (vec![480, 640, 3, 1], Some([480, 640, 3])), + (vec![480, 640, 3], Some([480, 640, 3])), + // + // h=1, w=640, grayscale: + (vec![1, 640], Some([1, 640, 1])), + // + // h=1, w=640, RGB: + (vec![1, 640, 3], Some([1, 640, 3])), + // + // h=480, w=1, grayscale: + (vec![480, 1], Some([480, 1, 1])), + // + // h=480, w=1, RGB: + (vec![480, 1, 3], Some([480, 1, 3])), + // + // h=1, w=1, grayscale: + (vec![1, 1], Some([1, 1, 1])), + (vec![1, 1, 1], Some([1, 1, 1])), + (vec![1, 1, 1, 1], Some([1, 1, 1])), + // + // h=1, w=1, RGB: + (vec![1, 1, 3], Some([1, 1, 3])), + (vec![1, 1, 1, 3], Some([1, 1, 3])), + // + // h=1, w=3, Mono: + (vec![1, 3, 1], Some([1, 3, 1])), + // + // Ambiguous cases. + // + // These are here to show how the current implementation behaves, not to suggest that it is a + // commitment to preserving this behavior going forward. + // If you need to change this test, it's ok but we should still communicate the subtle change + // in behavior. + (vec![1, 1, 3, 1], Some([1, 1, 3])), // Could be [1, 3, 1] + (vec![1, 3, 1, 1], Some([1, 3, 1])), // Could be [3, 1, 1] + ]; + + for (shape, expected_hwc) in test_cases { + let tensor = TensorData::new( + shape + .iter() + .map(|&size| TensorDimension::unnamed(size as u64)) + .collect(), + TensorBuffer::U8(vec![0; shape.iter().product()].into()), + ); + + let hwc = tensor.image_height_width_channels(); + + assert_eq!( + hwc, expected_hwc, + "Shape {shape:?} produced HWC {hwc:?}, but expected {expected_hwc:?}" + ); + } +} From c68ea3018377e100d29cd76568c27f22049223a6 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Thu, 16 May 2024 17:24:29 +0200 Subject: [PATCH 28/40] Fix crate isolation build issues (#6362) * [x] I know how to trick the checkbox CI --- crates/re_log_types/src/lib.rs | 2 +- crates/re_viewer/src/app.rs | 1 + rerun_py/build.rs | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/crates/re_log_types/src/lib.rs b/crates/re_log_types/src/lib.rs index 7930a731b0c8e..59e421127004a 100644 --- a/crates/re_log_types/src/lib.rs +++ b/crates/re_log_types/src/lib.rs @@ -371,7 +371,7 @@ pub struct StoreInfo { /// // NOTE: The version comes directly from the decoded RRD stream's header, duplicating it here // would probably only lead to more issues down the line. - #[serde(skip)] + #[cfg_attr(feature = "serde", serde(skip))] pub store_version: Option, } diff --git a/crates/re_viewer/src/app.rs b/crates/re_viewer/src/app.rs index ba35ed9834aa5..e18bac3c02973 100644 --- a/crates/re_viewer/src/app.rs +++ b/crates/re_viewer/src/app.rs @@ -983,6 +983,7 @@ impl App { format!("Data source {} has left unexpectedly: {err}", msg.source); #[cfg(not(target_arch = "wasm32"))] + #[cfg(feature = "server")] if err .downcast_ref::() .is_some_and(|e| { diff --git a/rerun_py/build.rs b/rerun_py/build.rs index 3334a14cc0946..3d292c55b9639 100644 --- a/rerun_py/build.rs +++ b/rerun_py/build.rs @@ -9,6 +9,7 @@ fn main() { && !re_build_tools::is_tracked_env_var_set("RERUN_ALLOW_MISSING_BIN") { #[cfg(target_os = "windows")] + #[allow(clippy::unwrap_used)] let rerun_bin = std::env::current_dir() .unwrap() .join("rerun_sdk/rerun_cli/rerun.exe"); From 3ecef5ad9ff17cf01536e84923f1f636e84ebcf4 Mon Sep 17 00:00:00 2001 From: Artur J <108059518+Artxiom@users.noreply.github.com> Date: Fri, 17 May 2024 07:51:10 +0100 Subject: [PATCH 29/40] Cleanup usage of unwrap() in re_dev_tools (#6337) ### What Part of #6330 Removes or explicitly allows unwrap() where it makes sense. ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6337?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6337?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6337) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --------- Co-authored-by: Andreas Reich Co-authored-by: Andreas Reich --- crates/re_dev_tools/src/build_examples/example.rs | 7 +++---- crates/re_dev_tools/src/build_examples/snippets.rs | 1 + crates/re_dev_tools/src/build_search_index/ingest.rs | 2 ++ crates/re_dev_tools/src/build_search_index/ingest/cpp.rs | 2 ++ crates/re_dev_tools/src/build_search_index/ingest/docs.rs | 2 ++ crates/re_dev_tools/src/build_search_index/ingest/rust.rs | 2 ++ crates/re_dev_tools/src/build_search_index/meili.rs | 4 +++- crates/re_dev_tools/src/build_search_index/repl.rs | 4 ++-- crates/re_dev_tools/src/main.rs | 4 ---- 9 files changed, 17 insertions(+), 11 deletions(-) diff --git a/crates/re_dev_tools/src/build_examples/example.rs b/crates/re_dev_tools/src/build_examples/example.rs index 0d17ad9dab971..febd57caa5a41 100644 --- a/crates/re_dev_tools/src/build_examples/example.rs +++ b/crates/re_dev_tools/src/build_examples/example.rs @@ -379,10 +379,9 @@ impl Frontmatter { let frontmatter: Frontmatter = toml::from_str(content[start..end].trim()).map_err(|err| { - anyhow::anyhow!( - "Failed to parse TOML metadata of {:?}: {err}", - path.parent().unwrap().file_name().unwrap() - ) + #[allow(clippy::unwrap_used)] + let p = path.parent().unwrap().file_name().unwrap(); + anyhow::anyhow!("Failed to parse TOML metadata of {p:?}: {err}") })?; Ok(Some(( diff --git a/crates/re_dev_tools/src/build_examples/snippets.rs b/crates/re_dev_tools/src/build_examples/snippets.rs index ddb104f08e169..a0e0c1908c44d 100644 --- a/crates/re_dev_tools/src/build_examples/snippets.rs +++ b/crates/re_dev_tools/src/build_examples/snippets.rs @@ -79,6 +79,7 @@ fn collect_snippets_recursively( ) -> anyhow::Result> { let mut snippets = vec![]; + #[allow(clippy::unwrap_used)] // we just use unwrap for string <-> path conversion here for snippet in dir.read_dir()? { let snippet = snippet?; let meta = snippet.metadata()?; diff --git a/crates/re_dev_tools/src/build_search_index/ingest.rs b/crates/re_dev_tools/src/build_search_index/ingest.rs index 454f0c051d3c5..02ea782fe176d 100644 --- a/crates/re_dev_tools/src/build_search_index/ingest.rs +++ b/crates/re_dev_tools/src/build_search_index/ingest.rs @@ -1,3 +1,5 @@ +#![allow(clippy::unwrap_used)] // build tool, so okay here + /// Docs read from `/docs` mod docs; diff --git a/crates/re_dev_tools/src/build_search_index/ingest/cpp.rs b/crates/re_dev_tools/src/build_search_index/ingest/cpp.rs index c99ff0c7f7722..513e0bf22725b 100644 --- a/crates/re_dev_tools/src/build_search_index/ingest/cpp.rs +++ b/crates/re_dev_tools/src/build_search_index/ingest/cpp.rs @@ -1,3 +1,5 @@ +#![allow(clippy::unwrap_used)] // build tool, so okay here + use super::Context; use super::DocumentData; use super::DocumentKind; diff --git a/crates/re_dev_tools/src/build_search_index/ingest/docs.rs b/crates/re_dev_tools/src/build_search_index/ingest/docs.rs index 20c38e4d6da9d..2f9ad6ab9d375 100644 --- a/crates/re_dev_tools/src/build_search_index/ingest/docs.rs +++ b/crates/re_dev_tools/src/build_search_index/ingest/docs.rs @@ -1,3 +1,5 @@ +#![allow(clippy::unwrap_used)] // build tool, so okay here + use super::{Context, DocumentData, DocumentKind}; use crate::build_search_index::util::ProgressBarExt as _; use std::path::Path; diff --git a/crates/re_dev_tools/src/build_search_index/ingest/rust.rs b/crates/re_dev_tools/src/build_search_index/ingest/rust.rs index 109a07a86189c..e4e84d44de35a 100644 --- a/crates/re_dev_tools/src/build_search_index/ingest/rust.rs +++ b/crates/re_dev_tools/src/build_search_index/ingest/rust.rs @@ -1,3 +1,5 @@ +#![allow(clippy::unwrap_used)] // build tool, so okay here + use super::{Context, DocumentData, DocumentKind}; use crate::build_search_index::util::ProgressBarExt as _; use anyhow::Context as _; diff --git a/crates/re_dev_tools/src/build_search_index/meili.rs b/crates/re_dev_tools/src/build_search_index/meili.rs index 64a1d71ed8908..bf746727101fc 100644 --- a/crates/re_dev_tools/src/build_search_index/meili.rs +++ b/crates/re_dev_tools/src/build_search_index/meili.rs @@ -194,7 +194,9 @@ impl Task { TaskStatus::Succeeded => Ok(ControlFlow::Break(())), TaskStatus::Failed => { - anyhow::bail!("task failed: {}", self.error.as_ref().unwrap().message) + #[allow(clippy::unwrap_used)] + let msg = self.error.as_ref().unwrap().message.as_str(); + anyhow::bail!("task failed: {}", msg) } TaskStatus::Canceled => anyhow::bail!("task was canceled"), } diff --git a/crates/re_dev_tools/src/build_search_index/repl.rs b/crates/re_dev_tools/src/build_search_index/repl.rs index 8bc5ed209fc5c..c7ddbdd1dc8f5 100644 --- a/crates/re_dev_tools/src/build_search_index/repl.rs +++ b/crates/re_dev_tools/src/build_search_index/repl.rs @@ -49,8 +49,8 @@ impl Repl { let mut lines = stdin().lines(); loop { - stdout().write_all(b"\n> ").unwrap(); - stdout().flush().unwrap(); + stdout().write_all(b"\n> ")?; + stdout().flush()?; match lines.next().transpose()? { Some(line) => match self.handle_line(&client, &line)? { diff --git a/crates/re_dev_tools/src/main.rs b/crates/re_dev_tools/src/main.rs index 595dec59d75a7..37aa4350464c5 100644 --- a/crates/re_dev_tools/src/main.rs +++ b/crates/re_dev_tools/src/main.rs @@ -1,10 +1,6 @@ //! Crate that combines several development utilities. //! //! To get an overview over all tools run `pixi run dev-tools --help`. - -// TODO(#3408): remove unwrap() -#![allow(clippy::unwrap_used)] - use argh::FromArgs; mod build_examples; From 88ba40b0e903e3444130802f669072264421c7a5 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Fri, 17 May 2024 09:11:33 +0200 Subject: [PATCH 30/40] Enforce `clippy::use_self` (#6363) ### What https://rust-lang.github.io/rust-clippy/master/index.html#/use_self Often leads to shorter code that's easier to parse (for humans). It also simplified codegen slightly. ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6363?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6363?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6363) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- Cargo.toml | 1 + crates/re_analytics/src/event.rs | 2 +- crates/re_analytics/src/lib.rs | 10 +- crates/re_analytics/src/native/config.rs | 6 +- crates/re_analytics/src/web/config.rs | 6 +- crates/re_analytics/src/web/pipeline.rs | 2 +- crates/re_build_info/src/build_info.rs | 4 +- crates/re_build_info/src/crate_version.rs | 14 +- crates/re_data_loader/src/lib.rs | 6 +- crates/re_data_source/src/data_source.rs | 38 +++--- crates/re_data_store/benches/arrow2.rs | 6 +- crates/re_data_store/src/store_event.rs | 4 +- crates/re_data_store/src/store_gc.rs | 8 +- crates/re_data_ui/src/image.rs | 2 +- crates/re_data_ui/src/log_msg.rs | 8 +- crates/re_data_ui/src/rotation3d.rs | 4 +- crates/re_data_ui/src/transform3d.rs | 12 +- .../src/build_examples/example.rs | 59 +++++---- .../src/build_search_index/ingest/python.rs | 10 +- .../src/build_search_index/ingest/rust.rs | 32 ++--- .../src/build_search_index/meili.rs | 8 +- .../re_dev_tools/src/build_web_viewer/lib.rs | 4 +- .../re_entity_db/src/editable_auto_value.rs | 14 +- crates/re_entity_db/src/entity_db.rs | 6 +- crates/re_entity_db/src/entity_properties.rs | 72 +++++------ crates/re_entity_db/src/entity_tree.rs | 4 +- crates/re_entity_db/src/instance_path.rs | 2 +- crates/re_format_arrow/src/lib.rs | 16 +-- crates/re_int_histogram/src/lib.rs | 4 +- crates/re_int_histogram/src/tree.rs | 52 ++++---- crates/re_log_types/src/data_cell.rs | 2 +- crates/re_log_types/src/data_row.rs | 12 +- crates/re_log_types/src/data_table.rs | 8 +- crates/re_log_types/src/example_components.rs | 2 +- crates/re_log_types/src/hash.rs | 4 +- crates/re_log_types/src/lib.rs | 6 +- crates/re_log_types/src/path/entity_path.rs | 28 ++-- .../src/path/entity_path_filter.rs | 2 +- crates/re_log_types/src/path/parse_path.rs | 4 +- .../re_log_types/src/resolved_time_range.rs | 4 +- crates/re_log_types/src/time.rs | 34 ++--- .../src/time_point/non_min_i64.rs | 22 ++-- .../re_log_types/src/time_point/time_int.rs | 2 +- .../re_log_types/src/time_point/timeline.rs | 4 +- crates/re_log_types/src/time_real.rs | 10 +- crates/re_memory/src/memory_use.rs | 2 +- crates/re_query/src/flat_vec_deque.rs | 14 +- crates/re_query/src/latest_at/query.rs | 2 +- crates/re_query/src/promise.rs | 20 +-- crates/re_query/src/range/query.rs | 2 +- crates/re_query/src/range/results.rs | 2 +- crates/re_renderer/build.rs | 6 +- .../src/allocator/cpu_write_gpu_read_belt.rs | 4 +- .../src/allocator/gpu_readback_belt.rs | 2 +- crates/re_renderer/src/colormap.rs | 12 +- crates/re_renderer/src/context.rs | 2 +- .../re_renderer/src/draw_phases/outlines.rs | 6 +- .../src/draw_phases/picking_layer.rs | 4 +- crates/re_renderer/src/file_resolver.rs | 10 +- crates/re_renderer/src/file_server.rs | 8 +- crates/re_renderer/src/file_system.rs | 2 +- crates/re_renderer/src/mesh.rs | 4 +- crates/re_renderer/src/queuable_draw_data.rs | 2 +- crates/re_renderer/src/rect.rs | 6 +- crates/re_renderer/src/renderer/compositor.rs | 4 +- .../re_renderer/src/renderer/debug_overlay.rs | 4 +- .../re_renderer/src/renderer/depth_cloud.rs | 6 +- .../src/renderer/generic_skybox.rs | 4 +- crates/re_renderer/src/renderer/lines.rs | 8 +- .../re_renderer/src/renderer/mesh_renderer.rs | 10 +- .../re_renderer/src/renderer/point_cloud.rs | 6 +- crates/re_renderer/src/renderer/rectangles.rs | 10 +- .../re_renderer/src/renderer/test_triangle.rs | 4 +- .../src/resource_managers/mesh_manager.rs | 2 +- crates/re_renderer/src/size.rs | 4 +- crates/re_renderer/src/transform.rs | 2 +- crates/re_renderer/src/view_builder.rs | 10 +- crates/re_renderer/src/wgpu_buffer_types.rs | 36 +++--- crates/re_renderer_examples/2d.rs | 2 +- crates/re_renderer_examples/depth_cloud.rs | 2 +- crates/re_renderer_examples/depth_offset.rs | 2 +- crates/re_renderer_examples/outlines.rs | 2 +- crates/re_renderer_examples/picking.rs | 2 +- crates/re_sdk/src/global.rs | 30 ++--- crates/re_sdk/src/lib.rs | 4 +- crates/re_sdk/src/recording_stream.rs | 6 +- crates/re_smart_channel/src/lib.rs | 26 ++-- crates/re_smart_channel/src/receiver.rs | 2 +- .../re_space_view/src/space_view_contents.rs | 4 +- crates/re_space_view_spatial/src/eye.rs | 6 +- .../src/max_image_dimension_subscriber.rs | 7 +- crates/re_space_view_spatial/src/picking.rs | 4 +- .../src/spatial_topology.rs | 12 +- .../src/visualizers/arrows2d.rs | 2 +- .../src/visualizers/arrows3d.rs | 2 +- .../src/visualizers/assets3d.rs | 2 +- .../src/visualizers/boxes2d.rs | 2 +- .../src/visualizers/boxes3d.rs | 2 +- .../src/visualizers/images.rs | 4 +- .../src/visualizers/lines2d.rs | 2 +- .../src/visualizers/lines3d.rs | 2 +- .../src/visualizers/meshes.rs | 2 +- .../src/visualizers/points2d.rs | 2 +- .../src/visualizers/points3d.rs | 2 +- .../src/visualizers/results_ext.rs | 8 +- .../src/dimension_mapping.rs | 10 +- .../src/space_view_class.rs | 10 +- .../src/tensor_dimension_mapper.rs | 22 ++-- .../src/aggregation.rs | 16 +-- crates/re_time_panel/src/lib.rs | 2 +- crates/re_tuid/src/lib.rs | 2 +- .../re_types/src/archetypes/points3d_ext.rs | 2 +- .../blueprint/components/background_kind.rs | 14 +- .../src/blueprint/components/corner2d.rs | 16 +-- .../re_types/src/components/draw_order_ext.rs | 8 +- .../re_types/src/components/marker_shape.rs | 28 ++-- crates/re_types/src/datatypes/angle.rs | 24 ++-- .../re_types/src/datatypes/annotation_info.rs | 2 +- .../src/datatypes/class_description.rs | 2 +- .../datatypes/class_description_map_elem.rs | 2 +- .../re_types/src/datatypes/keypoint_pair.rs | 2 +- .../src/datatypes/keypoint_pair_ext.rs | 2 +- crates/re_types/src/datatypes/mat3x3_ext.rs | 2 +- crates/re_types/src/datatypes/mat4x4_ext.rs | 2 +- crates/re_types/src/datatypes/material.rs | 2 +- crates/re_types/src/datatypes/range1d_ext.rs | 2 +- crates/re_types/src/datatypes/range2d.rs | 2 +- crates/re_types/src/datatypes/range2d_ext.rs | 2 +- crates/re_types/src/datatypes/rotation3d.rs | 24 ++-- .../re_types/src/datatypes/rotation3d_ext.rs | 6 +- .../src/datatypes/rotation_axis_angle.rs | 2 +- .../src/datatypes/rotation_axis_angle_ext.rs | 2 +- crates/re_types/src/datatypes/scale3d.rs | 24 ++-- crates/re_types/src/datatypes/scale3d_ext.rs | 2 +- .../re_types/src/datatypes/tensor_buffer.rs | 120 +++++++++--------- crates/re_types/src/datatypes/tensor_data.rs | 2 +- .../re_types/src/datatypes/tensor_data_ext.rs | 16 +-- .../src/datatypes/tensor_dimension.rs | 2 +- crates/re_types/src/datatypes/transform3d.rs | 24 ++-- .../re_types/src/datatypes/transform3d_ext.rs | 4 +- .../src/datatypes/translation_and_mat3x3.rs | 2 +- .../datatypes/translation_rotation_scale3d.rs | 2 +- crates/re_types/src/datatypes/uuid_ext.rs | 2 +- crates/re_types/src/datatypes/uvec2d_ext.rs | 4 +- crates/re_types/src/datatypes/uvec3d_ext.rs | 4 +- crates/re_types/src/datatypes/uvec4d_ext.rs | 4 +- crates/re_types/src/datatypes/vec2d_ext.rs | 4 +- crates/re_types/src/datatypes/vec3d_ext.rs | 8 +- crates/re_types/src/datatypes/vec4d_ext.rs | 6 +- crates/re_types/src/tensor_data.rs | 40 +++--- .../src/testing/components/enum_test.rs | 20 +-- .../src/testing/datatypes/affix_fuzzer1.rs | 2 +- .../src/testing/datatypes/affix_fuzzer20.rs | 2 +- .../src/testing/datatypes/affix_fuzzer21.rs | 2 +- .../src/testing/datatypes/affix_fuzzer22.rs | 2 +- .../src/testing/datatypes/affix_fuzzer3.rs | 42 +++--- .../src/testing/datatypes/affix_fuzzer4.rs | 24 ++-- .../src/testing/datatypes/affix_fuzzer5.rs | 2 +- .../src/testing/datatypes/flattened_scalar.rs | 2 +- crates/re_types/src/view_coordinates.rs | 6 +- .../blueprint/components/container_kind.rs | 16 +-- crates/re_types_builder/src/arrow_registry.rs | 102 +++++++-------- .../src/codegen/cpp/forward_decl.rs | 20 +-- .../re_types_builder/src/codegen/cpp/mod.rs | 8 +- .../src/codegen/python/mod.rs | 6 +- .../src/codegen/rust/deserializer.rs | 8 +- .../src/codegen/rust/serializer.rs | 17 +-- crates/re_types_builder/src/objects.rs | 32 ++--- .../re_types_core/src/datatypes/time_range.rs | 2 +- .../src/datatypes/time_range_boundary.rs | 34 ++--- .../src/datatypes/time_range_boundary_ext.rs | 12 +- .../src/datatypes/visible_time_range.rs | 2 +- crates/re_types_core/src/result.rs | 28 ++-- crates/re_types_core/src/size_bytes.rs | 74 ++++++----- crates/re_types_core/src/tuid.rs | 2 +- crates/re_ui/src/command.rs | 4 +- crates/re_ui/src/lib.rs | 10 +- crates/re_ui/src/list_item2/mod.rs | 2 +- crates/re_ui/src/list_item2/scope.rs | 14 +- crates/re_viewer/src/lib.rs | 14 +- .../src/ui/welcome_screen/example_section.rs | 6 +- crates/re_viewer_context/src/annotations.rs | 5 +- crates/re_viewer_context/src/clipboard.rs | 4 +- crates/re_viewer_context/src/collapsed_id.rs | 4 +- crates/re_viewer_context/src/contents.rs | 6 +- crates/re_viewer_context/src/item.rs | 40 +++--- .../re_viewer_context/src/selection_state.rs | 8 +- .../re_viewer_context/src/space_view/mod.rs | 4 +- .../actions/collapse_expand_all.rs | 8 +- .../src/space_view_entity_picker.rs | 16 +-- crates/re_viewport/src/viewport_blueprint.rs | 2 +- crates/re_web_viewer_server/src/lib.rs | 2 +- crates/re_ws_comms/src/lib.rs | 2 +- crates/rerun/src/run.rs | 2 +- crates/rerun_c/src/error.rs | 8 +- crates/rerun_c/src/lib.rs | 4 +- rerun_py/src/python_bridge.rs | 6 +- 197 files changed, 952 insertions(+), 1089 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index cb8cba25c53a6..9ce99be5cc9c5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -424,6 +424,7 @@ unused_peekable = "warn" unused_rounding = "warn" unused_self = "warn" unwrap_used = "warn" +use_self = "warn" useless_transmute = "warn" verbose_file_reads = "warn" wildcard_dependencies = "warn" diff --git a/crates/re_analytics/src/event.rs b/crates/re_analytics/src/event.rs index e04f4d466ee23..f6e7fe5208961 100644 --- a/crates/re_analytics/src/event.rs +++ b/crates/re_analytics/src/event.rs @@ -137,7 +137,7 @@ use crate::{AnalyticsEvent, Event, EventKind, Properties, Property}; impl From for Property { fn from(val: Id) -> Self { match val { - Id::Official(id) => Property::String(id), + Id::Official(id) => Self::String(id), Id::Hashed(id) => id, } } diff --git a/crates/re_analytics/src/lib.rs b/crates/re_analytics/src/lib.rs index e46f50b93e608..99dd49fc573bd 100644 --- a/crates/re_analytics/src/lib.rs +++ b/crates/re_analytics/src/lib.rs @@ -113,7 +113,7 @@ pub enum Property { impl Property { /// Returns a new string property that is a hex representation of the hashed sum of the current /// property. - pub fn hashed(&self) -> Property { + pub fn hashed(&self) -> Self { /// Just a random fixed salt to render pre-built rainbow tables useless. const SALT: &str = "d6d6bed3-028a-49ac-94dc-8c89cfb19379"; @@ -121,10 +121,10 @@ impl Property { let mut hasher = sha2::Sha256::default(); hasher.update(SALT); match self { - Property::Bool(data) => hasher.update([*data as u8]), - Property::Integer(data) => hasher.update(data.to_le_bytes()), - Property::Float(data) => hasher.update(data.to_le_bytes()), - Property::String(data) => hasher.update(data), + Self::Bool(data) => hasher.update([*data as u8]), + Self::Integer(data) => hasher.update(data.to_le_bytes()), + Self::Float(data) => hasher.update(data.to_le_bytes()), + Self::String(data) => hasher.update(data), } Self::String(format!("{:x}", hasher.finalize())) } diff --git a/crates/re_analytics/src/native/config.rs b/crates/re_analytics/src/native/config.rs index df43652793550..f6cab7f156878 100644 --- a/crates/re_analytics/src/native/config.rs +++ b/crates/re_analytics/src/native/config.rs @@ -74,14 +74,14 @@ impl Config { }) } - pub fn load_or_default() -> Result { + pub fn load_or_default() -> Result { match Self::load()? { Some(config) => Ok(config), - None => Config::new(), + None => Self::new(), } } - pub fn load() -> Result, ConfigError> { + pub fn load() -> Result, ConfigError> { let dirs = Self::project_dirs()?; let config_path = dirs.config_dir().join("analytics.json"); match File::open(config_path) { diff --git a/crates/re_analytics/src/web/config.rs b/crates/re_analytics/src/web/config.rs index b6db68fcc3b2e..9698c45ffa62f 100644 --- a/crates/re_analytics/src/web/config.rs +++ b/crates/re_analytics/src/web/config.rs @@ -53,7 +53,7 @@ impl Config { } #[allow(clippy::map_err_ignore)] - pub fn load() -> Result, ConfigError> { + pub fn load() -> Result, ConfigError> { let storage = get_local_storage()?; let value = storage .get_item(Self::STORAGE_KEY) @@ -64,10 +64,10 @@ impl Config { } } - pub fn load_or_default() -> Result { + pub fn load_or_default() -> Result { match Self::load()? { Some(config) => Ok(config), - None => Config::new(), + None => Self::new(), } } diff --git a/crates/re_analytics/src/web/pipeline.rs b/crates/re_analytics/src/web/pipeline.rs index d9bd74a5da869..e62c371aa8d57 100644 --- a/crates/re_analytics/src/web/pipeline.rs +++ b/crates/re_analytics/src/web/pipeline.rs @@ -33,7 +33,7 @@ impl Pipeline { const URL: &'static str = "https://tel.rerun.io/api/pog"; pub(crate) fn new(config: &Config, _tick: Duration) -> Result, PipelineError> { - Ok(Some(Pipeline { + Ok(Some(Self { analytics_id: config.analytics_id.as_str().into(), session_id: config.session_id.to_string().into(), })) diff --git a/crates/re_build_info/src/build_info.rs b/crates/re_build_info/src/build_info.rs index 1192eb719bd95..55abb7290e60f 100644 --- a/crates/re_build_info/src/build_info.rs +++ b/crates/re_build_info/src/build_info.rs @@ -133,13 +133,13 @@ impl CrateVersion { /// ```ignore /// [] /// ``` - pub fn try_parse_from_build_info_string(s: impl AsRef) -> Result { + pub fn try_parse_from_build_info_string(s: impl AsRef) -> Result { let s = s.as_ref(); let parts = s.split_whitespace().collect::>(); if parts.len() < 2 { return Err(format!("{s:?} is not a valid BuildInfo string")); } - CrateVersion::try_parse(parts[1]).map_err(ToOwned::to_owned) + Self::try_parse(parts[1]).map_err(ToOwned::to_owned) } } diff --git a/crates/re_build_info/src/crate_version.rs b/crates/re_build_info/src/crate_version.rs index 4a576a704cb0d..4a560a87647ba 100644 --- a/crates/re_build_info/src/crate_version.rs +++ b/crates/re_build_info/src/crate_version.rs @@ -64,9 +64,9 @@ pub enum Meta { impl Meta { pub const fn to_byte(self) -> u8 { match self { - Meta::Rc(value) => value | meta::RC, - Meta::Alpha(value) => value | meta::ALPHA, - Meta::DevAlpha(value) => value | meta::DEV_ALPHA, + Self::Rc(value) => value | meta::RC, + Self::Alpha(value) => value | meta::ALPHA, + Self::DevAlpha(value) => value | meta::DEV_ALPHA, } } @@ -208,7 +208,7 @@ impl CrateVersion { } #[allow(clippy::unnested_or_patterns)] - pub fn is_compatible_with(self, other: CrateVersion) -> bool { + pub fn is_compatible_with(self, other: Self) -> bool { match (self.meta, other.meta) { // release candidates are always compatible with each other // and their finalized version: @@ -388,9 +388,9 @@ impl CrateVersion { impl std::fmt::Display for Meta { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - Meta::Rc(build) => write!(f, "-rc.{build}"), - Meta::Alpha(build) => write!(f, "-alpha.{build}"), - Meta::DevAlpha(build) => write!(f, "-alpha.{build}+dev"), + Self::Rc(build) => write!(f, "-rc.{build}"), + Self::Alpha(build) => write!(f, "-alpha.{build}"), + Self::DevAlpha(build) => write!(f, "-alpha.{build}+dev"), } } } diff --git a/crates/re_data_loader/src/lib.rs b/crates/re_data_loader/src/lib.rs index de466fef2e1b6..3edd76f9521f7 100644 --- a/crates/re_data_loader/src/lib.rs +++ b/crates/re_data_loader/src/lib.rs @@ -300,7 +300,7 @@ impl DataLoaderError { pub fn is_path_not_found(&self) -> bool { match self { #[cfg(not(target_arch = "wasm32"))] - DataLoaderError::IO(err) => err.kind() == std::io::ErrorKind::NotFound, + Self::IO(err) => err.kind() == std::io::ErrorKind::NotFound, _ => false, } } @@ -332,14 +332,14 @@ impl From for LoadedData { impl From for LoadedData { #[inline] fn from(value: ArrowMsg) -> Self { - LoadedData::ArrowMsg(value) + Self::ArrowMsg(value) } } impl From for LoadedData { #[inline] fn from(value: LogMsg) -> Self { - LoadedData::LogMsg(value) + Self::LogMsg(value) } } diff --git a/crates/re_data_source/src/data_source.rs b/crates/re_data_source/src/data_source.rs index efc671b5d0e3f..f1931e65c8bd0 100644 --- a/crates/re_data_source/src/data_source.rs +++ b/crates/re_data_source/src/data_source.rs @@ -39,7 +39,7 @@ impl DataSource { /// Tries to figure out if it looks like a local path, /// a web-socket address, or a http url. #[cfg(not(target_arch = "wasm32"))] - pub fn from_uri(file_source: re_log_types::FileSource, mut uri: String) -> DataSource { + pub fn from_uri(file_source: re_log_types::FileSource, mut uri: String) -> Self { use itertools::Itertools as _; fn looks_like_windows_abs_path(path: &str) -> bool { @@ -81,29 +81,29 @@ impl DataSource { // In order to avoid having to swallow errors based on unreliable heuristics (or inversely: // throwing errors when we shouldn't), we just make reading from standard input explicit. if uri == "-" { - return DataSource::Stdin; + return Self::Stdin; } let path = std::path::Path::new(&uri).to_path_buf(); if uri.starts_with("file://") || path.exists() { - DataSource::FilePath(file_source, path) + Self::FilePath(file_source, path) } else if uri.starts_with("http://") || uri.starts_with("https://") || (uri.starts_with("www.") && (uri.ends_with(".rrd") || uri.ends_with(".rbl"))) { - DataSource::RrdHttpUrl { + Self::RrdHttpUrl { url: uri, follow: false, } } else if uri.starts_with("ws://") || uri.starts_with("wss://") { - DataSource::WebSocketAddr(uri) + Self::WebSocketAddr(uri) // Now we are into heuristics territory: } else if looks_like_a_file_path(&uri) { - DataSource::FilePath(file_source, path) + Self::FilePath(file_source, path) } else if uri.ends_with(".rrd") || uri.ends_with(".rbl") { - DataSource::RrdHttpUrl { + Self::RrdHttpUrl { url: uri, follow: false, } @@ -114,21 +114,19 @@ impl DataSource { if !uri.contains("://") { uri = format!("{}://{uri}", re_ws_comms::PROTOCOL); } - DataSource::WebSocketAddr(uri) + Self::WebSocketAddr(uri) } } pub fn file_name(&self) -> Option { match self { - DataSource::RrdHttpUrl { url, .. } => url.split('/').last().map(|r| r.to_owned()), + Self::RrdHttpUrl { url, .. } => url.split('/').last().map(|r| r.to_owned()), #[cfg(not(target_arch = "wasm32"))] - DataSource::FilePath(_, path) => { - path.file_name().map(|s| s.to_string_lossy().to_string()) - } - DataSource::FileContents(_, file_contents) => Some(file_contents.name.clone()), - DataSource::WebSocketAddr(_) => None, + Self::FilePath(_, path) => path.file_name().map(|s| s.to_string_lossy().to_string()), + Self::FileContents(_, file_contents) => Some(file_contents.name.clone()), + Self::WebSocketAddr(_) => None, #[cfg(not(target_arch = "wasm32"))] - DataSource::Stdin => None, + Self::Stdin => None, } } @@ -148,14 +146,14 @@ impl DataSource { ) -> anyhow::Result> { re_tracing::profile_function!(); match self { - DataSource::RrdHttpUrl { url, follow } => Ok( + Self::RrdHttpUrl { url, follow } => Ok( re_log_encoding::stream_rrd_from_http::stream_rrd_from_http_to_channel( url, follow, on_msg, ), ), #[cfg(not(target_arch = "wasm32"))] - DataSource::FilePath(file_source, path) => { + Self::FilePath(file_source, path) => { let (tx, rx) = re_smart_channel::smart_channel( SmartMessageSource::File(path.clone()), SmartChannelSource::File(path.clone()), @@ -178,7 +176,7 @@ impl DataSource { } // When loading a file on Web, or when using drag-n-drop. - DataSource::FileContents(file_source, file_contents) => { + Self::FileContents(file_source, file_contents) => { let name = file_contents.name.clone(); let (tx, rx) = re_smart_channel::smart_channel( SmartMessageSource::File(name.clone().into()), @@ -206,12 +204,12 @@ impl DataSource { Ok(rx) } - DataSource::WebSocketAddr(rerun_server_ws_url) => { + Self::WebSocketAddr(rerun_server_ws_url) => { crate::web_sockets::connect_to_ws_url(&rerun_server_ws_url, on_msg) } #[cfg(not(target_arch = "wasm32"))] - DataSource::Stdin => { + Self::Stdin => { let (tx, rx) = re_smart_channel::smart_channel( SmartMessageSource::Stdin, SmartChannelSource::Stdin, diff --git a/crates/re_data_store/benches/arrow2.rs b/crates/re_data_store/benches/arrow2.rs index 4883fc2a3c10e..3955a793e8914 100644 --- a/crates/re_data_store/benches/arrow2.rs +++ b/crates/re_data_store/benches/arrow2.rs @@ -53,9 +53,9 @@ enum ArrayKind { impl std::fmt::Display for ArrayKind { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { f.write_str(match self { - ArrayKind::Primitive => "primitive", - ArrayKind::Struct => "struct", - ArrayKind::StructLarge => "struct_large", + Self::Primitive => "primitive", + Self::Struct => "struct", + Self::StructLarge => "struct_large", }) } } diff --git a/crates/re_data_store/src/store_event.rs b/crates/re_data_store/src/store_event.rs index 971c47a829bb1..5373d4a9d3752 100644 --- a/crates/re_data_store/src/store_event.rs +++ b/crates/re_data_store/src/store_event.rs @@ -74,8 +74,8 @@ impl StoreDiffKind { #[inline] pub fn delta(&self) -> i64 { match self { - StoreDiffKind::Addition => 1, - StoreDiffKind::Deletion => -1, + Self::Addition => 1, + Self::Deletion => -1, } } } diff --git a/crates/re_data_store/src/store_gc.rs b/crates/re_data_store/src/store_gc.rs index b32705bbce973..193876047e2d6 100644 --- a/crates/re_data_store/src/store_gc.rs +++ b/crates/re_data_store/src/store_gc.rs @@ -60,7 +60,7 @@ pub struct GarbageCollectionOptions { impl GarbageCollectionOptions { pub fn gc_everything() -> Self { - GarbageCollectionOptions { + Self { target: GarbageCollectionTarget::Everything, time_budget: std::time::Duration::MAX, protect_latest: 0, @@ -74,10 +74,10 @@ impl GarbageCollectionOptions { impl std::fmt::Display for GarbageCollectionTarget { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - GarbageCollectionTarget::DropAtLeastFraction(p) => { + Self::DropAtLeastFraction(p) => { write!(f, "DropAtLeast({:.3}%)", *p * 100.0) } - GarbageCollectionTarget::Everything => write!(f, "Everything"), + Self::Everything => write!(f, "Everything"), } } } @@ -660,7 +660,7 @@ impl IndexedBucketInner { ) -> (Option, u64) { self.sort(); - let IndexedBucketInner { + let Self { is_sorted, time_range, col_time, diff --git a/crates/re_data_ui/src/image.rs b/crates/re_data_ui/src/image.rs index 006898e88f7aa..f5e810ad5391a 100644 --- a/crates/re_data_ui/src/image.rs +++ b/crates/re_data_ui/src/image.rs @@ -62,7 +62,7 @@ impl EntityDataUi for re_types::components::TensorData { // TODO(#5607): what should happen if the promise is still pending? let tensor_data_row_id = ctx .recording() - .latest_at_component::(entity_path, query) + .latest_at_component::(entity_path, query) .map_or(RowId::ZERO, |tensor| tensor.index.1); let decoded = ctx diff --git a/crates/re_data_ui/src/log_msg.rs b/crates/re_data_ui/src/log_msg.rs index 5a3ad7ef61488..2e26dee5bef31 100644 --- a/crates/re_data_ui/src/log_msg.rs +++ b/crates/re_data_ui/src/log_msg.rs @@ -16,9 +16,9 @@ impl DataUi for LogMsg { db: &re_entity_db::EntityDb, ) { match self { - LogMsg::SetStoreInfo(msg) => msg.data_ui(ctx, ui, ui_layout, query, db), - LogMsg::ArrowMsg(_, msg) => msg.data_ui(ctx, ui, ui_layout, query, db), - LogMsg::BlueprintActivationCommand(BlueprintActivationCommand { + Self::SetStoreInfo(msg) => msg.data_ui(ctx, ui, ui_layout, query, db), + Self::ArrowMsg(_, msg) => msg.data_ui(ctx, ui, ui_layout, query, db), + Self::BlueprintActivationCommand(BlueprintActivationCommand { blueprint_id, make_active, make_default, @@ -40,7 +40,7 @@ impl DataUi for SetStoreInfo { _query: &re_data_store::LatestAtQuery, _db: &re_entity_db::EntityDb, ) { - let SetStoreInfo { row_id: _, info } = self; + let Self { row_id: _, info } = self; let StoreInfo { application_id, store_id, diff --git a/crates/re_data_ui/src/rotation3d.rs b/crates/re_data_ui/src/rotation3d.rs index d80f160aaf0f3..938c37b88b778 100644 --- a/crates/re_data_ui/src/rotation3d.rs +++ b/crates/re_data_ui/src/rotation3d.rs @@ -29,11 +29,11 @@ impl DataUi for datatypes::Rotation3D { db: &re_entity_db::EntityDb, ) { match self { - datatypes::Rotation3D::Quaternion(q) => { + Self::Quaternion(q) => { // TODO(andreas): Better formatting for quaternions. data_label_for_ui_layout(ui, ui_layout, format!("{q:?}")); } - datatypes::Rotation3D::AxisAngle(RotationAxisAngle { axis, angle }) => { + Self::AxisAngle(RotationAxisAngle { axis, angle }) => { match ui_layout { UiLayout::List => { // TODO(#6315): should be mixed label/data formatting diff --git a/crates/re_data_ui/src/transform3d.rs b/crates/re_data_ui/src/transform3d.rs index c0e97485186ae..0560f58489a29 100644 --- a/crates/re_data_ui/src/transform3d.rs +++ b/crates/re_data_ui/src/transform3d.rs @@ -80,10 +80,10 @@ impl DataUi for Transform3D { UiLayout::SelectionPanelFull | UiLayout::SelectionPanelLimitHeight | UiLayout::Tooltip => match self { - Transform3D::TranslationAndMat3x3(translation_matrix) => { + Self::TranslationAndMat3x3(translation_matrix) => { translation_matrix.data_ui(ctx, ui, ui_layout, query, db); } - Transform3D::TranslationRotationScale(translation_rotation_scale) => { + Self::TranslationRotationScale(translation_rotation_scale) => { translation_rotation_scale.data_ui(ctx, ui, ui_layout, query, db); } }, @@ -100,7 +100,7 @@ impl DataUi for TranslationRotationScale3D { query: &re_data_store::LatestAtQuery, db: &re_entity_db::EntityDb, ) { - let TranslationRotationScale3D { + let Self { translation, rotation, scale, @@ -143,10 +143,10 @@ impl DataUi for Scale3D { db: &re_entity_db::EntityDb, ) { match self { - Scale3D::Uniform(scale) => { + Self::Uniform(scale) => { ui.label(re_format::format_f32(*scale)); } - Scale3D::ThreeD(v) => { + Self::ThreeD(v) => { v.data_ui(ctx, ui, ui_layout, query, db); } } @@ -162,7 +162,7 @@ impl DataUi for TranslationAndMat3x3 { query: &re_data_store::LatestAtQuery, db: &re_entity_db::EntityDb, ) { - let TranslationAndMat3x3 { + let Self { translation, mat3x3, from_parent: _, diff --git a/crates/re_dev_tools/src/build_examples/example.rs b/crates/re_dev_tools/src/build_examples/example.rs index febd57caa5a41..5379dd36be52e 100644 --- a/crates/re_dev_tools/src/build_examples/example.rs +++ b/crates/re_dev_tools/src/build_examples/example.rs @@ -62,7 +62,7 @@ impl Example { anyhow::bail!("example {name:?} has no frontmatter"); }; let script_path = dir.join(language.entrypoint_path(&dir, name)?); - Ok(Some(Example { + Ok(Some(Self { name: name.to_owned(), title: readme.title, dir, @@ -104,20 +104,20 @@ impl Language { /// relative to `{workspace_root}/examples`. pub fn examples_dir(&self) -> &'static Path { match self { - Language::Rust => Path::new("rust"), - Language::Python => Path::new("python"), - Language::C => Path::new("c"), - Language::Cpp => Path::new("cpp"), + Self::Rust => Path::new("rust"), + Self::Python => Path::new("python"), + Self::C => Path::new("c"), + Self::Cpp => Path::new("cpp"), } } /// Extension without the leading dot, e.g. `rs`. pub fn extension(&self) -> &'static str { match self { - Language::Rust => "rs", - Language::Python => "py", - Language::C => "c", - Language::Cpp => "cpp", + Self::Rust => "rs", + Self::Python => "py", + Self::C => "c", + Self::Cpp => "cpp", } } @@ -133,8 +133,8 @@ impl Language { example_name: &str, ) -> anyhow::Result { match self { - Language::Rust => Ok(PathBuf::from("src/main.rs")), - Language::Python => { + Self::Rust => Ok(PathBuf::from("src/main.rs")), + Self::Python => { // we must handle two cases: // - single script named after the example: `example.py` // - package named after the example: `example/` @@ -151,8 +151,8 @@ impl Language { anyhow::bail!(CouldNotFindEntryPoint(example_dir.into())) } - Language::C => Ok(PathBuf::from("main.c")), - Language::Cpp => Ok(PathBuf::from("main.cpp")), + Self::C => Ok(PathBuf::from("main.c")), + Self::Cpp => Ok(PathBuf::from("main.cpp")), } } } @@ -164,7 +164,7 @@ pub struct ExamplesManifest { impl ExamplesManifest { /// Loads the `examples/manifest.toml` file. - pub fn load(workspace_root: impl AsRef) -> anyhow::Result { + pub fn load(workspace_root: impl AsRef) -> anyhow::Result { let manifest_toml = workspace_root .as_ref() .join("examples") @@ -208,18 +208,18 @@ pub enum Channel { } impl Channel { - pub fn includes(self, other: Channel) -> bool { + pub fn includes(self, other: Self) -> bool { match self { - Channel::Main => matches!(other, Channel::Main), + Self::Main => matches!(other, Self::Main), // Include all `main` examples in `release` - Channel::Release => { - matches!(other, Channel::Main | Channel::Release) + Self::Release => { + matches!(other, Self::Main | Self::Release) } // Include all `main` and `release` examples in `nightly` - Channel::Nightly => { - matches!(other, Channel::Main | Channel::Release | Channel::Nightly) + Self::Nightly => { + matches!(other, Self::Main | Self::Release | Self::Nightly) } } } @@ -300,9 +300,9 @@ impl Channel { impl Display for Channel { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { let s = match self { - Channel::Main => "main", - Channel::Nightly => "nightly", - Channel::Release => "release", + Self::Main => "main", + Self::Nightly => "nightly", + Self::Release => "release", }; f.write_str(s) } @@ -357,7 +357,7 @@ struct Frontmatter { } impl Frontmatter { - fn load(path: &Path) -> anyhow::Result> { + fn load(path: &Path) -> anyhow::Result> { const START: &str = ""; @@ -377,12 +377,11 @@ impl Frontmatter { }; let end = start + end; - let frontmatter: Frontmatter = - toml::from_str(content[start..end].trim()).map_err(|err| { - #[allow(clippy::unwrap_used)] - let p = path.parent().unwrap().file_name().unwrap(); - anyhow::anyhow!("Failed to parse TOML metadata of {p:?}: {err}") - })?; + let frontmatter: Self = toml::from_str(content[start..end].trim()).map_err(|err| { + #[allow(clippy::unwrap_used)] + let p = path.parent().unwrap().file_name().unwrap(); + anyhow::anyhow!("Failed to parse TOML metadata of {p:?}: {err}") + })?; Ok(Some(( frontmatter, diff --git a/crates/re_dev_tools/src/build_search_index/ingest/python.rs b/crates/re_dev_tools/src/build_search_index/ingest/python.rs index b9c8f19dfd2a2..2b141192463cf 100644 --- a/crates/re_dev_tools/src/build_search_index/ingest/python.rs +++ b/crates/re_dev_tools/src/build_search_index/ingest/python.rs @@ -318,11 +318,11 @@ impl Visit for Item { #[inline] fn visit(&self, visitor: &mut T) { match self { - Item::Module(v) => visitor.visit_module(v), - Item::Alias(v) => visitor.visit_alias(v), - Item::Attribute(v) => visitor.visit_attribute(v), - Item::Function(v) => visitor.visit_function(v), - Item::Class(v) => visitor.visit_class(v), + Self::Module(v) => visitor.visit_module(v), + Self::Alias(v) => visitor.visit_alias(v), + Self::Attribute(v) => visitor.visit_attribute(v), + Self::Function(v) => visitor.visit_function(v), + Self::Class(v) => visitor.visit_class(v), } } } diff --git a/crates/re_dev_tools/src/build_search_index/ingest/rust.rs b/crates/re_dev_tools/src/build_search_index/ingest/rust.rs index e4e84d44de35a..222907bc5a205 100644 --- a/crates/re_dev_tools/src/build_search_index/ingest/rust.rs +++ b/crates/re_dev_tools/src/build_search_index/ingest/rust.rs @@ -432,18 +432,18 @@ enum ItemKind { impl Display for ItemKind { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { let s = match self { - ItemKind::Module => "module", - ItemKind::Struct => "struct", - ItemKind::Enum => "enum", - ItemKind::Trait => "trait", - ItemKind::Function => "fn", - ItemKind::Type => "type", - ItemKind::Constant => "constant", - ItemKind::Macro => "macro", - ItemKind::Inherent(ParentItemKind::Trait, InherentItemKind::Method) => "tymethod", - ItemKind::Inherent(_, InherentItemKind::Method) => "method", - ItemKind::Inherent(_, InherentItemKind::Constant) => "associatedconstant", - ItemKind::Inherent(_, InherentItemKind::Type) => "associatedtype", + Self::Module => "module", + Self::Struct => "struct", + Self::Enum => "enum", + Self::Trait => "trait", + Self::Function => "fn", + Self::Type => "type", + Self::Constant => "constant", + Self::Macro => "macro", + Self::Inherent(ParentItemKind::Trait, InherentItemKind::Method) => "tymethod", + Self::Inherent(_, InherentItemKind::Method) => "method", + Self::Inherent(_, InherentItemKind::Constant) => "associatedconstant", + Self::Inherent(_, InherentItemKind::Type) => "associatedtype", }; f.write_str(s) } @@ -499,9 +499,9 @@ enum ParentItemKind { impl Display for ParentItemKind { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { let s = match self { - ParentItemKind::Struct => "struct", - ParentItemKind::Enum => "enum", - ParentItemKind::Trait => "trait", + Self::Struct => "struct", + Self::Enum => "enum", + Self::Trait => "trait", }; f.write_str(s) } @@ -568,7 +568,7 @@ trait WithItemExt { impl WithItemExt for Vec { fn with_item(&self, v: T) -> Self { - let mut out = Vec::with_capacity(self.len() + 1); + let mut out = Self::with_capacity(self.len() + 1); out.extend_from_slice(self); out.push(v); out diff --git a/crates/re_dev_tools/src/build_search_index/meili.rs b/crates/re_dev_tools/src/build_search_index/meili.rs index bf746727101fc..5218a589dd55f 100644 --- a/crates/re_dev_tools/src/build_search_index/meili.rs +++ b/crates/re_dev_tools/src/build_search_index/meili.rs @@ -21,7 +21,7 @@ impl SearchClient { /// `master_key` can be obtained via the Meilisearch could console, /// or set via the `--master-key` option when running a local instance. pub fn connect(url: &str, master_key: &str) -> anyhow::Result { - let this = SearchClient { + let this = Self { url: url.into(), master_key: master_key.into(), agent: ureq::agent(), @@ -213,9 +213,9 @@ enum Method { impl Method { fn as_str(&self) -> &'static str { match self { - Method::Get => "GET", - Method::Post => "POST", - Method::Delete => "DELETE", + Self::Get => "GET", + Self::Post => "POST", + Self::Delete => "DELETE", } } } diff --git a/crates/re_dev_tools/src/build_web_viewer/lib.rs b/crates/re_dev_tools/src/build_web_viewer/lib.rs index ce34f7a9c1141..0713363c825c9 100644 --- a/crates/re_dev_tools/src/build_web_viewer/lib.rs +++ b/crates/re_dev_tools/src/build_web_viewer/lib.rs @@ -39,8 +39,8 @@ pub enum Profile { impl Profile { pub fn as_str(&self) -> &'static str { match self { - Profile::Release => "release", - Profile::Debug => "debug", + Self::Release => "release", + Self::Debug => "debug", } } } diff --git a/crates/re_entity_db/src/editable_auto_value.rs b/crates/re_entity_db/src/editable_auto_value.rs index 99216dcde8927..6bd16812d5036 100644 --- a/crates/re_entity_db/src/editable_auto_value.rs +++ b/crates/re_entity_db/src/editable_auto_value.rs @@ -22,7 +22,7 @@ where { #[inline] fn default() -> Self { - EditableAutoValue::Auto(T::default()) + Self::Auto(T::default()) } } @@ -33,20 +33,20 @@ where { #[inline] pub fn is_auto(&self) -> bool { - matches!(self, EditableAutoValue::Auto(_)) + matches!(self, Self::Auto(_)) } /// Gets the value, disregarding if it was user edited or determined by a heuristic. #[inline] pub fn get(&self) -> &T { match self { - EditableAutoValue::Auto(v) | EditableAutoValue::UserEdited(v) => v, + Self::Auto(v) | Self::UserEdited(v) => v, } } /// Returns other if self is auto, self otherwise. #[inline] - pub fn or<'a>(&'a self, other: &'a EditableAutoValue) -> &'a EditableAutoValue { + pub fn or<'a>(&'a self, other: &'a Self) -> &'a Self { if self.is_auto() { other } else { @@ -59,8 +59,8 @@ where #[inline] pub fn has_edits(&self, other: &Self) -> bool { match (self, other) { - (EditableAutoValue::UserEdited(s), EditableAutoValue::UserEdited(o)) => s != o, - (EditableAutoValue::Auto(_), EditableAutoValue::Auto(_)) => false, + (Self::UserEdited(s), Self::UserEdited(o)) => s != o, + (Self::Auto(_), Self::Auto(_)) => false, _ => true, } } @@ -76,7 +76,7 @@ where #[inline] fn deref(&self) -> &Self::Target { match self { - EditableAutoValue::Auto(v) | EditableAutoValue::UserEdited(v) => v, + Self::Auto(v) | Self::UserEdited(v) => v, } } } diff --git a/crates/re_entity_db/src/entity_db.rs b/crates/re_entity_db/src/entity_db.rs index 9e62930492a98..a4b07b4a358b6 100644 --- a/crates/re_entity_db/src/entity_db.rs +++ b/crates/re_entity_db/src/entity_db.rs @@ -153,7 +153,7 @@ impl EntityDb { store_info: StoreInfo, rows: impl IntoIterator, ) -> Result { - let mut entity_db = EntityDb::new(store_info.store_id.clone()); + let mut entity_db = Self::new(store_info.store_id.clone()); entity_db.set_store_info(SetStoreInfo { row_id: RowId::new(), @@ -728,12 +728,12 @@ impl EntityDb { } /// Make a clone of this [`EntityDb`], assigning it a new [`StoreId`]. - pub fn clone_with_new_id(&self, new_id: StoreId) -> Result { + pub fn clone_with_new_id(&self, new_id: StoreId) -> Result { re_tracing::profile_function!(); self.store().sort_indices_if_needed(); - let mut new_db = EntityDb::new(new_id.clone()); + let mut new_db = Self::new(new_id.clone()); new_db.last_modified_at = self.last_modified_at; new_db.latest_row_id = self.latest_row_id; diff --git a/crates/re_entity_db/src/entity_properties.rs b/crates/re_entity_db/src/entity_properties.rs index 58e2646ab4952..794b2e81324f3 100644 --- a/crates/re_entity_db/src/entity_properties.rs +++ b/crates/re_entity_db/src/entity_properties.rs @@ -293,12 +293,12 @@ pub enum Colormap { impl std::fmt::Display for Colormap { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { f.write_str(match self { - Colormap::Grayscale => "Grayscale", - Colormap::Inferno => "Inferno", - Colormap::Magma => "Magma", - Colormap::Plasma => "Plasma", - Colormap::Turbo => "Turbo", - Colormap::Viridis => "Viridis", + Self::Grayscale => "Grayscale", + Self::Inferno => "Inferno", + Self::Magma => "Magma", + Self::Plasma => "Plasma", + Self::Turbo => "Turbo", + Self::Viridis => "Viridis", }) } } @@ -315,7 +315,7 @@ pub enum ColorMapper { impl std::fmt::Display for ColorMapper { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - ColorMapper::Colormap(colormap) => colormap.fmt(f), + Self::Colormap(colormap) => colormap.fmt(f), } } } @@ -344,10 +344,10 @@ pub enum LegendCorner { impl std::fmt::Display for LegendCorner { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { match self { - LegendCorner::LeftTop => write!(f, "Top Left"), - LegendCorner::RightTop => write!(f, "Top Right"), - LegendCorner::LeftBottom => write!(f, "Bottom Left"), - LegendCorner::RightBottom => write!(f, "Bottom Right"), + Self::LeftTop => write!(f, "Top Left"), + Self::RightTop => write!(f, "Top Right"), + Self::LeftBottom => write!(f, "Bottom Left"), + Self::RightBottom => write!(f, "Bottom Right"), } } } @@ -385,49 +385,49 @@ pub enum TimeSeriesAggregator { impl std::fmt::Display for TimeSeriesAggregator { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { match self { - TimeSeriesAggregator::Off => write!(f, "Off"), - TimeSeriesAggregator::Average => write!(f, "Average"), - TimeSeriesAggregator::Max => write!(f, "Max"), - TimeSeriesAggregator::Min => write!(f, "Min"), - TimeSeriesAggregator::MinMax => write!(f, "MinMax"), - TimeSeriesAggregator::MinMaxAverage => write!(f, "MinMaxAverage"), + Self::Off => write!(f, "Off"), + Self::Average => write!(f, "Average"), + Self::Max => write!(f, "Max"), + Self::Min => write!(f, "Min"), + Self::MinMax => write!(f, "MinMax"), + Self::MinMaxAverage => write!(f, "MinMaxAverage"), } } } impl TimeSeriesAggregator { #[inline] - pub fn variants() -> [TimeSeriesAggregator; 6] { + pub fn variants() -> [Self; 6] { // Just making sure this method won't compile if the enum gets modified. #[allow(clippy::match_same_arms)] match Self::default() { - TimeSeriesAggregator::Off => {} - TimeSeriesAggregator::Average => {} - TimeSeriesAggregator::Max => {} - TimeSeriesAggregator::Min => {} - TimeSeriesAggregator::MinMax => {} - TimeSeriesAggregator::MinMaxAverage => {} + Self::Off => {} + Self::Average => {} + Self::Max => {} + Self::Min => {} + Self::MinMax => {} + Self::MinMaxAverage => {} } [ - TimeSeriesAggregator::Off, - TimeSeriesAggregator::Average, - TimeSeriesAggregator::Max, - TimeSeriesAggregator::Min, - TimeSeriesAggregator::MinMax, - TimeSeriesAggregator::MinMaxAverage, + Self::Off, + Self::Average, + Self::Max, + Self::Min, + Self::MinMax, + Self::MinMaxAverage, ] } #[inline] pub fn description(&self) -> &'static str { match self { - TimeSeriesAggregator::Off => "No aggregation.", - TimeSeriesAggregator::Average => "Average all points in the range together.", - TimeSeriesAggregator::Max => "Keep only the maximum values in the range.", - TimeSeriesAggregator::Min => "Keep only the minimum values in the range.", - TimeSeriesAggregator::MinMax => "Keep both the minimum and maximum values in the range.\nThis will yield two aggregated points instead of one, effectively creating a vertical line.", - TimeSeriesAggregator::MinMaxAverage => "Find both the minimum and maximum values in the range, then use the average of those", + Self::Off => "No aggregation.", + Self::Average => "Average all points in the range together.", + Self::Max => "Keep only the maximum values in the range.", + Self::Min => "Keep only the minimum values in the range.", + Self::MinMax => "Keep both the minimum and maximum values in the range.\nThis will yield two aggregated points instead of one, effectively creating a vertical line.", + Self::MinMaxAverage => "Find both the minimum and maximum values in the range, then use the average of those", } } } diff --git a/crates/re_entity_db/src/entity_tree.rs b/crates/re_entity_db/src/entity_tree.rs index f1a744e4f8f84..c26fe215eab6b 100644 --- a/crates/re_entity_db/src/entity_tree.rs +++ b/crates/re_entity_db/src/entity_tree.rs @@ -156,7 +156,7 @@ pub struct CompactedStoreEvents { impl CompactedStoreEvents { pub fn new(store_events: &[&StoreEvent]) -> Self { - let mut this = CompactedStoreEvents { + let mut this = Self { row_ids: store_events.iter().map(|event| event.row_id).collect(), temporal: Default::default(), timeless: Default::default(), @@ -288,7 +288,7 @@ impl EntityTree { for (i, part) in entity_path.iter().enumerate() { tree = tree.children.entry(part.clone()).or_insert_with(|| { - EntityTree::new( + Self::new( entity_path.as_slice()[..=i].into(), tree.subtree.clears.clone(), ) diff --git a/crates/re_entity_db/src/instance_path.rs b/crates/re_entity_db/src/instance_path.rs index ffd05a7986fac..40308e9994668 100644 --- a/crates/re_entity_db/src/instance_path.rs +++ b/crates/re_entity_db/src/instance_path.rs @@ -99,7 +99,7 @@ impl FromStr for InstancePath { let instance = instance.unwrap_or(Instance::ALL); - Ok(InstancePath { + Ok(Self { entity_path, instance, }) diff --git a/crates/re_format_arrow/src/lib.rs b/crates/re_format_arrow/src/lib.rs index 8b728149eace3..573d924a9c898 100644 --- a/crates/re_format_arrow/src/lib.rs +++ b/crates/re_format_arrow/src/lib.rs @@ -160,33 +160,27 @@ impl std::fmt::Display for DisplayDataType { DataType::Utf8 => "str", DataType::LargeUtf8 => "large-string", DataType::List(ref field) => { - let s = format!("list[{}]", DisplayDataType(field.data_type().clone())); + let s = format!("list[{}]", Self(field.data_type().clone())); return f.write_str(&s); } DataType::FixedSizeList(field, len) => { - let s = format!( - "fixed-list[{}; {len}]", - DisplayDataType(field.data_type().clone()) - ); + let s = format!("fixed-list[{}; {len}]", Self(field.data_type().clone())); return f.write_str(&s); } DataType::LargeList(field) => { - let s = format!("large-list[{}]", DisplayDataType(field.data_type().clone())); + let s = format!("large-list[{}]", Self(field.data_type().clone())); return f.write_str(&s); } DataType::Struct(fields) => return write!(f, "struct[{}]", fields.len()), DataType::Union(fields, _, _) => return write!(f, "union[{}]", fields.len()), DataType::Map(field, _) => { - return write!(f, "map[{}]", DisplayDataType(field.data_type().clone())) + return write!(f, "map[{}]", Self(field.data_type().clone())) } DataType::Dictionary(_, _, _) => "dict", DataType::Decimal(_, _) => "decimal", DataType::Decimal256(_, _) => "decimal256", DataType::Extension(name, data_type, _) => { - let s = format!( - "extension<{name}>[{}]", - DisplayDataType((**data_type).clone()) - ); + let s = format!("extension<{name}>[{}]", Self((**data_type).clone())); return f.write_str(&s); } }; diff --git a/crates/re_int_histogram/src/lib.rs b/crates/re_int_histogram/src/lib.rs index 92490d6b63cbe..8168ff9d55098 100644 --- a/crates/re_int_histogram/src/lib.rs +++ b/crates/re_int_histogram/src/lib.rs @@ -71,12 +71,12 @@ impl RangeU64 { } #[inline] - pub fn contains_all_of(&self, other: RangeU64) -> bool { + pub fn contains_all_of(&self, other: Self) -> bool { self.contains(other.min) && self.contains(other.max) } #[inline] - pub fn intersects(&self, other: RangeU64) -> bool { + pub fn intersects(&self, other: Self) -> bool { self.min <= other.max && other.min <= self.max } } diff --git a/crates/re_int_histogram/src/tree.rs b/crates/re_int_histogram/src/tree.rs index 0b7e7f1364834..56390eb37365c 100644 --- a/crates/re_int_histogram/src/tree.rs +++ b/crates/re_int_histogram/src/tree.rs @@ -323,13 +323,13 @@ impl Node { fn increment(&mut self, level: Level, addr: u64, inc: u32) { match self { - Node::BranchNode(node) => { + Self::BranchNode(node) => { node.increment(level, addr, inc); } - Node::SparseLeaf(sparse) => { + Self::SparseLeaf(sparse) => { *self = std::mem::take(sparse).increment(level, addr, inc); } - Node::DenseLeaf(dense) => { + Self::DenseLeaf(dense) => { dense.increment(addr, inc); } } @@ -339,76 +339,76 @@ impl Node { #[must_use] fn decrement(&mut self, level: Level, addr: u64, dec: u32) -> u32 { match self { - Node::BranchNode(node) => { + Self::BranchNode(node) => { let count_loss = node.decrement(level, addr, dec); if node.is_empty() { - *self = Node::SparseLeaf(SparseLeaf::default()); + *self = Self::SparseLeaf(SparseLeaf::default()); } // TODO(emilk): if we only have leaf children (sparse or dense) // and the number of keys in all of them is less then `MAX_SPARSE_LEAF_LEN`, // then we should convert this BranchNode into a SparseLeaf. count_loss } - Node::SparseLeaf(sparse) => sparse.decrement(addr, dec), - Node::DenseLeaf(dense) => dense.decrement(addr, dec), + Self::SparseLeaf(sparse) => sparse.decrement(addr, dec), + Self::DenseLeaf(dense) => dense.decrement(addr, dec), } } /// Returns how much the total count decreased by. fn remove(&mut self, my_addr: u64, my_level: Level, range: RangeU64) -> u64 { match self { - Node::BranchNode(node) => { + Self::BranchNode(node) => { let count_loss = node.remove(my_addr, my_level, range); if node.is_empty() { - *self = Node::SparseLeaf(SparseLeaf::default()); + *self = Self::SparseLeaf(SparseLeaf::default()); } // TODO(emilk): if we only have leaf children (sparse or dense) // and the number of keys in all of them is less then `MAX_SPARSE_LEAF_LEN`, // then we should convert this BranchNode into a SparseLeaf. count_loss } - Node::SparseLeaf(sparse) => sparse.remove(range), - Node::DenseLeaf(dense) => dense.remove(my_addr, range), + Self::SparseLeaf(sparse) => sparse.remove(range), + Self::DenseLeaf(dense) => dense.remove(my_addr, range), } } fn is_empty(&self) -> bool { match self { - Node::BranchNode(node) => node.is_empty(), - Node::SparseLeaf(sparse) => sparse.is_empty(), - Node::DenseLeaf(dense) => dense.is_empty(), + Self::BranchNode(node) => node.is_empty(), + Self::SparseLeaf(sparse) => sparse.is_empty(), + Self::DenseLeaf(dense) => dense.is_empty(), } } fn total_count(&self) -> u64 { match self { - Node::BranchNode(node) => node.total_count(), - Node::SparseLeaf(sparse) => sparse.total_count(), - Node::DenseLeaf(dense) => dense.total_count(), + Self::BranchNode(node) => node.total_count(), + Self::SparseLeaf(sparse) => sparse.total_count(), + Self::DenseLeaf(dense) => dense.total_count(), } } fn min_key(&self, my_addr: u64, my_level: Level) -> Option { match self { - Node::BranchNode(node) => node.min_key(my_addr, my_level), - Node::SparseLeaf(sparse) => sparse.min_key(), - Node::DenseLeaf(dense) => dense.min_key(my_addr), + Self::BranchNode(node) => node.min_key(my_addr, my_level), + Self::SparseLeaf(sparse) => sparse.min_key(), + Self::DenseLeaf(dense) => dense.min_key(my_addr), } } fn max_key(&self, my_addr: u64, my_level: Level) -> Option { match self { - Node::BranchNode(node) => node.max_key(my_addr, my_level), - Node::SparseLeaf(sparse) => sparse.max_key(), - Node::DenseLeaf(dense) => dense.max_key(my_addr), + Self::BranchNode(node) => node.max_key(my_addr, my_level), + Self::SparseLeaf(sparse) => sparse.max_key(), + Self::DenseLeaf(dense) => dense.max_key(my_addr), } } fn range_count(&self, my_addr: u64, my_level: Level, range: RangeU64) -> u64 { match self { - Node::BranchNode(node) => node.range_count(my_addr, my_level, range), - Node::SparseLeaf(sparse) => sparse.range_count(range), - Node::DenseLeaf(dense) => dense.range_count(my_addr, range), + Self::BranchNode(node) => node.range_count(my_addr, my_level, range), + Self::SparseLeaf(sparse) => sparse.range_count(range), + Self::DenseLeaf(dense) => dense.range_count(my_addr, range), } } } diff --git a/crates/re_log_types/src/data_cell.rs b/crates/re_log_types/src/data_cell.rs index 9770e56343d9a..fa10673455b7a 100644 --- a/crates/re_log_types/src/data_cell.rs +++ b/crates/re_log_types/src/data_cell.rs @@ -188,7 +188,7 @@ impl DataCell { ) -> re_types_core::SerializationResult { batch .to_arrow() - .map(|arrow| DataCell::from_arrow(batch.name(), arrow)) + .map(|arrow| Self::from_arrow(batch.name(), arrow)) } /// Builds a new `DataCell` from a uniform iterable of native component values. diff --git a/crates/re_log_types/src/data_row.rs b/crates/re_log_types/src/data_row.rs index ad347d554c4fb..db2b34879570a 100644 --- a/crates/re_log_types/src/data_row.rs +++ b/crates/re_log_types/src/data_row.rs @@ -329,7 +329,7 @@ impl DataRow { .map(DataCell::from_component_batch) .collect::, _>>()?; - let mut row = DataRow::from_cells(row_id, timepoint, entity_path, data_cells)?; + let mut row = Self::from_cells(row_id, timepoint, entity_path, data_cells)?; row.compute_all_size_bytes(); Ok(row) } @@ -473,7 +473,7 @@ impl DataRow { entity_path: impl Into, timepoint: impl Into, into_cells: C0, - ) -> DataReadResult + ) -> DataReadResult where C0: Into, { @@ -492,7 +492,7 @@ impl DataRow { entity_path: impl Into, timepoint: impl Into, into_cells: C0, - ) -> DataRowResult + ) -> DataRowResult where C0: TryInto, DataRowError: From<>::Error>, @@ -515,7 +515,7 @@ impl DataRow { entity_path: impl Into, timepoint: impl Into, into_cells: (C0, C1), - ) -> DataRowResult + ) -> DataRowResult where C0: Into, C1: Into, @@ -538,7 +538,7 @@ impl DataRow { entity_path: impl Into, timepoint: impl Into, into_cells: (C0, C1), - ) -> DataRowResult + ) -> DataRowResult where C0: TryInto, C1: TryInto, @@ -561,7 +561,7 @@ impl DataRow { entity_path: impl Into, timepoint: impl Into, into_cells: (C0, C1, C2), - ) -> DataRowResult + ) -> DataRowResult where C0: TryInto, C1: TryInto, diff --git a/crates/re_log_types/src/data_table.rs b/crates/re_log_types/src/data_table.rs index 9a843f2c7c77f..6c1d3bcec26df 100644 --- a/crates/re_log_types/src/data_table.rs +++ b/crates/re_log_types/src/data_table.rs @@ -706,7 +706,7 @@ impl DataTable { ) -> (Field, Box) { re_tracing::profile_function!(); - let data = DataTable::serialize_primitive_deque(values); + let data = Self::serialize_primitive_deque(values); let datatype = datatype.unwrap_or(data.data_type().clone()); let data = data.to(datatype.clone()).boxed(); @@ -1063,7 +1063,7 @@ impl DataTable { /// functionally equivalent. /// /// Returns `Ok(())` if they match, or an error containing a detailed diff otherwise. - pub fn similar(table1: &DataTable, table2: &DataTable) -> anyhow::Result<()> { + pub fn similar(table1: &Self, table2: &Self) -> anyhow::Result<()> { /// Given a [`DataTable`], returns all of its rows grouped by timeline. fn compute_rows(table: &DataTable) -> anyhow::Result>> { let mut rows_by_timeline: HashMap> = Default::default(); @@ -1266,7 +1266,7 @@ impl DataTable { /// Crafts a simple but interesting [`DataTable`]. #[cfg(not(target_arch = "wasm32"))] impl DataTable { - pub fn example(timeless: bool) -> DataTable { + pub fn example(timeless: bool) -> Self { use crate::{ example_components::{MyColor, MyLabel, MyPoint}, Time, @@ -1308,7 +1308,7 @@ impl DataTable { DataRow::from_cells2(RowId::new(), "c", timepoint(2), (colors, labels)).unwrap() }; - let mut table = DataTable::from_rows(table_id, [row0, row1, row2]); + let mut table = Self::from_rows(table_id, [row0, row1, row2]); table.compute_all_size_bytes(); table diff --git a/crates/re_log_types/src/example_components.rs b/crates/re_log_types/src/example_components.rs index ab2151989d6a3..ba9c26b685c34 100644 --- a/crates/re_log_types/src/example_components.rs +++ b/crates/re_log_types/src/example_components.rs @@ -47,7 +47,7 @@ impl MyPoint { #[inline] pub fn from_iter(it: impl IntoIterator) -> Vec { it.into_iter() - .map(|i| MyPoint::new(i as f32, i as f32)) + .map(|i| Self::new(i as f32, i as f32)) .collect() } } diff --git a/crates/re_log_types/src/hash.rs b/crates/re_log_types/src/hash.rs index d0fc1ad066d37..63be3694adb1e 100644 --- a/crates/re_log_types/src/hash.rs +++ b/crates/re_log_types/src/hash.rs @@ -19,7 +19,7 @@ impl re_types_core::SizeBytes for Hash64 { } impl Hash64 { - pub const ZERO: Hash64 = Hash64(0); + pub const ZERO: Self = Self(0); pub fn hash(value: impl std::hash::Hash + Copy) -> Self { Self(hash(value)) @@ -66,7 +66,7 @@ impl std::fmt::Debug for Hash64 { pub struct Hash128([u64; 2]); impl Hash128 { - pub const ZERO: Hash128 = Hash128([0; 2]); + pub const ZERO: Self = Self([0; 2]); pub fn hash(value: impl std::hash::Hash + Copy) -> Self { Self(double_hash(value)) diff --git a/crates/re_log_types/src/lib.rs b/crates/re_log_types/src/lib.rs index 59e421127004a..57200b6138f8c 100644 --- a/crates/re_log_types/src/lib.rs +++ b/crates/re_log_types/src/lib.rs @@ -307,13 +307,13 @@ impl LogMsg { pub fn set_store_id(&mut self, new_store_id: StoreId) { match self { - LogMsg::SetStoreInfo(store_info) => { + Self::SetStoreInfo(store_info) => { store_info.info.store_id = new_store_id; } - LogMsg::ArrowMsg(store_id, _) => { + Self::ArrowMsg(store_id, _) => { *store_id = new_store_id; } - LogMsg::BlueprintActivationCommand(cmd) => { + Self::BlueprintActivationCommand(cmd) => { cmd.blueprint_id = new_store_id; } } diff --git a/crates/re_log_types/src/path/entity_path.rs b/crates/re_log_types/src/path/entity_path.rs index 22500d2832fd5..a4929236320dc 100644 --- a/crates/re_log_types/src/path/entity_path.rs +++ b/crates/re_log_types/src/path/entity_path.rs @@ -20,7 +20,7 @@ impl re_types_core::SizeBytes for EntityPathHash { impl EntityPathHash { /// Sometimes used as the hash of `None`. - pub const NONE: EntityPathHash = EntityPathHash(Hash64::ZERO); + pub const NONE: Self = Self(Hash64::ZERO); /// From an existing u64. Use this only for data conversions. #[inline] @@ -170,7 +170,7 @@ impl EntityPath { /// Is this equals to, or a descendant of, the given path. #[inline] - pub fn starts_with(&self, prefix: &EntityPath) -> bool { + pub fn starts_with(&self, prefix: &Self) -> bool { if self.hash == prefix.hash { return true; // optimization! } @@ -180,13 +180,13 @@ impl EntityPath { /// Is this a strict descendant of the given path. #[inline] - pub fn is_descendant_of(&self, other: &EntityPath) -> bool { + pub fn is_descendant_of(&self, other: &Self) -> bool { other.len() < self.len() && self.iter().zip(other.iter()).all(|(a, b)| a == b) } /// Is this a direct child of the other path. #[inline] - pub fn is_child_of(&self, other: &EntityPath) -> bool { + pub fn is_child_of(&self, other: &Self) -> bool { other.len() + 1 == self.len() && self.iter().zip(other.iter()).all(|(a, b)| a == b) } @@ -225,14 +225,14 @@ impl EntityPath { /// /// For example `incremental_walk("foo", "foo/bar/baz")` returns: `["foo/bar", "foo/bar/baz"]` pub fn incremental_walk<'a>( - start: Option<&'_ EntityPath>, - end: &'a EntityPath, - ) -> impl Iterator + 'a { + start: Option<&'_ Self>, + end: &'a Self, + ) -> impl Iterator + 'a { re_tracing::profile_function!(); if start.map_or(true, |start| end.is_descendant_of(start)) { let first_ind = start.map_or(0, |start| start.len() + 1); let parts = end.as_slice(); - itertools::Either::Left((first_ind..=end.len()).map(|i| EntityPath::from(&parts[0..i]))) + itertools::Either::Left((first_ind..=end.len()).map(|i| Self::from(&parts[0..i]))) } else { itertools::Either::Right(std::iter::empty()) } @@ -241,7 +241,7 @@ impl EntityPath { /// Returns the first common ancestor of two paths. /// /// If both paths are the same, the common ancestor is the path itself. - pub fn common_ancestor(&self, other: &EntityPath) -> EntityPath { + pub fn common_ancestor(&self, other: &Self) -> Self { let mut common = Vec::new(); for (a, b) in self.iter().zip(other.iter()) { if a == b { @@ -250,12 +250,12 @@ impl EntityPath { break; } } - EntityPath::new(common) + Self::new(common) } /// Returns the first common ancestor of a list of entity paths. pub fn common_ancestor_of<'a>(mut entities: impl Iterator) -> Self { - let first = entities.next().cloned().unwrap_or(EntityPath::root()); + let first = entities.next().cloned().unwrap_or(Self::root()); entities.fold(first, |acc, e| acc.common_ancestor(e)) } } @@ -293,14 +293,14 @@ impl From<&[EntityPathPart]> for EntityPath { impl From<&str> for EntityPath { #[inline] fn from(path: &str) -> Self { - EntityPath::parse_forgiving(path) + Self::parse_forgiving(path) } } impl From for EntityPath { #[inline] fn from(path: String) -> Self { - EntityPath::parse_forgiving(&path) + Self::parse_forgiving(&path) } } @@ -314,7 +314,7 @@ impl From for String { impl From for EntityPath { #[inline] fn from(value: re_types_core::datatypes::EntityPath) -> Self { - EntityPath::parse_forgiving(&value.0) + Self::parse_forgiving(&value.0) } } diff --git a/crates/re_log_types/src/path/entity_path_filter.rs b/crates/re_log_types/src/path/entity_path_filter.rs index da33f0ed84c73..911f86292ff5d 100644 --- a/crates/re_log_types/src/path/entity_path_filter.rs +++ b/crates/re_log_types/src/path/entity_path_filter.rs @@ -103,7 +103,7 @@ impl std::ops::AddAssign for EntityPathFilter { impl std::iter::Sum for EntityPathFilter { /// The union of all rules fn sum>(iter: I) -> Self { - let mut sum = EntityPathFilter::default(); + let mut sum = Self::default(); for item in iter { sum += item; } diff --git a/crates/re_log_types/src/path/parse_path.rs b/crates/re_log_types/src/path/parse_path.rs index 9aeb124c6444b..77e9fc3a113ce 100644 --- a/crates/re_log_types/src/path/parse_path.rs +++ b/crates/re_log_types/src/path/parse_path.rs @@ -173,7 +173,7 @@ impl EntityPath { .map(|part| EntityPathPart::parse_forgiving_with_warning(part, Some(&mut warnings))) .collect(); - let path = EntityPath::from(parts); + let path = Self::from(parts); if let Some(warning) = warnings.first() { // We want to warn on some things, like @@ -204,7 +204,7 @@ impl FromStr for ComponentPath { return Err(PathParseError::MissingComponentName); }; - Ok(ComponentPath { + Ok(Self { entity_path, component_name, }) diff --git a/crates/re_log_types/src/resolved_time_range.rs b/crates/re_log_types/src/resolved_time_range.rs index df75214da1e19..f542a173b2ba1 100644 --- a/crates/re_log_types/src/resolved_time_range.rs +++ b/crates/re_log_types/src/resolved_time_range.rs @@ -187,13 +187,13 @@ impl ResolvedTimeRangeF { } impl From for RangeInclusive { - fn from(range: ResolvedTimeRangeF) -> RangeInclusive { + fn from(range: ResolvedTimeRangeF) -> Self { range.min..=range.max } } impl From<&ResolvedTimeRangeF> for RangeInclusive { - fn from(range: &ResolvedTimeRangeF) -> RangeInclusive { + fn from(range: &ResolvedTimeRangeF) -> Self { range.min..=range.max } } diff --git a/crates/re_log_types/src/time.rs b/crates/re_log_types/src/time.rs index 559b450c8a9a3..1fea5960f20a5 100644 --- a/crates/re_log_types/src/time.rs +++ b/crates/re_log_types/src/time.rs @@ -209,7 +209,7 @@ impl Time { } #[inline] - pub fn lerp(range: RangeInclusive
-Alternatively, you can check out a more full-featured example with multiple plot windows [here](https://github.com/rerun-io/rerun/tree/latest/examples/python/live_scrolling_plot?speculative-link). +Alternatively, you can check out a more full-featured example with multiple plot windows [here](https://github.com/rerun-io/rerun/tree/latest/examples/python/live_scrolling_plot). ## Additional notes - Any time you log data, it has two timepoints associated with it: "log_time", and "log_tick". diff --git a/docs/content/reference/data-loaders/overview.md b/docs/content/reference/data-loaders/overview.md index d5db0c03a997e..0e01aaf5e3a2d 100644 --- a/docs/content/reference/data-loaders/overview.md +++ b/docs/content/reference/data-loaders/overview.md @@ -3,7 +3,7 @@ title: Overview order: 50 --- -Internally, the [`DataLoader`](https://docs.rs/re_data_source/latest/re_data_source/trait.DataLoader.html) trait takes care of loading files into the Viewer and/or SDK. +Internally, the [`DataLoader`](https://docs.rs/re_data_loader/latest/re_data_loader/trait.DataLoader.html) trait takes care of loading files into the Viewer and/or SDK. There are 3 broad kinds of `DataLoader`s: _builtin_, _external_ and _custom_. _External_ and _custom_ are the two ways of extending the file loading system that we'll describe below. @@ -11,7 +11,7 @@ _External_ and _custom_ are the two ways of extending the file loading system th When a user attempts to open a file in the Viewer/SDK, **all** known `DataLoader`s are notified of the path to be opened, unconditionally. This gives `DataLoader`s maximum flexibility to decide what files they are interested in, as opposed to e.g. only being able to look at a file's extension. -Once notified, a `DataLoader` can return a [`DataLoaderError::Incompatible`](https://docs.rs/re_data_source/latest/re_data_source/enum.DataLoaderError.html#variant.Incompatible) error to indicate that it doesn't support a given file type. +Once notified, a `DataLoader` can return a [`DataLoaderError::Incompatible`](https://docs.rs/re_data_loader/latest/re_data_loader/enum.DataLoaderError.html#variant.Incompatible) error to indicate that it doesn't support a given file type. If, and only if, all loaders known to the Viewer/SDK return an `Incompatible` error code, then an error message is shown to the user indicating that this file type is not (_yet_) supported. In these instances of unsupported files, we expose two ways of implementing and registering your `DataLoader`s, explained below. diff --git a/docs/content/reference/sdk-operating-modes.md b/docs/content/reference/sdk-operating-modes.md index 869f6d4613fb6..70021dff54cd4 100644 --- a/docs/content/reference/sdk-operating-modes.md +++ b/docs/content/reference/sdk-operating-modes.md @@ -90,7 +90,7 @@ Check out our [dedicated example](https://github.com/rerun-io/rerun/tree/latest/ Use [`rr.stdout`](https://ref.rerun.io/docs/python/stable/common/initialization_functions/#rerun.stdout). -Check out our [dedicated example](https://github.com/rerun-io/rerun/tree/latest/examples/python/stdio/stdio.py?speculative-link). +Check out our [dedicated example](https://github.com/rerun-io/rerun/tree/latest/examples/python/stdio/stdio.py). #### Rust diff --git a/docs/content/reference/types/components/range1d.md b/docs/content/reference/types/components/range1d.md index 61b8809ca0863..65e01afca07a7 100644 --- a/docs/content/reference/types/components/range1d.md +++ b/docs/content/reference/types/components/range1d.md @@ -10,8 +10,8 @@ A 1D range, specifying a lower and upper bound. * range: [`Range1D`](../datatypes/range1d.md) ## API reference links - * 🌊 [C++ API docs for `Range1D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Range1D.html?speculative-link) - * 🐍 [Python API docs for `Range1D`](https://ref.rerun.io/docs/python/stable/common/components?speculative-link#rerun.components.Range1D) - * πŸ¦€ [Rust API docs for `Range1D`](https://docs.rs/rerun/latest/rerun/components/struct.Range1D.html?speculative-link) + * 🌊 [C++ API docs for `Range1D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1Range1D.html) + * 🐍 [Python API docs for `Range1D`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.Range1D) + * πŸ¦€ [Rust API docs for `Range1D`](https://docs.rs/rerun/latest/rerun/components/struct.Range1D.html) diff --git a/docs/content/reference/types/components/triangle_indices.md b/docs/content/reference/types/components/triangle_indices.md index 8e4dfbb05acee..6939d84261c7a 100644 --- a/docs/content/reference/types/components/triangle_indices.md +++ b/docs/content/reference/types/components/triangle_indices.md @@ -10,9 +10,9 @@ The three indices of a triangle mesh. * indices: [`UVec3D`](../datatypes/uvec3d.md) ## API reference links - * 🌊 [C++ API docs for `TriangleIndices`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1TriangleIndices.html?speculative-link) - * 🐍 [Python API docs for `TriangleIndices`](https://ref.rerun.io/docs/python/stable/common/components?speculative-link#rerun.components.TriangleIndices) - * πŸ¦€ [Rust API docs for `TriangleIndices`](https://docs.rs/rerun/latest/rerun/components/struct.TriangleIndices.html?speculative-link) + * 🌊 [C++ API docs for `TriangleIndices`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1components_1_1TriangleIndices.html) + * 🐍 [Python API docs for `TriangleIndices`](https://ref.rerun.io/docs/python/stable/common/components#rerun.components.TriangleIndices) + * πŸ¦€ [Rust API docs for `TriangleIndices`](https://docs.rs/rerun/latest/rerun/components/struct.TriangleIndices.html) ## Used by diff --git a/docs/content/reference/types/datatypes/range1d.md b/docs/content/reference/types/datatypes/range1d.md index 88fde39b408dc..ac987b30c0ba6 100644 --- a/docs/content/reference/types/datatypes/range1d.md +++ b/docs/content/reference/types/datatypes/range1d.md @@ -10,12 +10,12 @@ A 1D range, specifying a lower and upper bound. * range: 2x `f64` ## API reference links - * 🌊 [C++ API docs for `Range1D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Range1D.html?speculative-link) - * 🐍 [Python API docs for `Range1D`](https://ref.rerun.io/docs/python/stable/common/datatypes?speculative-link#rerun.datatypes.Range1D) - * πŸ¦€ [Rust API docs for `Range1D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Range1D.html?speculative-link) + * 🌊 [C++ API docs for `Range1D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Range1D.html) + * 🐍 [Python API docs for `Range1D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Range1D) + * πŸ¦€ [Rust API docs for `Range1D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Range1D.html) ## Used by -* [`Range1D`](../components/range1d.md?speculative-link) -* [`Range2D`](../datatypes/range2d.md?speculative-link) +* [`Range1D`](../components/range1d.md) +* [`Range2D`](../datatypes/range2d.md) diff --git a/docs/content/reference/types/datatypes/range2d.md b/docs/content/reference/types/datatypes/range2d.md index ff726327918e4..d7ba630f36709 100644 --- a/docs/content/reference/types/datatypes/range2d.md +++ b/docs/content/reference/types/datatypes/range2d.md @@ -11,8 +11,8 @@ An Axis-Aligned Bounding Box in 2D space, implemented as the minimum and maximum * y_range: [`Range1D`](../datatypes/range1d.md) ## API reference links - * 🌊 [C++ API docs for `Range2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Range2D.html?speculative-link) - * 🐍 [Python API docs for `Range2D`](https://ref.rerun.io/docs/python/stable/common/datatypes?speculative-link#rerun.datatypes.Range2D) - * πŸ¦€ [Rust API docs for `Range2D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Range2D.html?speculative-link) + * 🌊 [C++ API docs for `Range2D`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1Range2D.html) + * 🐍 [Python API docs for `Range2D`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.Range2D) + * πŸ¦€ [Rust API docs for `Range2D`](https://docs.rs/rerun/latest/rerun/datatypes/struct.Range2D.html) diff --git a/docs/content/reference/types/datatypes/time_int.md b/docs/content/reference/types/datatypes/time_int.md index 993a30d3d05ba..2013e7ab17be2 100644 --- a/docs/content/reference/types/datatypes/time_int.md +++ b/docs/content/reference/types/datatypes/time_int.md @@ -17,4 +17,4 @@ A 64-bit number describing either nanoseconds OR sequence numbers. ## Used by -* [`TimeRangeBoundary`](../datatypes/time_range_boundary.md?speculative-link) +* [`TimeRangeBoundary`](../datatypes/time_range_boundary.md) diff --git a/docs/content/reference/types/datatypes/time_range.md b/docs/content/reference/types/datatypes/time_range.md index 001953ae87f1d..902e72f5cad31 100644 --- a/docs/content/reference/types/datatypes/time_range.md +++ b/docs/content/reference/types/datatypes/time_range.md @@ -11,11 +11,11 @@ Visible time range bounds for a specific timeline. * end: [`TimeRangeBoundary`](../datatypes/time_range_boundary.md) ## API reference links - * 🌊 [C++ API docs for `TimeRange`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TimeRange.html?speculative-link) - * 🐍 [Python API docs for `TimeRange`](https://ref.rerun.io/docs/python/stable/common/datatypes?speculative-link#rerun.datatypes.TimeRange) - * πŸ¦€ [Rust API docs for `TimeRange`](https://docs.rs/rerun/latest/rerun/datatypes/struct.TimeRange.html?speculative-link) + * 🌊 [C++ API docs for `TimeRange`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TimeRange.html) + * 🐍 [Python API docs for `TimeRange`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.TimeRange) + * πŸ¦€ [Rust API docs for `TimeRange`](https://docs.rs/rerun/latest/rerun/datatypes/struct.TimeRange.html) ## Used by -* [`VisibleTimeRange`](../datatypes/visible_time_range.md?speculative-link) +* [`VisibleTimeRange`](../datatypes/visible_time_range.md) diff --git a/docs/content/reference/types/datatypes/time_range_boundary.md b/docs/content/reference/types/datatypes/time_range_boundary.md index 1d66d112e7997..fe5c7c4a436cb 100644 --- a/docs/content/reference/types/datatypes/time_range_boundary.md +++ b/docs/content/reference/types/datatypes/time_range_boundary.md @@ -12,11 +12,11 @@ Left or right boundary of a time range. * Infinite ## API reference links - * 🌊 [C++ API docs for `TimeRangeBoundary`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TimeRangeBoundary.html?speculative-link) - * 🐍 [Python API docs for `TimeRangeBoundary`](https://ref.rerun.io/docs/python/stable/common/datatypes?speculative-link#rerun.datatypes.TimeRangeBoundary) - * πŸ¦€ [Rust API docs for `TimeRangeBoundary`](https://docs.rs/rerun/latest/rerun/datatypes/enum.TimeRangeBoundary.html?speculative-link) + * 🌊 [C++ API docs for `TimeRangeBoundary`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1TimeRangeBoundary.html) + * 🐍 [Python API docs for `TimeRangeBoundary`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.TimeRangeBoundary) + * πŸ¦€ [Rust API docs for `TimeRangeBoundary`](https://docs.rs/rerun/latest/rerun/datatypes/enum.TimeRangeBoundary.html) ## Used by -* [`TimeRange`](../datatypes/time_range.md?speculative-link) +* [`TimeRange`](../datatypes/time_range.md) diff --git a/docs/content/reference/types/datatypes/utf8.md b/docs/content/reference/types/datatypes/utf8.md index a4ff80b923960..bfa0a10c4182f 100644 --- a/docs/content/reference/types/datatypes/utf8.md +++ b/docs/content/reference/types/datatypes/utf8.md @@ -22,4 +22,4 @@ A string of text, encoded as UTF-8. * [`Name`](../components/name.md) * [`TextLogLevel`](../components/text_log_level.md) * [`Text`](../components/text.md) -* [`VisibleTimeRange`](../datatypes/visible_time_range.md?speculative-link) +* [`VisibleTimeRange`](../datatypes/visible_time_range.md) diff --git a/docs/content/reference/types/datatypes/uvec3d.md b/docs/content/reference/types/datatypes/uvec3d.md index 2d6664faf4cc0..649d0242d2512 100644 --- a/docs/content/reference/types/datatypes/uvec3d.md +++ b/docs/content/reference/types/datatypes/uvec3d.md @@ -17,4 +17,4 @@ A uint32 vector in 3D space. ## Used by -* [`TriangleIndices`](../components/triangle_indices.md?speculative-link) +* [`TriangleIndices`](../components/triangle_indices.md) diff --git a/docs/content/reference/types/datatypes/visible_time_range.md b/docs/content/reference/types/datatypes/visible_time_range.md index b57344fe7345b..bac80d1dca3da 100644 --- a/docs/content/reference/types/datatypes/visible_time_range.md +++ b/docs/content/reference/types/datatypes/visible_time_range.md @@ -11,8 +11,8 @@ Visible time range bounds for a specific timeline. * range: [`TimeRange`](../datatypes/time_range.md) ## API reference links - * 🌊 [C++ API docs for `VisibleTimeRange`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1VisibleTimeRange.html?speculative-link) - * 🐍 [Python API docs for `VisibleTimeRange`](https://ref.rerun.io/docs/python/stable/common/datatypes?speculative-link#rerun.datatypes.VisibleTimeRange) - * πŸ¦€ [Rust API docs for `VisibleTimeRange`](https://docs.rs/rerun/latest/rerun/datatypes/struct.VisibleTimeRange.html?speculative-link) + * 🌊 [C++ API docs for `VisibleTimeRange`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1datatypes_1_1VisibleTimeRange.html) + * 🐍 [Python API docs for `VisibleTimeRange`](https://ref.rerun.io/docs/python/stable/common/datatypes#rerun.datatypes.VisibleTimeRange) + * πŸ¦€ [Rust API docs for `VisibleTimeRange`](https://docs.rs/rerun/latest/rerun/datatypes/struct.VisibleTimeRange.html) diff --git a/docs/content/reference/types/views/bar_chart_view.md b/docs/content/reference/types/views/bar_chart_view.md index deff17a95c12b..2d1bb40f1364d 100644 --- a/docs/content/reference/types/views/bar_chart_view.md +++ b/docs/content/reference/types/views/bar_chart_view.md @@ -7,7 +7,7 @@ A bar chart view. ## API reference links - * 🐍 [Python API docs for `BarChartView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.BarChartView) + * 🐍 [Python API docs for `BarChartView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views#rerun.blueprint.views.BarChartView) ## Example diff --git a/docs/content/reference/types/views/spatial2d_view.md b/docs/content/reference/types/views/spatial2d_view.md index 5e26fe96eb6c8..41e1d863c2b9c 100644 --- a/docs/content/reference/types/views/spatial2d_view.md +++ b/docs/content/reference/types/views/spatial2d_view.md @@ -24,7 +24,7 @@ If not specified, the default is to show the latest state of each component. If a timeline is specified more than once, the first entry will be used. ## API reference links - * 🐍 [Python API docs for `Spatial2DView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.Spatial2DView) + * 🐍 [Python API docs for `Spatial2DView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views#rerun.blueprint.views.Spatial2DView) ## Example diff --git a/docs/content/reference/types/views/spatial3d_view.md b/docs/content/reference/types/views/spatial3d_view.md index 8248272f5a733..ccdb019a1e9ee 100644 --- a/docs/content/reference/types/views/spatial3d_view.md +++ b/docs/content/reference/types/views/spatial3d_view.md @@ -19,7 +19,7 @@ If not specified, the default is to show the latest state of each component. If a timeline is specified more than once, the first entry will be used. ## API reference links - * 🐍 [Python API docs for `Spatial3DView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.Spatial3DView) + * 🐍 [Python API docs for `Spatial3DView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views#rerun.blueprint.views.Spatial3DView) ## Example diff --git a/docs/content/reference/types/views/tensor_view.md b/docs/content/reference/types/views/tensor_view.md index f66ed6abc3417..ab49b53fbce49 100644 --- a/docs/content/reference/types/views/tensor_view.md +++ b/docs/content/reference/types/views/tensor_view.md @@ -7,7 +7,7 @@ A view on a tensor of any dimensionality. ## API reference links - * 🐍 [Python API docs for `TensorView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.TensorView) + * 🐍 [Python API docs for `TensorView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views#rerun.blueprint.views.TensorView) ## Example diff --git a/docs/content/reference/types/views/text_document_view.md b/docs/content/reference/types/views/text_document_view.md index c30425656fcb4..869ed812a952f 100644 --- a/docs/content/reference/types/views/text_document_view.md +++ b/docs/content/reference/types/views/text_document_view.md @@ -7,7 +7,7 @@ A view of a single text document, for use with the `TextDocument` archetype. ## API reference links - * 🐍 [Python API docs for `TextDocumentView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.TextDocumentView) + * 🐍 [Python API docs for `TextDocumentView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views#rerun.blueprint.views.TextDocumentView) ## Example diff --git a/docs/content/reference/types/views/text_log_view.md b/docs/content/reference/types/views/text_log_view.md index 6d83ad09706e7..cb80d8c77201d 100644 --- a/docs/content/reference/types/views/text_log_view.md +++ b/docs/content/reference/types/views/text_log_view.md @@ -7,7 +7,7 @@ A view of a text log, for use with the `TextLog` archetype. ## API reference links - * 🐍 [Python API docs for `TextLogView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.TextLogView) + * 🐍 [Python API docs for `TextLogView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views#rerun.blueprint.views.TextLogView) ## Example diff --git a/docs/content/reference/types/views/time_series_view.md b/docs/content/reference/types/views/time_series_view.md index 4916b0ed6d634..d3d8b8da6fe24 100644 --- a/docs/content/reference/types/views/time_series_view.md +++ b/docs/content/reference/types/views/time_series_view.md @@ -24,7 +24,7 @@ If not specified, the default is to show the entire timeline. If a timeline is specified more than once, the first entry will be used. ## API reference links - * 🐍 [Python API docs for `TimeSeriesView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views?speculative-link#rerun.blueprint.views.TimeSeriesView) + * 🐍 [Python API docs for `TimeSeriesView`](https://ref.rerun.io/docs/python/stable/common/blueprint_views#rerun.blueprint.views.TimeSeriesView) ## Example diff --git a/examples/cpp/custom_collection_adapter/README.md b/examples/cpp/custom_collection_adapter/README.md index 30e6ebeb6bb83..3fa75706a04ca 100644 --- a/examples/cpp/custom_collection_adapter/README.md +++ b/examples/cpp/custom_collection_adapter/README.md @@ -6,8 +6,7 @@ your data into the components & datatypes provided by the Rerun SDK in order to This example demonstrates how to solve this using [`rerun::ComponentAdapter`](https://ref.rerun.io/docs/cpp/stable/structrerun_1_1CollectionAdapter.html) for your own types: Whenever you have data that is continuous in memory and binary compatible with an existing Rerun component, you can adapt it to map to the respective Rerun component. - -For non-temporary objects that live until [`rerun::RecordingStream::log`](https://ref.rerun.io/docs/cpp/stable/classrerun_1_1RecordingStream.html) returns, +For non-temporary objects that live until [`rerun::RecordingStream::log`](https://ref.rerun.io/docs/cpp/stable/classrerun_1_1RecordingStream.html#af7a14a7e2c3029ef1679ff9fd680129d) returns, it is typically safe to do so with a zero-copy "borrow". This means that in those cases [`rerun::Collection`](https://ref.rerun.io/docs/cpp/stable/classrerun_1_1Collection.html) will merely store a pointer and a length to your data. diff --git a/examples/cpp/external_data_loader/README.md b/examples/cpp/external_data_loader/README.md index 5a202d8e71565..8ad345ce62a52 100644 --- a/examples/cpp/external_data_loader/README.md +++ b/examples/cpp/external_data_loader/README.md @@ -1,6 +1,6 @@ --- title: External data-loader example -python: https://github.com/rerun-io/rerun/tree/latest/examples/python/external_data_loader/rerun-loader-python-file.py?speculative-link +python: https://github.com/rerun-io/rerun/tree/latest/examples/python/external_data_loader/rerun-loader-python-file.py rust: https://github.com/rerun-io/rerun/tree/latest/examples/rust/external_data_loader/src/main.rs cpp: https://github.com/rerun-io/rerun/tree/latest/examples/cpp/external_data_loader/main.cpp thumbnail: https://static.rerun.io/external_data_loader_cpp/83cd3c2a322911cf597cf74aeda01c8fe83e275f/480w.png diff --git a/examples/python/arkit_scenes/README.md b/examples/python/arkit_scenes/README.md index 767a12e66310f..a948185d0d425 100644 --- a/examples/python/arkit_scenes/README.md +++ b/examples/python/arkit_scenes/README.md @@ -126,6 +126,6 @@ pip install -e examples/python/arkit_scenes To run this example use ```bash -python -m airkit_scenes +python -m arkit_scenes ``` diff --git a/examples/python/external_data_loader/README.md b/examples/python/external_data_loader/README.md index 5d7919dbf5ffd..0b64a22b2aef9 100644 --- a/examples/python/external_data_loader/README.md +++ b/examples/python/external_data_loader/README.md @@ -1,6 +1,6 @@ --- title: External data-loader example -python: https://github.com/rerun-io/rerun/tree/latest/examples/python/external_data_loader/rerun-loader-python-file.py?speculative-link +python: https://github.com/rerun-io/rerun/tree/latest/examples/python/external_data_loader/rerun-loader-python-file.py rust: https://github.com/rerun-io/rerun/tree/latest/examples/rust/external_data_loader/src/main.rs cpp: https://github.com/rerun-io/rerun/tree/latest/examples/cpp/external_data_loader/main.cpp thumbnail: https://static.rerun.io/external_data_loader_py/6c5609f5dd7d1de373c81babe19221b72d616da3/480w.png diff --git a/examples/python/lidar/README.md b/examples/python/lidar/README.md index 7fee9d82c5617..d82e335f16d72 100644 --- a/examples/python/lidar/README.md +++ b/examples/python/lidar/README.md @@ -23,7 +23,7 @@ This example demonstrates the ability to read and visualize LiDAR data from the The scenes in this dataset encompass data collected from a comprehensive suite of sensors on autonomous vehicles, including 6 cameras, 1 LIDAR, 5 RADAR, GPS and IMU sensors. -It's important to note that in this example, only the LiDAR data is visualized. For a more extensive example including other sensors and annotations check out the [nuScenes example](https://www.rerun.io/examples/robotics/nuscenes). +It's important to note that in this example, only the LiDAR data is visualized. For a more extensive example including other sensors and annotations check out the [nuScenes example](https://www.rerun.io/examples/robotics/nuscenes_dataset). ## Logging and visualizing with Rerun diff --git a/examples/python/nuscenes_dataset/README.md b/examples/python/nuscenes_dataset/README.md index cd1b5899e310e..6a1b6d696fd00 100644 --- a/examples/python/nuscenes_dataset/README.md +++ b/examples/python/nuscenes_dataset/README.md @@ -9,7 +9,7 @@ build_args = ["--seconds=5"] Visualize the [nuScenes dataset](https://www.nuscenes.org/) including lidar, radar, images, and bounding boxes data. - + @@ -142,7 +142,7 @@ git checkout latest # Check out the commit matching the latest SDK release ``` Install the necessary libraries specified in the requirements file: ```bash -pip install -e examples/python/nuscenes +pip install -e examples/python/nuscenes_dataset ``` To experiment with the provided example, simply execute the main Python script: ```bash diff --git a/examples/python/nuscenes_dataset/nuscenes_dataset/__main__.py b/examples/python/nuscenes_dataset/nuscenes_dataset/__main__.py index 89b2b47c97517..15f3b62dec301 100755 --- a/examples/python/nuscenes_dataset/nuscenes_dataset/__main__.py +++ b/examples/python/nuscenes_dataset/nuscenes_dataset/__main__.py @@ -19,7 +19,7 @@ Visualize the [nuScenes dataset](https://www.nuscenes.org/) including lidar, radar, images, and bounding boxes data. The full source code for this example is available -[on GitHub](https://github.com/rerun-io/rerun/blob/latest/examples/python/nuscenes). +[on GitHub](https://github.com/rerun-io/rerun/blob/latest/examples/python/nuscenes_dataset). """ EXAMPLE_DIR: Final = pathlib.Path(__file__).parent.parent diff --git a/examples/python/rrt_star/rrt_star.py b/examples/python/rrt_star/rrt_star.py index eb0cd9a5094e9..3289426f2aa15 100755 --- a/examples/python/rrt_star/rrt_star.py +++ b/examples/python/rrt_star/rrt_star.py @@ -33,7 +33,7 @@ Karaman, S. Frazzoli, S. 2011. "Sampling-based algorithms for optimal motion planning". or in [this medium article](https://theclassytim.medium.com/robotic-path-planning-rrt-and-rrt-212319121378). -The full source code for this example is available [on GitHub](https://github.com/rerun-io/rerun/blob/latest/examples/python/rrt-star). +The full source code for this example is available [on GitHub](https://github.com/rerun-io/rerun/blob/latest/examples/python/rrt_star). """.strip() Point2D = Annotated[npt.NDArray[np.float64], Literal[2]] diff --git a/examples/rust/clock/Cargo.toml b/examples/rust/clock/Cargo.toml index f2788402b1629..2ff92c70a13cf 100644 --- a/examples/rust/clock/Cargo.toml +++ b/examples/rust/clock/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "clock" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/examples/rust/custom_data_loader/Cargo.toml b/examples/rust/custom_data_loader/Cargo.toml index a4e3ba7be5ad3..e820e552ab4ef 100644 --- a/examples/rust/custom_data_loader/Cargo.toml +++ b/examples/rust/custom_data_loader/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "custom_data_loader" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/examples/rust/custom_space_view/Cargo.toml b/examples/rust/custom_space_view/Cargo.toml index 002c401922446..dd051af64c9fe 100644 --- a/examples/rust/custom_space_view/Cargo.toml +++ b/examples/rust/custom_space_view/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "custom_space_view" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/examples/rust/custom_store_subscriber/Cargo.toml b/examples/rust/custom_store_subscriber/Cargo.toml index 1390ac27a2f3b..47d819d964a6a 100644 --- a/examples/rust/custom_store_subscriber/Cargo.toml +++ b/examples/rust/custom_store_subscriber/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "custom_store_subscriber" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/examples/rust/dna/Cargo.toml b/examples/rust/dna/Cargo.toml index 6e1ca4116a02d..7462f50d21681 100644 --- a/examples/rust/dna/Cargo.toml +++ b/examples/rust/dna/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dna" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/examples/rust/extend_viewer_ui/Cargo.toml b/examples/rust/extend_viewer_ui/Cargo.toml index 7fd65668c50f4..6e6a887ea1dea 100644 --- a/examples/rust/extend_viewer_ui/Cargo.toml +++ b/examples/rust/extend_viewer_ui/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "extend_viewer_ui" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/examples/rust/external_data_loader/Cargo.toml b/examples/rust/external_data_loader/Cargo.toml index c1b79f04342d7..283e4a4493b34 100644 --- a/examples/rust/external_data_loader/Cargo.toml +++ b/examples/rust/external_data_loader/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rerun-loader-rust-file" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/examples/rust/external_data_loader/README.md b/examples/rust/external_data_loader/README.md index 79215fec6a202..27d95c0e26327 100644 --- a/examples/rust/external_data_loader/README.md +++ b/examples/rust/external_data_loader/README.md @@ -1,6 +1,6 @@ --- title: External data-loader example -python: https://github.com/rerun-io/rerun/tree/latest/examples/python/external_data_loader/rerun-loader-python-file.py?speculative-link +python: https://github.com/rerun-io/rerun/tree/latest/examples/python/external_data_loader/rerun-loader-python-file.py rust: https://github.com/rerun-io/rerun/tree/latest/examples/rust/external_data_loader/src/main.rs cpp: https://github.com/rerun-io/rerun/tree/latest/examples/cpp/external_data_loader/main.cpp thumbnail: https://static.rerun.io/external_data_loader_rs/74eecea3b16fee7fab01045e3bfdd90ba6c59bc9/480w.png diff --git a/examples/rust/incremental_logging/Cargo.toml b/examples/rust/incremental_logging/Cargo.toml index 842cc443c282e..53f9bf0a5ac52 100644 --- a/examples/rust/incremental_logging/Cargo.toml +++ b/examples/rust/incremental_logging/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "incremental_logging" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/examples/rust/log_file/Cargo.toml b/examples/rust/log_file/Cargo.toml index fb35b9a389f86..ea9c57dbc25a1 100644 --- a/examples/rust/log_file/Cargo.toml +++ b/examples/rust/log_file/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "log_file" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/examples/rust/minimal/Cargo.toml b/examples/rust/minimal/Cargo.toml index f42426d0befb3..76978108df7ed 100644 --- a/examples/rust/minimal/Cargo.toml +++ b/examples/rust/minimal/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "minimal" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/examples/rust/minimal_options/Cargo.toml b/examples/rust/minimal_options/Cargo.toml index 4d4594cf59e84..5bf525f6e3793 100644 --- a/examples/rust/minimal_options/Cargo.toml +++ b/examples/rust/minimal_options/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "minimal_options" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/examples/rust/minimal_serve/Cargo.toml b/examples/rust/minimal_serve/Cargo.toml index f2c1840a50567..e6b27ea2e1796 100644 --- a/examples/rust/minimal_serve/Cargo.toml +++ b/examples/rust/minimal_serve/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "minimal_serve" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/examples/rust/objectron/Cargo.toml b/examples/rust/objectron/Cargo.toml index 00b02e910aefc..61e63d3f09322 100644 --- a/examples/rust/objectron/Cargo.toml +++ b/examples/rust/objectron/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "objectron" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/examples/rust/raw_mesh/Cargo.toml b/examples/rust/raw_mesh/Cargo.toml index 3295e38a73a7c..9c5441b9c110a 100644 --- a/examples/rust/raw_mesh/Cargo.toml +++ b/examples/rust/raw_mesh/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "raw_mesh" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/examples/rust/shared_recording/Cargo.toml b/examples/rust/shared_recording/Cargo.toml index cad7e08c4504b..38a7099cc0e10 100644 --- a/examples/rust/shared_recording/Cargo.toml +++ b/examples/rust/shared_recording/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "shared_recording" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/examples/rust/spawn_viewer/Cargo.toml b/examples/rust/spawn_viewer/Cargo.toml index 0e2768daed1ec..80495dce09e1c 100644 --- a/examples/rust/spawn_viewer/Cargo.toml +++ b/examples/rust/spawn_viewer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "spawn_viewer" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/examples/rust/stdio/Cargo.toml b/examples/rust/stdio/Cargo.toml index 84a0c7910f597..6c4fdc558e6b7 100644 --- a/examples/rust/stdio/Cargo.toml +++ b/examples/rust/stdio/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "stdio" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/examples/rust/template/Cargo.toml b/examples/rust/template/Cargo.toml index 76964f1a51181..71520c1ef6576 100644 --- a/examples/rust/template/Cargo.toml +++ b/examples/rust/template/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "template" -version = "0.16.0-alpha.4" +version = "0.17.0-alpha.1+dev" edition = "2021" rust-version = "1.76" license = "MIT OR Apache-2.0" diff --git a/pyrightconfig.json b/pyrightconfig.json index aea9bcace1d29..229987db82796 100644 --- a/pyrightconfig.json +++ b/pyrightconfig.json @@ -5,7 +5,12 @@ "exclude": [ "**/node_modules", - "**/__pycache__" + "**/__pycache__", + "target*", + "venv*", + ".nox", + ".pixi", + "build" ], "ignore": [ diff --git a/rerun_cpp/src/rerun/c/rerun.h b/rerun_cpp/src/rerun/c/rerun.h index 1bc3773b208bc..81c3835e598b6 100644 --- a/rerun_cpp/src/rerun/c/rerun.h +++ b/rerun_cpp/src/rerun/c/rerun.h @@ -267,7 +267,7 @@ typedef struct rr_error { /// /// This should match the string returned by `rr_version_string`. /// If not, the SDK's binary and the C header are out of sync. -#define RERUN_SDK_HEADER_VERSION "0.16.0-alpha.4" +#define RERUN_SDK_HEADER_VERSION "0.16.0" /// Returns a human-readable version string of the Rerun C SDK. /// diff --git a/rerun_js/web-viewer-react/README.md b/rerun_js/web-viewer-react/README.md index e28c27662670f..dc67d8d93f4a0 100644 --- a/rerun_js/web-viewer-react/README.md +++ b/rerun_js/web-viewer-react/README.md @@ -35,7 +35,7 @@ export default function App() { ``` The `rrd` in the snippet above should be a URL pointing to either: -- A hosted `.rrd` file, such as +- A hosted `.rrd` file, such as - A WebSocket connection to the SDK opened via the [`serve`](https://www.rerun.io/docs/reference/sdk-operating-modes#serve) API If `rrd` is not set, the Viewer will display the same welcome screen as . diff --git a/rerun_js/web-viewer-react/package.json b/rerun_js/web-viewer-react/package.json index bad25ded3af37..c631e31ad215d 100644 --- a/rerun_js/web-viewer-react/package.json +++ b/rerun_js/web-viewer-react/package.json @@ -1,6 +1,6 @@ { "name": "@rerun-io/web-viewer-react", - "version": "0.15.0", + "version": "0.16.0", "description": "Embed the Rerun web viewer in your React app", "licenses": [ { @@ -39,7 +39,7 @@ "tsconfig.json" ], "dependencies": { - "@rerun-io/web-viewer": "0.15.0", + "@rerun-io/web-viewer": "0.16.0", "@types/react": "^18.2.33", "react": "^18.2.0" }, diff --git a/rerun_js/web-viewer/README.md b/rerun_js/web-viewer/README.md index 579b5e6fffb1c..8c73d66b66427 100644 --- a/rerun_js/web-viewer/README.md +++ b/rerun_js/web-viewer/README.md @@ -41,7 +41,7 @@ viewer.stop(); ``` The `rrd` in the snippet above should be a URL pointing to either: -- A hosted `.rrd` file, such as +- A hosted `.rrd` file, such as - A WebSocket connection to the SDK opened via the [`serve`](https://www.rerun.io/docs/reference/sdk-operating-modes#serve) API If `rrd` is not set, the Viewer will display the same welcome screen as . diff --git a/rerun_js/web-viewer/package.json b/rerun_js/web-viewer/package.json index 2c67800b8ea51..b96955500ec23 100644 --- a/rerun_js/web-viewer/package.json +++ b/rerun_js/web-viewer/package.json @@ -1,6 +1,6 @@ { "name": "@rerun-io/web-viewer", - "version": "0.15.0", + "version": "0.16.0", "description": "Embed the Rerun web viewer in your app", "licenses": [ { @@ -53,4 +53,4 @@ "dts-buddy": "^0.3.0", "typescript": "^5.2.2" } -} +} \ No newline at end of file diff --git a/scripts/ci/requirements-examples-main.txt b/scripts/ci/requirements-examples-main.txt deleted file mode 100644 index effe1f6273609..0000000000000 --- a/scripts/ci/requirements-examples-main.txt +++ /dev/null @@ -1,6 +0,0 @@ --r ../../examples/python/arkit_scenes/requirements.txt --r ../../examples/python/dicom_mri/requirements.txt --r ../../examples/python/dna/requirements.txt --r ../../examples/python/human_pose_tracking/requirements.txt --r ../../examples/python/plots/requirements.txt --r ../../examples/python/structure_from_motion/requirements.txt diff --git a/scripts/ci/requirements-examples-nightly.txt b/scripts/ci/requirements-examples-nightly.txt deleted file mode 100644 index e67f8d683062b..0000000000000 --- a/scripts/ci/requirements-examples-nightly.txt +++ /dev/null @@ -1,10 +0,0 @@ --r ./requirements-examples-main.txt - --r ../../examples/python/depth_guided_stable_diffusion/requirements.txt --r ../../examples/python/detect_and_track_objects/requirements.txt --r ../../examples/python/nuscenes/requirements.txt --r ../../examples/python/objectron/requirements.txt --r ../../examples/python/open_photogrammetry_format/requirements.txt --r ../../examples/python/raw_mesh/requirements.txt --r ../../examples/python/rgbd/requirements.txt --r ../../examples/python/segment_anything_model/requirements.txt diff --git a/scripts/ci/rust_checks.py b/scripts/ci/rust_checks.py index a4686a43877bb..efe0ed974c52d 100755 --- a/scripts/ci/rust_checks.py +++ b/scripts/ci/rust_checks.py @@ -76,6 +76,7 @@ def main() -> None: parser.add_argument("--skip-wasm-checks", help="If true, don't run explicit wasm32 checks.", action="store_true") parser.add_argument("--skip-docs", help="If true, don't run doc generation.", action="store_true") parser.add_argument("--skip-tests", help="If true, don't run tests.", action="store_true") + parser.add_argument("--skip-cargo-deny", help="If true, don't run cargo deny.", action="store_true") args = parser.parse_args() # ---------------------- @@ -96,21 +97,22 @@ def main() -> None: timings.append(run_cargo("check", "-p rerun --no-default-features --features sdk")) # Cargo deny - # Note: running just `cargo deny check` without a `--target` can result in - # false positives due to https://github.com/EmbarkStudios/cargo-deny/issues/324 - # Installing is quite quick if it's already installed. - timings.append(run_cargo("install", "--locked cargo-deny")) - timings.append(run_cargo("deny", "--all-features --log-level error --target aarch64-apple-darwin check")) - timings.append(run_cargo("deny", "--all-features --log-level error --target i686-pc-windows-gnu check")) - timings.append(run_cargo("deny", "--all-features --log-level error --target i686-pc-windows-msvc check")) - timings.append(run_cargo("deny", "--all-features --log-level error --target i686-unknown-linux-gnu check")) - timings.append(run_cargo("deny", "--all-features --log-level error --target wasm32-unknown-unknown check")) - timings.append(run_cargo("deny", "--all-features --log-level error --target x86_64-apple-darwin check")) - timings.append(run_cargo("deny", "--all-features --log-level error --target x86_64-pc-windows-gnu check")) - timings.append(run_cargo("deny", "--all-features --log-level error --target x86_64-pc-windows-msvc check")) - timings.append(run_cargo("deny", "--all-features --log-level error --target x86_64-unknown-linux-gnu check")) - timings.append(run_cargo("deny", "--all-features --log-level error --target x86_64-unknown-linux-musl check")) - timings.append(run_cargo("deny", "--all-features --log-level error --target x86_64-unknown-redox check")) + if not args.skip_cargo_deny: + # Note: running just `cargo deny check` without a `--target` can result in + # false positives due to https://github.com/EmbarkStudios/cargo-deny/issues/324 + # Installing is quite quick if it's already installed. + timings.append(run_cargo("install", "--locked cargo-deny")) + timings.append(run_cargo("deny", "--all-features --log-level error --target aarch64-apple-darwin check")) + timings.append(run_cargo("deny", "--all-features --log-level error --target i686-pc-windows-gnu check")) + timings.append(run_cargo("deny", "--all-features --log-level error --target i686-pc-windows-msvc check")) + timings.append(run_cargo("deny", "--all-features --log-level error --target i686-unknown-linux-gnu check")) + timings.append(run_cargo("deny", "--all-features --log-level error --target wasm32-unknown-unknown check")) + timings.append(run_cargo("deny", "--all-features --log-level error --target x86_64-apple-darwin check")) + timings.append(run_cargo("deny", "--all-features --log-level error --target x86_64-pc-windows-gnu check")) + timings.append(run_cargo("deny", "--all-features --log-level error --target x86_64-pc-windows-msvc check")) + timings.append(run_cargo("deny", "--all-features --log-level error --target x86_64-unknown-linux-gnu check")) + timings.append(run_cargo("deny", "--all-features --log-level error --target x86_64-unknown-linux-musl check")) + timings.append(run_cargo("deny", "--all-features --log-level error --target x86_64-unknown-redox check")) if not args.skip_wasm_checks: # Check viewer for wasm32 diff --git a/tests/python/release_checklist/check_1d_tensor_data.py b/tests/python/release_checklist/check_1d_tensor_data.py index ed334dede2b9b..22609cad5c044 100644 --- a/tests/python/release_checklist/check_1d_tensor_data.py +++ b/tests/python/release_checklist/check_1d_tensor_data.py @@ -16,6 +16,8 @@ You should see: * a tensor view with 1D data + * Note: when selecting the tensor space view, there should be two "Dimension Mapping" widgets, which can be used to + display the tensor vertically or horizontally. The "Selectors" list should be empty. * an image view with a 1D image * a bar chart @@ -24,7 +26,6 @@ * TODO(#5847): Right now tensors & bar charts can not be reinterpreted as 2D images. In this example, image is correctly not suggested for the `tensor` and `image` entities, since they are of 1D shape, but this would be relevant if they were 1xN or Nx1. - """ diff --git a/tests/python/release_checklist/check_annotations.py b/tests/python/release_checklist/check_annotations.py index c2a065a5a0076..9e36727c3035b 100644 --- a/tests/python/release_checklist/check_annotations.py +++ b/tests/python/release_checklist/check_annotations.py @@ -20,6 +20,9 @@ There should be 1 red rectangle and 1 green rectangle. Hover over each of the elements and confirm it shows the label as "red" or "green" as expected. + +*Note*: when hovering the rectangles, a tooltip pertaining to the image will _also_ appear and indicate a label of "0". +This is expected as the image is black at this location. """ diff --git a/tests/python/release_checklist/check_hover_select_reset.py b/tests/python/release_checklist/check_hover_select_reset.py index c65f6cadca0ee..5c1d499d4ce64 100644 --- a/tests/python/release_checklist/check_hover_select_reset.py +++ b/tests/python/release_checklist/check_hover_select_reset.py @@ -32,7 +32,8 @@ * Double-click the background of the view and verify it resets the view to its default state. ### Deselect -Finally, try hitting escape and check whether that deselects whatever was currently selected. +Finally, try hitting escape and check whether that deselects whatever was currently selected and the recording is +selected instead. """ diff --git a/tests/python/release_checklist/check_out_of_tree_data_results.py b/tests/python/release_checklist/check_out_of_tree_data_results.py index 3fa03d7580b52..b87ce9630e01f 100644 --- a/tests/python/release_checklist/check_out_of_tree_data_results.py +++ b/tests/python/release_checklist/check_out_of_tree_data_results.py @@ -22,7 +22,12 @@ def log_readme() -> None: def blueprint() -> rrb.BlueprintLike: - return rrb.Blueprint(rrb.Spatial3DView(name="TEST", origin="/", contents="$origin/box/points/**")) + return rrb.Blueprint( + rrb.Horizontal( + rrb.TextDocumentView(origin="readme"), + rrb.Spatial3DView(name="TEST", origin="/", contents="$origin/box/points/**"), + ) + ) def log_data() -> None: diff --git a/tests/python/release_checklist/check_parallelism_caching_reentrancy.py b/tests/python/release_checklist/check_parallelism_caching_reentrancy.py index 6f2fec6350dc3..ab88add12e3e6 100644 --- a/tests/python/release_checklist/check_parallelism_caching_reentrancy.py +++ b/tests/python/release_checklist/check_parallelism_caching_reentrancy.py @@ -65,6 +65,7 @@ def blueprint() -> rrb.BlueprintLike: ) for _ in range(0, 3) ]), + rrb.TextDocumentView(origin="readme"), grid_columns=4, ) From 3d4136df96353516e054b39e33c4ac706df7587e Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Fri, 17 May 2024 12:01:40 +0200 Subject: [PATCH 32/40] Don't log warnings when unknown clients connect over TCP (#6368) * Closes https://github.com/rerun-io/rerun/issues/5883 * [x] I know how checkboxes work --- crates/re_viewer/src/app.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/re_viewer/src/app.rs b/crates/re_viewer/src/app.rs index e18bac3c02973..ba35ed9834aa5 100644 --- a/crates/re_viewer/src/app.rs +++ b/crates/re_viewer/src/app.rs @@ -983,7 +983,6 @@ impl App { format!("Data source {} has left unexpectedly: {err}", msg.source); #[cfg(not(target_arch = "wasm32"))] - #[cfg(feature = "server")] if err .downcast_ref::() .is_some_and(|e| { From 048b3a47d1eae0b7c31a82d6f24cdd44120ca62b Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Fri, 17 May 2024 15:17:37 +0200 Subject: [PATCH 33/40] Ignore http 429 "too many requests" error on link checker (#6371) ### What This is practically never an actual error, so we might as well ignore it. ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6371?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6371?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6371) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- lychee.toml | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/lychee.toml b/lychee.toml index 222bf3ff2316a..439d98ea0d8be 100644 --- a/lychee.toml +++ b/lychee.toml @@ -29,6 +29,13 @@ include_verbatim = true # Proceed for server connections considered insecure (invalid TLS). insecure = true +# Comma-separated list of accepted status codes for valid links. +accept = [ + "100..=103", # Informational codes. + "200..=299", # Success codes. + "429", # Too many requests. This is practically never a sign of a broken link. +] + # Exclude these filesystem paths from getting checked. exclude_path = [ # Unfortunately lychee doesn't yet read .gitignore https://github.com/lycheeverse/lychee/issues/1331 @@ -77,9 +84,10 @@ exclude = [ 're_viewer.js', # Build artifact that html is linking to. # Api endpoints. - 'https://fonts.googleapis.com/', # Font API entrypoint, not a link. - 'https://fonts.gstatic.com/', # Font API entrypoint, not a link. - 'https://tel.rerun.io/', # Analytics endpoint. + 'https://fonts.googleapis.com/', # Font API entrypoint, not a link. + 'https://fonts.gstatic.com/', # Font API entrypoint, not a link. + 'https://tel.rerun.io/', # Analytics endpoint. + 'https://docs-assets.developer.apple.com/ml-research/datasets/arkitscenes/v1', # Used by arkit_scenes. # Avoid rate limiting. 'https://crates.io/crates/.*', # Avoid crates.io rate-limiting @@ -99,10 +107,12 @@ exclude = [ 'https://storage.googleapis.com/', # Storage API entrypoint, not a link. # Not accessible from CI. - '.github/workflows/.*.yml', # GitHub action workflows cause issues on CI. - 'https://stackoverflow.com/.', # Stackoverflow links are no longer accessible from CI. - 'https://www.tensorflow.org/', # tensorflow.org apparently blocks CI. - 'https://9p.io/sys/doc/lexnames.html', # Works locally but on ci we get: `Failed: Network error: error:0A000152:SSL routines:final_renegotiate:unsafe legacy renegotiation disabled:ssl/statem/extensions.c:946:` + '.github/workflows/.*.yml', # GitHub action workflows cause issues on CI. + 'https://stackoverflow.com/.', # Stackoverflow links are no longer accessible from CI. + 'https://www.tensorflow.org/', # tensorflow.org apparently blocks CI. + 'https://9p.io/sys/doc/lexnames.html', # Works locally but on ci we get: `Failed: Network error: error:0A000152:SSL routines:final_renegotiate:unsafe legacy renegotiation disabled:ssl/statem/extensions.c:946:` + 'https://www.reddit.com/', # Gives 403 forbidden on CI. + 'https://pixabay.com/photos/brother-sister-girl-family-boy-977170/', # Gives 403 forbidden on CI. # Need GitHub login. 'https://github.com/rerun-io/landing', From 26b040d8ab7c81182d65310831b1eb24c5731135 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Fri, 17 May 2024 17:52:21 +0200 Subject: [PATCH 34/40] Drop rerun_cpp_sdk-{tag}-multiplatform.zip in favor of rerun_cpp_sdk.zip (#6373) ### What * Fixes https://github.com/rerun-io/rerun/issues/6364 Previously we had _both_ `rerun_cpp_sdk-{tag}-multiplatform.zip` and `rerun_cpp_sdk.zip`. Between 0.15 and 0.16 we removed the later from automation which meant that we had to upload it manually. This brings back `rerun_cpp_sdk.zip` ~but instead drops the redundant multiplatform one. We could upload with both names but seems confusing to me.~ and keeps the old one since it has the advantage of knowing what you're dealing with by just looking at the file + you can more easily download different versions into the same folder without any conflicts ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6373?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6373?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6373) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- scripts/ci/sync_release_assets.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/scripts/ci/sync_release_assets.py b/scripts/ci/sync_release_assets.py index dbfbadc7204ca..3ea10dad375f1 100644 --- a/scripts/ci/sync_release_assets.py +++ b/scripts/ci/sync_release_assets.py @@ -130,6 +130,15 @@ def fetch_binary_assets( name = blob.name.split("/")[-1] print(f"Found Rerun cross-platform bundle: {name}") assets[f"rerun_cpp_sdk-{tag}-multiplatform.zip"] = blob + + # Upload again as rerun_cpp_sdk.zip for convenience. + # + # ATTENTION: Renaming this file has tremendous ripple effects: + # Not only is this the convenient short name we use in examples, + # we also rely on https://github.com/rerun-io/rerun/releases/latest/download/rerun_cpp_sdk.zip + # to always give you the latest stable version of the Rerun SDK. + # -> The name should *not* contain the version number. + assets[f"rerun_cpp_sdk.zip"] = blob else: all_found = False print("Rerun cross-platform bundle not found") From c20d8e8366962bdd9c706606c5f61c504b79ce72 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Fri, 17 May 2024 19:22:43 +0200 Subject: [PATCH 35/40] Main Ci fix - link checker retries, python formatting (#6374) * [x] I know how to trick the checkbox ci --- lychee.toml | 3 +++ scripts/ci/sync_release_assets.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lychee.toml b/lychee.toml index 439d98ea0d8be..d4649a6355c00 100644 --- a/lychee.toml +++ b/lychee.toml @@ -29,6 +29,9 @@ include_verbatim = true # Proceed for server connections considered insecure (invalid TLS). insecure = true +# Maximum number of allowed retries before a link is declared dead. +max_retries = 4 + # Comma-separated list of accepted status codes for valid links. accept = [ "100..=103", # Informational codes. diff --git a/scripts/ci/sync_release_assets.py b/scripts/ci/sync_release_assets.py index 3ea10dad375f1..3513884fcfea2 100644 --- a/scripts/ci/sync_release_assets.py +++ b/scripts/ci/sync_release_assets.py @@ -138,7 +138,7 @@ def fetch_binary_assets( # we also rely on https://github.com/rerun-io/rerun/releases/latest/download/rerun_cpp_sdk.zip # to always give you the latest stable version of the Rerun SDK. # -> The name should *not* contain the version number. - assets[f"rerun_cpp_sdk.zip"] = blob + assets["rerun_cpp_sdk.zip"] = blob else: all_found = False print("Rerun cross-platform bundle not found") From 68601450a9b95d4b997d79c9bb8a13d24c6498c5 Mon Sep 17 00:00:00 2001 From: Silvio Traversaro Date: Mon, 20 May 2024 11:51:49 +0200 Subject: [PATCH 36/40] Add docs on how to install C++ SDK with conda-forge packages (#6381) I am not sure the style fits the docs, feel free to change or heavily revise the proposed text. ### What ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG - [PR Build Summary](https://build.rerun.io/pr/6381) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --------- Co-authored-by: Andreas Reich --- rerun_cpp/README.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/rerun_cpp/README.md b/rerun_cpp/README.md index f463d92bd8a7f..9f3dee810b11f 100644 --- a/rerun_cpp/README.md +++ b/rerun_cpp/README.md @@ -110,6 +110,34 @@ Make sure to compile with C++17 or newer. There's a user provided minimal Bazel example here: https://github.com/kyle-figure/bazel-minimal-rerun/ +### Install with conda package + +If you are using a package manager that supports conda packages such as `conda` or `pixi` to manage your C++ dependencies, +the Rerun C++ SDK is available from conda-forge channel in the [`librerun-sdk` package](). +After you installed the `librerun-sdk` package. The Rerun Viewer is instead provided by the +`rerun-sdk` package, and you can install both with: + +```bash +conda install -c conda-forge librerun-sdk rerun-sdk +``` + +or + +```bash +pixi add librerun-sdk rerun-sdk +``` + +Once the package is available, you can find and consume it in your CMake project +as you consume any other installed C++ library that provides a CMake config file: + +```cmake +find_package(rerun_sdk REQUIRED) + +# … + +target_link_libraries( PRIVATE rerun_sdk) +``` + ## Development in the Rerun repository From 42ff28c82a873f77cfc8829a74026a5636bdf80b Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Mon, 20 May 2024 16:26:56 +0200 Subject: [PATCH 37/40] Revert making web_viewer a default feature of rerun_py (#6370) ### What In https://github.com/rerun-io/rerun/pull/6335 `web_viewer` became a default feature of `rerun_py`. This caused a bunch of issues for development: * `pixi run py-build` builds with default features and doesn't build new wasm blobs, meaning that the build either fails or picks up outdated * currently contributor ci doesn't build the web builder during its wheel test job causing failures _Q: Are we sure that wheel publish would still include the web_viewer?_ A: Yes. We test this prior to release. This works because we use the `pypi` feature of `build_and_upload_wheels.py`. This script also ensures that the wasm blobs are built. _Q: Why does the non-contributor ci build the wasm blobs?_ A: It doesn't! Again, we use `build_and_upload_wheels.py` there which builds with `--no-default-features`. However, that script can't be used on the contributor ci since that would spill the GCS secrets (upload on that script is not optional right now). => Alternative solutions: * do `--no-default-features` on `pixi run py-build` and on the contributor ci (potentially by using and adjusting `build_and_upload_wheels.py` * make `pixi run py-build` slower by making it depend on the web build ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6370?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6370?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6370) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- rerun_py/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rerun_py/Cargo.toml b/rerun_py/Cargo.toml index 64f36937bb4aa..696448d467ea4 100644 --- a/rerun_py/Cargo.toml +++ b/rerun_py/Cargo.toml @@ -15,7 +15,7 @@ name = "rerun_bindings" # name of the .so library that the Python module will im [features] -default = ["extension-module", "web_viewer"] +default = ["extension-module"] ## The features we turn on when building the `rerun-sdk` PyPi package ## for . From 1f3004f7475ea2d281744ea8cea0d64996adebbb Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Mon, 20 May 2024 16:29:32 +0200 Subject: [PATCH 38/40] Fix unnecessary re_viewer dependency (#6369) ### What The mechanism for identifying Rerun clients was implemented in #6204. However, during the release I accidentally "fixed" the build of `cargo build -p re_viewer --no-default-features` twice: * The seemingly correct fix was to depend on `re_sdk_comms` with the `server` feature always enabled. * The definitely wrong thing that slipped through is to feature guard the section that needs the `re_sdk_comms` server errors with `#[cfg(feature = "server")]`. But `re_viewer` doesn't have a `server` feature, disabling this effectively. This was reverted in https://github.com/rerun-io/rerun/pull/6368 It's up to users of `re_viewer` to allow the serve feature, making `re_viewer` agonistic of the presence of this error type in its smart channel. Therefore I now moved out the error type to `re_sdk_comms` lib.rs so that `re_viewer` doesn't have to depend on the `re_sdk_comms`'s server feature. ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6369?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6369?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6369) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- CHANGELOG.md | 2 +- crates/re_sdk_comms/src/lib.rs | 42 ++++++++++++++++++++++++++++++- crates/re_sdk_comms/src/server.rs | 35 ++------------------------ crates/re_viewer/Cargo.toml | 2 +- crates/re_viewer/src/app.rs | 5 ++-- 5 files changed, 48 insertions(+), 38 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2caef101637e2..d6813b0742e7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -87,6 +87,7 @@ As always there's a lot going on under the hood: - New data APIs 14: port everything that used to be uncached [#6035](https://github.com/rerun-io/rerun/pull/6035) - Make visible time range ui aware of latest-at & `QueryRange` [#6176](https://github.com/rerun-io/rerun/pull/6176) - Visible time ranges are now specified per timeline, not per timeline type [#6204](https://github.com/rerun-io/rerun/pull/6204) +- Send TCP protocol header to ignore non-rerun clients [#6253](https://github.com/rerun-io/rerun/pull/6253) (thanks [@gurry](https://github.com/gurry)!) #### πŸš€ Performance Improvements - New data APIs 4: cached latest-at mono helpers everywhere [#5606](https://github.com/rerun-io/rerun/pull/5606) @@ -168,7 +169,6 @@ As always there's a lot going on under the hood: - New data APIs 8: uncached range queries [#5687](https://github.com/rerun-io/rerun/pull/5687) - New data APIs 10: stats and debug tools for new caches [#5990](https://github.com/rerun-io/rerun/pull/5990) - Validate the blueprint schema when we try to activate a blueprint sent from SDK [#6283](https://github.com/rerun-io/rerun/pull/6283) -- Send TCP protocol header to ignore non-rerun clients [#6253](https://github.com/rerun-io/rerun/pull/6253) (thanks [@gurry](https://github.com/gurry)!) ## [0.15.1](https://github.com/rerun-io/rerun/compare/0.15.0...0.15.1) - Bug fix for notebooks - 2024-04-11 diff --git a/crates/re_sdk_comms/src/lib.rs b/crates/re_sdk_comms/src/lib.rs index e00f13a4c47c4..bd1bf029c40dd 100644 --- a/crates/re_sdk_comms/src/lib.rs +++ b/crates/re_sdk_comms/src/lib.rs @@ -17,7 +17,47 @@ pub use {buffered_client::Client, tcp_client::ClientError}; mod server; #[cfg(feature = "server")] -pub use server::{serve, ConnectionError, ServerError, ServerOptions}; +pub use server::{serve, ServerError, ServerOptions}; + +/// Server connection error. +/// +/// This can only occur when using the `server` feature, +/// However it is defined here so that crates that want to react to this error can do so without +/// needing to depend on the `server` feature directly. +/// This is useful when processing errors from a passed-in `re_smart_channel` channel as done by `re_viewer` as of writing. +#[derive(thiserror::Error, Debug)] +pub enum ConnectionError { + #[error("An unknown client tried to connect")] + UnknownClient, + + #[error(transparent)] + VersionError(#[from] VersionError), + + #[error(transparent)] + SendError(#[from] std::io::Error), + + #[error(transparent)] + DecodeError(#[from] re_log_encoding::decoder::DecodeError), + + #[error("The receiving end of the channel was closed")] + ChannelDisconnected(#[from] re_smart_channel::SendError), +} + +#[derive(thiserror::Error, Debug)] +#[allow(unused)] +pub enum VersionError { + #[error("SDK client is using an older protocol version ({client_version}) than the SDK server ({server_version})")] + ClientIsOlder { + client_version: u16, + server_version: u16, + }, + + #[error("SDK client is using a newer protocol version ({client_version}) than the SDK server ({server_version})")] + ClientIsNewer { + client_version: u16, + server_version: u16, + }, +} pub const PROTOCOL_VERSION_0: u16 = 0; diff --git a/crates/re_sdk_comms/src/server.rs b/crates/re_sdk_comms/src/server.rs index a52c1eddf9d11..162d199a6c81c 100644 --- a/crates/re_sdk_comms/src/server.rs +++ b/crates/re_sdk_comms/src/server.rs @@ -9,6 +9,8 @@ use rand::{Rng as _, SeedableRng}; use re_log_types::{LogMsg, TimePoint, TimeType, TimelineName}; use re_smart_channel::{Receiver, Sender}; +use crate::{ConnectionError, VersionError}; + #[derive(thiserror::Error, Debug)] pub enum ServerError { #[error("Failed to bind TCP address {bind_addr:?}. Another Rerun instance is probably running. {err}")] @@ -21,39 +23,6 @@ pub enum ServerError { FailedToSpawnThread(#[from] std::io::Error), } -#[derive(thiserror::Error, Debug)] -pub enum VersionError { - #[error("SDK client is using an older protocol version ({client_version}) than the SDK server ({server_version})")] - ClientIsOlder { - client_version: u16, - server_version: u16, - }, - - #[error("SDK client is using a newer protocol version ({client_version}) than the SDK server ({server_version})")] - ClientIsNewer { - client_version: u16, - server_version: u16, - }, -} - -#[derive(thiserror::Error, Debug)] -pub enum ConnectionError { - #[error("An unknown client tried to connect")] - UnknownClient, - - #[error(transparent)] - VersionError(#[from] VersionError), - - #[error(transparent)] - SendError(#[from] std::io::Error), - - #[error(transparent)] - DecodeError(#[from] re_log_encoding::decoder::DecodeError), - - #[error("The receiving end of the channel was closed")] - ChannelDisconnected(#[from] re_smart_channel::SendError), -} - #[derive(Clone, Copy, Debug, PartialEq)] pub struct ServerOptions { /// If the latency in the [`LogMsg`] channel is greater than this, diff --git a/crates/re_viewer/Cargo.toml b/crates/re_viewer/Cargo.toml index 3cc582a5f4650..a039133d20c44 100644 --- a/crates/re_viewer/Cargo.toml +++ b/crates/re_viewer/Cargo.toml @@ -56,7 +56,7 @@ re_log_types.workspace = true re_memory.workspace = true re_query.workspace = true re_renderer = { workspace = true, default-features = false } -re_sdk_comms = { workspace = true, features = ["server"] } +re_sdk_comms.workspace = true re_smart_channel.workspace = true re_space_view.workspace = true re_space_view_bar_chart.workspace = true diff --git a/crates/re_viewer/src/app.rs b/crates/re_viewer/src/app.rs index ba35ed9834aa5..680a53eed6245 100644 --- a/crates/re_viewer/src/app.rs +++ b/crates/re_viewer/src/app.rs @@ -989,8 +989,9 @@ impl App { matches!(e, re_sdk_comms::ConnectionError::UnknownClient) }) { - // An unknown client that probably stumbled onto the wrong port. - // Don't log as an error (https://github.com/rerun-io/rerun/issues/5883). + // This can happen if a client tried to connect but didn't send the `re_sdk_comms::PROTOCOL_HEADER`. + // Likely an unknown client stumbled onto the wrong port - don't log as an error. + // (for more information see https://github.com/rerun-io/rerun/issues/5883). re_log::debug!("{log_msg}"); continue; } From 418359b8004f1395c7deaf5159f4aec33053c1a6 Mon Sep 17 00:00:00 2001 From: Antoine Beyeler <49431240+abey79@users.noreply.github.com> Date: Mon, 20 May 2024 18:09:41 +0200 Subject: [PATCH 39/40] `list_item2` migration (part 1): ensure background is painted on rounded pixels (#6376) ### What This PR fixes a visual glitch with `ui.cursor()` is on an uneven pixel (which apparently can happen in the streams tree). The background is now alway painted on rounded pixels. Part of a mini-series: - https://github.com/rerun-io/rerun/pull/6376 - https://github.com/rerun-io/rerun/pull/6377 - https://github.com/rerun-io/rerun/pull/6378 ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6376?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6376?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6376) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- crates/re_ui/src/list_item2/list_item.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/crates/re_ui/src/list_item2/list_item.rs b/crates/re_ui/src/list_item2/list_item.rs index 6114dd1797588..931fe7525df2d 100644 --- a/crates/re_ui/src/list_item2/list_item.rs +++ b/crates/re_ui/src/list_item2/list_item.rs @@ -307,11 +307,20 @@ impl<'a> ListItem<'a> { }; content.ui(re_ui, ui, &content_ctx); + // Ensure the background highlight is drawn over round pixel coordinates. Otherwise, + // there could be artifact between consecutive highlighted items when drawn on + // fractional pixels. + let bg_rect_to_paint = ui.painter().round_rect_to_pixels(bg_rect); + // Draw background on interaction. if drag_target { ui.painter().set( background_frame, - Shape::rect_stroke(bg_rect, 0.0, (1.0, ui.visuals().selection.bg_fill)), + Shape::rect_stroke( + bg_rect_to_paint, + 0.0, + (1.0, ui.visuals().selection.bg_fill), + ), ); } else { let bg_fill = if !response.hovered() && ui.rect_contains_pointer(bg_rect) { @@ -329,8 +338,10 @@ impl<'a> ListItem<'a> { }; if let Some(bg_fill) = bg_fill { - ui.painter() - .set(background_frame, Shape::rect_filled(bg_rect, 0.0, bg_fill)); + ui.painter().set( + background_frame, + Shape::rect_filled(bg_rect_to_paint, 0.0, bg_fill), + ); } } } From 3a66d55d772d7d98a8c53da58542d89f620c8d34 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Mon, 20 May 2024 18:11:21 +0200 Subject: [PATCH 40/40] Fix not being able to set time series y axis ranges from ui (#6384) ### What * Fixes #6383 ### Checklist * [x] I have read and agree to [Contributor Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and the [Code of Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md) * [x] I've included a screenshot or gif (if applicable) * [x] I have tested the web demo (if applicable): * Using examples from latest `main` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6384?manifest_url=https://app.rerun.io/version/main/examples_manifest.json) * Using full set of examples from `nightly` build: [rerun.io/viewer](https://rerun.io/viewer/pr/6384?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG * [x] If applicable, add a new check to the [release checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)! - [PR Build Summary](https://build.rerun.io/pr/6384) - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html) To run all checks from `main`, comment on the PR with `@rerun-bot full-check`. --- .../src/space_view_class.rs | 6 +++--- crates/re_types/src/components/range1d_ext.rs | 12 ++++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/crates/re_space_view_time_series/src/space_view_class.rs b/crates/re_space_view_time_series/src/space_view_class.rs index 950a2903b4d8a..bf2c5eb923117 100644 --- a/crates/re_space_view_time_series/src/space_view_class.rs +++ b/crates/re_space_view_time_series/src/space_view_class.rs @@ -706,7 +706,7 @@ fn axis_ui( }); if !auto_range { - let range_edit = y_range + let mut range_edit = y_range .unwrap_or_else(|| y_range.unwrap_or(state.saved_y_axis_range.into())); ui.horizontal(|ui| { @@ -718,13 +718,13 @@ fn axis_ui( let speed = ((prev_max - prev_min) * 0.01).at_least(0.001); ui.label("Min"); ui.add( - egui::DragValue::new(&mut range_edit.start()) + egui::DragValue::new(range_edit.start_mut()) .speed(speed) .clamp_range(std::f64::MIN..=prev_max), ); ui.label("Max"); ui.add( - egui::DragValue::new(&mut range_edit.end()) + egui::DragValue::new(range_edit.end_mut()) .speed(speed) .clamp_range(prev_min..=std::f64::MAX), ); diff --git a/crates/re_types/src/components/range1d_ext.rs b/crates/re_types/src/components/range1d_ext.rs index 5ae08cfcb21d0..f5f4e6e547db3 100644 --- a/crates/re_types/src/components/range1d_ext.rs +++ b/crates/re_types/src/components/range1d_ext.rs @@ -21,6 +21,18 @@ impl Range1D { pub fn end(&self) -> f64 { self.0 .0[1] } + + /// The start of the range. + #[inline] + pub fn start_mut(&mut self) -> &mut f64 { + &mut self.0 .0[0] + } + + /// The end of the range. + #[inline] + pub fn end_mut(&mut self) -> &mut f64 { + &mut self.0 .0[1] + } } impl From for emath::Rangef {