From 5132670c69cfbbc23bbc2bb10d73317f91f9ccff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Thu, 12 Jun 2025 00:24:28 +0300 Subject: [PATCH 01/25] Fix library mapping in linking checks --- src/build.rs | 2 +- src/cache.rs | 23 +- src/lib.rs | 2 +- src/metadata.rs | 2 + src/post_process/checks.rs | 240 +++++++++++++----- src/render/resolved_dependencies.rs | 125 ++++++++- .../recipes/cache/recipe-linking-checks.yaml | 111 ++++++++ .../recipes/cache/recipe-overdepending.yaml | 127 +++++++++ test/end-to-end/test_simple.py | 38 +++ 9 files changed, 584 insertions(+), 86 deletions(-) create mode 100644 test-data/recipes/cache/recipe-linking-checks.yaml create mode 100644 test-data/recipes/cache/recipe-overdepending.yaml diff --git a/src/build.rs b/src/build.rs index 100caac77..1c9f8e251 100644 --- a/src/build.rs +++ b/src/build.rs @@ -121,7 +121,7 @@ pub async fn run_build( .into_diagnostic()? }; - let output = output + let mut output = output .resolve_dependencies(tool_configuration) .await .into_diagnostic()?; diff --git a/src/cache.rs b/src/cache.rs index fb5165c84..dad23d95d 100644 --- a/src/cache.rs +++ b/src/cache.rs @@ -18,7 +18,8 @@ use crate::{ parser::{Dependency, Requirements, Source}, }, render::resolved_dependencies::{ - FinalizedDependencies, install_environments, resolve_dependencies, + FinalizedDependencies, install_environments, populate_library_mappings, + resolve_dependencies, }, source::{ copy_dir::{CopyDir, CopyOptions, copy_file}, @@ -218,14 +219,26 @@ impl Output { .into_diagnostic() .context("failed to reindex output channel")?; - let finalized_dependencies = + let mut finalized_dependencies = resolve_dependencies(&cache.requirements, &self, &channels, tool_configuration) .await .unwrap(); - install_environments(&self, &finalized_dependencies, tool_configuration) - .await - .into_diagnostic()?; + install_environments( + &self.build_configuration, + &finalized_dependencies, + tool_configuration, + ) + .await + .into_diagnostic()?; + + // Populate library mappings after packages are installed + populate_library_mappings( + &mut finalized_dependencies, + &self.build_configuration.directories.build_prefix, + &self.build_configuration.directories.host_prefix, + ) + .into_diagnostic()?; let selector_config = self.build_configuration.selector_config(); let mut jinja = Jinja::new(selector_config.clone()); diff --git a/src/lib.rs b/src/lib.rs index e7248d27b..2620a54b9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1068,7 +1068,7 @@ pub async fn debug_recipe( .recreate_directories() .into_diagnostic()?; let output = output.fetch_sources(&tool_config).await.into_diagnostic()?; - let output = output + let mut output = output .resolve_dependencies(&tool_config) .await .into_diagnostic()?; diff --git a/src/metadata.rs b/src/metadata.rs index 2dc64b2b4..b0bf2d461 100644 --- a/src/metadata.rs +++ b/src/metadata.rs @@ -820,6 +820,7 @@ mod test { }; use rattler_digest::{Md5, Sha256, parse_digest_from_hex}; use rstest::*; + use std::collections::HashMap; use std::str::FromStr; use url::Url; @@ -893,6 +894,7 @@ mod test { .unwrap(), channel: Some("test".into()), }], + library_mapping: HashMap::new(), }; // test yaml roundtrip diff --git a/src/post_process/checks.rs b/src/post_process/checks.rs index 84e792dce..4cbfab360 100644 --- a/src/post_process/checks.rs +++ b/src/post_process/checks.rs @@ -15,7 +15,7 @@ use crate::{ use crate::render::resolved_dependencies::RunExportDependency; use globset::{Glob, GlobSet, GlobSetBuilder}; -use rattler_conda_types::{PackageName, PrefixRecord}; +use rattler_conda_types::PackageName; #[derive(thiserror::Error, Debug)] pub enum LinkingCheckError { @@ -109,43 +109,64 @@ impl fmt::Display for LinkedPackage { } } -/// Returns the list of resolved run dependencies. -fn resolved_run_dependencies( +/// Returns the list of resolved run dependencies and a mapping from dependency names to source packages. +fn resolved_run_dependencies_with_sources( output: &Output, package_to_nature_map: &HashMap, -) -> Vec { - output +) -> (Vec, HashMap) { + let mut deps = Vec::new(); + let mut dep_to_source = HashMap::new(); + + for dep in output .finalized_dependencies .clone() .expect("failed to get the finalized dependencies") .run .depends .iter() - .filter(|dep| { - if let Some(RunExportDependency { from, .. }) = dep.as_run_export() { - from != &String::from("build") - } else { - true + { + // Filter out run exports from build environments + if let Some(RunExportDependency { + from, + source_package, + .. + }) = dep.as_run_export() + { + if from == &String::from("build") || from == &String::from("cache-build") { + continue; } - }) - .flat_map(|dep| { + if let Some(package_name) = &dep.spec().name { if let Some(nature) = package_to_nature_map.get(package_name) { if nature != &PackageNature::DSOLibrary { - return None; + continue; } } - dep.spec().name.to_owned().map(|v| v.as_source().to_owned()) - } else { - None + let dep_name = package_name.as_source().to_owned(); + deps.push(dep_name.clone()); + // Map the dependency name to its source package + dep_to_source.insert(dep_name, source_package.clone()); + } + } else if let Some(package_name) = &dep.spec().name { + if let Some(nature) = package_to_nature_map.get(package_name) { + if nature != &PackageNature::DSOLibrary { + continue; + } } - }) - .collect() + let dep_name = package_name.as_source().to_owned(); + deps.push(dep_name.clone()); + // For non-run-export deps, the source is the same as the dependency + dep_to_source.insert(dep_name.clone(), dep_name); + } + } + + (deps, dep_to_source) } -/// Returns the system libraries found in sysroot. +/// Returns the system libraries patterns. fn find_system_libs(output: &Output) -> Result { let mut system_libs = GlobSetBuilder::new(); + if output.build_configuration.target_platform.is_osx() { let default_sysroot = vec![ "/opt/X11/**/*.dylib", @@ -178,42 +199,39 @@ fn find_system_libs(output: &Output) -> Result { return system_libs.build(); } - if let Some(sysroot_package) = output - .finalized_dependencies - .clone() - .expect("failed to get the finalized dependencies") - .build - .and_then(|deps| { - deps.resolved.into_iter().find(|v| { - v.file_name.starts_with(&format!( - "sysroot_{}", - output.build_configuration.target_platform - )) - }) - }) - { - let prefix_record_name = format!( - "conda-meta/{}-{}-{}.json", - sysroot_package.package_record.name.as_normalized(), - sysroot_package.package_record.version, - sysroot_package.package_record.build - ); - - let sysroot_path = output - .build_configuration - .directories - .build_prefix - .join(prefix_record_name); - let record = PrefixRecord::from_path(sysroot_path).unwrap(); - let so_glob = Glob::new("*.so*")?.compile_matcher(); - for file in record.files { - if let Some(file_name) = file.file_name() { - if so_glob.is_match(file_name) { - system_libs.add(Glob::new(&file_name.to_string_lossy())?); - } - } - } + // Always add core system libraries that are provided by the OS + // These are the libraries that are always available and don't need to be packaged + let core_system_libs = [ + "libc.so*", + "libc-*.so", + "libm.so*", + "libm-*.so", + "libdl.so*", + "libdl-*.so", + "libpthread.so*", + "libpthread-*.so", + "librt.so*", + "librt-*.so", + "ld-linux*.so*", + "ld64.so*", + "libresolv.so*", + "libresolv-*.so", + "libnsl.so*", + "libnsl-*.so", + "libutil.so*", + "libutil-*.so", + "libcrypt.so*", + "libcrypt-*.so", + ]; + + for pattern in &core_system_libs { + system_libs.add(Glob::new(pattern)?); } + + // Note: We intentionally do NOT add libraries from sysroot packages to the system_libs. + // The sysroot package contains many libraries that are not true system libraries + // (e.g., libz, libssl, etc.) that should be detected as overlinking if not in dependencies. + system_libs.build() } @@ -227,9 +245,31 @@ pub fn perform_linking_checks( let prefix_info = PrefixInfo::from_prefix(output.prefix())?; - let resolved_run_dependencies = - resolved_run_dependencies(output, &prefix_info.package_to_nature); + let (resolved_run_dependencies, dep_to_source) = + resolved_run_dependencies_with_sources(output, &prefix_info.package_to_nature); tracing::trace!("Resolved run dependencies: {resolved_run_dependencies:#?}",); + tracing::trace!("Dependency to source mapping: {dep_to_source:#?}",); + + // Get library mapping from finalized dependencies + let mut library_mapping = HashMap::new(); + + // Collect from regular dependencies + if let Some(deps) = &output.finalized_dependencies { + if let Some(host) = &deps.host { + library_mapping.extend(host.library_mapping.clone()); + } + // Note: We intentionally do NOT include build dependencies here. + // Libraries from build dependencies should not be linked against by host binaries. + // If a host binary links against a build dependency library, it's overlinking. + } + + // Also merge in library mapping from cache dependencies if available + if let Some(cache_deps) = &output.finalized_cache_dependencies { + if let Some(host) = &cache_deps.host { + library_mapping.extend(host.library_mapping.clone()); + } + // Note: We intentionally do NOT include cache build dependencies here. + } // check all DSOs and what they are linking let target_platform = output.target_platform(); @@ -285,6 +325,9 @@ pub fn perform_linking_checks( } tracing::trace!("Package files: {package_files:#?}"); + // Track dependencies found in cache builds + let mut cache_matched_deps: HashSet = HashSet::new(); + let mut linked_packages = Vec::new(); for package in package_files.iter() { let mut link_info = PackageLinkInfo { @@ -293,7 +336,7 @@ pub fn perform_linking_checks( }; // If the package that we are linking against does not exist in run // dependencies then it is "overlinking". - for lib in &package.shared_libraries { + 'library_loop: for lib in &package.shared_libraries { let lib = lib.strip_prefix(host_prefix).unwrap_or(lib); // skip @self on macOS @@ -310,15 +353,6 @@ pub fn perform_linking_checks( continue; } - // Check if the library is one of the system libraries (i.e. comes from sysroot). - if system_libs.is_match(lib) { - link_info.linked_packages.push(LinkedPackage { - name: lib.to_path_buf(), - link_origin: LinkOrigin::System, - }); - continue; - } - // Check if the package itself has the shared library. if new_files.iter().any(|file| file.ends_with(lib)) { link_info.linked_packages.push(LinkedPackage { @@ -328,6 +362,69 @@ pub fn perform_linking_checks( continue; } + // Use library mapping to find which package provides this library + if let Some(lib_name) = lib.file_name().and_then(|n| n.to_str()) { + tracing::debug!("Looking up library {} in mapping", lib_name); + if let Some(package_name) = library_mapping.get(lib_name) { + let package_str = package_name.as_normalized(); + tracing::debug!( + "Found library {} belongs to package {}", + lib_name, + package_str + ); + + // Check if this package is in our run dependencies + // We need to check both: + // 1. Direct match: dependency name == package name + // 2. Run export match: source package == package name + let dependency_match = dep_to_source.iter().find(|(dep_name, source_pkg)| { + dep_name.as_str() == package_str || source_pkg.as_str() == package_str + }); + + if let Some((dep_name, _)) = dependency_match { + link_info.linked_packages.push(LinkedPackage { + name: lib.to_path_buf(), + link_origin: LinkOrigin::ForeignPackage(dep_name.clone()), + }); + + // Track that this dependency is used (for cache builds) + if output.finalized_cache_dependencies.is_some() { + cache_matched_deps.insert(dep_name.clone()); + } + + continue 'library_loop; + } + // If the library is from a conda package but not in run dependencies, + // this is overlinking + tracing::debug!( + "Library {} from package {} not in run dependencies", + lib_name, + package_str + ); + } else { + tracing::debug!("Library {} not found in mapping", lib_name); + } + } + + // Check if the library is one of the system libraries (i.e. comes from sysroot). + // We only consider core system libraries that are always available + // This check comes AFTER library mapping to avoid marking conda-provided libraries as system + if let Some(file_name) = lib.file_name() { + let file_name_str = file_name.to_string_lossy(); + tracing::info!("Checking if {} is a system library", file_name_str); + + if system_libs.is_match(file_name) { + tracing::info!("{} matched as system library", file_name_str); + link_info.linked_packages.push(LinkedPackage { + name: lib.to_path_buf(), + link_origin: LinkOrigin::System, + }); + continue; + } else { + tracing::info!("{} did not match system library patterns", file_name_str); + } + } + // Check if we allow overlinking. if dynamic_linking.missing_dso_allowlist().is_match(lib) { tracing::info!( @@ -370,7 +467,8 @@ pub fn perform_linking_checks( // If there are any unused run dependencies then it is "overdepending". for run_dependency in resolved_run_dependencies.iter() { - if !package_files + // Check if the dependency is used in linked_dsos + let used_in_linked_dsos = package_files .iter() .map(|package| { package @@ -379,8 +477,12 @@ pub fn perform_linking_checks( .map(|v| v.as_source().to_string()) .collect::>() }) - .any(|libraries| libraries.contains(run_dependency)) - { + .any(|libraries| libraries.contains(run_dependency)); + + // Also check if it was matched in cache builds + let used_in_cache = cache_matched_deps.contains(run_dependency); + + if !used_in_linked_dsos && !used_in_cache { if dynamic_linking.error_on_overdepending() { return Err(LinkingCheckError::Overdepending { package: PathBuf::from(run_dependency), diff --git a/src/render/resolved_dependencies.rs b/src/render/resolved_dependencies.rs index 843cb012b..c46ae8b4a 100644 --- a/src/render/resolved_dependencies.rs +++ b/src/render/resolved_dependencies.rs @@ -2,6 +2,7 @@ use std::{ borrow::Cow, collections::HashMap, fmt::{Display, Formatter}, + path::Path, sync::Arc, }; @@ -9,8 +10,8 @@ use indicatif::{HumanBytes, MultiProgress, ProgressBar}; use rattler::install::Placement; use rattler_cache::package_cache::PackageCache; use rattler_conda_types::{ - ChannelUrl, MatchSpec, NamelessMatchSpec, PackageName, PackageRecord, Platform, RepoDataRecord, - package::RunExportsJson, + ChannelUrl, MatchSpec, NamelessMatchSpec, PackageName, PackageRecord, Platform, PrefixRecord, + RepoDataRecord, package::RunExportsJson, }; use reqwest_middleware::ClientWithMiddleware; use serde::{Deserialize, Serialize}; @@ -245,6 +246,9 @@ pub struct FinalizedRunDependencies { pub struct ResolvedDependencies { pub specs: Vec, pub resolved: Vec, + /// Mapping from library names to the packages that provide them + #[serde(skip_serializing_if = "HashMap::is_empty", default)] + pub library_mapping: HashMap, } fn short_channel(channel: Option<&str>) -> String { @@ -260,6 +264,50 @@ fn short_channel(channel: Option<&str>) -> String { } } +/// Extract library files from a package's metadata in the prefix +fn extract_library_info_from_prefix( + prefix: &Path, + package_name: &PackageName, +) -> Result, std::io::Error> { + let conda_meta = prefix.join("conda-meta"); + let package_prefix = format!("{}-", package_name.as_normalized()); + let metadata_path = fs_err::read_dir(&conda_meta)? + .filter_map(Result::ok) + .find(|entry| { + entry + .file_name() + .to_str() + .filter(|name| name.starts_with(&package_prefix) && name.ends_with(".json")) + .is_some() + }) + .map(|entry| entry.path()); + + let Some(path) = metadata_path else { + return Ok(Vec::new()); + }; + + let record = PrefixRecord::from_path(&path) + .map_err(|e| std::io::Error::new(std::io::ErrorKind::InvalidData, e))?; + + let libraries = record + .files + .into_iter() + .filter_map(|path| { + let file_name = path.file_name()?.to_str()?; + let is_library = file_name.ends_with(".so") + || file_name.contains(".so.") + || file_name.ends_with(".dylib") + || file_name.contains(".dylib.") + || file_name.ends_with(".dll") + || file_name.ends_with(".pyd"); + + is_library.then(|| file_name.to_string()) + }) + .collect(); + + Ok(libraries) +} + impl ResolvedDependencies { pub fn to_table(&self, table: comfy_table::Table, long: bool) -> comfy_table::Table { let mut table = table; @@ -599,8 +647,53 @@ async fn amend_run_exports( Ok(()) } +/// Populate library mappings for resolved dependencies after packages are installed +pub fn populate_library_mappings( + dependencies: &mut FinalizedDependencies, + build_prefix: &Path, + host_prefix: &Path, +) -> Result<(), std::io::Error> { + // Function to populate library mapping for a given environment + fn populate_env_libraries( + resolved_deps: &mut ResolvedDependencies, + prefix: &Path, + ) -> Result<(), std::io::Error> { + resolved_deps.library_mapping.clear(); + for record in &resolved_deps.resolved { + match extract_library_info_from_prefix(prefix, &record.package_record.name) { + Ok(libraries) => { + for lib in libraries { + resolved_deps + .library_mapping + .insert(lib, record.package_record.name.clone()); + } + } + Err(e) => { + tracing::debug!( + "Failed to extract library info from {}: {}", + record.package_record.name.as_normalized(), + e + ); + } + } + } + Ok(()) + } + + // Populate library mappings for both build and host environments + if let Some(build_deps) = &mut dependencies.build { + populate_env_libraries(build_deps, build_prefix)?; + } + + if let Some(host_deps) = &mut dependencies.host { + populate_env_libraries(host_deps, host_prefix)?; + } + + Ok(()) +} + pub async fn install_environments( - output: &Output, + build_config: &BuildConfiguration, dependencies: &FinalizedDependencies, tool_configuration: &tool_configuration::Configuration, ) -> Result<(), ResolveError> { @@ -612,8 +705,8 @@ pub async fn install_environments( .as_ref() .map(|deps| &deps.resolved) .unwrap_or(&EMPTY_RECORDS), - output.build_configuration.build_platform.platform, - &output.build_configuration.directories.build_prefix, + build_config.build_platform.platform, + &build_config.directories.build_prefix, tool_configuration, ) .await?; @@ -625,8 +718,8 @@ pub async fn install_environments( .as_ref() .map(|deps| &deps.resolved) .unwrap_or(&EMPTY_RECORDS), - output.build_configuration.host_platform.platform, - &output.build_configuration.directories.host_prefix, + build_config.host_platform.platform, + &build_config.directories.host_prefix, tool_configuration, ) .await?; @@ -742,6 +835,7 @@ pub(crate) async fn resolve_dependencies( Some(ResolvedDependencies { specs: build_env_specs, resolved, + library_mapping: HashMap::new(), // Will be populated after installation }) } else { None @@ -838,6 +932,7 @@ pub(crate) async fn resolve_dependencies( Some(ResolvedDependencies { specs: host_env_specs, resolved, + library_mapping: HashMap::new(), // Will be populated after installation }) } else { None @@ -1008,15 +1103,25 @@ impl Output { /// Install the environments of the outputs. Assumes that the dependencies /// for the environment have already been resolved. pub async fn install_environments( - &self, + &mut self, tool_configuration: &Configuration, ) -> Result<(), ResolveError> { let dependencies = self .finalized_dependencies - .as_ref() + .as_mut() .ok_or(ResolveError::FinalizedDependencyNotFound)?; - install_environments(self, dependencies, tool_configuration).await + install_environments(&self.build_configuration, dependencies, tool_configuration).await?; + + // Populate library mappings after packages are installed + populate_library_mappings( + dependencies, + &self.build_configuration.directories.build_prefix, + &self.build_configuration.directories.host_prefix, + ) + .map_err(|e| ResolveError::DependencyResolutionError(e.into()))?; + + Ok(()) } } diff --git a/test-data/recipes/cache/recipe-linking-checks.yaml b/test-data/recipes/cache/recipe-linking-checks.yaml new file mode 100644 index 000000000..707aff89f --- /dev/null +++ b/test-data/recipes/cache/recipe-linking-checks.yaml @@ -0,0 +1,111 @@ +# Test for cache linking check issue where overlinking errors occur incorrectly +# when using cache with multiple outputs. This tests that dependencies like fmt +# are correctly detected even when they're not installed in the current prefix. +schema_version: 1 + +recipe: + name: cache-linking-test + version: "1.0.0" + +build: + number: 0 + +cache: + source: + path: . + requirements: + build: + - cmake + - ninja + - ${{ compiler('cxx') }} + - if: linux + then: sysroot_linux-64 + host: + - fmt + build: + script: + - if: unix + then: | + #!/bin/bash + set -ex + + cat <> CMakeLists.txt + cmake_minimum_required(VERSION 3.26) + + project(program LANGUAGES CXX) + add_executable(program main.cpp) + + find_package(fmt CONFIG REQUIRED) + target_link_libraries(program PRIVATE fmt::fmt) + EOT + + cat <> main.cpp + #include + + int main(int argc, char **argv) + { + fmt::print("Hello from {}\\n", argv[0]); + return 0; + } + EOT + + cmake . -GNinja -DCMAKE_BUILD_TYPE=Release + cmake --build . --config Release + + echo "=== Checking linked libraries ===" + if [[ "$target_platform" == linux-* ]]; then + ldd program || true + readelf -d program | grep NEEDED || true + elif [[ "$target_platform" == osx-* ]]; then + otool -L program || true + fi + + echo "=== Running program ===" + ./program + mkdir -p $PREFIX/bin + cp program $PREFIX/bin + else: | + @echo off + + echo cmake_minimum_required(VERSION 3.26) > CMakeLists.txt + echo. >> CMakeLists.txt + echo project(program LANGUAGES CXX) >> CMakeLists.txt + echo add_executable(program main.cpp) >> CMakeLists.txt + echo. >> CMakeLists.txt + echo find_package(fmt CONFIG REQUIRED) >> CMakeLists.txt + echo target_link_libraries(program PRIVATE fmt::fmt) >> CMakeLists.txt + + ( + echo #include ^ + echo. + echo int main(int argc, char **argv^) + echo { + echo fmt::print("Hello from {}\\n", argv[0]^); + echo return 0; + echo } + ) > main.cpp + + cmake . -GNinja -DCMAKE_BUILD_TYPE=Release + if errorlevel 1 exit 1 + + cmake --build . --config Release + if errorlevel 1 exit 1 + + echo === Running program === + program.exe + if errorlevel 1 exit 1 + + if not exist %PREFIX%\bin mkdir %PREFIX%\bin + copy program.exe %PREFIX%\bin\ + if errorlevel 1 exit 1 + +outputs: + - package: + name: cache-linking-output + version: "1.0.0" + build: + files: + - bin/ + # Enable strict checks to make the test fail on overlinking + dynamic_linking: + overlinking_behavior: error diff --git a/test-data/recipes/cache/recipe-overdepending.yaml b/test-data/recipes/cache/recipe-overdepending.yaml new file mode 100644 index 000000000..4d6c2e6ec --- /dev/null +++ b/test-data/recipes/cache/recipe-overdepending.yaml @@ -0,0 +1,127 @@ +# Test for cache overdepending issue where false warnings occur +# when dependencies are used but not installed in the current prefix +schema_version: 1 + +recipe: + name: cache-overdepending-test + version: "1.0.0" + +build: + number: 0 + +cache: + source: + path: . + requirements: + build: + - cmake + - ninja + - ${{ compiler('cxx') }} + - if: linux + then: sysroot_linux-64 + host: + - fmt + - zlib # This will be used + - libcurl # This will NOT be used - should trigger overdepending warning + build: + script: + - if: unix + then: | + #!/bin/bash + set -ex + + cat <> CMakeLists.txt + cmake_minimum_required(VERSION 3.26) + + project(program LANGUAGES CXX) + add_executable(program main.cpp) + + find_package(fmt CONFIG REQUIRED) + find_package(ZLIB REQUIRED) + # Note: We find libcurl but don't actually link against it + find_package(CURL REQUIRED) + + target_link_libraries(program PRIVATE fmt::fmt ZLIB::ZLIB) + EOT + + cat <> main.cpp + #include + #include + + int main(int argc, char **argv) + { + fmt::print("Hello from {}\\n", argv[0]); + fmt::print("zlib version: {}\\n", zlibVersion()); + // Note: We're NOT using libcurl here + return 0; + } + EOT + + cmake . -GNinja -DCMAKE_BUILD_TYPE=Release + cmake --build . --config Release + + echo "=== Checking linked libraries ===" + if [[ "$target_platform" == linux-* ]]; then + ldd program || true + readelf -d program | grep NEEDED || true + elif [[ "$target_platform" == osx-* ]]; then + otool -L program || true + fi + + echo "=== Running program ===" + ./program + mkdir -p $PREFIX/bin + cp program $PREFIX/bin + else: | + @echo off + + echo cmake_minimum_required(VERSION 3.26) > CMakeLists.txt + echo. >> CMakeLists.txt + echo project(program LANGUAGES CXX) >> CMakeLists.txt + echo add_executable(program main.cpp) >> CMakeLists.txt + echo. >> CMakeLists.txt + echo find_package(fmt CONFIG REQUIRED) >> CMakeLists.txt + echo find_package(ZLIB REQUIRED) >> CMakeLists.txt + echo # Note: We find libcurl but don't actually link against it >> CMakeLists.txt + echo find_package(CURL REQUIRED) >> CMakeLists.txt + echo. >> CMakeLists.txt + echo target_link_libraries(program PRIVATE fmt::fmt ZLIB::ZLIB) >> CMakeLists.txt + + ( + echo #include ^ + echo #include ^ + echo. + echo int main(int argc, char **argv^) + echo { + echo fmt::print("Hello from {}\\n", argv[0]^); + echo fmt::print("zlib version: {}\\n", zlibVersion(^)^); + echo // Note: We're NOT using libcurl here + echo return 0; + echo } + ) > main.cpp + + cmake . -GNinja -DCMAKE_BUILD_TYPE=Release + if errorlevel 1 exit 1 + + cmake --build . --config Release + if errorlevel 1 exit 1 + + echo === Running program === + program.exe + if errorlevel 1 exit 1 + + if not exist %PREFIX%\bin mkdir %PREFIX%\bin + copy program.exe %PREFIX%\bin\ + if errorlevel 1 exit 1 + +outputs: + - package: + name: cache-overdepending-output + version: "1.0.0" + build: + files: + - bin/ + # Enable strict checks to make the test fail on overdepending + dynamic_linking: + overlinking_behavior: error + overdepending_behavior: error \ No newline at end of file diff --git a/test/end-to-end/test_simple.py b/test/end-to-end/test_simple.py index 9cb3db401..06b9622ea 100644 --- a/test/end-to-end/test_simple.py +++ b/test/end-to-end/test_simple.py @@ -2164,3 +2164,41 @@ def test_caseinsensitive(rattler_build: RattlerBuild, recipes: Path, tmp_path: P assert "cmake/test_file.txt" in paths assert "TEST.txt" in paths assert "test.txt" in paths + + +def test_cache_linking_checks( + rattler_build: RattlerBuild, recipes: Path, tmp_path: Path +): + """Test that cache doesn't cause false positive overdepending errors.""" + rattler_build.build( + recipes / "cache/recipe-linking-checks.yaml", + tmp_path, + extra_args=["--experimental"], + ) + + # Verify the package was created + pkg = get_extracted_package(tmp_path, "cache-linking-output") + assert pkg.exists() + assert (pkg / "bin/program").exists() + + +def test_cache_overdepending_checks( + rattler_build: RattlerBuild, recipes: Path, tmp_path: Path +): + """Test that cache correctly detects real overdepending errors.""" + from subprocess import STDOUT + + args = rattler_build.build_args( + recipes / "cache/recipe-overdepending.yaml", + tmp_path, + extra_args=["--experimental"], + ) + + with pytest.raises(CalledProcessError) as exc_info: + rattler_build(*args, stderr=STDOUT) + + error_output = ( + exc_info.value.output.decode("utf-8") if exc_info.value.output else "" + ) + # Should have an overdepending error for libcurl since it's not used + assert "Overdepending against: libcurl" in error_output From 5a7584e4fc428e642e0b4f41668cd5935e7f36d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Thu, 12 Jun 2025 00:32:12 +0300 Subject: [PATCH 02/25] white lines of recipes --- .../recipes/cache/recipe-linking-checks.yaml | 28 ++++++++-------- .../recipes/cache/recipe-overdepending.yaml | 32 +++++++++---------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/test-data/recipes/cache/recipe-linking-checks.yaml b/test-data/recipes/cache/recipe-linking-checks.yaml index 707aff89f..ae91ddebb 100644 --- a/test-data/recipes/cache/recipe-linking-checks.yaml +++ b/test-data/recipes/cache/recipe-linking-checks.yaml @@ -28,30 +28,30 @@ cache: then: | #!/bin/bash set -ex - + cat <> CMakeLists.txt cmake_minimum_required(VERSION 3.26) - + project(program LANGUAGES CXX) add_executable(program main.cpp) - + find_package(fmt CONFIG REQUIRED) target_link_libraries(program PRIVATE fmt::fmt) EOT - + cat <> main.cpp #include - + int main(int argc, char **argv) { fmt::print("Hello from {}\\n", argv[0]); return 0; } EOT - + cmake . -GNinja -DCMAKE_BUILD_TYPE=Release cmake --build . --config Release - + echo "=== Checking linked libraries ===" if [[ "$target_platform" == linux-* ]]; then ldd program || true @@ -59,14 +59,14 @@ cache: elif [[ "$target_platform" == osx-* ]]; then otool -L program || true fi - + echo "=== Running program ===" ./program mkdir -p $PREFIX/bin cp program $PREFIX/bin else: | @echo off - + echo cmake_minimum_required(VERSION 3.26) > CMakeLists.txt echo. >> CMakeLists.txt echo project(program LANGUAGES CXX) >> CMakeLists.txt @@ -74,7 +74,7 @@ cache: echo. >> CMakeLists.txt echo find_package(fmt CONFIG REQUIRED) >> CMakeLists.txt echo target_link_libraries(program PRIVATE fmt::fmt) >> CMakeLists.txt - + ( echo #include ^ echo. @@ -84,17 +84,17 @@ cache: echo return 0; echo } ) > main.cpp - + cmake . -GNinja -DCMAKE_BUILD_TYPE=Release if errorlevel 1 exit 1 - + cmake --build . --config Release if errorlevel 1 exit 1 - + echo === Running program === program.exe if errorlevel 1 exit 1 - + if not exist %PREFIX%\bin mkdir %PREFIX%\bin copy program.exe %PREFIX%\bin\ if errorlevel 1 exit 1 diff --git a/test-data/recipes/cache/recipe-overdepending.yaml b/test-data/recipes/cache/recipe-overdepending.yaml index 4d6c2e6ec..4b665ba60 100644 --- a/test-data/recipes/cache/recipe-overdepending.yaml +++ b/test-data/recipes/cache/recipe-overdepending.yaml @@ -29,25 +29,25 @@ cache: then: | #!/bin/bash set -ex - + cat <> CMakeLists.txt cmake_minimum_required(VERSION 3.26) - + project(program LANGUAGES CXX) add_executable(program main.cpp) - + find_package(fmt CONFIG REQUIRED) find_package(ZLIB REQUIRED) # Note: We find libcurl but don't actually link against it find_package(CURL REQUIRED) - + target_link_libraries(program PRIVATE fmt::fmt ZLIB::ZLIB) EOT - + cat <> main.cpp #include #include - + int main(int argc, char **argv) { fmt::print("Hello from {}\\n", argv[0]); @@ -56,10 +56,10 @@ cache: return 0; } EOT - + cmake . -GNinja -DCMAKE_BUILD_TYPE=Release cmake --build . --config Release - + echo "=== Checking linked libraries ===" if [[ "$target_platform" == linux-* ]]; then ldd program || true @@ -67,14 +67,14 @@ cache: elif [[ "$target_platform" == osx-* ]]; then otool -L program || true fi - + echo "=== Running program ===" ./program mkdir -p $PREFIX/bin cp program $PREFIX/bin else: | @echo off - + echo cmake_minimum_required(VERSION 3.26) > CMakeLists.txt echo. >> CMakeLists.txt echo project(program LANGUAGES CXX) >> CMakeLists.txt @@ -86,7 +86,7 @@ cache: echo find_package(CURL REQUIRED) >> CMakeLists.txt echo. >> CMakeLists.txt echo target_link_libraries(program PRIVATE fmt::fmt ZLIB::ZLIB) >> CMakeLists.txt - + ( echo #include ^ echo #include ^ @@ -99,17 +99,17 @@ cache: echo return 0; echo } ) > main.cpp - + cmake . -GNinja -DCMAKE_BUILD_TYPE=Release if errorlevel 1 exit 1 - + cmake --build . --config Release if errorlevel 1 exit 1 - + echo === Running program === program.exe if errorlevel 1 exit 1 - + if not exist %PREFIX%\bin mkdir %PREFIX%\bin copy program.exe %PREFIX%\bin\ if errorlevel 1 exit 1 @@ -124,4 +124,4 @@ outputs: # Enable strict checks to make the test fail on overdepending dynamic_linking: overlinking_behavior: error - overdepending_behavior: error \ No newline at end of file + overdepending_behavior: error From 012691e2ff4678a2ca0c36cce0301d0aaa6483ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Mon, 23 Jun 2025 12:55:27 +0300 Subject: [PATCH 03/25] dynamical instead of harcoded --- src/post_process/checks.rs | 127 +++++++++++++++++++++++++------------ 1 file changed, 88 insertions(+), 39 deletions(-) diff --git a/src/post_process/checks.rs b/src/post_process/checks.rs index 4cbfab360..29e451c25 100644 --- a/src/post_process/checks.rs +++ b/src/post_process/checks.rs @@ -15,7 +15,7 @@ use crate::{ use crate::render::resolved_dependencies::RunExportDependency; use globset::{Glob, GlobSet, GlobSetBuilder}; -use rattler_conda_types::PackageName; +use rattler_conda_types::{PackageName, PrefixRecord}; #[derive(thiserror::Error, Debug)] pub enum LinkingCheckError { @@ -199,38 +199,71 @@ fn find_system_libs(output: &Output) -> Result { return system_libs.build(); } - // Always add core system libraries that are provided by the OS - // These are the libraries that are always available and don't need to be packaged - let core_system_libs = [ - "libc.so*", - "libc-*.so", - "libm.so*", - "libm-*.so", - "libdl.so*", - "libdl-*.so", - "libpthread.so*", - "libpthread-*.so", - "librt.so*", - "librt-*.so", - "ld-linux*.so*", - "ld64.so*", - "libresolv.so*", - "libresolv-*.so", - "libnsl.so*", - "libnsl-*.so", - "libutil.so*", - "libutil-*.so", - "libcrypt.so*", - "libcrypt-*.so", - ]; - - for pattern in &core_system_libs { - system_libs.add(Glob::new(pattern)?); + // Try to locate a `sysroot_` package in either the regular build + // dependencies *or* the cache build dependencies. The first one found is + // used to derive the list of system libraries. + let mut sysroot_package = output + .finalized_dependencies + .as_ref() + .and_then(|deps| deps.build.as_ref()) + .and_then(|deps| { + deps.resolved.iter().find(|v| { + v.file_name.starts_with(&format!( + "sysroot_{}", + output.build_configuration.target_platform + )) + }) + }) + .cloned(); + + if sysroot_package.is_none() { + sysroot_package = output + .finalized_cache_dependencies + .as_ref() + .and_then(|deps| deps.build.as_ref()) + .and_then(|deps| { + deps.resolved.iter().find(|v| { + v.file_name.starts_with(&format!( + "sysroot_{}", + output.build_configuration.target_platform + )) + }) + }) + .cloned(); } - // Note: We intentionally do NOT add libraries from sysroot packages to the system_libs. - // The sysroot package contains many libraries that are not true system libraries - // (e.g., libz, libssl, etc.) that should be detected as overlinking if not in dependencies. + if let Some(sysroot_package) = sysroot_package { + let prefix_record_name = format!( + "conda-meta/{}-{}-{}.json", + sysroot_package.package_record.name.as_normalized(), + sysroot_package.package_record.version, + sysroot_package.package_record.build + ); + + let sysroot_path = output + .build_configuration + .directories + .build_prefix + .join(prefix_record_name); + + if let Ok(record) = PrefixRecord::from_path(&sysroot_path) { + // match all shared objects (e.g. libfoo.so, libfoo.so.1.2) + let so_glob = Glob::new("*.so*")?.compile_matcher(); + for file in record.files { + if let Some(file_name) = file.file_name() { + if so_glob.is_match(file_name) { + system_libs.add(Glob::new(&file_name.to_string_lossy())?); + } + } + } + } else { + // If the prefix record cannot be found, continue without adding patterns. + tracing::debug!("sysroot prefix record not found at {:?}", sysroot_path); + } + } + + // If no sysroot package was found, we fall back to an empty set – in that case every + // linked library will be validated against the run dependencies. system_libs.build() } @@ -258,9 +291,14 @@ pub fn perform_linking_checks( if let Some(host) = &deps.host { library_mapping.extend(host.library_mapping.clone()); } - // Note: We intentionally do NOT include build dependencies here. - // Libraries from build dependencies should not be linked against by host binaries. - // If a host binary links against a build dependency library, it's overlinking. + + if let Some(build) = &deps.build { + for (lib, pkg) in &build.library_mapping { + if pkg.as_normalized().starts_with("sysroot_") { + library_mapping.insert(lib.clone(), pkg.clone()); + } + } + } } // Also merge in library mapping from cache dependencies if available @@ -268,7 +306,14 @@ pub fn perform_linking_checks( if let Some(host) = &cache_deps.host { library_mapping.extend(host.library_mapping.clone()); } - // Note: We intentionally do NOT include cache build dependencies here. + + if let Some(build) = &cache_deps.build { + for (lib, pkg) in &build.library_mapping { + if pkg.as_normalized().starts_with("sysroot_") { + library_mapping.insert(lib.clone(), pkg.clone()); + } + } + } } // check all DSOs and what they are linking @@ -373,10 +418,14 @@ pub fn perform_linking_checks( package_str ); - // Check if this package is in our run dependencies - // We need to check both: - // 1. Direct match: dependency name == package name - // 2. Run export match: source package == package name + if package_str.starts_with("sysroot_") { + link_info.linked_packages.push(LinkedPackage { + name: lib.to_path_buf(), + link_origin: LinkOrigin::System, + }); + continue 'library_loop; + } + let dependency_match = dep_to_source.iter().find(|(dep_name, source_pkg)| { dep_name.as_str() == package_str || source_pkg.as_str() == package_str }); From 91a52775002cf2113982e0dfc3e447868913d708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Mon, 23 Jun 2025 16:17:50 +0300 Subject: [PATCH 04/25] further refining for dynamical approach --- src/metadata.rs | 1 + src/post_process/checks.rs | 54 +++++++++++++++++------------ src/post_process/package_nature.rs | 3 +- src/render/resolved_dependencies.rs | 27 +++++++++++++++ 4 files changed, 62 insertions(+), 23 deletions(-) diff --git a/src/metadata.rs b/src/metadata.rs index b0bf2d461..cf05a5f94 100644 --- a/src/metadata.rs +++ b/src/metadata.rs @@ -895,6 +895,7 @@ mod test { channel: Some("test".into()), }], library_mapping: HashMap::new(), + package_nature: HashMap::new(), }; // test yaml roundtrip diff --git a/src/post_process/checks.rs b/src/post_process/checks.rs index 29e451c25..ebce7bb91 100644 --- a/src/post_process/checks.rs +++ b/src/post_process/checks.rs @@ -4,13 +4,11 @@ use std::{ path::{Path, PathBuf}, }; +use crate::windows::link::WIN_ALLOWLIST; use crate::{ metadata::Output, - post_process::{package_nature::PrefixInfo, relink::RelinkError}, -}; -use crate::{ + post_process::relink::RelinkError, post_process::{package_nature::PackageNature, relink}, - windows::link::WIN_ALLOWLIST, }; use crate::render::resolved_dependencies::RunExportDependency; @@ -276,13 +274,6 @@ pub fn perform_linking_checks( let dynamic_linking = output.recipe.build().dynamic_linking(); let system_libs = find_system_libs(output)?; - let prefix_info = PrefixInfo::from_prefix(output.prefix())?; - - let (resolved_run_dependencies, dep_to_source) = - resolved_run_dependencies_with_sources(output, &prefix_info.package_to_nature); - tracing::trace!("Resolved run dependencies: {resolved_run_dependencies:#?}",); - tracing::trace!("Dependency to source mapping: {dep_to_source:#?}",); - // Get library mapping from finalized dependencies let mut library_mapping = HashMap::new(); @@ -316,6 +307,32 @@ pub fn perform_linking_checks( } } + // Combine package -> nature information from all resolved environments + let mut package_to_nature = HashMap::new(); + + if let Some(deps) = &output.finalized_dependencies { + if let Some(host) = &deps.host { + package_to_nature.extend(host.package_nature.clone()); + } + if let Some(build) = &deps.build { + package_to_nature.extend(build.package_nature.clone()); + } + } + + if let Some(cache_deps) = &output.finalized_cache_dependencies { + if let Some(host) = &cache_deps.host { + package_to_nature.extend(host.package_nature.clone()); + } + if let Some(build) = &cache_deps.build { + package_to_nature.extend(build.package_nature.clone()); + } + } + + let (resolved_run_dependencies, dep_to_source) = + resolved_run_dependencies_with_sources(output, &package_to_nature); + tracing::trace!("Resolved run dependencies: {resolved_run_dependencies:#?}",); + tracing::trace!("Dependency to source mapping: {dep_to_source:#?}",); + // check all DSOs and what they are linking let target_platform = output.target_platform(); let host_prefix = output.prefix(); @@ -334,17 +351,10 @@ pub fn perform_linking_checks( } let lib = resolved.as_ref().unwrap_or(lib); - if let Ok(libpath) = lib.strip_prefix(host_prefix) { - if let Some(package) = prefix_info - .path_to_package - .get(&libpath.to_path_buf().into()) - { - if let Some(nature) = prefix_info.package_to_nature.get(package) { - // Only take shared libraries into account. - if nature == &PackageNature::DSOLibrary { - file_dsos.push((libpath.to_path_buf(), package.clone())); - } - } + if let Some(lib_file_name) = lib.file_name().and_then(|n| n.to_str()) { + if let Some(package) = library_mapping.get(lib_file_name) { + let lib_rel = lib.strip_prefix(host_prefix).unwrap_or(lib); + file_dsos.push((lib_rel.to_path_buf(), package.clone())); } } } diff --git a/src/post_process/package_nature.rs b/src/post_process/package_nature.rs index 382b35779..022d8118f 100644 --- a/src/post_process/package_nature.rs +++ b/src/post_process/package_nature.rs @@ -13,6 +13,7 @@ // | "non-library" use rattler_conda_types::{PackageName, PrefixRecord}; +use serde::{Deserialize, Serialize}; use std::{ collections::{HashMap, HashSet}, hash::Hash, @@ -21,7 +22,7 @@ use std::{ }; /// The nature of a package -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)] pub enum PackageNature { /// Libraries RunExportsLibrary, diff --git a/src/render/resolved_dependencies.rs b/src/render/resolved_dependencies.rs index c46ae8b4a..6d65daeae 100644 --- a/src/render/resolved_dependencies.rs +++ b/src/render/resolved_dependencies.rs @@ -33,6 +33,8 @@ use crate::{ tool_configuration::Configuration, }; +use crate::post_process::package_nature::{PackageNature, PrefixInfo}; + /// A enum to keep track of where a given Dependency comes from #[serde_as] #[derive(Debug, Clone, Serialize, Deserialize)] @@ -249,6 +251,9 @@ pub struct ResolvedDependencies { /// Mapping from library names to the packages that provide them #[serde(skip_serializing_if = "HashMap::is_empty", default)] pub library_mapping: HashMap, + /// Mapping from package names to their PackageNature (DSO library, interpreter, ...) + #[serde(skip_serializing_if = "HashMap::is_empty", default)] + pub package_nature: HashMap, } fn short_channel(channel: Option<&str>) -> String { @@ -659,14 +664,34 @@ pub fn populate_library_mappings( prefix: &Path, ) -> Result<(), std::io::Error> { resolved_deps.library_mapping.clear(); + + // Create PrefixInfo once for lazy lookups + let prefix_info = PrefixInfo::from_prefix(prefix)?; + for record in &resolved_deps.resolved { match extract_library_info_from_prefix(prefix, &record.package_record.name) { Ok(libraries) => { + // Insert libraries -> package mapping for lib in libraries { resolved_deps .library_mapping .insert(lib, record.package_record.name.clone()); } + + // Lazily get package nature from PrefixInfo + if !resolved_deps + .package_nature + .contains_key(&record.package_record.name) + { + if let Some(nature) = prefix_info + .package_to_nature + .get(&record.package_record.name) + { + resolved_deps + .package_nature + .insert(record.package_record.name.clone(), nature.clone()); + } + } } Err(e) => { tracing::debug!( @@ -836,6 +861,7 @@ pub(crate) async fn resolve_dependencies( specs: build_env_specs, resolved, library_mapping: HashMap::new(), // Will be populated after installation + package_nature: HashMap::new(), }) } else { None @@ -933,6 +959,7 @@ pub(crate) async fn resolve_dependencies( specs: host_env_specs, resolved, library_mapping: HashMap::new(), // Will be populated after installation + package_nature: HashMap::new(), }) } else { None From c04499a37c820dcdec72e88939167001df30a4de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Tue, 24 Jun 2025 17:33:36 +0300 Subject: [PATCH 05/25] first step --- src/metadata.rs | 57 ++++++++++++++++++++++++++ src/post_process/checks.rs | 83 ++++++++++++++++---------------------- 2 files changed, 91 insertions(+), 49 deletions(-) diff --git a/src/metadata.rs b/src/metadata.rs index cf05a5f94..7ab18a5a0 100644 --- a/src/metadata.rs +++ b/src/metadata.rs @@ -682,6 +682,63 @@ impl Output { } Ok(()) } + + /// Return a view that merges the finalized dependencies of this output + /// with those of the optional cache build. + /// + /// * `run` comes from the main `finalized_dependencies` (cache runs are + /// irrelevant for the final artefact). + /// * `host` / `build` environments are taken from the main dependencies if + /// present, otherwise from the cache. If both are present we merge their + /// fields (union of `resolved`, `specs`, `library_mapping`, + /// `package_nature`). + pub fn merged_finalized_dependencies( + &self, + ) -> Option { + use crate::render::resolved_dependencies::ResolvedDependencies; + + fn merge_env( + mut primary: Option, + secondary: &Option, + ) -> Option { + match (primary.as_mut(), secondary) { + (Some(dst), Some(src)) => { + // merge specs + dst.specs.extend(src.specs.clone()); + let additional_resolved: Vec<_> = src + .resolved + .iter() + .filter(|&r| { + !dst.resolved.iter().any(|existing| { + existing.package_record.name == r.package_record.name + && existing.package_record.version == r.package_record.version + && existing.package_record.build == r.package_record.build + }) + }) + .cloned() + .collect(); + + dst.resolved.extend(additional_resolved); + // merge library mapping / package nature (simple union) + dst.library_mapping.extend(src.library_mapping.clone()); + dst.package_nature.extend(src.package_nature.clone()); + primary + } + (None, Some(src)) => Some(src.clone()), + _ => primary, + } + } + + let primary = self.finalized_dependencies.as_ref()?; + let mut merged = primary.clone(); + + if let Some(cache_deps) = &self.finalized_cache_dependencies { + merged.build = merge_env(merged.build.take(), &cache_deps.build); + merged.host = merge_env(merged.host.take(), &cache_deps.host); + } + + Some(merged) + } } impl Output { diff --git a/src/post_process/checks.rs b/src/post_process/checks.rs index ebce7bb91..9546b52fe 100644 --- a/src/post_process/checks.rs +++ b/src/post_process/checks.rs @@ -11,7 +11,7 @@ use crate::{ post_process::{package_nature::PackageNature, relink}, }; -use crate::render::resolved_dependencies::RunExportDependency; +use crate::render::resolved_dependencies::{FinalizedDependencies, RunExportDependency}; use globset::{Glob, GlobSet, GlobSetBuilder}; use rattler_conda_types::{PackageName, PrefixRecord}; @@ -266,6 +266,36 @@ fn find_system_libs(output: &Output) -> Result { system_libs.build() } +/// Extend the provided `library_mapping` and `package_to_nature` maps with the +/// information contained in a `FinalizedDependencies` instance. This helper +/// avoids duplicating the same merging logic for the regular dependencies and +/// the optional cache dependencies. +fn extend_mappings_from_finalized( + deps: &Option, + library_mapping: &mut HashMap, + package_to_nature: &mut HashMap, +) { + let Some(deps) = deps else { return }; + + if let Some(host) = &deps.host { + library_mapping.extend(host.library_mapping.clone()); + package_to_nature.extend(host.package_nature.clone()); + } + + // For the build environment we (currently) only need the sysroot packages + // to resolve system libraries. Therefore we filter explicitly for + // `sysroot_` packages when merging the library mapping. The package nature + // information can be copied as-is. + if let Some(build) = &deps.build { + for (lib, pkg) in &build.library_mapping { + if pkg.as_normalized().starts_with("sysroot_") { + library_mapping.insert(lib.clone(), pkg.clone()); + } + } + package_to_nature.extend(build.package_nature.clone()); + } +} + pub fn perform_linking_checks( output: &Output, new_files: &HashSet, @@ -276,56 +306,11 @@ pub fn perform_linking_checks( // Get library mapping from finalized dependencies let mut library_mapping = HashMap::new(); - - // Collect from regular dependencies - if let Some(deps) = &output.finalized_dependencies { - if let Some(host) = &deps.host { - library_mapping.extend(host.library_mapping.clone()); - } - - if let Some(build) = &deps.build { - for (lib, pkg) in &build.library_mapping { - if pkg.as_normalized().starts_with("sysroot_") { - library_mapping.insert(lib.clone(), pkg.clone()); - } - } - } - } - - // Also merge in library mapping from cache dependencies if available - if let Some(cache_deps) = &output.finalized_cache_dependencies { - if let Some(host) = &cache_deps.host { - library_mapping.extend(host.library_mapping.clone()); - } - - if let Some(build) = &cache_deps.build { - for (lib, pkg) in &build.library_mapping { - if pkg.as_normalized().starts_with("sysroot_") { - library_mapping.insert(lib.clone(), pkg.clone()); - } - } - } - } - - // Combine package -> nature information from all resolved environments let mut package_to_nature = HashMap::new(); - if let Some(deps) = &output.finalized_dependencies { - if let Some(host) = &deps.host { - package_to_nature.extend(host.package_nature.clone()); - } - if let Some(build) = &deps.build { - package_to_nature.extend(build.package_nature.clone()); - } - } - - if let Some(cache_deps) = &output.finalized_cache_dependencies { - if let Some(host) = &cache_deps.host { - package_to_nature.extend(host.package_nature.clone()); - } - if let Some(build) = &cache_deps.build { - package_to_nature.extend(build.package_nature.clone()); - } + // Merge information from the regular dependencies and (if present) from the cache + if let Some(merged) = output.merged_finalized_dependencies() { + extend_mappings_from_finalized(&Some(merged), &mut library_mapping, &mut package_to_nature); } let (resolved_run_dependencies, dep_to_source) = From b495463d2a9fe3b536f3730a6dc0de0701f290ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Thu, 3 Jul 2025 15:02:51 +0300 Subject: [PATCH 06/25] shallow merge --- src/metadata.rs | 42 ++--------------------- src/render/resolved_dependencies.rs | 53 +++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 39 deletions(-) diff --git a/src/metadata.rs b/src/metadata.rs index 7ab18a5a0..f8fb6b6e4 100644 --- a/src/metadata.rs +++ b/src/metadata.rs @@ -695,49 +695,13 @@ impl Output { pub fn merged_finalized_dependencies( &self, ) -> Option { - use crate::render::resolved_dependencies::ResolvedDependencies; - - fn merge_env( - mut primary: Option, - secondary: &Option, - ) -> Option { - match (primary.as_mut(), secondary) { - (Some(dst), Some(src)) => { - // merge specs - dst.specs.extend(src.specs.clone()); - let additional_resolved: Vec<_> = src - .resolved - .iter() - .filter(|&r| { - !dst.resolved.iter().any(|existing| { - existing.package_record.name == r.package_record.name - && existing.package_record.version == r.package_record.version - && existing.package_record.build == r.package_record.build - }) - }) - .cloned() - .collect(); - - dst.resolved.extend(additional_resolved); - // merge library mapping / package nature (simple union) - dst.library_mapping.extend(src.library_mapping.clone()); - dst.package_nature.extend(src.package_nature.clone()); - primary - } - (None, Some(src)) => Some(src.clone()), - _ => primary, - } - } - let primary = self.finalized_dependencies.as_ref()?; - let mut merged = primary.clone(); if let Some(cache_deps) = &self.finalized_cache_dependencies { - merged.build = merge_env(merged.build.take(), &cache_deps.build); - merged.host = merge_env(merged.host.take(), &cache_deps.host); + Some(primary.merge_with(cache_deps)) + } else { + Some(primary.clone()) } - - Some(merged) } } diff --git a/src/render/resolved_dependencies.rs b/src/render/resolved_dependencies.rs index 6d65daeae..c0f574e99 100644 --- a/src/render/resolved_dependencies.rs +++ b/src/render/resolved_dependencies.rs @@ -405,6 +405,29 @@ impl ResolvedDependencies { } result } + + /// Merge library-level metadata from `other` into `self`. + /// + /// Only the `library_mapping` (shared-object name → package) and + /// `package_nature` (DSO library vs interpreter, …) maps are combined. We + /// deliberately ignore the raw specs and resolved records because + /// downstream linking checks only need to know *which* package a library + /// comes from, not the full solver context. + fn absorb(&mut self, other: &ResolvedDependencies) { + self.library_mapping.extend( + other + .library_mapping + .iter() + .map(|(k, v)| (k.clone(), v.clone())), + ); + + self.package_nature.extend( + other + .package_nature + .iter() + .map(|(k, v)| (k.clone(), v.clone())), + ); + } } impl FinalizedRunDependencies { @@ -492,6 +515,36 @@ pub struct FinalizedDependencies { pub run: FinalizedRunDependencies, } +impl FinalizedDependencies { + /// Merge the build and host dependencies from `other` into `self`. + /// + /// For each environment (`build`, `host`) we perform a shallow merge: + /// 1. If the primary has the environment, its `library_mapping` and + /// `package_nature` maps are extended with entries from `other`. + /// 2. If the primary is `None` while `other` has the environment, we take + /// a clone of `other`. + /// 3. Otherwise the primary value stays untouched. + pub fn merge_with(&self, other: &FinalizedDependencies) -> FinalizedDependencies { + let mut merged = self.clone(); + + let merge_env = |dst: &mut Option, + src: &Option| { + match (dst.as_mut(), src) { + (Some(d), Some(s)) => d.absorb(s), + (None, Some(s)) => { + *dst = Some(s.clone()); + } + _ => {} + } + }; + + merge_env(&mut merged.build, &other.build); + merge_env(&mut merged.host, &other.host); + + merged + } +} + #[derive(Error, Debug)] pub enum ResolveError { #[error("Failed to get finalized dependencies")] From 475e8f6efb989eddcdc1a1fa7f3874f97d81115a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Thu, 3 Jul 2025 15:25:29 +0300 Subject: [PATCH 07/25] merge fix --- src/lib.rs | 2 +- test/end-to-end/test_create_patch.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 71217d89e..0097c0177 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1075,7 +1075,7 @@ pub async fn debug_recipe( .fetch_sources(&tool_config, apply_patch_custom) .await .into_diagnostic()?; - let output = output + let mut output = output .resolve_dependencies(&tool_config) .await .into_diagnostic()?; diff --git a/test/end-to-end/test_create_patch.py b/test/end-to-end/test_create_patch.py index 4a6b38f1f..702dd6beb 100644 --- a/test/end-to-end/test_create_patch.py +++ b/test/end-to-end/test_create_patch.py @@ -274,5 +274,5 @@ def test_create_patch_already_exists_no_overwrite( # Should contain the message about not writing the patch file stderr = result.stderr - assert "Not writing patch file, already exists" in stderr - assert str(patch_path) in stderr + assert "Not writing patch file, already exists:" in stderr + assert "Use --overwrite to replace the existing patch file" in stderr From cec07d052ce863f36a9e641670fd2947a26faed1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Thu, 3 Jul 2025 15:46:16 +0300 Subject: [PATCH 08/25] for macos we remove paths and just use filenames --- src/post_process/checks.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/post_process/checks.rs b/src/post_process/checks.rs index 9546b52fe..8adb3646c 100644 --- a/src/post_process/checks.rs +++ b/src/post_process/checks.rs @@ -167,12 +167,12 @@ fn find_system_libs(output: &Output) -> Result { if output.build_configuration.target_platform.is_osx() { let default_sysroot = vec![ - "/opt/X11/**/*.dylib", - "/usr/lib/libSystem.B.dylib", - "/usr/lib/libcrypto.0.9.8.dylib", - "/usr/lib/libobjc.A.dylib", + "*.dylib", // Match any dylib in X11 + "libSystem.B.dylib", + "libcrypto.0.9.8.dylib", + "libobjc.A.dylib", // e.g. /System/Library/Frameworks/AGL.framework/* - "/System/Library/Frameworks/*.framework/*", + "*.framework/*", // Match any framework ]; if let Some(sysroot) = output From 1f406ad7827d439082e0292ea225ba0579d274d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Thu, 3 Jul 2025 15:50:14 +0300 Subject: [PATCH 09/25] fmt --- src/post_process/checks.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/post_process/checks.rs b/src/post_process/checks.rs index 8adb3646c..0c3b1eddf 100644 --- a/src/post_process/checks.rs +++ b/src/post_process/checks.rs @@ -167,12 +167,12 @@ fn find_system_libs(output: &Output) -> Result { if output.build_configuration.target_platform.is_osx() { let default_sysroot = vec![ - "*.dylib", // Match any dylib in X11 + "*.dylib", // Match any dylib in X11 "libSystem.B.dylib", "libcrypto.0.9.8.dylib", "libobjc.A.dylib", // e.g. /System/Library/Frameworks/AGL.framework/* - "*.framework/*", // Match any framework + "*.framework/*", // Match any framework ]; if let Some(sysroot) = output From 4a3e581d9df9cdb1d868a9ba2baab2351c207523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Thu, 3 Jul 2025 18:11:06 +0300 Subject: [PATCH 10/25] windows --- src/render/resolved_dependencies.rs | 30 +++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/render/resolved_dependencies.rs b/src/render/resolved_dependencies.rs index 4451d6cee..4776a3a71 100644 --- a/src/render/resolved_dependencies.rs +++ b/src/render/resolved_dependencies.rs @@ -414,12 +414,30 @@ impl ResolvedDependencies { /// downstream linking checks only need to know *which* package a library /// comes from, not the full solver context. fn absorb(&mut self, other: &ResolvedDependencies) { - self.library_mapping.extend( - other - .library_mapping - .iter() - .map(|(k, v)| (k.clone(), v.clone())), - ); + // On Windows, we need to handle case-insensitive comparison for library names + #[cfg(windows)] + { + for (lib_name, pkg_name) in &other.library_mapping { + if !self + .library_mapping + .keys() + .any(|k| k.eq_ignore_ascii_case(lib_name)) + { + self.library_mapping + .insert(lib_name.clone(), pkg_name.clone()); + } + } + } + + #[cfg(not(windows))] + { + self.library_mapping.extend( + other + .library_mapping + .iter() + .map(|(k, v)| (k.clone(), v.clone())), + ); + } self.package_nature.extend( other From e042df3aea09fc89391cded30dc142ed7fb718d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Thu, 3 Jul 2025 18:34:44 +0300 Subject: [PATCH 11/25] . --- src/post_process/checks.rs | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/src/post_process/checks.rs b/src/post_process/checks.rs index 0c3b1eddf..46536c6d1 100644 --- a/src/post_process/checks.rs +++ b/src/post_process/checks.rs @@ -422,7 +422,15 @@ pub fn perform_linking_checks( } let dependency_match = dep_to_source.iter().find(|(dep_name, source_pkg)| { - dep_name.as_str() == package_str || source_pkg.as_str() == package_str + #[cfg(windows)] + { + dep_name.eq_ignore_ascii_case(package_str) + || source_pkg.eq_ignore_ascii_case(package_str) + } + #[cfg(not(windows))] + { + dep_name.as_str() == package_str || source_pkg.as_str() == package_str + } }); if let Some((dep_name, _)) = dependency_match { @@ -521,10 +529,32 @@ pub fn perform_linking_checks( .map(|v| v.as_source().to_string()) .collect::>() }) - .any(|libraries| libraries.contains(run_dependency)); + .any(|libraries| { + #[cfg(windows)] + { + libraries + .iter() + .any(|lib| lib.eq_ignore_ascii_case(run_dependency)) + } + #[cfg(not(windows))] + { + libraries.contains(run_dependency) + } + }); - // Also check if it was matched in cache builds - let used_in_cache = cache_matched_deps.contains(run_dependency); + // Also check if it was matched in cache builds (case-insensitive on Windows) + let used_in_cache = { + #[cfg(windows)] + { + cache_matched_deps + .iter() + .any(|dep| dep.eq_ignore_ascii_case(run_dependency)) + } + #[cfg(not(windows))] + { + cache_matched_deps.contains(run_dependency) + } + }; if !used_in_linked_dsos && !used_in_cache { if dynamic_linking.error_on_overdepending() { From f1c12afa7bc8456284237c792f6131104e6a8a29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Fri, 4 Jul 2025 15:18:19 +0300 Subject: [PATCH 12/25] this will be a test (passes on local with vs2022) --- test/end-to-end/test_simple.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/end-to-end/test_simple.py b/test/end-to-end/test_simple.py index d85f468d7..bfbdb5f23 100644 --- a/test/end-to-end/test_simple.py +++ b/test/end-to-end/test_simple.py @@ -2233,8 +2233,8 @@ def test_cache_overdepending_checks( error_output = ( exc_info.value.output.decode("utf-8") if exc_info.value.output else "" ) - # Should have an overdepending error for libcurl since it's not used - assert "Overdepending against: libcurl" in error_output + # Should have an overlinking error for VCRUNTIME140.dll since it's not used + assert "Overlinking against: VCRUNTIME140.dll" in error_output def test_ruby_test(rattler_build: RattlerBuild, recipes: Path, tmp_path: Path): From 3166e2a520ec096c9f1b6ceae4accfc8d4a7a982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Fri, 4 Jul 2025 15:27:23 +0300 Subject: [PATCH 13/25] time to get both platforms --- test/end-to-end/test_simple.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/test/end-to-end/test_simple.py b/test/end-to-end/test_simple.py index bfbdb5f23..e5991cd22 100644 --- a/test/end-to-end/test_simple.py +++ b/test/end-to-end/test_simple.py @@ -2233,8 +2233,11 @@ def test_cache_overdepending_checks( error_output = ( exc_info.value.output.decode("utf-8") if exc_info.value.output else "" ) - # Should have an overlinking error for VCRUNTIME140.dll since it's not used - assert "Overlinking against: VCRUNTIME140.dll" in error_output + # Check for platform-specific overlinking error + if platform.system() == "Windows": + assert "Overlinking against: VCRUNTIME140.dll" in error_output + else: # Linux + assert "Overlinking against: libcurl" in error_output def test_ruby_test(rattler_build: RattlerBuild, recipes: Path, tmp_path: Path): From 555ff7694f941bd78abc9bda8ba5ba19e7469704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Fri, 4 Jul 2025 15:37:01 +0300 Subject: [PATCH 14/25] go --- test/end-to-end/test_simple.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/end-to-end/test_simple.py b/test/end-to-end/test_simple.py index e5991cd22..79360f0e5 100644 --- a/test/end-to-end/test_simple.py +++ b/test/end-to-end/test_simple.py @@ -2237,7 +2237,10 @@ def test_cache_overdepending_checks( if platform.system() == "Windows": assert "Overlinking against: VCRUNTIME140.dll" in error_output else: # Linux - assert "Overlinking against: libcurl" in error_output + error_lines = error_output.split("\n") + assert any( + "Overdepending against: libcurl" in line for line in error_lines[-5:] + ) def test_ruby_test(rattler_build: RattlerBuild, recipes: Path, tmp_path: Path): From 992a2e721f885c64ca50534a181578f337081b86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Fri, 4 Jul 2025 16:29:49 +0300 Subject: [PATCH 15/25] pixi lock --- pixi.lock | 15 +++++++++++++++ pixi.toml | 3 +++ 2 files changed, 18 insertions(+) diff --git a/pixi.lock b/pixi.lock index 8e3a58ec8..b82fe587a 100644 --- a/pixi.lock +++ b/pixi.lock @@ -446,6 +446,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2019_win-64-19.29.30139-h7dcff83_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.44.35207-ha74f236_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/vswhere-3.1.7-h40126e0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.8.1-h208afaa_1.conda @@ -1391,6 +1392,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2019_win-64-19.29.30139-h7dcff83_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.44.35207-ha74f236_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/vswhere-3.1.7-h40126e0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.8.1-h208afaa_1.conda @@ -6726,6 +6728,19 @@ packages: license_family: BSD size: 20609 timestamp: 1743195166620 +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.44.35207-ha74f236_26.conda + sha256: 43c833a91c04bf53c85deff4bea505fa5173a79981909dc8116e7b6709bae39c + md5: 3b88259844a981083c4efab022071768 + depends: + - vswhere + constrains: + - vs_win-64 2022.14 + track_features: + - vc14 + license: BSD-3-Clause + license_family: BSD + size: 20679 + timestamp: 1750371462464 - conda: https://conda.anaconda.org/conda-forge/noarch/vswhere-3.1.7-h40126e0_1.conda sha256: b72270395326dc56de9bd6ca82f63791b3c8c9e2b98e25242a9869a4ca821895 md5: f622897afff347b715d046178ad745a5 diff --git a/pixi.toml b/pixi.toml index 606d39c4a..ac70fd37d 100644 --- a/pixi.toml +++ b/pixi.toml @@ -93,6 +93,9 @@ patchelf = ">=0.18.0,<0.19" scripts = ["scripts/activate.sh"] [target.osx-arm64.activation] scripts = ["scripts/activate.sh"] +[target.win-64.dependencies] +vs2022_win-64 = ">=19.44.35207" + [target.win-64.activation] scripts = ["scripts/activate.bat"] From 33b06709f5c5359b7c6f59a80c3e7e9307b9ca85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Fri, 4 Jul 2025 17:10:17 +0300 Subject: [PATCH 16/25] some cleanup trying --- pixi.lock | 2 -- 1 file changed, 2 deletions(-) diff --git a/pixi.lock b/pixi.lock index b82fe587a..dca95c6ab 100644 --- a/pixi.lock +++ b/pixi.lock @@ -444,8 +444,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2019_win-64-19.29.30139-h7dcff83_26.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.44.35207-ha74f236_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/vswhere-3.1.7-h40126e0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda From 1de2377cb28f8127b720f23806f6715a9c3b0448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Fri, 4 Jul 2025 17:41:24 +0300 Subject: [PATCH 17/25] lets try like this --- pixi.lock | 2386 +++++++++++++++++++++++++---------------------------- pixi.toml | 10 +- 2 files changed, 1135 insertions(+), 1261 deletions(-) diff --git a/pixi.lock b/pixi.lock index dca95c6ab..ae1bc4893 100644 --- a/pixi.lock +++ b/pixi.lock @@ -7,27 +7,27 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.43-h4852527_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.38.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.38.16-pyge310_1234567_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.44-h4852527_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.44-h4bf12b8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.44-h4852527_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.39.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.39.2-pyge310_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.6.0-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-18-18.1.8-default_hb5137d0_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-18.1.8-default_h9e3a008_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-18-18.1.8-default_hb5137d0_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-18.1.8-default_h9e3a008_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cli-ui-0.17.2-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.27.6-hcfe8598_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/compilers-1.6.0-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/contextlib2-21.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.6.0-h00ab1b0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docopt-0.6.2-pyhd8ed1ab_2.conda @@ -52,60 +52,60 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp18.1-18.1.8-default_hb5137d0_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp18.1-18.1.8-default_hb5137d0_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-12.4.0-h1762d19_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-ha7bfdaf_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-12.4.0-ha732cd4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-12.4.0-h1762d19_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.3-hd18ef5c_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mimalloc-3.0.1-h18b520e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mold-2.39.1-hff13881_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mold-2.40.1-hff13881_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/patchelf-0.17.2-h58526e2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h4bc722e_1009.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.86.0-h1a8d7c4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rust-src-1.86.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.86.0-h2c6d0dc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.13.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/schema-0.7.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/syrupy-4.6.4-pyhd8ed1ab_0.conda @@ -113,30 +113,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2022.1.0-h4ce085d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tbump-6.9.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unidecode-1.3.8-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.38.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.38.16-pyge310_1234567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.39.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.39.2-pyge310_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.6.0-h63c33a9_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-973.0.1-hd9ad811_15.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-973.0.1-habff3f6_15.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-15-15.0.7-default_h7151d67_5.conda @@ -153,7 +153,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-15.0.7-ha38d28d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/compilers-1.6.0-h694c41f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/contextlib2-21.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.6.0-h1c7c39f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docopt-0.6.2-pyhd8ed1ab_2.conda @@ -176,50 +176,50 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-609-h0fd476b_15.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp15-15.0.7-default_h7151d67_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.10.1-h58e7537_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.1.0-h5f6db21_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-64-12.4.0-h3f4828c_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.1.0-hfa3c126_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm15-15.0.7-hc29ff6c_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.1-hd471939_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-he7d56d0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.0-hd019ec5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.50.0-h4cb831e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.51.0-h4cb831e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.4-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-15.0.7-hc29ff6c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/make-4.3-h22f3db7_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/mpc-1.3.1-h9d8efa1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/patchelf-0.18.0-h92383a6_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/patchelf-0.18.0-h93d8f39_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/perl-5.32.1-7_h10d778d_perl5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pkg-config-0.29.2-hf7e621a_1009.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.5-ha44c9a9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.6-h6e16a3a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rust-1.86.0-h34a2095_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rust-src-1.86.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-apple-darwin-1.86.0-h38e4360_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.13.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/schema-0.7.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -227,31 +227,31 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1100.0.11-h9ce4665_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tbump-6.9.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unidecode-1.3.8-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.1-h357f2ed_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.1-h357f2ed_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.1-hd471939_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.1-h357f2ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.1-h357f2ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.38.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.38.16-pyge310_1234567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.39.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.39.2-pyge310_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-compiler-1.6.0-hd291e01_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-973.0.1-hd1ac623_15.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-973.0.1-h2a25c60_15.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-15-15.0.7-default_he012953_5.conda @@ -268,7 +268,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-15.0.7-h3808999_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compilers-1.6.0-hce30654_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/contextlib2-21.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cxx-compiler-1.6.0-h1995070_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docopt-0.6.2-pyhd8ed1ab_2.conda @@ -290,53 +290,53 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-609-hc4dc95b_15.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp15-15.0.7-default_he012953_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.1.0-hfdf1602_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-arm64-12.4.0-h9014cc0_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.1-hbec27ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.1.0-hb74de2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm15-15.0.7-h4429f82_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.8.1-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.8.1-h39f12f2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-h6fb428d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.51.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-hcc23dba_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-15.0.7-h4429f82_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/make-4.3-he57ea6c_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/patchelf-0.18.0-ha1acc90_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/patchelf-0.18.0-h965bd2d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/perl-5.32.1-7_h4614cfb_perl5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pkg-config-0.29.2-hde07d2e_1009.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.5-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.6-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rust-1.86.0-h4ff7c5d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rust-src-1.86.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-apple-darwin-1.86.0-hf6ec828_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.13.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/schema-0.7.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sigtool-0.1.3-h44b9a77_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda @@ -344,44 +344,37 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1100.0.11-he4954df_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tbump-6.9.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unidecode-1.3.8-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.8.1-h9a6d368_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.8.1-h9a6d368_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.8.1-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.8.1-h9a6d368_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.8.1-h9a6d368_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.8.1-h39f12f2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda win-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.38.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.38.16-pyge310_1234567_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.39.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.39.2-pyge310_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/c-compiler-1.6.0-hcfcfb64_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/clangdev-5.0.0-flang_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cli-ui-0.17.2-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-3.27.6-hf0feee3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/compilers-1.6.0-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/contextlib2-21.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.6.0-h91493d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docopt-0.6.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/flang-5.0.0-he025d50_20180525.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/flang_win-64-5.0.0-h13ae965_20180526.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/fortran-compiler-1.6.0-h9655429_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda @@ -392,17 +385,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.10.1-h1ee3ff0_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libflang-5.0.0-h6538335_20180525.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-hbc94333_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.8.1-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.0-h7dfc565_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.50.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.51.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/llvm-meta-5.0.0-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 @@ -410,45 +401,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/make-4.3-h3d2af85_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/openmp-5.0.0-vc14_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.1-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/perl-5.32.1.1-7_h57928b3_strawberry.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pkg-config-0.29.2-h88c491f_1009.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rust-1.86.0-hf8d6059_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rust-src-1.86.0-win_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-pc-windows-msvc-1.86.0-h17fc481_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.13.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/schema-0.7.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/syrupy-4.6.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tbump-6.9.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unidecode-1.3.8-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.44.35207-ha74f236_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/vswhere-3.1.7-h40126e0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.8.1-h208afaa_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.8.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.8.1-h208afaa_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.8.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda @@ -461,18 +452,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backrefs-5.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cairocffi-1.7.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cairosvg-2.7.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cssselect2-0.2.1-pyh9f0ad1d_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cssselect2-0.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -489,80 +480,80 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h3618099_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mergedeep-1.3.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mike-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-1.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-autorefs-1.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-autorefs-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-get-deps-0.2.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-9.6.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-9.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-extensions-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocstrings-0.27.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocstrings-python-1.13.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/paginate-0.5.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.2.1-py312h80c1187_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.3.0-py312h80c1187_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-25.5.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.16-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyyaml-env-tag-1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.4.10-py312h5715c7c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/verspec-0.1.0-pyh29332c3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchdog-6.0.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -574,24 +565,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backrefs-5.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cairocffi-1.7.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cairosvg-2.7.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cssselect2-0.2.1-pyh9f0ad1d_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cssselect2-0.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -608,97 +599,97 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.1-h3139dbc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-he7d56d0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mergedeep-1.3.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mike-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-1.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-autorefs-1.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-autorefs-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-get-deps-0.2.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-9.6.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-9.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-extensions-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocstrings-0.27.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocstrings-python-1.13.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/paginate-0.5.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.2.1-py312hd9f36e3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.3.0-py312hd9f36e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-25.5.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.16-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyyaml-env-tag-1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.4.10-py312h8b25c6c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/verspec-0.1.0-pyh29332c3_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/watchdog-6.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backrefs-5.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cairocffi-1.7.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cairosvg-2.7.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cssselect2-0.2.1-pyh9f0ad1d_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cssselect2-0.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -715,98 +706,98 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.1-hbec27ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-h6fb428d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mergedeep-1.3.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mike-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-1.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-autorefs-1.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-autorefs-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-get-deps-0.2.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-9.6.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-9.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-extensions-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocstrings-0.27.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocstrings-python-1.13.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/paginate-0.5.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.2.1-py312h50aef2c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.3.0-py312h50aef2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-25.5.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.16-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyyaml-env-tag-1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.4.10-py312h3402d49_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/verspec-0.1.0-pyh29332c3_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchdog-6.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backrefs-5.8-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cairocffi-1.7.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cairosvg-2.7.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.0-pyh7428d3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cssselect2-0.2.1-pyh9f0ad1d_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cssselect2-0.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -823,7 +814,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda @@ -834,74 +825,74 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.13.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.13.3-h0b5ce68_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-hbc94333_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h05922d8_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mergedeep-1.3.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mike-2.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-1.6.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-autorefs-1.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-autorefs-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-get-deps-0.2.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-9.6.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-9.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-extensions-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocstrings-0.27.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocstrings-python-1.13.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.1-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/paginate-0.5.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-11.2.1-py312h078707f_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-11.3.0-py312hfb502af_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-25.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-25.5.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.15-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.16-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyyaml-env-tag-1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.4.10-py312h7a6832a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/verspec-0.1.0-pyh29332c3_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - conda: https://conda.anaconda.org/conda-forge/win-64/watchdog-6.0.0-py312h2e8e312_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda lint: @@ -912,27 +903,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/actionlint-1.7.7-hd0c01bc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.43-h4852527_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.38.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.38.16-pyge310_1234567_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.44-h4852527_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.44-h4bf12b8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.44-h4852527_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.39.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.39.2-pyge310_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.6.0-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-18-18.1.8-default_hb5137d0_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-18.1.8-default_h9e3a008_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-18-18.1.8-default_hb5137d0_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-18.1.8-default_h9e3a008_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.27.6-hcfe8598_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/compilers-1.6.0-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.6.0-h00ab1b0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda @@ -951,107 +942,107 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp18.1-18.1.8-default_hb5137d0_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp18.1-18.1.8-default_hb5137d0_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-12.4.0-h1762d19_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-ha7bfdaf_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-12.4.0-ha732cd4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-12.4.0-h1762d19_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.3-hd18ef5c_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mimalloc-3.0.1-h18b520e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mold-2.39.1-hff13881_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mold-2.40.1-hff13881_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/patchelf-0.17.2-h58526e2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h4bc722e_1009.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-hooks-4.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.10-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.14-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.4.10-py312h5715c7c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.86.0-h1a8d7c4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rust-src-1.86.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.86.0-h2c6d0dc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.13.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/shellcheck-0.10.0-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/syrupy-4.6.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/taplo-0.9.3-h53e704d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2022.1.0-h4ce085d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/typos-1.32.0-h8fae777_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/typos-1.34.0-h8fae777_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda osx-64: - conda: https://conda.anaconda.org/conda-forge/osx-64/actionlint-1.7.7-h23c3e72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.38.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.38.16-pyge310_1234567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.39.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.39.2-pyge310_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.6.0-h63c33a9_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-973.0.1-hd9ad811_15.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-973.0.1-habff3f6_15.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda @@ -1068,7 +1059,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-15.0.7-ha38d28d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/compilers-1.6.0-h694c41f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.6.0-h1c7c39f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda @@ -1082,7 +1073,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/isl-0.26-imath32_h2e86a7b_101.conda @@ -1092,91 +1083,91 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-609-h0fd476b_15.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp15-15.0.7-default_h7151d67_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.10.1-h58e7537_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.1.0-h5f6db21_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-64-12.4.0-h3f4828c_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.1.0-hfa3c126_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm15-15.0.7-hc29ff6c_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.1-hd471939_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-he7d56d0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.0-hd019ec5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.50.0-h4cb831e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.51.0-h4cb831e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.4-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-15.0.7-hc29ff6c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/make-4.3-h22f3db7_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/mpc-1.3.1-h9d8efa1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/patchelf-0.18.0-h92383a6_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/patchelf-0.18.0-h93d8f39_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/perl-5.32.1-7_h10d778d_perl5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pkg-config-0.29.2-hf7e621a_1009.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-hooks-4.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312h3520af0_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.5-ha44c9a9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.10-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.6-h6e16a3a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.14-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.8-py312h3d0f464_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.4.10-py312h8b25c6c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rust-1.86.0-h34a2095_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rust-src-1.86.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-apple-darwin-1.86.0-h38e4360_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.13.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/shellcheck-0.10.0-h7dd6a17_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/syrupy-4.6.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1100.0.11-h9ce4665_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/taplo-0.9.3-hf3953a5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/typos-1.32.0-h371c88c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/typos-1.34.0-h371c88c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.1-h357f2ed_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.1-h357f2ed_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.1-hd471939_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.1-h357f2ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.1-h357f2ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/actionlint-1.7.7-h48c0fde_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.38.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.38.16-pyge310_1234567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.39.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.39.2-pyge310_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-compiler-1.6.0-hd291e01_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-973.0.1-hd1ac623_15.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-973.0.1-h2a25c60_15.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda @@ -1193,7 +1184,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-15.0.7-h3808999_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compilers-1.6.0-hce30654_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cxx-compiler-1.6.0-h1995070_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda @@ -1206,7 +1197,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/isl-0.26-imath32_h347afa1_101.conda @@ -1216,111 +1207,104 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-609-hc4dc95b_15.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp15-15.0.7-default_he012953_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.1.0-hfdf1602_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-arm64-12.4.0-h9014cc0_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.1-hbec27ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.1.0-hb74de2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm15-15.0.7-h4429f82_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.8.1-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.8.1-h39f12f2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-h6fb428d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.51.0-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-hcc23dba_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-15.0.7-h4429f82_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/make-4.3-he57ea6c_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/patchelf-0.18.0-ha1acc90_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/patchelf-0.18.0-h965bd2d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/perl-5.32.1-7_h4614cfb_perl5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pkg-config-0.29.2-hde07d2e_1009.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-hooks-4.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.5-h7ab814d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.10-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.6-h5505292_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.14-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.8-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.4.10-py312h3402d49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rust-1.86.0-h4ff7c5d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rust-src-1.86.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-apple-darwin-1.86.0-hf6ec828_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.13.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/shellcheck-0.10.0-hecfb573_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sigtool-0.1.3-h44b9a77_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/syrupy-4.6.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1100.0.11-he4954df_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/taplo-0.9.3-hdf53557_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/typos-1.32.0-h0716509_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/typos-1.34.0-h0716509_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.8.1-h9a6d368_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.8.1-h9a6d368_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.8.1-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.8.1-h9a6d368_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.8.1-h9a6d368_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.8.1-h39f12f2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/actionlint-1.7.7-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.38.15-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.38.16-pyge310_1234567_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.39.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.39.2-pyge310_1234567_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/c-compiler-1.6.0-hcfcfb64_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/clangdev-5.0.0-flang_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-3.27.6-hf0feee3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/compilers-1.6.0-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.6.0-h91493d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/flang-5.0.0-he025d50_20180525.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/flang_win-64-5.0.0-h13ae965_20180526.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/fortran-compiler-1.6.0-h9655429_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda @@ -1328,17 +1312,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.10.1-h1ee3ff0_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libflang-5.0.0-h6538335_20180525.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-hbc94333_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.8.1-h2466b09_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.8.1-h2466b09_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.0-h7dfc565_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.50.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.51.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/llvm-meta-5.0.0-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 @@ -1347,54 +1329,52 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/make-4.3-h3d2af85_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openmp-5.0.0-vc14_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.1-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/perl-5.32.1.1-7_h57928b3_strawberry.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pkg-config-0.29.2-h88c491f_1009.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-hooks-4.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml-0.18.10-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml-0.18.14-py312h4389bb4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml.clib-0.2.8-py312h4389bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.4.10-py312h7a6832a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rust-1.86.0-hf8d6059_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rust-src-1.86.0-win_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-pc-windows-msvc-1.86.0-h17fc481_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.13.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/shellcheck-0.10.0-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/syrupy-4.6.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/taplo-0.9.3-ha073cba_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/typos-1.32.0-ha073cba_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/typos-1.34.0-h77a83cd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2019_win-64-19.29.30139-h7dcff83_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.44.35207-ha74f236_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/vswhere-3.1.7-h40126e0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.8.1-h208afaa_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.8.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.8.1-h208afaa_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.8.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda @@ -1496,49 +1476,49 @@ packages: license_family: MIT size: 143810 timestamp: 1740887689966 -- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.43-h4852527_4.conda - sha256: 99a94eead18e7704225ac43682cce3f316fd33bc483749c093eaadef1d31de75 - md5: 29782348a527eda3ecfc673109d28e93 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.44-h4852527_0.conda + sha256: 5579e3d0c2491f3f17fe95eacd05e0edc00fe8d25d008249fac777cab436792a + md5: 878f293b0a7163e5036d25f1fa9480ec depends: - - binutils_impl_linux-64 >=2.43,<2.44.0a0 + - binutils_impl_linux-64 >=2.44,<2.45.0a0 license: GPL-3.0-only license_family: GPL - size: 34646 - timestamp: 1740155498138 -- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_4.conda - sha256: 194d771be287dc973f6057c0747010ce28adf960f38d6e03ce3e828d7b74833e - md5: ef67db625ad0d2dce398837102f875ed + size: 35062 + timestamp: 1751601740343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.44-h4bf12b8_0.conda + sha256: 6c9b85a6ece53c809d5878aa2746c980fe8411e4d6dc499e60f417aea4790464 + md5: 7a1b5c3fbc0419961eaed361eedc90d4 depends: - - ld_impl_linux-64 2.43 h712a8e2_4 + - ld_impl_linux-64 2.44 h1423503_0 - sysroot_linux-64 license: GPL-3.0-only license_family: GPL - size: 6111717 - timestamp: 1740155471052 -- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_4.conda - sha256: fe662a038dc14334617940f42ede9ba26d4160771255057cb14fb1a81ee12ac1 - md5: c87e146f5b685672d4aa6b527c6d3b5e + size: 3577149 + timestamp: 1751601722583 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.44-h4852527_0.conda + sha256: cedff4ae20d7e7c6a9b5ea050b68b09210e761594af21ae6bbd596abb73215be + md5: 9f88de9963795dcfab936e092eac3424 depends: - - binutils_impl_linux-64 2.43 h4bf12b8_4 + - binutils_impl_linux-64 2.44 h4bf12b8_0 license: GPL-3.0-only license_family: GPL - size: 35657 - timestamp: 1740155500723 -- conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.38.15-pyhd8ed1ab_0.conda - sha256: c899d5bea8f09db92a173dfe89941f9a17ae00b5d57811c0337fff6aa84085ed - md5: b6f229fcaa29512f36686b28d5826021 + size: 35967 + timestamp: 1751601742970 +- conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.39.2-pyhd8ed1ab_0.conda + sha256: d8b36b5646d536c3200789a7140c5ed21c6f5428b5e2127790fa6b1ddcd4e04a + md5: c8f0361e850ecb7f11dec881c8002e26 depends: - - botocore >=1.38.15,<1.39.0 + - botocore >=1.39.2,<1.40.0 - jmespath >=0.7.1,<2.0.0 - python >=3.9 - - s3transfer >=0.12.0,<0.13.0 + - s3transfer >=0.13.0,<0.14.0 license: Apache-2.0 license_family: Apache - size: 83680 - timestamp: 1747207876 -- conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.38.16-pyge310_1234567_0.conda - sha256: a0c4adbc0c7c95bd618af8437f152eaec8ddbdb36c337366ce69a252ee900c19 - md5: d9f5df272bcb5514aa148848cfb7c409 + size: 84367 + timestamp: 1751574122379 +- conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.39.2-pyge310_1234567_0.conda + sha256: 9e1a9c7eda09e024ef6b369a8ed1bd1bfd5645c18f65632823680313a0c82bd4 + md5: 8ea2d25eec7f401e917a20ac5316e3d5 depends: - jmespath >=0.7.1,<2.0.0 - python >=3.10 @@ -1546,11 +1526,11 @@ packages: - urllib3 >=1.25.4,!=2.2.0,<3 license: Apache-2.0 license_family: Apache - size: 7643437 - timestamp: 1747286093158 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f - md5: b0b867af6fc74b2a0aa206da29c0f3cf + size: 7853935 + timestamp: 1751561886421 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_3.conda + sha256: dc27c58dc717b456eee2d57d8bc71df3f562ee49368a2351103bc8f1b67da251 + md5: a32e0c069f6c3dcac635f7b0b0dac67e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -1558,43 +1538,43 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libbrotlicommon 1.1.0 hb9d3cd8_3 license: MIT license_family: MIT - size: 349867 - timestamp: 1725267732089 -- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda - sha256: 265764ff4ad9e5cfefe7ea85c53d95157bf16ac2c0e5f190c528e4c9c0c1e2d0 - md5: b95025822e43128835826ec0cc45a551 + size: 351721 + timestamp: 1749230265727 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312haafddd8_3.conda + sha256: d1a8635422d99b4b7cc1b35d62d1a5c392ae0a4d74e0a44bf190916a21180ba3 + md5: 11489c0fc22f550acf63da5e7ec7304d depends: - __osx >=10.13 - - libcxx >=17 + - libcxx >=18 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - libbrotlicommon 1.1.0 h00291cd_2 + - libbrotlicommon 1.1.0 h6e16a3a_3 license: MIT license_family: MIT - size: 363178 - timestamp: 1725267893889 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af - md5: a83c2ef76ccb11bc2349f4f17696b15d + size: 367262 + timestamp: 1749230495846 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hd8f9ff3_3.conda + sha256: 35df7079768b4c51764149c42b14ccc25c4415e4365ecc06c38f74562d9e4d16 + md5: c7c728df70dc05a443f1e337c28de22d depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - libbrotlicommon 1.1.0 hd74edd7_2 + - libbrotlicommon 1.1.0 h5505292_3 license: MIT license_family: MIT - size: 339360 - timestamp: 1725268143995 -- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda - sha256: f83baa6f6bcba7b73f6921d5c1aa95ffc5d8b246ade933ade79250de0a4c9c4c - md5: a99aec1ac46794a5fb1cd3cf5d2b6110 + size: 339365 + timestamp: 1749230606596 +- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_3.conda + sha256: d5c18a90220853c86f7cc23db62b32b22c6c5fe5d632bc111fc1e467c9fd776f + md5: a87a39f9eb9fd5f171b13d8c79f7a99a depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -1602,11 +1582,11 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - libbrotlicommon 1.1.0 h2466b09_2 + - libbrotlicommon 1.1.0 h2466b09_3 license: MIT license_family: MIT - size: 321874 - timestamp: 1725268491976 + size: 321941 + timestamp: 1749231054102 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d md5: 62ee74e96c5ebb0af99386de58cf9553 @@ -1706,30 +1686,22 @@ packages: license: BSD size: 6269 timestamp: 1689097851052 -- conda: https://conda.anaconda.org/conda-forge/win-64/c-compiler-1.6.0-hcfcfb64_0.conda - sha256: 10d113359a3906d9eda66062ab3a36e0f21381c8448ec50c7a9e09e0a9bb4f21 - md5: 9246624ea9ea636c9801b3279f88f3a4 - depends: - - vs2019_win-64 - license: BSD - size: 6381 - timestamp: 1689097760340 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda - sha256: 1454f3f53a3b828d3cb68a3440cb0fa9f1cc0e3c8c26e9e023773dc19d88cc06 - md5: 23c7fd5062b48d8294fc7f61bf157fba +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda + sha256: 065241ba03ef3ee8200084c075cbff50955a7e711765395ff34876dbc51a6bb9 + md5: b01649832f7bc7ff94f8df8bd2ee6457 depends: - __win license: ISC - size: 152945 - timestamp: 1745653639656 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - sha256: 2a70ed95ace8a3f8a29e6cd1476a943df294a7111dfb3e152e3478c4c889b7ac - md5: 95db94f75ba080a22eb623590993167b + size: 151351 + timestamp: 1749990170707 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + sha256: 7cfec9804c84844ea544d98bda1d9121672b66ff7149141b8415ca42dfcd44f6 + md5: 72525f07d72806e3b639ad4504c30ce5 depends: - __unix license: ISC - size: 152283 - timestamp: 1745653616541 + size: 151069 + timestamp: 1749990087500 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda sha256: 3bd6a391ad60e471de76c0e9db34986c4b5058587fbf2efa5a7f54645e28c2c7 md5: 09262e66b19567aff4f592fb53b28760 @@ -1891,14 +1863,14 @@ packages: license_family: Other size: 1123180 timestamp: 1697075906785 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda - sha256: 52aa837642fd851b3f7ad3b1f66afc5366d133c1d452323f786b0378a391915c - md5: c33eeaaa33f45031be34cda513df39b6 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.6.15-pyhd8ed1ab_0.conda + sha256: d71c85835813072cd6d7ce4b24be34215cd90c104785b15a5d58f4cd0cb50778 + md5: 781d068df0cc2407d4db0ecfbb29225b depends: - python >=3.9 license: ISC - size: 157200 - timestamp: 1746569627830 + size: 155377 + timestamp: 1749972291158 - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 md5: a861504bbea4161a9170b85d4d2be840 @@ -1972,18 +1944,18 @@ packages: license_family: MIT size: 50481 timestamp: 1746214981991 -- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-18.1.8-default_h9e3a008_9.conda - sha256: 2db3ca411b9b3b766eb360251577459b184e959e07ec5c08fd64d28ce96a03f3 - md5: 8cf557081024352e556e895cc70a1581 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-18.1.8-default_h9e3a008_10.conda + sha256: cfd2953bfc021fdb81745b84d8c5d3cb586e178c7d388fbfa21af0949d573239 + md5: 95d2c634466437c4aae9cd708ffab4ed depends: - binutils_impl_linux-64 - - clang-18 18.1.8 default_hb5137d0_9 + - clang-18 18.1.8 default_hb5137d0_10 - libgcc-devel_linux-64 - sysroot_linux-64 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 75867 - timestamp: 1744065484366 + size: 74905 + timestamp: 1747717841054 - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-15.0.7-hdae98eb_5.conda sha256: 1dbb1f4094957baf3af77d05b32b305215628f096a34d8e0673708411150870e md5: fe353fe9ae77675f80e084b54ae93752 @@ -2044,19 +2016,19 @@ packages: license_family: Apache size: 792471 timestamp: 1711087038942 -- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-18-18.1.8-default_hb5137d0_9.conda - sha256: 46b0348bc9d6a5b66ede61532a22c2f878f2e207072503e4a47cbc993dc5f631 - md5: cca48e8d995c54d4fc17877172aa04b3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-18-18.1.8-default_hb5137d0_10.conda + sha256: 86a1c3e4e118b66b82adf44e5332f58e12b7a047af249aafc9d61a32811a4ae9 + md5: 8db7315b8454893d0da6f86c79c8d4de depends: - __glibc >=2.17,<3.0.a0 - - libclang-cpp18.1 18.1.8 default_hb5137d0_9 + - libclang-cpp18.1 18.1.8 default_hb5137d0_10 - libgcc >=13 - libllvm18 >=18.1.8,<18.2.0a0 - libstdcxx >=13 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 827372 - timestamp: 1744065423464 + size: 828532 + timestamp: 1747717777795 - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-15.0.7-h03d6864_8.conda sha256: 19e4975079ea01db7a1b2f74bb722e5daa19ac405465b8566197df0d2658a84c md5: 7cc98f90637f99acd45cfc41350ba924 @@ -2101,15 +2073,6 @@ packages: license_family: BSD size: 20787 timestamp: 1704364345762 -- conda: https://conda.anaconda.org/conda-forge/win-64/clangdev-5.0.0-flang_3.tar.bz2 - sha256: e5661a405acc14bd4941c576daebc3959b6f94f0cfd22b66f2a3f3198a3ec609 - md5: afbd5f59b9358ee37e73fbfb1515c3b6 - depends: - - vs2015_runtime - - vc 14.* - features: flang - license: NCSA - size: 198174317 - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-15.0.7-default_h7151d67_5.conda sha256: b202c18273677f6614dea721680644b12a890afd18293aa14c948dfe79510750 md5: 7339a849693f35d2d6aebac06484d11a @@ -2184,27 +2147,27 @@ packages: license_family: BSD size: 17216 timestamp: 1661938037728 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.0-pyh707e725_0.conda - sha256: 910f0e5e74a75f6e270b9dedd0f8ac55830250b0874f9f67605816fd069af283 - md5: 4d4f33c3d9e5a23a7f4795d327a5d1f0 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda + sha256: 8aee789c82d8fdd997840c952a586db63c6890b00e88c4fb6e80a38edd5f51c0 + md5: 94b550b8d3a614dbd326af798c7dfb40 depends: - __unix - python >=3.10 license: BSD-3-Clause license_family: BSD - size: 87705 - timestamp: 1746951781787 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.0-pyh7428d3b_0.conda - sha256: cfde6568dedb1726b4cd9f2f8204caee745cf972d25a3ebc8b75a2349c5e7205 - md5: 8fac1fede8f5ea11cf93235463c8a045 + size: 87749 + timestamp: 1747811451319 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh7428d3b_0.conda + sha256: 20c2d8ea3d800485245b586a28985cba281dd6761113a49d7576f6db92a0a891 + md5: 3a59475037bc09da916e4062c5cad771 depends: - __win - colorama - python >=3.10 license: BSD-3-Clause license_family: BSD - size: 88276 - timestamp: 1746951775467 + size: 88117 + timestamp: 1747811467132 - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.27.6-hcfe8598_0.conda sha256: 64e08c246195d6956f7a04fa7d96a53de696b26b1dae8b08cfe716950f696e12 md5: 4c0101485c452ea86f846523c4fae698 @@ -2365,17 +2328,6 @@ packages: license_family: BSD size: 7127 timestamp: 1689097909496 -- conda: https://conda.anaconda.org/conda-forge/win-64/compilers-1.6.0-h57928b3_0.conda - sha256: 925898d204b2cb0c43e7001ac956e2c34154e7d5eba03aa2356701600cd44245 - md5: facaaa8d95a05c2dd3ca06eb3dca3c2c - depends: - - c-compiler 1.6.0 hcfcfb64_0 - - cxx-compiler 1.6.0 h91493d7_0 - - fortran-compiler 1.6.0 h9655429_0 - license: BSD-3-Clause - license_family: BSD - size: 7396 - timestamp: 1689097773566 - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda sha256: 9a221808405d813d8c555efce6944379b907d36d79e77d526d573efa6b996d26 md5: 8a3ae7f6318376aa08ea753367bb7dd6 @@ -2387,16 +2339,16 @@ packages: license_family: BSD size: 255143 timestamp: 1691048232276 -- conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_1.conda - sha256: fb3f5a0836e56e9f9180e006bf0b78a61e3de0551bfa445b71dfde57fd1778c0 - md5: 027138b89fbe94c3870eee49bb2e1da6 +- conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.12.0-pyhd8ed1ab_0.conda + sha256: 11b76b0be2f629e8035be1d723ccb6e583eb0d2af93bde56113da7fa6e2f2649 + md5: ff75d06af779966a5aeae1be1d409b96 depends: - python >=3.9 - zstandard >=0.15 license: BSD-3-Clause license_family: BSD - size: 20880 - timestamp: 1741620833574 + size: 21933 + timestamp: 1751548225624 - conda: https://conda.anaconda.org/conda-forge/noarch/contextlib2-21.6.0-pyhd8ed1ab_1.conda sha256: 90e12ef22f91937e723116b79cb42f3ab38c407970398a843b1eac358ca68c45 md5: 4de17d73a4afd4ce03b370fe4480100f @@ -2406,16 +2358,17 @@ packages: license_family: PSF size: 18056 timestamp: 1734475348772 -- conda: https://conda.anaconda.org/conda-forge/noarch/cssselect2-0.2.1-pyh9f0ad1d_1.tar.bz2 - sha256: cfa9f03e406c32000ad05ecead87dbe86ba2786ef4cd3d5c5c129c11fd640c43 - md5: 1e642cd71b43866bcedff1172ac1fc53 +- conda: https://conda.anaconda.org/conda-forge/noarch/cssselect2-0.8.0-pyhd8ed1ab_0.conda + sha256: 0a6728d77e337fd5b543765b0cd05eda996b63f4ef0c1bb34a02d78a7d123a68 + md5: 504bf822bea0f84547fb31e41de19714 depends: - - python + - python >=3.9 - tinycss2 + - webencodings license: BSD-3-Clause license_family: BSD - size: 30243 - timestamp: 1585168847061 + size: 20425 + timestamp: 1751498485591 - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.6.0-h00ab1b0_0.conda sha256: 472b6b7f967df1db634c67d71c6b31cd186d18b5d0548196c2e426833ff17d99 md5: 364c6ae36c4e36fcbd4d273cf4db78af @@ -2444,14 +2397,6 @@ packages: license: BSD size: 6301 timestamp: 1689097905706 -- conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.6.0-h91493d7_0.conda - sha256: 625af0fe202d3df70ba29bb6c80f3e45887b571a87dfd5bff94fa75577e2c417 - md5: b1219f0b49bd243c7139cb9c42c4710c - depends: - - vs2019_win-64 - license: BSD - size: 6421 - timestamp: 1689097764951 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be md5: 961b3a227b437d82ad7054484cfa71b2 @@ -2496,30 +2441,6 @@ packages: license: Unlicense size: 17887 timestamp: 1741969612334 -- conda: https://conda.anaconda.org/conda-forge/win-64/flang-5.0.0-he025d50_20180525.tar.bz2 - sha256: 7094bc2242e52aea89b8c83e54770028b0668b12e063b405c3423fbfb94f6fa2 - md5: 6a25fea497e9da30b0aa386db4722fc2 - depends: - - clangdev 5.0.0 - - libflang 5.0.0 h6538335_20180525 - - openmp 5.0.0 - - vc >=14,<15.0a0 - - clangdev * flang* - track_features: - - flang - license: Apache 2.0 - size: 2777448 - timestamp: 1527899241687 -- conda: https://conda.anaconda.org/conda-forge/win-64/flang_win-64-5.0.0-h13ae965_20180526.tar.bz2 - sha256: 7d006dbff4b97a598b7909c8c00e6f6c770f720ba60e2745137aad2183cbb8a8 - md5: 311b7fe1652dab00ff1086865e965764 - depends: - - flang 5.0.0.* - track_features: - - flang - license: Apache 2.0 - size: 4799 - timestamp: 1611788765006 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b md5: 0c96522c6bdaed4b1566d11387caaf45 @@ -2657,14 +2578,6 @@ packages: license: BSD size: 6334 timestamp: 1689097892948 -- conda: https://conda.anaconda.org/conda-forge/win-64/fortran-compiler-1.6.0-h9655429_0.conda - sha256: 57cf596104ba80fe6d21303de2b5c11dc4a93d465f9025db47d38684921df0da - md5: a6a7c4a0852e2eaf6960b784da4b290b - depends: - - flang_win-64 5.* - license: BSD - size: 6450 - timestamp: 1689097769579 - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda sha256: 7ef7d477c43c12a5b4cddcf048a83277414512d1116aba62ebadfa7056a7d84f md5: 9ccd736d31e0c6e41f54e704e5312811 @@ -3004,16 +2917,16 @@ packages: license_family: MIT size: 14544252 timestamp: 1720853966338 -- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.10-pyhd8ed1ab_0.conda - sha256: 02f47df6c6982b796aecb086b434627207e87c0a90a50226f11f2cc99c089770 - md5: 8d5b9b702810fb3054d52ba146023bc3 +- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.12-pyhd8ed1ab_0.conda + sha256: 4debbae49a183d61f0747a5f594fca2bf5121e8508a52116f50ccd0eb2f7bb55 + md5: 84463b10c1eb198541cd54125c7efe90 depends: - python >=3.9 - ukkonen license: MIT license_family: MIT - size: 79057 - timestamp: 1745098917031 + size: 78926 + timestamp: 1748049754416 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 md5: 39a4f67be3286c86d696df570b1201b7 @@ -3023,16 +2936,17 @@ packages: license_family: BSD size: 49765 timestamp: 1733211921194 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 - md5: f4b39bf00c69f56ac01e020ebfac066c +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda + sha256: c18ab120a0613ada4391b15981d86ff777b5690ca461ea7e9e49531e8f374745 + md5: 63ccfdc3a3ce25b027b8767eb722fca8 depends: - python >=3.9 - - zipp >=0.5 + - zipp >=3.20 + - python license: Apache-2.0 license_family: APACHE - size: 29141 - timestamp: 1737420302391 + size: 34641 + timestamp: 1747934053147 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.5.2-pyhd8ed1ab_0.conda sha256: a99a3dafdfff2bb648d2b10637c704400295cb2ba6dc929e2d814870cf9f6ae5 md5: e376ea42e9ae40f3278b0f79c9bf9826 @@ -3281,17 +3195,17 @@ packages: license_family: Other size: 1046454 timestamp: 1697075685770 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 - md5: 01f8d123c96816249efd255a31ad7712 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_0.conda + sha256: 2a34aa8146f97f9e2fc1f3ff34e17c1008afd4a7b0e2fea164b8e5df00b8cbb4 + md5: e31316a586cac398b1fcdb10ace786b9 depends: - __glibc >=2.17,<3.0.a0 constrains: - - binutils_impl_linux-64 2.43 + - binutils_impl_linux-64 2.44 license: GPL-3.0-only license_family: GPL - size: 671240 - timestamp: 1740155456116 + size: 675719 + timestamp: 1751601710789 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda sha256: 412381a43d5ff9bbed82cd52a0bbca5b90623f62e41007c9c42d3870c60945ff md5: 9344155d33912347b37f0ae6c410a835 @@ -3354,9 +3268,9 @@ packages: license_family: Apache size: 11404805 timestamp: 1711086898132 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp18.1-18.1.8-default_hb5137d0_9.conda - sha256: e836f076b148c5ee2dd20d776e503693c1a49981fb9154334a55f431476e354a - md5: a73cc3b453183e04d3686e0a08ab896f +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp18.1-18.1.8-default_hb5137d0_10.conda + sha256: 6a36d9e161bbebc237114650097d59d434b1da06c3ec612a7c75ec6f68cd14f5 + md5: 721921a66c5179e22bf470d11df87c92 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -3364,8 +3278,8 @@ packages: - libstdcxx >=13 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 19275291 - timestamp: 1744065302880 + size: 19274748 + timestamp: 1747717659985 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda sha256: 54e6114dfce566c3a22ad3b7b309657e3600cdb668398e95f1301360d5d52c99 md5: 6e801c50a40301f6978c53976917b277 @@ -3426,24 +3340,24 @@ packages: license_family: MIT size: 342388 timestamp: 1726660508261 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.5-hf95d169_0.conda - sha256: 9003bd12988a54713602999999737590f3b023b0cadb2b316cd3ac256d6740d6 - md5: 9dde68cee0a231b19e189954ac29027b +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda + sha256: f6e088a2e0e702a4908d1fc9f1a17b080bdcf63e1f8a9cb35dd158fc1d1eb2f5 + md5: 8b47ade37d4e75417b4e993179c09f5d depends: - __osx >=10.13 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 562408 - timestamp: 1747262455533 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.5-ha82da77_0.conda - sha256: 2765b6e23da91807ce2ed44587fbaadd5ba933b0269810b3c22462f9582aedd3 - md5: 4ef1bdb94d42055f511bb358f2048c58 + size: 562573 + timestamp: 1749846921724 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda + sha256: a3fd34773f1252a4f089e74a075ff5f0f6b878aede097e83a405f35687c36f24 + md5: 881de227abdddbe596239fa9e82eb3ab depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 568010 - timestamp: 1747262879889 + size: 567189 + timestamp: 1749847129529 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda sha256: 8420748ea1cc5f18ecc5068b4f24c7a023cc9b20971c99c824ba10641fb95ddf md5: 64f0c503da58ec25ebd359e4d990afa8 @@ -3626,17 +3540,6 @@ packages: license_family: MIT size: 44978 timestamp: 1743435053850 -- conda: https://conda.anaconda.org/conda-forge/win-64/libflang-5.0.0-h6538335_20180525.tar.bz2 - sha256: 0b893b511190332320f4a3e3d6424fbd350271ffbca34eb25b5cd8bc451f1a05 - md5: 9f473a344e18668e99a93f7e21a54b69 - depends: - - openmp 5.0.0 - - vc >=14,<15.0a0 - track_features: - - flang - license: Apache 2.0 - size: 531143 - timestamp: 1527899216421 - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda sha256: 7be9b3dac469fe3c6146ff24398b685804dfc7a1de37607b84abd076f57cc115 md5: 51f5be229d83ecd401fb369ab96ae669 @@ -3720,33 +3623,33 @@ packages: license: GPL-2.0-only OR FTL size: 337007 timestamp: 1745370226578 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - sha256: 0024f9ab34c09629621aefd8603ef77bf9d708129b0dd79029e502c39ffc2195 - md5: ea8ac52380885ed41c1baa8f1d6d2b93 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + sha256: 59a87161212abe8acc57d318b0cc8636eb834cdfdfddcf1f588b5493644b39a3 + md5: 9e60c55e725c20d23125a5f0dd69af5d depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==15.1.0=*_2 - - libgomp 15.1.0 h767d61c_2 + - libgcc-ng ==15.1.0=*_3 + - libgomp 15.1.0 h767d61c_3 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 829108 - timestamp: 1746642191935 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_2.conda - sha256: c0288596ac58366d96a56c57e4088fe1c6dd4194fdcaeacf5862f47fb1e1e5be - md5: 9bedb24480136bfeb81ebc81d4285e70 + size: 824921 + timestamp: 1750808216066 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda + sha256: 05978c4e8c826dd3b727884e009a19ceee75b0a530c18fc14f0ba56b090f2ea3 + md5: d8314be93c803e2e2b430f6389d6ce6a depends: - _openmp_mutex >=4.5 - libwinpthread >=12.0.0.r4.gg4f2fc60ca constrains: + - libgomp 15.1.0 h1383e82_3 - msys2-conda-epoch <0.0a0 - - libgcc-ng ==15.1.0=*_2 - - libgomp 15.1.0 h1383e82_2 + - libgcc-ng ==15.1.0=*_3 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 673459 - timestamp: 1746656621653 + size: 669602 + timestamp: 1750808309041 - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-12.4.0-h1762d19_102.conda sha256: 4f8486faaa5696a4115a621100acda0f64b49631f2c4bc6046e0f72496348d76 md5: 5c9ee54252cddf9f83dc48f6ceef0ba4 @@ -3756,33 +3659,33 @@ packages: license_family: GPL size: 2558737 timestamp: 1740240187748 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - sha256: 0ab5421a89f090f3aa33841036bb3af4ed85e1f91315b528a9d75fab9aad51ae - md5: ddca86c7040dd0e73b2b69bd7833d225 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + sha256: b0b0a5ee6ce645a09578fc1cb70c180723346f8a45fdb6d23b3520591c6d6996 + md5: e66f2b8ad787e7beb0f846e4bd7e8493 depends: - - libgcc 15.1.0 h767d61c_2 + - libgcc 15.1.0 h767d61c_3 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 34586 - timestamp: 1746642200749 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-14.2.0-hef36b68_105.conda - sha256: 984040aa98dedcfbe1cf59befd73740e30d368b96cbfa17c002297e67fa5af23 - md5: 6b27baf030f5d6603713c7e72d3f6b9a + size: 29033 + timestamp: 1750808224854 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.1.0-h5f6db21_0.conda + sha256: 10efd2a1e18641dfcb57bdc14aaebabe9b24020cf1a5d9d2ec8d7cd9b2352583 + md5: bca8f1344f0b6e3002a600f4379f8f2f depends: - - libgfortran5 14.2.0 h58528f3_105 + - libgfortran5 15.1.0 hfa3c126_0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 155635 - timestamp: 1743911593527 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-14.2.0-heb5dd2a_105.conda - sha256: 6ca48762c330d1cdbdaa450f197ccc16ffb7181af50d112b4ccf390223d916a1 - md5: ad35937216e65cfeecd828979ee5e9e6 + size: 134053 + timestamp: 1750181840950 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.1.0-hfdf1602_0.conda + sha256: 9620b4ac9d32fe7eade02081cd60d6a359a927d42bb8e121bd16489acd3c4d8c + md5: e3b7dca2c631782ca1317a994dfe19ec depends: - - libgfortran5 14.2.0 h2c44a93_105 + - libgfortran5 15.1.0 hb74de2c_0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 155474 - timestamp: 1743913530958 + size: 133859 + timestamp: 1750183546047 - conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-64-12.4.0-h3f4828c_105.conda sha256: 5f341df8a8c85f84919d362fc2e2cc314094bb7a0ea23f32508345f0d481724d md5: 718c32156d4a0702b829d5f01ee96c55 @@ -3797,9 +3700,9 @@ packages: license_family: GPL size: 407604 timestamp: 1743912616577 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - sha256: be23750f3ca1a5cb3ada858c4f633effe777487d1ea35fddca04c0965c073350 - md5: 01de444988ed960031dbe84cf4f9b1fc +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda + sha256: eea6c3cf22ad739c279b4d665e6cf20f8081f483b26a96ddd67d4df3c88dfa0a + md5: 530566b68c3b8ce7eec4cd047eae19fe depends: - __glibc >=2.17,<3.0.a0 - libgcc >=15.1.0 @@ -3807,33 +3710,33 @@ packages: - libgfortran 15.1.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1569986 - timestamp: 1746642212331 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h58528f3_105.conda - sha256: 02fc48106e1ca65cf7de15f58ec567f866f6e8e9dcced157d0cff89f0768bb59 - md5: 94560312ff3c78225bed62ab59854c31 + size: 1565627 + timestamp: 1750808236464 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.1.0-hfa3c126_0.conda + sha256: b8e892f5b96d839f7bf6de267329c145160b1f33d399b053d8602085fdbf26b2 + md5: c97d2a80518051c0e88089c51405906b depends: - llvm-openmp >=8.0.0 constrains: - - libgfortran 14.2.0 + - libgfortran 15.1.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1224385 - timestamp: 1743911552203 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h2c44a93_105.conda - sha256: de09987e1080f71e2285deec45ccb949c2620a672b375029534fbb878e471b22 - md5: 06f35a3b1479ec55036e1c9872f97f2c + size: 1226396 + timestamp: 1750181111194 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.1.0-hb74de2c_0.conda + sha256: 44b8ce4536cc9a0e59c09ff404ef1b0120d6a91afc32799331d85268cbe42438 + md5: 8b158ccccd67a40218e12626a39065a1 depends: - llvm-openmp >=8.0.0 constrains: - - libgfortran 14.2.0 + - libgfortran 15.1.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 806283 - timestamp: 1743913488925 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h3618099_1.conda - sha256: 1d57e4b03fbe0d83f62ac5ccb5d7f65e6e59b108741e67645d35dcde50cb5264 - md5: 714c97d4ff495ab69d1fdfcadbcae985 + size: 758352 + timestamp: 1750182604206 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda + sha256: a6b5cf4d443044bc9a0293dd12ca2015f0ebe5edfdc9c4abdde0b9947f9eb7bd + md5: 072ab14a02164b7c0c089055368ff776 depends: - __glibc >=2.17,<3.0.a0 - libffi >=3.4.6,<3.5.0a0 @@ -3842,43 +3745,43 @@ packages: - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.45,<10.46.0a0 constrains: - - glib 2.84.1 *_1 + - glib 2.84.2 *_0 license: LGPL-2.1-or-later - size: 3939065 - timestamp: 1746083931235 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.1-h3139dbc_1.conda - sha256: 03f039632a2c901ab400b37b80af830d76b405fb3e1392ef97c29da37aeac2cf - md5: ef796edd2be817ae4e1b32482419a58c + size: 3955066 + timestamp: 1747836671118 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda + sha256: 4445ab5b45bfeeb087ef3fd4f94c90f41261b5638916c58928600c1fc1f4f6ab + md5: eeb11015e8b75f8af67014faea18f305 depends: - __osx >=10.13 - libffi >=3.4.6,<3.5.0a0 - libiconv >=1.18,<2.0a0 - - libintl >=0.23.1,<1.0a0 + - libintl >=0.24.1,<1.0a0 - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.45,<10.46.0a0 constrains: - - glib 2.84.1 *_1 + - glib 2.84.2 *_0 license: LGPL-2.1-or-later - size: 3733564 - timestamp: 1746084240143 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.1-hbec27ea_1.conda - sha256: 3126bd54bd97ff793b3283f7e7fd2ce58ce160a4ce9010da0e8efcbf76f99ad2 - md5: 4170c31b9f6bee323af3959233e06594 + size: 3727403 + timestamp: 1747836941924 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda + sha256: 5fcc5e948706cc64e45e2454267f664ed5a1e84f15345aae04a41d852a879c0e + md5: 7bbb8961dca1b4b9f2b01b6e722111a7 depends: - __osx >=11.0 - libffi >=3.4.6,<3.5.0a0 - libiconv >=1.18,<2.0a0 - - libintl >=0.23.1,<1.0a0 + - libintl >=0.24.1,<1.0a0 - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.45,<10.46.0a0 constrains: - - glib 2.84.1 *_1 + - glib 2.84.2 *_0 license: LGPL-2.1-or-later - size: 3687868 - timestamp: 1746084535723 -- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-hbc94333_1.conda - sha256: 08436a58ba037e34c6d378625a846e9c022c2e411bce21c223eacb0dd11ca334 - md5: e08d4b6e9a742d78e505b2d7038912bd + size: 3666180 + timestamp: 1747837044507 +- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.2-hbc94333_0.conda + sha256: 457e297389609ff6886fef88ae7f1f6ea4f4f3febea7dd690662a50983967d6d + md5: fee05801cc5db97bec20a5e78fb3905b depends: - libffi >=3.4.6,<3.5.0a0 - libiconv >=1.18,<2.0a0 @@ -3889,30 +3792,30 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - glib 2.84.1 *_1 + - glib 2.84.2 *_0 license: LGPL-2.1-or-later - size: 3778909 - timestamp: 1746084478373 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda - sha256: 05fff3dc7e80579bc28de13b511baec281c4343d703c406aefd54389959154fb - md5: fbe7d535ff9d3a168c148e07358cd5b1 + size: 3771466 + timestamp: 1747837394297 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda + sha256: 43710ab4de0cd7ff8467abff8d11e7bb0e36569df04ce1c099d48601818f11d1 + md5: 3cd1a7238a0dd3d0860fdefc496cc854 depends: - __glibc >=2.17,<3.0.a0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 452635 - timestamp: 1746642113092 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_2.conda - sha256: 4316316097ce5fde2608b6fccd18709cf647dce52e230f5ac66f5c524dfad791 - md5: 5fbacaa9b41e294a6966602205b99747 + size: 447068 + timestamp: 1750808138400 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda + sha256: 2e6e286c817d2274b109c448f63d804dcc85610c5abf97e183440aa2d84b8c72 + md5: 94545e52b3d21a7ab89961f7bda3da0d depends: - libwinpthread >=12.0.0.r4.gg4f2fc60ca constrains: - msys2-conda-epoch <0.0a0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 540903 - timestamp: 1746656563815 + size: 535456 + timestamp: 1750808243424 - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 md5: 804ca9e91bcaea0824a341d55b1684f2 @@ -3960,24 +3863,24 @@ packages: license: LGPL-2.1-only size: 638142 timestamp: 1740128665984 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - sha256: f0a759b35784d5a31aeaf519f8f24019415321e62e52579a3ec854a413a1509d - md5: b3f498d87404090f731cb6a474045150 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h27064b9_0.conda + sha256: 33828b83c29f4fcee0ae5f740b5e4660bee3793df8c9079e279284604858c0ac + md5: 27e7ef1f0d8c47ae5acd6e0e15c08f8d depends: - __osx >=10.13 - libiconv >=1.18,<2.0a0 license: LGPL-2.1-or-later - size: 97229 - timestamp: 1746229336518 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - sha256: fb6d211d9e75e6becfbf339d255ea01f7bd3a61fe6237b3dad740de1b74b3b81 - md5: 0dca9914f2722b773c863508723dfe6e + size: 97550 + timestamp: 1751558234755 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda + sha256: 99d2cebcd8f84961b86784451b010f5f0a795ed1c08f1e7c76fbb3c22abf021a + md5: 5103f6a6b210a3912faf8d7db516918c depends: - __osx >=11.0 - libiconv >=1.18,<2.0a0 license: LGPL-2.1-or-later - size: 90547 - timestamp: 1746229257769 + size: 90957 + timestamp: 1751558394144 - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda sha256: c7e4600f28bcada8ea81456a6530c2329312519efcf0c886030ada38976b0511 md5: 2cf0cf76cc15d360dfa2f17fd6cf9772 @@ -4068,92 +3971,88 @@ packages: license_family: Apache size: 38299762 timestamp: 1737843272034 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - sha256: eeff241bddc8f1b87567dd6507c9f441f7f472c27f0860a07628260c000ef27c - md5: a76fd702c93cd2dfd89eff30a5fd45a8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8 + md5: 1a580f7796c7bf6393fddb8bbbde58dc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD - size: 112845 - timestamp: 1746531470399 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - sha256: 20a4c5291f3e338548013623bb1dc8ee2fba5dbac8f77acaddd730ed2a7d29b6 - md5: f87e8821e0e38a4140a7ed4f52530053 + size: 112894 + timestamp: 1749230047870 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + sha256: 7e22fd1bdb8bf4c2be93de2d4e718db5c548aa082af47a7430eb23192de6bb36 + md5: 8468beea04b9065b9807fc8b9cdc5894 depends: - __osx >=10.13 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD - size: 104814 - timestamp: 1746531577001 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - sha256: 5ab62c179229640c34491a7de806ad4ab7bec47ea2b5fc2136e3b8cf5ef26a57 - md5: 4e8ef3d79c97c9021b34d682c24c2044 + size: 104826 + timestamp: 1749230155443 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + sha256: 0cb92a9e026e7bd4842f410a5c5c665c89b2eb97794ffddba519a626b8ce7285 + md5: d6df911d4564d77c4374b02552cb17d1 depends: - __osx >=11.0 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD - size: 92218 - timestamp: 1746531818330 -- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - sha256: adbf6c7bde70536ada734a81b8b5aa23654f2b95445204404622e0cc40e921a0 - md5: 14a1042c163181e143a7522dfb8ad6ab + size: 92286 + timestamp: 1749230283517 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + sha256: 55764956eb9179b98de7cc0e55696f2eff8f7b83fc3ebff5e696ca358bca28cc + md5: c15148b2e18da456f5108ccb5e411446 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD - size: 104699 - timestamp: 1746531718026 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_1.conda - sha256: f157a2da5f7bf2c5ce5a18c52ccc76c39f075f7fbb1584d585a8d25c1b17cb92 - md5: 5499e2dd2f567a818b9f111e47caebd2 + size: 104935 + timestamp: 1749230611612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.conda + sha256: 329e66330a8f9cbb6a8d5995005478188eb4ba8a6b6391affa849744f4968492 + md5: f61edadbb301530bd65a32646bd81552 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.8.1 hb9d3cd8_1 + - liblzma 5.8.1 hb9d3cd8_2 license: 0BSD - size: 441592 - timestamp: 1746531484594 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.1-hd471939_1.conda - sha256: b00b204289f6ebb1115190442cc4db2961970cf4202bf9828655ab4a70976d19 - md5: 2cdef1be4a6cac1104be7c315c24c81f + size: 439868 + timestamp: 1749230061968 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.1-hd471939_2.conda + sha256: a020ad9f1e27d4f7a522cbbb9613b99f64a5cc41f80caf62b9fdd1cf818acf18 + md5: 2e16f5b4f6c92b96f6a346f98adc4e3e depends: - __osx >=10.13 - - liblzma 5.8.1 hd471939_1 + - liblzma 5.8.1 hd471939_2 license: 0BSD - size: 116275 - timestamp: 1746531592267 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.8.1-h39f12f2_1.conda - sha256: 33a7e9b529c9dd0cf57ad4966bc407a4088ad8327b8d9801705eb37d34aa3cf0 - md5: 4a9561681f11aa4fb43f1bb7d209629c + size: 116356 + timestamp: 1749230171181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.8.1-h39f12f2_2.conda + sha256: 974804430e24f0b00f3a48b67ec10c9f5441c9bb3d82cc0af51ba45b8a75a241 + md5: 1201137f1a5ec9556032ffc04dcdde8d depends: - __osx >=11.0 - - liblzma 5.8.1 h39f12f2_1 + - liblzma 5.8.1 h39f12f2_2 license: 0BSD - size: 116401 - timestamp: 1746531844770 -- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.8.1-h2466b09_1.conda - sha256: 300b451e0b8e6aba86f0e851a46ffb9bec32d65231c951ca101a0f86df9ddd6a - md5: a7b34ee24dfbb216ae6ab0ac5ffb6fae + size: 116244 + timestamp: 1749230297170 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.8.1-h2466b09_2.conda + sha256: 1ccff927a2d768403bad85e36ca3e931d96890adb4f503e1780c3412dd1e1298 + md5: 42c90c4941c59f1b9f8fab627ad8ae76 depends: - - liblzma 5.8.1 h2466b09_1 + - liblzma 5.8.1 h2466b09_2 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: 0BSD - size: 129334 - timestamp: 1746531747316 + size: 129344 + timestamp: 1749230637001 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 md5: 19e57602824042dfd0446292ef90488b @@ -4200,54 +4099,55 @@ packages: license_family: MIT size: 566719 timestamp: 1729572385640 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 - md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + sha256: 927fe72b054277cde6cb82597d0fcf6baf127dcbce2e0a9d8925a68f1265eef5 + md5: d864d34357c3b65a4b731f78c0801dc4 depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: LGPL-2.1-only license_family: GPL - size: 33408 - timestamp: 1697359010159 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 - md5: 55199e2ae2c3651f6f9b2a447b47bdc9 + size: 33731 + timestamp: 1750274110928 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h943b412_0.conda + sha256: c7b212bdd3f9d5450c4bae565ccb9385222bf9bb92458c2a23be36ff1b981389 + md5: 51de14db340a848869e69c632b43cca7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 288701 - timestamp: 1739952993639 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - sha256: d00a144698debb226a01646c72eff15917eb0143f92c92e1b61ce457d9367b89 - md5: 8461ab86d2cdb76d6e971aab225be73f + size: 289215 + timestamp: 1751559366724 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h3c4a55f_0.conda + sha256: a6b51f7056d3f5cf7e71f87314e7b3bb3b6ac5e38a4fb366cf500790e325ffd2 + md5: 0b750895b4a3cbd06e685f86c24c205d depends: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 266874 - timestamp: 1739953034029 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f - md5: 3550e05e3af94a3fa9cef2694417ccdf + size: 267202 + timestamp: 1751559565046 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h3783ad8_0.conda + sha256: 38d89e4ceae81f24a11129d2f5e8d10acfc12f057b7b4fd5af9043604a689941 + md5: f39e4bd5424259d8dfcbdbf0e068558e depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 259332 - timestamp: 1739953032676 -- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-h7a4582a_0.conda - sha256: e12c46ca882080d901392ae45e0e5a1c96fc3e5acd5cd1a23c2632eb7f024f26 - md5: ad620e92b82d2948bc019e029c574ebb + size: 260895 + timestamp: 1751559636317 +- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h95bef1e_0.conda + sha256: 17f3bfb6d852eec200f68a4cfb4ef1d8950b73dfa48931408e3dbdfc89a4848a + md5: 2e63db2e13cd6a5e2c08f771253fb8a0 depends: - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: zlib-acknowledgement - size: 346511 - timestamp: 1745771984515 + size: 352422 + timestamp: 1751559786122 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-12.4.0-ha732cd4_2.conda sha256: d9a23eee55fc2a901e67565c328c37e7c2336ca805d985ad4a67b7837fb4e40a md5: e729f335fee31fd68429187c9e0f97c2 @@ -4259,44 +4159,44 @@ packages: license_family: GPL size: 3955974 timestamp: 1740240321338 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda - sha256: 525d4a0e24843f90b3ff1ed733f0a2e408aa6dd18b9d4f15465595e078e104a2 - md5: 93048463501053a00739215ea3f36324 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda + sha256: 07649c7c19b916179926006df5c38074618d35bf36cd33ab3fe8b22182bbd258 + md5: b04c7eda6d7dab1e6503135e7fad4d25 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 916313 - timestamp: 1746637007836 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda - sha256: 8fd9562478b4d1dc90ab2bcad5289ee2b5a971ca8ad87e6b137ce0ca53bf801d - md5: 9377ba1ade655ea3fc831b456f4a2351 + size: 918887 + timestamp: 1751135622316 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.2-he7d56d0_0.conda + sha256: bd3ab15e14d7e88851c962034d97519a135d86f79f88b3237fbfb34194c114cb + md5: 678284738efc450afcf90f70365f7318 depends: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 977388 - timestamp: 1746637093883 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda - sha256: d89f979497cf56eccb099b6ab9558da7bba1f1ba264f50af554e0ea293d9dcf9 - md5: 85f443033cd5b3df82b5cabf79bddb09 + size: 980106 + timestamp: 1751135725501 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-h6fb428d_0.conda + sha256: 6b51a9e7366d6cd26e50d1d0646331d457999ebb88af258f06a74f075e95bf68 + md5: b2dc1707166040e738df2d514f8a1d22 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 899462 - timestamp: 1746637228408 -- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.2-h67fdade_0.conda - sha256: 1612baa49124ec1972b085ab9d6bf1855c5f38e8f16e8d8f96c193d6e11688b2 - md5: a3900c97ba9e03332e9a911fe63f7d64 + size: 901519 + timestamp: 1751135765345 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.2-hf5d6505_0.conda + sha256: d136ecf423f83208156daa6a8c1de461a7e9780e8e4423c23c7e136be3c2ff0a + md5: e1e6cac409e95538acdc3d33a0f34d6a depends: - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: Unlicense - size: 1081123 - timestamp: 1746637406471 + size: 1285981 + timestamp: 1751135695346 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda sha256: 50e47fd9c4f7bf841a11647ae7486f65220cfc988ec422a4475fe8d5a823824d md5: 1f5a58e686b13bcfde88b93f547d23fe @@ -4341,16 +4241,16 @@ packages: license_family: BSD size: 266806 timestamp: 1685838242099 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - sha256: 6ae3d153e78f6069d503d9309f2cac6de5b93d067fc6433160a4c05226a5dad4 - md5: 1cb1c67961f6dd257eae9e9691b341aa +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + sha256: 7650837344b7850b62fdba02155da0b159cf472b9ab59eb7b472f7bd01dff241 + md5: 6d11a5edae89fe413c0569f16d308f5a depends: - __glibc >=2.17,<3.0.a0 - - libgcc 15.1.0 h767d61c_2 + - libgcc 15.1.0 h767d61c_3 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3902355 - timestamp: 1746642227493 + size: 3896407 + timestamp: 1750808251302 - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-12.4.0-h1762d19_102.conda sha256: 5e86d884d6877ce428d90a484cdc66d5968bf81dc189393239c43fe9b831da7d md5: aa2ae7befd3d165f3cfc4d3b39cebeb5 @@ -4360,15 +4260,15 @@ packages: license_family: GPL size: 11883113 timestamp: 1740240215984 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda - sha256: 11bea86e11de7d6bce87589197a383344df3fa0a3552dab7e931785ff1159a5b - md5: 9d2072af184b5caa29492bf2344597bb +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda + sha256: bbaea1ecf973a7836f92b8ebecc94d3c758414f4de39d2cc6818a3d10cb3216b + md5: 57541755b5a51691955012b8e197c06c depends: - - libstdcxx 15.1.0 h8f9b012_2 + - libstdcxx 15.1.0 h8f9b012_3 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 34647 - timestamp: 1746642266826 + size: 29093 + timestamp: 1750808292700 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda sha256: 7fa6ddac72e0d803bb08e55090a8f2e71769f1eb7adbd5711bdd7789561601b1 md5: e79a094918988bb1807462cd42c83962 @@ -4443,45 +4343,45 @@ packages: license_family: BSD size: 33601 timestamp: 1680112270483 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b - md5: 771ee65e13bc599b0b62af5359d80169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb9d3cd8_0.conda + sha256: 770ca175d64323976c9fe4303042126b2b01c1bd54c8c96cafeaba81bdb481b8 + md5: 1349c022c92c5efd3fd705a79a5804d8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 891272 - timestamp: 1737016632446 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.50.0-h4cb831e_0.conda - sha256: ec9da0a005c668c0964e0a6546c21416bab608569b5863edbdf135cee26e67d8 - md5: c86c7473f79a3c06de468b923416aa23 + size: 890145 + timestamp: 1748304699136 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.51.0-h4cb831e_0.conda + sha256: 2c820c8e26d680f74035f58c3d46593461bb8aeefa00faafa5ca39d8a51c87fa + md5: 8afd5432c2e6776d145d94f4ea4d4db5 depends: - __osx >=11.0 license: MIT license_family: MIT - size: 420128 - timestamp: 1737016791074 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 - md5: 20717343fb30798ab7c23c2e92b748c1 + size: 420355 + timestamp: 1748304826637 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.51.0-h5505292_0.conda + sha256: 41c1230a3f4e0d265e5053c671f112a16be4405b9047d3da5581e03e9d53de65 + md5: 230a885fe67a3e945a4586b944b6020a depends: - __osx >=11.0 license: MIT license_family: MIT - size: 418890 - timestamp: 1737016751326 -- conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.50.0-h2466b09_0.conda - sha256: aeb71b2a2973ffed6d639ace6c1afef1a337836425e637d2320f3166dbaa5c80 - md5: a63a1ec1e8d017d1b9894aed98c419da + size: 420654 + timestamp: 1748304893204 +- conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.51.0-h2466b09_0.conda + sha256: b03ca3d0cfbf8b3911757411a10fbbaa7edae62bb81972ae44360e7ac347aac2 + md5: 9756651456477241b0226fb0ee051c58 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: MIT license_family: MIT - size: 291944 - timestamp: 1737017103042 + size: 293576 + timestamp: 1748305181284 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf md5: 63f790534398730f59e1b899c3644d4a @@ -4687,34 +4587,28 @@ packages: license_family: Other size: 55476 timestamp: 1727963768015 -- conda: https://conda.anaconda.org/conda-forge/noarch/llvm-meta-5.0.0-0.tar.bz2 - sha256: 090bbeacc3297ff579b53f55ad184f05c30e316fe9d5d7df63df1d2ad4578b79 - md5: 213b5b5ad34008147a824460e50a691c - license: BSD-3-Clause - license_family: BSD - size: 2667 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.4-ha54dae1_0.conda - sha256: 5830f3a9109e52cb8476685e9ccd4ff207517c95ff453c47e6ed35221715b879 - md5: 985619d7704847d30346abb6feeb8351 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda + sha256: 18d3b64965c1f5f7cd24a140b3e4f49191dd579cc8ca6d3db220830caf8aae3d + md5: e240159643214102dc88395c4ecee9cf depends: - __osx >=10.13 constrains: - - openmp 20.1.4|20.1.4.* + - openmp 20.1.7|20.1.7.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 306636 - timestamp: 1746134503342 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.4-hdb05f8b_0.conda - sha256: b8e8547116dba85890d7b39bfad1c86ed69a6b923caed1e449c90850d271d4d5 - md5: 00cbae3f2127efef6db76bd423a09807 + size: 306443 + timestamp: 1749892271445 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + sha256: e7d95b50a90cdc9e0fc38bc37f493a61b9d08164114b562bbd9ff0034f45eca2 + md5: 741e1da0a0798d32e13e3724f2ca2dcf depends: - __osx >=11.0 constrains: - - openmp 20.1.4|20.1.4.* + - openmp 20.1.7|20.1.7.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 282599 - timestamp: 1746134861758 + size: 281996 + timestamp: 1749892286735 - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-15.0.7-hc29ff6c_5.conda sha256: 0056026c0a3da90ca93da61dea9bfa1a6a03791a1aed1eb4c42d03c43ff19385 md5: c88f4fcfbcfd78ef22889b33d8660830 @@ -4829,16 +4723,16 @@ packages: license_family: GPL size: 6245358 timestamp: 1602706995515 -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.8-pyhd8ed1ab_0.conda - sha256: 04c3f45b1390ee24d3c088d3dbaa20473311d99e1c3ba73099efdf91e2ae2bd3 - md5: 016103aab3842859e6702d7f8bbb0a54 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.8.2-pyhd8ed1ab_0.conda + sha256: d495279d947e01300bfbc124859151be4eec3a088c1afe173323fd3aa89423b2 + md5: b0404922d0459f188768d1e613ed8a87 depends: - importlib-metadata >=4.4 - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 80015 - timestamp: 1744984620627 + size: 80353 + timestamp: 1750360406187 - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 md5: eb227c3e0bf58f5bd69c0532b157975b @@ -4956,9 +4850,9 @@ packages: license_family: BSD size: 3524754 timestamp: 1734344673481 -- conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-autorefs-1.4.1-pyhd8ed1ab_0.conda - sha256: 39b16499e7e8480c891404ab42e72de618153d514a5d1e9fa13a0fd688860061 - md5: 576ae966ad70f69dfe4936c8af6df7d9 +- conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-autorefs-1.4.2-pyhd8ed1ab_0.conda + sha256: ed8d25452bd4211a719183c73ef970a54f239d8224125937294396c09fad48ea + md5: d4468440b32d63e082e0d6c335b19a70 depends: - markdown >=3.3 - markupsafe >=2.0.1 @@ -4966,8 +4860,8 @@ packages: - pymdown-extensions - python >=3.9 license: ISC - size: 2037685 - timestamp: 1741502927919 + size: 34912 + timestamp: 1747758093008 - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-get-deps-0.2.0-pyhd8ed1ab_1.conda sha256: e0b501b96f7e393757fb2a61d042015966f6c5e9ac825925e43f9a6eafa907b6 md5: 84382acddb26c27c70f2de8d4c830830 @@ -4981,9 +4875,9 @@ packages: license_family: MIT size: 14757 timestamp: 1734353035244 -- conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-9.6.14-pyhd8ed1ab_0.conda - sha256: 3e07277687f69476e1a94c361e07bcd3e9584e6364be4db1d03445e12f01fcae - md5: 85d4435caf917482a0005d143c4a6d31 +- conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-9.6.15-pyhd8ed1ab_0.conda + sha256: 0959b4a959e7b23970889a03c6ebd7daee10a3839f80250e958c61c86fcd53eb + md5: de72813ba0ea94ad6f5ab27c89cbc271 depends: - babel >=2.10,<3.dev0 - backrefs >=5.7.post1,<6.dev0 @@ -4999,8 +4893,8 @@ packages: - requests >=2.26,<3.dev0 license: MIT license_family: MIT - size: 4922259 - timestamp: 1747168634333 + size: 4917784 + timestamp: 1751382857197 - conda: https://conda.anaconda.org/conda-forge/noarch/mkdocs-material-extensions-1.3.1-pyhd8ed1ab_1.conda sha256: f62955d40926770ab65cc54f7db5fde6c073a3ba36a0787a7a5767017da50aa3 md5: de8af4000a4872e16fb784c649679c8e @@ -5041,9 +4935,9 @@ packages: license: ISC size: 49011 timestamp: 1735335270705 -- conda: https://conda.anaconda.org/conda-forge/linux-64/mold-2.39.1-hff13881_0.conda - sha256: 8dd1ccbdfe0f429db11f54ab7ac27c1d88f7124852b0f08e484fe222da4c495b - md5: c379b7a6f866fd6e7b9eeec7bf2c99a8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mold-2.40.1-hff13881_0.conda + sha256: 84392d639341f754ebe4cc6584bd088702d095eb48f043752b701d09fc7d82c1 + md5: 18b632f0ff28aed1260c15dbdaf9bffb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5055,8 +4949,8 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: MIT license_family: MIT - size: 2904742 - timestamp: 1747143964695 + size: 2959341 + timestamp: 1749461134307 - conda: https://conda.anaconda.org/conda-forge/osx-64/mpc-1.3.1-h9d8efa1_1.conda sha256: dcf91571da6c2f0db96d43a1b639047def05a0e1b6436d42c9129ab14af47b10 md5: 0520855aaae268ea413d6bc913f1384c @@ -5193,57 +5087,49 @@ packages: license_family: BSD size: 240148 timestamp: 1733817010335 -- conda: https://conda.anaconda.org/conda-forge/win-64/openmp-5.0.0-vc14_1.tar.bz2 - sha256: 05c19170938b589f59049679d4e0679c98160fecc6fd1bf721b0f4980bd235dd - md5: 8284c925330fa53668ade00db3c9e787 - depends: - - llvm-meta 5.0.0|5.0.0.* - - vc 14.* - license: NCSA - size: 590466 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - sha256: b4491077c494dbf0b5eaa6d87738c22f2154e9277e5293175ec187634bd808a0 - md5: de356753cfdbffcde5bb1e86e3aa6cd0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda + sha256: 942347492164190559e995930adcdf84e2fea05307ec8012c02a505f5be87462 + md5: c87df2ab1448ba69169652ab9547082d depends: - __glibc >=2.17,<3.0.a0 - ca-certificates - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 3117410 - timestamp: 1746223723843 -- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.0-hc426f3f_1.conda - sha256: bcac94cb82a458b4e3164da8d9bced08cc8c3da2bc3bd7330711a3689c1464a5 - md5: 919faa07b9647beb99a0e7404596a465 + size: 3131002 + timestamp: 1751390382076 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.1-hc426f3f_0.conda + sha256: d5dc7da2ef7502a14f88443675c4894db336592ac7b9ae0517e1339ebb94f38a + md5: f1ac2dbc36ce2017bd8f471960b1261d depends: - __osx >=10.13 - ca-certificates license: Apache-2.0 license_family: Apache - size: 2739181 - timestamp: 1746224401118 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.0-h81ee809_1.conda - sha256: 73d366c1597a10bcd5f3604b5f0734b31c23225536e03782c6a13f9be9d01bff - md5: 5c7aef00ef60738a14e0e612cfc5bcde + size: 2744123 + timestamp: 1751391059798 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda + sha256: f94fde0f096fa79794c8aa0a2665630bbf9026cc6438e8253f6555fc7281e5a8 + md5: a8ac77e7c7e58d43fa34d60bd4361062 depends: - __osx >=11.0 - ca-certificates license: Apache-2.0 license_family: Apache - size: 3064197 - timestamp: 1746223530698 -- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.0-ha4e3fda_1.conda - sha256: 02846553d2a4c9bde850c60824d0f02803eb9c9b674d5c1a8cce25bc387e748f - md5: 72c07e46b6766bb057018a9a74861b89 + size: 3071649 + timestamp: 1751390309393 +- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.1-h725018a_0.conda + sha256: 2b2eb73b0661ff1aed55576a3d38614852b5d857c2fa9205ac115820c523306c + md5: d124fc2fd7070177b5e2450627f8fc1a depends: - ca-certificates - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: Apache-2.0 license_family: Apache - size: 9025176 - timestamp: 1746227349882 + size: 9327033 + timestamp: 1751392489008 - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda sha256: 289861ed0c13a15d7bbb408796af4de72c2fe67e2bcb0de98f4c3fce259d7991 md5: 58335b26c38bf4a20f399384c33cbcf9 @@ -5273,26 +5159,26 @@ packages: license_family: GPL size: 94048 timestamp: 1673473024463 -- conda: https://conda.anaconda.org/conda-forge/osx-64/patchelf-0.18.0-h92383a6_2.conda - sha256: 19df3c3627576f0f913649880dd796aa5035db2b06151f30ac3f0ecafa44393f - md5: 7208aa418713ac0ad3fa633139da7ce8 +- conda: https://conda.anaconda.org/conda-forge/osx-64/patchelf-0.18.0-h93d8f39_1.conda + sha256: c0b21a408d86090dafca744da24ecef02fc0178261d3dc4cf9e58608080c5202 + md5: a8364475c879113b9e4c4a804778b63e depends: - - __osx >=10.13 - - libcxx >=18 + - __osx >=10.9 + - libcxx >=16.0.6 license: GPL-3.0-or-later license_family: GPL - size: 130265 - timestamp: 1745559386138 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/patchelf-0.18.0-ha1acc90_2.conda - sha256: e0f4e6ef3bd7cc3365b2e7e8abc11066b78930fc12f51321e838d1ec788f29af - md5: 6d24eb6a9ccb750511354e3381dd2315 + size: 118047 + timestamp: 1698345671971 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/patchelf-0.18.0-h965bd2d_1.conda + sha256: 1eb22ab6a99f8133ee84b4710a08e6242d49b38baa08a45d9af1143e8d168bc2 + md5: 89831e1334149fad1a2a9f533bc9aa29 depends: - - libcxx >=18 - - __osx >=11.0 + - __osx >=10.9 + - libcxx >=16.0.6 license: GPL-3.0-or-later license_family: GPL - size: 123552 - timestamp: 1745559394432 + size: 107784 + timestamp: 1698345706579 - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee md5: 617f15191456cc6a13db418a275435e5 @@ -5380,9 +5266,9 @@ packages: license: GPL-1.0-or-later OR Artistic-1.0-Perl size: 28889712 timestamp: 1703310809518 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.2.1-py312h80c1187_0.conda - sha256: 15f32ec89f3a7104fcb190546a2bc0fc279372d9073e5ec08a8d61a1c79af4c0 - md5: ca438bf57e4f2423d261987fe423a0dd +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.3.0-py312h80c1187_0.conda + sha256: 7c9a8f65a200587bf7a0135ca476f9c472348177338ed8b825ddcc08773fde68 + md5: 7911e727a6c24db662193a960b81b6b2 depends: - __glibc >=2.17,<3.0.a0 - lcms2 >=2.17,<3.0a0 @@ -5399,11 +5285,11 @@ packages: - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 42506161 - timestamp: 1746646366556 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.2.1-py312hd9f36e3_0.conda - sha256: ba5be9cc0978849d73f65e2d50916e985f9c804f8c610b52790e98011ef3edf0 - md5: d0db0c52ee6d7e0b0a65fb94efe13cf9 + size: 42964111 + timestamp: 1751482158083 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.3.0-py312hd9f36e3_0.conda + sha256: c80c1e858659beadcd9de16ccb208a319d34cce9a6412731cf2d08dfc1eb86fa + md5: a3c63eeab0ecca11e93104aebed345fc depends: - __osx >=10.13 - lcms2 >=2.17,<3.0a0 @@ -5419,11 +5305,11 @@ packages: - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 42424876 - timestamp: 1746646536154 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.2.1-py312h50aef2c_0.conda - sha256: ba5a9a7c431e4efe5e718779702f31835618ab87bef839fcfde51123993a04c9 - md5: cdf747c54075674962f2662b0d059efa + size: 42486529 + timestamp: 1751482537411 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.3.0-py312h50aef2c_0.conda + sha256: 3d60288e8cfd42e4548c9e5192a285e73f81df2869f69b9d3905849b45d9bd2a + md5: dddff48655b5cd24a5170a6df979943a depends: - __osx >=11.0 - lcms2 >=2.17,<3.0a0 @@ -5440,11 +5326,11 @@ packages: - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 42678633 - timestamp: 1746646517184 -- conda: https://conda.anaconda.org/conda-forge/win-64/pillow-11.2.1-py312h078707f_0.conda - sha256: e2e06c41da68943242c0c7181400781890fbc92fe0705ba312592b8cb1489c65 - md5: 08d84254d64ef99ca6b718e6dae1c25d + size: 42514714 + timestamp: 1751482419501 +- conda: https://conda.anaconda.org/conda-forge/win-64/pillow-11.3.0-py312hfb502af_0.conda + sha256: 7b523afc3ce71be4655c0d639c3fe2e4d0f2f6ce87e4bcc523163700995f2b3f + md5: 40dd6b8b814253a77c3297273bfb3701 depends: - lcms2 >=2.17,<3.0a0 - libfreetype >=2.13.3 @@ -5459,53 +5345,53 @@ packages: - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: HPND - size: 42728944 - timestamp: 1746646804195 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - sha256: 1330c3fd424fa2deec6a30678f235049c0ed1b0fad8d2d81ef995c9322d5e49a - md5: d2f1c87d4416d1e7344cf92b1aaee1c4 + size: 42787505 + timestamp: 1751482431385 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.2-h29eaf8c_0.conda + sha256: 6cb261595b5f0ae7306599f2bb55ef6863534b6d4d1bc0dcfdfa5825b0e4e53d + md5: 39b4228a867772d610c02e06f939a5b8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 license: MIT license_family: MIT - size: 398664 - timestamp: 1746011575217 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - sha256: 4d8184a8d453e8218017ed2fe024496b6ccf5ba05b994d3a60a8871022ec7a76 - md5: 808d70603573b87f3427b61501fa376d + size: 402222 + timestamp: 1749552884791 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + sha256: 6214d8e9f8d4fbe15e7af59e931ce2a5ac77a8946728c4ef287bec90e5b060c4 + md5: e1e0595633f79ce40f3fba9a337a155b depends: - __osx >=10.13 - libcxx >=18 license: MIT license_family: MIT - size: 341650 - timestamp: 1746011664546 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - sha256: ed22ffec308e798d50066286e5b184c64bb47a3787840883249377ae4e6d684b - md5: d098a1cca9d588cd4d258d06a08a454e + size: 345091 + timestamp: 1749552991974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + sha256: 68d1eef12946d779ce4b4b9de88bc295d07adce5dd825a0baf0e1d7cf69bc5a6 + md5: 0587a57e200568a71982173c07684423 depends: - __osx >=11.0 - libcxx >=18 license: MIT license_family: MIT - size: 213341 - timestamp: 1746011718977 -- conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.0-had0cd8c_0.conda - sha256: d41f4d9faf6aefa138c609b64fe2a22cf252d88e8c393b25847e909d02870491 - md5: 01617534ef71b5385ebba940a6d6150d + size: 214660 + timestamp: 1749553221709 +- conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.2-had0cd8c_0.conda + sha256: d7d1f1052f15601406883f17ec149abf5e99262782ef536a415a41add060596e + md5: 2566a45fb15e2f540eff14261f1242af depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: MIT license_family: MIT - size: 472718 - timestamp: 1746016414502 + size: 476515 + timestamp: 1749553103224 - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h4bc722e_1009.conda sha256: c9601efb1af5391317e04eca77c6fe4d716bf1ca1ad8da2a05d15cb7c28d7d4e md5: 1bee70681f504ea424fb07cdb090c001 @@ -5559,15 +5445,15 @@ packages: license_family: MIT size: 23531 timestamp: 1746710438805 -- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - sha256: 122433fc5318816b8c69283aaf267c73d87aa2d09ce39f64c9805c9a3b264819 - md5: e9dcbce5f45f9ee500e728ae58b605b6 +- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda + sha256: a8eb555eef5063bbb7ba06a379fa7ea714f57d9741fe0efdb9442dbbc2cccbcc + md5: 7da7ccd349dbf6487a7778579d2bb971 depends: - python >=3.9 license: MIT license_family: MIT - size: 23595 - timestamp: 1733222855563 + size: 24246 + timestamp: 1747339794916 - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.8.0-pyha770c72_1.conda sha256: c2b964c86b2cd00e494093d751b1f8697b3c4bf924ff70648387af161444cc82 md5: 004cff3a7f6fafb0a041fb575de85185 @@ -5632,15 +5518,16 @@ packages: license_family: MIT size: 9389 timestamp: 1726802555076 -- conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-25.1.0-pyhd8ed1ab_0.conda - sha256: 72d74e0582745a925a34c9f427c0079a263e47c9d21a91094727fabb233c3664 - md5: 23f3a65f26bd36f6f8c753c00e039bc3 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-25.5.0-pyhe01879c_0.conda + sha256: 89962891edb1bee7beef0656fbfc5b451c4a7d1aeb69bae14ff9284e2228fe13 + md5: 78fca2c5bec4077d4c9f854235190852 depends: - python >=3.9 - pyyaml + - python license: WTFPL - size: 29133 - timestamp: 1735833752803 + size: 30303 + timestamp: 1748715588617 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 md5: 12c566707c80111f9799308d9e265aef @@ -5651,26 +5538,26 @@ packages: license_family: BSD size: 110100 timestamp: 1733195786147 -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b - md5: 232fb4577b6687b2d503ef8e254270c9 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda + sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a + md5: 6b6ece66ebcae2d5f326c77ef2c5a066 depends: - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 888600 - timestamp: 1736243563082 -- conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.15-pyhd8ed1ab_0.conda - sha256: 9f5f77029f435fe489cf256580296cb5204ea4239dfde6db47629aa009a25015 - md5: 9d03ff5deacac960acadb5b2044f0763 + size: 889287 + timestamp: 1750615908735 +- conda: https://conda.anaconda.org/conda-forge/noarch/pymdown-extensions-10.16-pyhd8ed1ab_0.conda + sha256: 7465d67daa980999606138d74631563f5c233624cf5d65fc3f1f7210fce91b64 + md5: 79dbb1bfe734d8e8b36ca328a63fb4de depends: - markdown >=3.6 - python >=3.9 - pyyaml license: MIT license_family: MIT - size: 170879 - timestamp: 1745885522295 + size: 171431 + timestamp: 1750571864207 - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda sha256: b92afb79b52fcf395fd220b29e0dd3297610f2059afac45298d44e00fcbf23b6 md5: 513d3c262ee49b54a8fec85c5bc99764 @@ -5718,9 +5605,9 @@ packages: license_family: MIT size: 244691 timestamp: 1694128618921 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - sha256: 4dc1da115805bd353bded6ab20ff642b6a15fcc72ac2f3de0e1d014ff3612221 - md5: a41d26cd4d47092d683915d058380dec +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda + sha256: 6cca004806ceceea9585d4d655059e951152fc774a471593d4f5138e6a54c81d + md5: 94206474a5608243a10c92cefbe0908f depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -5730,7 +5617,7 @@ packages: - libgcc >=13 - liblzma >=5.8.1,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 @@ -5742,18 +5629,18 @@ packages: constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 31279179 - timestamp: 1744325164633 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - sha256: 94835a129330dc1b2f645e12c7857a1aa4246e51777d7a9b7c280747dbb5a9a2 - md5: 597c4102c97504ede5297d06fb763951 + size: 31445023 + timestamp: 1749050216615 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.11-h9ccd52b_0_cpython.conda + sha256: ebda5b5e8e25976013fdd81b5ba253705b076741d02bdc8ab32763f2afb2c81b + md5: 06049132ecd09d0c1dc3d54d93cf1d5d depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - openssl >=3.5.0,<4.0a0 @@ -5763,18 +5650,18 @@ packages: constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 13783219 - timestamp: 1744324415187 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - sha256: 69aed911271e3f698182e9a911250b05bdf691148b670a23e0bea020031e298e - md5: c88f1a7e1e7b917d9c139f03b0960fea + size: 13571569 + timestamp: 1749049058713 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.11-hc22306f_0_cpython.conda + sha256: cde8b944c2dc378a5afbc48028d0843583fd215493d5885a80f1b41de085552f + md5: 9207ebad7cfbe2a4af0702c92fd031c4 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - openssl >=3.5.0,<4.0a0 @@ -5784,17 +5671,17 @@ packages: constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 12932743 - timestamp: 1744323815320 -- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.10-h3f84c4b_0_cpython.conda - sha256: a791fa8f5ce68ab00543ecd3798bfa573db327902ccd5cb7598fd7e94ea194d3 - md5: 495e849ebc04562381539d25cf303a9f + size: 13009234 + timestamp: 1749048134449 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda + sha256: b69412e64971b5da3ced0fc36f05d0eacc9393f2084c6f92b8f28ee068d83e2e + md5: 6aa5e62df29efa6319542ae5025f4376 depends: - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - openssl >=3.5.0,<4.0a0 - tk >=8.6.13,<8.7.0a0 @@ -5805,18 +5692,19 @@ packages: constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 15941050 - timestamp: 1744323489788 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 - md5: 5ba79d7c71f03c678c8ead841f347d6e + size: 15829289 + timestamp: 1749047682640 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + sha256: d6a17ece93bbd5139e02d2bd7dbfa80bee1a4261dced63f65f679121686bf664 + md5: 5b8d21249ff20967101ffa321cab24e8 depends: - python >=3.9 - six >=1.5 + - python license: Apache-2.0 license_family: APACHE - size: 222505 - timestamp: 1733215763718 + size: 233310 + timestamp: 1751104122689 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda build_number: 7 sha256: a1bbced35e0df66cc713105344263570e835625c28d1bdee8f748f482b2d7793 @@ -5895,6 +5783,7 @@ packages: - python >=3.9 - pyyaml license: MIT + license_family: MIT size: 11137 timestamp: 1747237061448 - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda @@ -5925,9 +5814,9 @@ packages: license_family: GPL size: 252359 timestamp: 1740379663071 -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad - md5: a9b9368f3701a417eac9edbcae7cb737 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.4-pyhd8ed1ab_0.conda + sha256: 9866aaf7a13c6cfbe665ec7b330647a0fb10a81e6f9b8fee33642232a1920e18 + md5: f6082eae112814f1447b56a5e1f6ed05 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 @@ -5938,39 +5827,39 @@ packages: - chardet >=3.0.2,<6 license: Apache-2.0 license_family: APACHE - size: 58723 - timestamp: 1733217126197 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_0.conda - sha256: 57eb1c35eaceecb2517ef845c2130bad5d2ffe3a6df446595831089635c05d43 - md5: a241baeff49a722bbf87812b33d0e0ec + size: 59407 + timestamp: 1749498221996 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda + sha256: d5c73079c1dd2c2a313c3bfd81c73dbd066b7eb08d213778c8bff520091ae894 + md5: c1c9b02933fdb2cfb791d936c20e887e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 193413 - timestamp: 1747193877251 -- conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.5-ha44c9a9_0.conda - sha256: 8680069a88f33e96046cf09c3c973074976064c5f13c282bf0e6d6a798f4f7ab - md5: a7a3324229bba7fd1c06bcbbb26a420a + size: 193775 + timestamp: 1748644872902 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.6-h6e16a3a_1.conda + sha256: 65c946fc5a9bb71772a7ac9bad64ff08ac07f7d5311306c2dcc1647157b96706 + md5: d0fcaaeff83dd4b6fb035c2f36df198b depends: - __osx >=10.13 license: MIT license_family: MIT - size: 178400 - timestamp: 1728886821902 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.5-h7ab814d_0.conda - sha256: e6a3e9dbfcb5ad5d69a20c8ac237d37a282a95983314a28912fc54208c5db391 - md5: 352b210f81798ae1e2f25a98ef4b3b54 + size: 185180 + timestamp: 1748644989546 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.6-h5505292_1.conda + sha256: f4957c05f4fbcd99577de8838ca4b5b1ae4b400a44be647a0159c14f85b9bfc0 + md5: 029e812c8ae4e0d4cf6ff4f7d8dc9366 depends: - __osx >=11.0 license: MIT license_family: MIT - size: 177240 - timestamp: 1728886815751 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.10-py312h66e93f0_0.conda - sha256: cd8ed10671111f15245cebadc06b88d6f5fc91f1f7f92456daa568e9d9f5bc42 - md5: 5260b7fb19694ee5bc4ed0ee7a2a769f + size: 185448 + timestamp: 1748645057503 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.14-py312h66e93f0_0.conda + sha256: ba0216708dd5f3f419f58d337d0498d8d28ae508784b8111d79cecb6a547b2d6 + md5: ebef257605116235f5feac68640b44ca depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5979,11 +5868,11 @@ packages: - ruamel.yaml.clib >=0.1.2 license: MIT license_family: MIT - size: 267560 - timestamp: 1736248154294 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.10-py312h01d7ebd_0.conda - sha256: 1d4ce5cfa530c3971b95a41fa1b1a952cd934f2ed1f34ac22736eece17727ab2 - md5: e6fb89d650ea648b6be3bf2fa5026523 + size: 268479 + timestamp: 1749480091070 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.14-py312h01d7ebd_0.conda + sha256: 892df00ac086822170e0a75aa02b840e23f5bf8dafdd64c270e7a2eef7acc0d8 + md5: 9f4cd803bbe9c8cb20f14114a4c9da41 depends: - __osx >=10.13 - python >=3.12,<3.13.0a0 @@ -5991,11 +5880,11 @@ packages: - ruamel.yaml.clib >=0.1.2 license: MIT license_family: MIT - size: 267714 - timestamp: 1736248265318 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.10-py312hea69d52_0.conda - sha256: bb946732dec6943a56650d2690e37d7eed0fc7ffb9d616ae09000b52894f8baf - md5: 29a66b19662a643786715a8885c645d0 + size: 268400 + timestamp: 1749480191028 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.14-py312hea69d52_0.conda + sha256: 701239de5094f567f2f3d54f2fdef87238de039c8405826011eadee2bb761d88 + md5: c82d1ddf44663c982945f42f36f96f3d depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6004,11 +5893,11 @@ packages: - ruamel.yaml.clib >=0.1.2 license: MIT license_family: MIT - size: 268631 - timestamp: 1736248245357 -- conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml-0.18.10-py312h4389bb4_0.conda - sha256: 75f0ca8e9d1a025aa11115d0d756710c375b4392fcc711c3a798370b268f5a9a - md5: a5d15fd8ca166ab55225e6cfa8cb51f0 + size: 268872 + timestamp: 1749480207447 +- conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml-0.18.14-py312h4389bb4_0.conda + sha256: efe81379882195da402b0386e5c94950591a6963fc99d982d36ba8b3dc447d66 + md5: 53e81cf55c2bcea269771678e0d53ed8 depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -6018,8 +5907,8 @@ packages: - vc14_runtime >=14.29.30139 license: MIT license_family: MIT - size: 266606 - timestamp: 1736248271941 + size: 268437 + timestamp: 1749480149128 - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py312h66e93f0_1.conda sha256: ac987b1c186d79e4e1ce4354a84724fc68db452b2bd61de3a3e1b6fc7c26138d md5: 532c3e5d0280be4fea52396ec1fa7d5d @@ -6229,16 +6118,16 @@ packages: license_family: MIT size: 37636509 timestamp: 1743697574868 -- conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.12.0-pyhd8ed1ab_0.conda - sha256: 378782b64c187f7b3cb4676d85d39b13cb4970f6303714606e318530bc5497ca - md5: 829c1fc60557253e117bc8a390d197b1 +- conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.13.0-pyhd8ed1ab_0.conda + sha256: d26ec145364a34e0e57028ee270dad3d8dec9c0b03c382595b43524162c68889 + md5: fc03973db0d41d9dcd84dc0dfc824b86 depends: - botocore >=1.37.4,<2.0a.0 - python >=3.9 license: Apache-2.0 license_family: Apache - size: 65198 - timestamp: 1745398610951 + size: 65529 + timestamp: 1747960895008 - conda: https://conda.anaconda.org/conda-forge/noarch/schema-0.7.7-pyhd8ed1ab_0.conda sha256: e2341ab1cf6128bde5037a6ba3c48ee33abc6bbe8d3db10f5f73f24b9f28b83c md5: 1add6f6b99191efab14f16e6aa9b6461 @@ -6249,15 +6138,15 @@ packages: license_family: MIT size: 23534 timestamp: 1714829277138 -- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.1.0-pyhff2d567_0.conda - sha256: 777d34ed359cedd5a5004c930077c101bb3b70e5fbb04d29da5058d75b0ba487 - md5: f6f72d0837c79eaec77661be43e8a691 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda + sha256: 972560fcf9657058e3e1f97186cc94389144b46dbdf58c807ce62e83f977e863 + md5: 4de79c071274a53dcaf2a8c749d1499e depends: - python >=3.9 license: MIT license_family: MIT - size: 778484 - timestamp: 1746085063737 + size: 748788 + timestamp: 1748804951958 - conda: https://conda.anaconda.org/conda-forge/linux-64/shellcheck-0.10.0-ha770c72_0.conda sha256: 6809031184c07280dcbaed58e15020317226a3ed234b99cb1bd98384ea5be813 md5: 61b19e9e334ddcdf8bb2422ee576549e @@ -6447,45 +6336,48 @@ packages: license_family: BSD size: 28285 timestamp: 1729802975370 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e - md5: d453b98d9c83e71da0741bb0ff4d76bc +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda + sha256: a84ff687119e6d8752346d1d408d5cf360dee0badd487a472aa8ddedfdc219e1 + md5: a0116df4f4ed05c303811a837d5b39d8 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 license: TCL license_family: BSD - size: 3318875 - timestamp: 1699202167581 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5 - md5: bf830ba5afc507c6232d4ef0fb1a882d + size: 3285204 + timestamp: 1748387766691 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda + sha256: b24468006a96b71a5f4372205ea7ec4b399b0f2a543541e86f883de54cd623fc + md5: 9864891a6946c2fe037c02fca7392ab4 depends: - - libzlib >=1.2.13,<2.0.0a0 + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 license: TCL license_family: BSD - size: 3270220 - timestamp: 1699202389792 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 - md5: b50a57ba89c32b62428b71a875291c9b + size: 3259809 + timestamp: 1748387843735 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda + sha256: cb86c522576fa95c6db4c878849af0bccfd3264daf0cc40dd18e7f4a7bfced0e + md5: 7362396c170252e7b7b0c8fb37fe9c78 depends: - - libzlib >=1.2.13,<2.0.0a0 + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 license: TCL license_family: BSD - size: 3145523 - timestamp: 1699202432999 -- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - sha256: 2c4e914f521ccb2718946645108c9bd3fc3216ba69aea20c2c3cedbd8db32bb1 - md5: fc048363eb8f03cd1737600a5d08aafe + size: 3125538 + timestamp: 1748388189063 +- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda + sha256: e3614b0eb4abcc70d98eae159db59d9b4059ed743ef402081151a948dce95896 + md5: ebd0e761de9aa879a51d22cc721bd095 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: TCL license_family: BSD - size: 3503410 - timestamp: 1699202577803 + size: 3466348 + timestamp: 1748388121356 - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda sha256: 18636339a79656962723077df9a56c0ac7b8a864329eb8f847ee3d38495b863e md5: ac944244f1fed2eb49bae07193ae8215 @@ -6495,37 +6387,37 @@ packages: license_family: MIT size: 19167 timestamp: 1733256819729 -- conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda - sha256: 986fae65f5568e95dbf858d08d77a0f9cca031345a98550f1d4b51d36d8811e2 - md5: 1d9ab4fc875c52db83f9c9b40af4e2c8 +- conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.3-pyha770c72_0.conda + sha256: f8d3b49c084831a20923f66826f30ecfc55a4cd951e544b7213c692887343222 + md5: 146402bf0f11cbeb8f781fa4309a95d3 depends: - python >=3.9 license: MIT license_family: MIT - size: 37372 - timestamp: 1733230836889 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda - sha256: 4865fce0897d3cb0ffc8998219157a8325f6011c136e6fd740a9a6b169419296 - md5: 568ed1300869dca0ba09fb750cda5dbb + size: 38777 + timestamp: 1749127286558 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.0-h32cad80_0.conda + sha256: b8cabfa54432b0f124c0af6b6facdf8110892914fa841ac2e80ab65ac52c1ba4 + md5: a1cdd40fc962e2f7944bc19e01c7e584 depends: - - typing_extensions ==4.13.2 pyh29332c3_0 + - typing_extensions ==4.14.0 pyhe01879c_0 license: PSF-2.0 license_family: PSF - size: 89900 - timestamp: 1744302253997 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda - sha256: a8aaf351e6461de0d5d47e4911257e25eec2fa409d71f3b643bb2f748bde1c08 - md5: 83fc6ae00127671e301c9f44254c31b8 + size: 90310 + timestamp: 1748959427551 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + sha256: 8561db52f278c5716b436da6d4ee5521712a49e8f3c70fcae5350f5ebb4be41c + md5: 2adcd9bb86f656d3d43bf84af59a1faf depends: - python >=3.9 - python license: PSF-2.0 license_family: PSF - size: 52189 - timestamp: 1744302253997 -- conda: https://conda.anaconda.org/conda-forge/linux-64/typos-1.32.0-h8fae777_0.conda - sha256: fbbf5ccd109ca70e070e6eb894e96f994857a936efbb9e09d2c907f1cc0df6d3 - md5: 0c7619632812a4ad54a7302d57752ada + size: 50978 + timestamp: 1748959427551 +- conda: https://conda.anaconda.org/conda-forge/linux-64/typos-1.34.0-h8fae777_0.conda + sha256: b8ebacc5a6971149fb4eec067d48d1243995de8fdb92145eadd12f94bf538ab9 + md5: e31ae446eb567b9f330a894453b11086 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6533,41 +6425,41 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 3439139 - timestamp: 1746212223315 -- conda: https://conda.anaconda.org/conda-forge/osx-64/typos-1.32.0-h371c88c_0.conda - sha256: 1f539c8717873fcca5f54fbb1e1ac52612d7af97ff72a1e2ab5c8654ea1e7fd6 - md5: cecbf22509232d6b4f17b5914e602eb2 + size: 3542941 + timestamp: 1751305362451 +- conda: https://conda.anaconda.org/conda-forge/osx-64/typos-1.34.0-h371c88c_0.conda + sha256: 8e96013ebff778f2e5b017d83718ce860c1011c1631defb88e616e0b23d19a4f + md5: b5aa9a717a8da26210330b75ff31b716 depends: - __osx >=10.13 constrains: - __osx >=10.13 license: MIT license_family: MIT - size: 2762018 - timestamp: 1746212442416 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/typos-1.32.0-h0716509_0.conda - sha256: fbef3219d6e8d1216546ec71391e503794479905e97adddc5884d0aee6f4398b - md5: 7c6d9fadf7af7d68c7fba4936da9793d + size: 2774035 + timestamp: 1751305502248 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/typos-1.34.0-h0716509_0.conda + sha256: 0309323403793e346c39e8680c40031ba8801422077459164b5285d9807149c0 + md5: 5ce04c5014a1ae8c97c8ebfaa2c252b6 depends: - __osx >=11.0 constrains: - __osx >=11.0 license: MIT license_family: MIT - size: 2718839 - timestamp: 1746212218076 -- conda: https://conda.anaconda.org/conda-forge/win-64/typos-1.32.0-ha073cba_0.conda - sha256: 947b0bb104b14f46cd2fe13e3be4f6cc330b444cbf05a82d90f491cb7670f7c2 - md5: 9a6e8ff4e1b77da4a2245540c620f00e + size: 2737457 + timestamp: 1751305859246 +- conda: https://conda.anaconda.org/conda-forge/win-64/typos-1.34.0-h77a83cd_0.conda + sha256: b5eb9835ed565944db42b62aeec1098e80ec18b6108c07af0ee085b6abecfc21 + md5: c39c84a3eb9967bdbec425338997e5cd depends: - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: MIT license_family: MIT - size: 2581537 - timestamp: 1746212666404 + size: 2586327 + timestamp: 1751305889847 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda sha256: 5aaa366385d716557e365f0a4e9c3fca43ba196872abbbe3d56bb610d131e192 md5: 4222072737ccff51314b5ece9c7d6f5a @@ -6647,9 +6539,9 @@ packages: license_family: GPL size: 189827 timestamp: 1733714839478 -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.4.0-pyhd8ed1ab_0.conda - sha256: a25403b76f7f03ca1a906e1ef0f88521edded991b9897e7fed56a3e334b3db8c - md5: c1e349028e0052c4eea844e94f773065 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda + sha256: 4fb9789154bd666ca74e428d973df81087a697dbb987775bc3198d2215f240f8 + md5: 436c165519e140cb08d246a4472a9d6a depends: - brotli-python >=1.0.9 - h2 >=4,<5 @@ -6658,30 +6550,30 @@ packages: - zstandard >=0.18.0 license: MIT license_family: MIT - size: 100791 - timestamp: 1744323705540 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - sha256: 7a685b5c37e9713fa314a0d26b8b1d7a2e6de5ab758698199b5d5b6dba2e3ce1 - md5: d3f0381e38093bde620a8d85f266ae55 + size: 101735 + timestamp: 1750271478254 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_26.conda + sha256: b388d88e04aa0257df4c1d28f8d85d985ad07c1e5645aa62335673c98704c4c6 + md5: 18b6bf6f878501547786f7bf8052a34d depends: - - vc14_runtime >=14.42.34433 + - vc14_runtime >=14.44.35208 track_features: - vc14 license: BSD-3-Clause license_family: BSD - size: 17893 - timestamp: 1743195261486 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - sha256: 30dcb71bb166e351aadbdc18f1718757c32cdaa0e1e5d9368469ee44f6bf4709 - md5: 91651a36d31aa20c7ba36299fb7068f4 + size: 17914 + timestamp: 1750371462857 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_26.conda + sha256: 7bad6e25a7c836d99011aee59dcf600b7f849a6fa5caa05a406255527e80a703 + md5: 14d65350d3f5c8ff163dc4f76d6e2830 depends: - ucrt >=10.0.20348.0 constrains: - - vs2015_runtime 14.42.34438.* *_26 + - vs2015_runtime 14.44.35208.* *_26 license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime license_family: Proprietary - size: 750733 - timestamp: 1743195092905 + size: 756109 + timestamp: 1750371459116 - conda: https://conda.anaconda.org/conda-forge/noarch/verspec-0.1.0-pyh29332c3_2.conda sha256: 723351de1d7cee8bd22f8ea64b169f36f5c625c315c59c0267fab4bad837d503 md5: 9c71dfe38494dd49c2547a3842b86fa7 @@ -6704,28 +6596,15 @@ packages: license_family: MIT size: 4133755 timestamp: 1746781585998 -- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - sha256: 432f2937206f1ad4a77e39f84fabc1ce7d2472b669836fb72bd2bfd19a2defc9 - md5: 3357e4383dbce31eed332008ede242ab - depends: - - vc14_runtime >=14.42.34438 - license: BSD-3-Clause - license_family: BSD - size: 17873 - timestamp: 1743195097269 -- conda: https://conda.anaconda.org/conda-forge/win-64/vs2019_win-64-19.29.30139-h7dcff83_26.conda - sha256: f63032af499db1c9e284038410015025550f0461fc5aeec7dc62ffa68cbaedfd - md5: be330a3688ca51ec3583e45882a86adb +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_26.conda + sha256: d18d77c8edfbad37fa0e0bb0f543ad80feb85e8fe5ced0f686b8be463742ec0b + md5: 312f3a0a6b3c5908e79ce24002411e32 depends: - - vswhere - constrains: - - vs_win-64 2019.11 - track_features: - - vc14 + - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - size: 20609 - timestamp: 1743195166620 + size: 17888 + timestamp: 1750371463202 - conda: https://conda.anaconda.org/conda-forge/win-64/vs2022_win-64-19.44.35207-ha74f236_26.conda sha256: 43c833a91c04bf53c85deff4bea505fa5173a79981909dc8116e7b6709bae39c md5: 3b88259844a981083c4efab022071768 @@ -6946,144 +6825,137 @@ packages: license_family: MIT size: 33005 timestamp: 1734229037766 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_1.conda - sha256: 178b04c2f35261a1f9a272901d2533c88d50416745509450ca56f7bc76f4a268 - md5: 46600bb863ef3f2f565e7e0458f3d3bc +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda + sha256: 802725371682ea06053971db5b4fb7fbbcaee9cb1804ec688f55e51d74660617 + md5: 68eae977d7d1196d32b636a026dc015d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.8.1 hb9d3cd8_1 - - liblzma-devel 5.8.1 hb9d3cd8_1 - - xz-gpl-tools 5.8.1 hbcc6ac9_1 - - xz-tools 5.8.1 hb9d3cd8_1 + - liblzma 5.8.1 hb9d3cd8_2 + - liblzma-devel 5.8.1 hb9d3cd8_2 + - xz-gpl-tools 5.8.1 hbcc6ac9_2 + - xz-tools 5.8.1 hb9d3cd8_2 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23933 - timestamp: 1746531531849 -- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.1-h357f2ed_1.conda - sha256: 1018402d24bdc0302f57f733b51e082506dcf6944889c47065287c70825d0c04 - md5: d2e1d851bdc6a4e42d2dd59fa96d16ad + size: 23987 + timestamp: 1749230104359 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.1-h357f2ed_2.conda + sha256: 89248de6c9417522b6fec011dc26b81c25af731a31ba91e668f72f1b9aab05d7 + md5: 7eee908c7df8478c1f35b28efa2e42b1 depends: - __osx >=10.13 - - liblzma 5.8.1 hd471939_1 - - liblzma-devel 5.8.1 hd471939_1 - - xz-gpl-tools 5.8.1 h357f2ed_1 - - xz-tools 5.8.1 hd471939_1 + - liblzma 5.8.1 hd471939_2 + - liblzma-devel 5.8.1 hd471939_2 + - xz-gpl-tools 5.8.1 h357f2ed_2 + - xz-tools 5.8.1 hd471939_2 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23841 - timestamp: 1746531641506 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.8.1-h9a6d368_1.conda - sha256: 365f86baf9187c73072de09a257a4fe569e9dc321b1893107caf1d5fbb662cf7 - md5: b51d63218e537b65c03a1d712d859680 + size: 24033 + timestamp: 1749230223096 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.8.1-h9a6d368_2.conda + sha256: afb747cf017b67cc31d54c6e6c4bd1b1e179fe487a3d23a856232ed7fd0b099b + md5: 39435c82e5a007ef64cbb153ecc40cfd depends: - __osx >=11.0 - - liblzma 5.8.1 h39f12f2_1 - - liblzma-devel 5.8.1 h39f12f2_1 - - xz-gpl-tools 5.8.1 h9a6d368_1 - - xz-tools 5.8.1 h39f12f2_1 + - liblzma 5.8.1 h39f12f2_2 + - liblzma-devel 5.8.1 h39f12f2_2 + - xz-gpl-tools 5.8.1 h9a6d368_2 + - xz-tools 5.8.1 h39f12f2_2 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23945 - timestamp: 1746531921863 -- conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.8.1-h208afaa_1.conda - sha256: e19fea03f2234e53643fc541cb54859185eae1b549731b64babd76b0b44ab7ab - md5: 3c0ccaffa33f19b3727717d4c1bfd0eb - depends: - - liblzma 5.8.1 h2466b09_1 - - liblzma-devel 5.8.1 h2466b09_1 + size: 23995 + timestamp: 1749230346887 +- conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.8.1-h208afaa_2.conda + sha256: 22289a81da4698bb8d13ac032a88a4a1f49505b2303885e1add3d8bd1a7b56e6 + md5: fb3fa84ea37de9f12cc8ba730cec0bdc + depends: + - liblzma 5.8.1 h2466b09_2 + - liblzma-devel 5.8.1 h2466b09_2 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - - xz-tools 5.8.1 h2466b09_1 + - xz-tools 5.8.1 h2466b09_2 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 24236 - timestamp: 1746531811034 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_1.conda - sha256: 1f66e240fd37f66dfaff27f55f0e69008c4fdbbb02766cd2e0a60d2de85d49b4 - md5: 23d49402c43d1ea67aca3685acedc0ae + size: 24430 + timestamp: 1749230691276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda + sha256: 840838dca829ec53f1160f3fca6dbfc43f2388b85f15d3e867e69109b168b87b + md5: bf627c16aa26231720af037a2709ab09 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.8.1 hb9d3cd8_1 + - liblzma 5.8.1 hb9d3cd8_2 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33852 - timestamp: 1746531515485 -- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.1-h357f2ed_1.conda - sha256: 4525c28b0a9aa37fd88d285a9ce2ef5641b1455def899ead3f348d4be626db36 - md5: bc74de841c87c3c6cadc0e3341a7fcb3 + size: 33911 + timestamp: 1749230090353 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.1-h357f2ed_2.conda + sha256: 5cdadfff31de7f50d1b2f919dd80697c0a08d90f8d6fb89f00c93751ec135c3c + md5: d4044359fad6af47224e9ef483118378 depends: - __osx >=10.13 - - liblzma 5.8.1 hd471939_1 + - liblzma 5.8.1 hd471939_2 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33649 - timestamp: 1746531626161 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.8.1-h9a6d368_1.conda - sha256: 0978a1c2d104fb5c056d290d5b6f6e2291bf96938e14f4d4fc34207fdc2e64bc - md5: 2b74c0fcf1423146e8a1b38e8edb9d18 + size: 33890 + timestamp: 1749230206830 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.8.1-h9a6d368_2.conda + sha256: a0790cfb48d240e7b655b0d797a00040219cf39e3ee38e2104e548515df4f9c2 + md5: 09b1442c1d49ac7c5f758c44695e77d1 depends: - __osx >=11.0 - - liblzma 5.8.1 h39f12f2_1 + - liblzma 5.8.1 h39f12f2_2 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33633 - timestamp: 1746531896043 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_1.conda - sha256: d219c162f2bf0bb851bfe4fbcb70f118b4f518e0e1c46ae72726bc5b9dde6f24 - md5: 966d5f3958ecfaf49a9a060dfb81eb85 + size: 34103 + timestamp: 1749230329933 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda + sha256: 58034f3fca491075c14e61568ad8b25de00cb3ae479de3e69be6d7ee5d3ace28 + md5: 1bad2995c8f1c8075c6c331bf96e46fb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.8.1 hb9d3cd8_1 + - liblzma 5.8.1 hb9d3cd8_2 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD AND LGPL-2.1-or-later - size: 96134 - timestamp: 1746531500507 -- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.1-hd471939_1.conda - sha256: 2630e5543a43e30717d9b795a98d6d4fc65691130868bb7041ba87b79c525569 - md5: 92f8b2ca9962acbe472641149d66111d + size: 96433 + timestamp: 1749230076687 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.1-hd471939_2.conda + sha256: 3b1d8958f8dceaa4442100d5326b2ec9bcc2e8d7ee55345bf7101dc362fb9868 + md5: 349148960ad74aece88028f2b5c62c51 depends: - __osx >=10.13 - - liblzma 5.8.1 hd471939_1 + - liblzma 5.8.1 hd471939_2 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD AND LGPL-2.1-or-later - size: 85675 - timestamp: 1746531609656 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.8.1-h39f12f2_1.conda - sha256: 703deddf649255c1e34ed479a0af6b2f66f0180a8fabfb845dbdff3bd8485f24 - md5: 697caaae49a3d00a508d64b0e09f1a31 + size: 85777 + timestamp: 1749230191007 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.8.1-h39f12f2_2.conda + sha256: 9d1232705e3d175f600dc8e344af9182d0341cdaa73d25330591a28532951063 + md5: 37996935aa33138fca43e4b4563b6a28 depends: - __osx >=11.0 - - liblzma 5.8.1 h39f12f2_1 + - liblzma 5.8.1 h39f12f2_2 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD AND LGPL-2.1-or-later - size: 85980 - timestamp: 1746531874100 -- conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.8.1-h2466b09_1.conda - sha256: bef20051ba1f7e506d5ce52baa32896301ee00b0f287465b21e56cc9dbe7ce31 - md5: 0e905c48199df080f788c0aa061cded7 + size: 86425 + timestamp: 1749230316106 +- conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.8.1-h2466b09_2.conda + sha256: 38712f0e62f61741ab69d7551fa863099f5be769bdf9fdbc28542134874b4e88 + md5: e1b62ec0457e6ba10287a49854108fdb depends: - - liblzma 5.8.1 h2466b09_1 + - liblzma 5.8.1 h2466b09_2 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD AND LGPL-2.1-or-later - size: 66996 - timestamp: 1746531781877 + size: 67419 + timestamp: 1749230666460 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae @@ -7117,15 +6989,15 @@ packages: license_family: MIT size: 63274 timestamp: 1641347623319 -- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 - md5: 0c3cc595284c5e8f0f9900a9b228a332 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + sha256: 7560d21e1b021fd40b65bfb72f67945a3fcb83d78ad7ccf37b8b3165ec3b68ad + md5: df5e78d904988eb55042c0c97446079f depends: - python >=3.9 license: MIT license_family: MIT - size: 21809 - timestamp: 1732827613585 + size: 22963 + timestamp: 1749421737203 - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda sha256: 219edbdfe7f073564375819732cbf7cc0d7c7c18d3f546a09c2dfaf26e4d69f3 md5: c989e0295dcbdc08106fe5d9e935f0b9 diff --git a/pixi.toml b/pixi.toml index ac70fd37d..04f362c19 100644 --- a/pixi.toml +++ b/pixi.toml @@ -33,7 +33,6 @@ deploy-dev = "mike deploy --push dev devel" [dependencies] openssl = "3.*" rust = ">=1.86.0,<1.87" -compilers = "1.6.0.*" libssh2 = "1.11.0.*" pkg-config = "0.29.2.*" cmake = "3.27.6.*" @@ -77,24 +76,27 @@ tbump = "*" # Bump version by running `pixi run bump NEW_VERSION` bump = "tbump --only-patch" - [target.linux-64.dependencies] +compilers = "1.6.0.*" clang = ">=18.1.8,<19.0" mold = ">=2.33.0,<3.0" patchelf = ">=0.17.2,<0.18" [target.osx-64.dependencies] +compilers = "1.6.0.*" patchelf = ">=0.18.0,<0.19" [target.osx-arm64.dependencies] +compilers = "1.6.0.*" patchelf = ">=0.18.0,<0.19" +[target.win-64.dependencies] +vs2022_win-64 = ">=19.44.35207" + [target.linux-64.activation] scripts = ["scripts/activate.sh"] [target.osx-arm64.activation] scripts = ["scripts/activate.sh"] -[target.win-64.dependencies] -vs2022_win-64 = ">=19.44.35207" [target.win-64.activation] scripts = ["scripts/activate.bat"] From 8ff0b9952001a172a9ec441452b488795c6f0025 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Fri, 4 Jul 2025 18:38:15 +0300 Subject: [PATCH 18/25] LAST HOPEFULLY --- src/windows/link.rs | 1 + test/end-to-end/test_simple.py | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/windows/link.rs b/src/windows/link.rs index 952227042..4c23e59e3 100644 --- a/src/windows/link.rs +++ b/src/windows/link.rs @@ -44,6 +44,7 @@ pub const WIN_ALLOWLIST: &[&str] = &[ "SHELL32.dll", "USER32.dll", "USERENV.dll", + "VCRUNTIME140.dll", "WINHTTP.dll", "WS2_32.dll", "ntdll.dll", diff --git a/test/end-to-end/test_simple.py b/test/end-to-end/test_simple.py index 79360f0e5..0237ee74b 100644 --- a/test/end-to-end/test_simple.py +++ b/test/end-to-end/test_simple.py @@ -15,6 +15,7 @@ import yaml import subprocess import shutil +import sys from helpers import ( RattlerBuild, check_build_output, @@ -2212,7 +2213,11 @@ def test_cache_linking_checks( # Verify the package was created pkg = get_extracted_package(tmp_path, "cache-linking-output") assert pkg.exists() - assert (pkg / "bin/program").exists() + # On Windows, the executable will have a .exe extension + if sys.platform.startswith("win32"): + assert (pkg / "bin/program.exe").exists() + else: + assert (pkg / "bin/program").exists() def test_cache_overdepending_checks( From de0db43e60c39b80c14dd79ed8953724839d1c71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Fri, 4 Jul 2025 19:17:34 +0300 Subject: [PATCH 19/25] cargo clippy for unix/windows file permission and test update (it passed before too github runners suck) --- src/source/patch.rs | 13 +++++++++++-- test/end-to-end/test_simple.py | 11 +++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/source/patch.rs b/src/source/patch.rs index 721ab0dc9..2a0f79187 100644 --- a/src/source/patch.rs +++ b/src/source/patch.rs @@ -147,9 +147,18 @@ fn write_patch_content(content: &[u8], path: &Path) -> Result<(), SourceError> { let user_write = 0o200; perms.set_mode(perms.mode() | user_write); } - #[cfg(not(unix))] + #[cfg(windows)] { - // Assume this means windows + // On Windows, set_readonly(false) is the correct way to make a file writable + // It sets the FILE_ATTRIBUTE_READONLY attribute to false + #[allow(clippy::permissions_set_readonly_false)] + { + perms.set_readonly(false); + } + } + #[cfg(not(any(unix, windows)))] + { + // Fallback for other platforms perms.set_readonly(false); } fs_err::set_permissions(path, perms).map_err(SourceError::Io)?; diff --git a/test/end-to-end/test_simple.py b/test/end-to-end/test_simple.py index 0237ee74b..8a56069ca 100644 --- a/test/end-to-end/test_simple.py +++ b/test/end-to-end/test_simple.py @@ -2238,14 +2238,9 @@ def test_cache_overdepending_checks( error_output = ( exc_info.value.output.decode("utf-8") if exc_info.value.output else "" ) - # Check for platform-specific overlinking error - if platform.system() == "Windows": - assert "Overlinking against: VCRUNTIME140.dll" in error_output - else: # Linux - error_lines = error_output.split("\n") - assert any( - "Overdepending against: libcurl" in line for line in error_lines[-5:] - ) + # Check for overdepending error + error_lines = error_output.split("\n") + assert any("Overdepending against: libcurl" in line for line in error_lines[-5:]) def test_ruby_test(rattler_build: RattlerBuild, recipes: Path, tmp_path: Path): From 0b07d22364a65f96d71a1f4168c71b090ca96ecd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Mon, 7 Jul 2025 12:47:19 +0300 Subject: [PATCH 20/25] some cleanups --- src/post_process/checks.rs | 38 +++-------------------------- src/render/resolved_dependencies.rs | 30 +++++------------------ src/windows/link.rs | 16 ++++++------ 3 files changed, 18 insertions(+), 66 deletions(-) diff --git a/src/post_process/checks.rs b/src/post_process/checks.rs index 46536c6d1..0c3b1eddf 100644 --- a/src/post_process/checks.rs +++ b/src/post_process/checks.rs @@ -422,15 +422,7 @@ pub fn perform_linking_checks( } let dependency_match = dep_to_source.iter().find(|(dep_name, source_pkg)| { - #[cfg(windows)] - { - dep_name.eq_ignore_ascii_case(package_str) - || source_pkg.eq_ignore_ascii_case(package_str) - } - #[cfg(not(windows))] - { - dep_name.as_str() == package_str || source_pkg.as_str() == package_str - } + dep_name.as_str() == package_str || source_pkg.as_str() == package_str }); if let Some((dep_name, _)) = dependency_match { @@ -529,32 +521,10 @@ pub fn perform_linking_checks( .map(|v| v.as_source().to_string()) .collect::>() }) - .any(|libraries| { - #[cfg(windows)] - { - libraries - .iter() - .any(|lib| lib.eq_ignore_ascii_case(run_dependency)) - } - #[cfg(not(windows))] - { - libraries.contains(run_dependency) - } - }); + .any(|libraries| libraries.contains(run_dependency)); - // Also check if it was matched in cache builds (case-insensitive on Windows) - let used_in_cache = { - #[cfg(windows)] - { - cache_matched_deps - .iter() - .any(|dep| dep.eq_ignore_ascii_case(run_dependency)) - } - #[cfg(not(windows))] - { - cache_matched_deps.contains(run_dependency) - } - }; + // Also check if it was matched in cache builds + let used_in_cache = cache_matched_deps.contains(run_dependency); if !used_in_linked_dsos && !used_in_cache { if dynamic_linking.error_on_overdepending() { diff --git a/src/render/resolved_dependencies.rs b/src/render/resolved_dependencies.rs index 4776a3a71..4451d6cee 100644 --- a/src/render/resolved_dependencies.rs +++ b/src/render/resolved_dependencies.rs @@ -414,30 +414,12 @@ impl ResolvedDependencies { /// downstream linking checks only need to know *which* package a library /// comes from, not the full solver context. fn absorb(&mut self, other: &ResolvedDependencies) { - // On Windows, we need to handle case-insensitive comparison for library names - #[cfg(windows)] - { - for (lib_name, pkg_name) in &other.library_mapping { - if !self - .library_mapping - .keys() - .any(|k| k.eq_ignore_ascii_case(lib_name)) - { - self.library_mapping - .insert(lib_name.clone(), pkg_name.clone()); - } - } - } - - #[cfg(not(windows))] - { - self.library_mapping.extend( - other - .library_mapping - .iter() - .map(|(k, v)| (k.clone(), v.clone())), - ); - } + self.library_mapping.extend( + other + .library_mapping + .iter() + .map(|(k, v)| (k.clone(), v.clone())), + ); self.package_nature.extend( other diff --git a/src/windows/link.rs b/src/windows/link.rs index 4c23e59e3..faffcbd63 100644 --- a/src/windows/link.rs +++ b/src/windows/link.rs @@ -95,7 +95,7 @@ impl Relinker for Dll { if WIN_ALLOWLIST.iter().any(|&sys_dll| { lib.file_name() .and_then(|n| n.to_str()) - .map(|n| n.eq_ignore_ascii_case(sys_dll)) + .map(|n| n == sys_dll) .unwrap_or(false) }) { continue; @@ -203,7 +203,7 @@ mod tests { let has_kernel32 = libraries.iter().any(|lib| { lib.file_name() .and_then(|n| n.to_str()) - .map(|n| n.eq_ignore_ascii_case("KERNEL32.dll")) + .map(|n| n == "KERNEL32.dll") .unwrap_or(false) }); assert!(has_kernel32, "Expected KERNEL32.dll dependency"); @@ -213,7 +213,7 @@ mod tests { !resolved.iter().any(|(lib, _)| lib .file_name() .and_then(|n| n.to_str()) - .map(|n| n.eq_ignore_ascii_case("KERNEL32.dll")) + .map(|n| n == "KERNEL32.dll") .unwrap_or(false)), "System DLLs should be filtered out during resolution" ); @@ -237,14 +237,14 @@ mod tests { let is_system = WIN_ALLOWLIST.iter().any(|&sys_dll| { path.file_name() .and_then(|n| n.to_str()) - .map(|n| n.eq_ignore_ascii_case(sys_dll)) + .map(|n| n == sys_dll) .unwrap_or(false) }); - match dll.to_lowercase().as_str() { - "kernel32.dll" - | "c:\\windows\\system32\\kernel32.dll" - | "d:\\some\\path\\kernel32.dll" => { + match dll { + "KERNEL32.dll" + | "C:\\Windows\\System32\\KERNEL32.dll" + | "D:\\Some\\Path\\KERNEL32.dll" => { assert!(is_system, "Expected {} to be identified as system DLL", dll); } _ => { From e79868efd21cebd847f1269e03663b064a354212 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Mon, 7 Jul 2025 17:22:29 +0300 Subject: [PATCH 21/25] post process mappings with sysroot packages only --- src/cache.rs | 35 ++++++++++++++++++++++++++++ src/post_process/checks.rs | 47 ++++++++++++++++++++++++++++++-------- 2 files changed, 72 insertions(+), 10 deletions(-) diff --git a/src/cache.rs b/src/cache.rs index 1d64f3c40..417d493f3 100644 --- a/src/cache.rs +++ b/src/cache.rs @@ -6,6 +6,7 @@ use std::{ use fs_err as fs; use miette::{Context, IntoDiagnostic}; +use rattler_conda_types::PackageName; use serde::{Deserialize, Serialize}; use sha2::{Digest, Sha256}; @@ -13,6 +14,7 @@ use crate::{ env_vars, metadata::{Output, build_reindexed_channels}, packaging::Files, + post_process::package_nature::PackageNature, recipe::{ Jinja, parser::{Dependency, Requirements, Source}, @@ -63,6 +65,15 @@ pub struct Cache { pub prefix: PathBuf, } +/// Struct to hold post-process mappings for cache reuse +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct PostProcessMappings { + /// Mapping from library names to the packages that provide them + pub library_mapping: std::collections::HashMap, + /// Mapping from package names to their PackageNature + pub package_to_nature: std::collections::HashMap, +} + impl Output { /// Compute a cache key that contains all the information that was used to /// build the cache, including the relevant variant information. @@ -242,6 +253,30 @@ impl Output { ) .into_diagnostic()?; + // Write post-process-mappings.json to the cache folder + fs::create_dir_all(&cache_dir).into_diagnostic()?; + let post_process_mappings = PostProcessMappings { + library_mapping: finalized_dependencies + .host + .iter() + .chain(finalized_dependencies.build.iter()) + .flat_map(|env| env.library_mapping.clone().into_iter()) + .filter(|(_lib, pkg)| pkg.as_normalized().starts_with("sysroot_")) + .collect(), + package_to_nature: finalized_dependencies + .host + .iter() + .chain(finalized_dependencies.build.iter()) + .flat_map(|env| env.package_nature.clone()) + .collect(), + }; + let mappings_path = cache_dir.join("post-process-mappings.json"); + fs::write( + &mappings_path, + serde_json::to_string_pretty(&post_process_mappings).unwrap(), + ) + .into_diagnostic()?; + let selector_config = self.build_configuration.selector_config(); let mut jinja = Jinja::new(selector_config.clone()); for (k, v) in self.recipe.context.iter() { diff --git a/src/post_process/checks.rs b/src/post_process/checks.rs index 0c3b1eddf..708ba1a2e 100644 --- a/src/post_process/checks.rs +++ b/src/post_process/checks.rs @@ -277,15 +277,16 @@ fn extend_mappings_from_finalized( ) { let Some(deps) = deps else { return }; + // Only include sysroot_ packages from both host and build environments if let Some(host) = &deps.host { - library_mapping.extend(host.library_mapping.clone()); + for (lib, pkg) in &host.library_mapping { + if pkg.as_normalized().starts_with("sysroot_") { + library_mapping.insert(lib.clone(), pkg.clone()); + } + } package_to_nature.extend(host.package_nature.clone()); } - // For the build environment we (currently) only need the sysroot packages - // to resolve system libraries. Therefore we filter explicitly for - // `sysroot_` packages when merging the library mapping. The package nature - // information can be copied as-is. if let Some(build) = &deps.build { for (lib, pkg) in &build.library_mapping { if pkg.as_normalized().starts_with("sysroot_") { @@ -304,13 +305,39 @@ pub fn perform_linking_checks( let dynamic_linking = output.recipe.build().dynamic_linking(); let system_libs = find_system_libs(output)?; - // Get library mapping from finalized dependencies + // Try to load post-process-mappings.json from the cache directory if it exists let mut library_mapping = HashMap::new(); let mut package_to_nature = HashMap::new(); - - // Merge information from the regular dependencies and (if present) from the cache - if let Some(merged) = output.merged_finalized_dependencies() { - extend_mappings_from_finalized(&Some(merged), &mut library_mapping, &mut package_to_nature); + let mut used_cache_file = false; + let cache_dir = &output.build_configuration.directories.cache_dir; + let mappings_path = cache_dir.join("post-process-mappings.json"); + if mappings_path.exists() { + match fs_err::read_to_string(&mappings_path) + .ok() + .and_then(|s| serde_json::from_str::(&s).ok()) + { + Some(mappings) => { + library_mapping = mappings.library_mapping; + package_to_nature = mappings.package_to_nature; + used_cache_file = true; + tracing::info!("Loaded post-process-mappings.json from cache"); + } + None => { + tracing::warn!( + "Failed to load or parse post-process-mappings.json, falling back to in-memory computation" + ); + } + } + } + if !used_cache_file { + // Merge information from the regular dependencies and (if present) from the cache + if let Some(merged) = output.merged_finalized_dependencies() { + extend_mappings_from_finalized( + &Some(merged), + &mut library_mapping, + &mut package_to_nature, + ); + } } let (resolved_run_dependencies, dep_to_source) = From aef501ae685ec2d1b342b2c0ae637e72d4fd1ebe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Mon, 7 Jul 2025 17:35:31 +0300 Subject: [PATCH 22/25] all host libraries but only sysroot from build --- src/post_process/checks.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/post_process/checks.rs b/src/post_process/checks.rs index 708ba1a2e..56f057977 100644 --- a/src/post_process/checks.rs +++ b/src/post_process/checks.rs @@ -274,19 +274,16 @@ fn extend_mappings_from_finalized( deps: &Option, library_mapping: &mut HashMap, package_to_nature: &mut HashMap, + _output: &crate::metadata::Output, ) { let Some(deps) = deps else { return }; - // Only include sysroot_ packages from both host and build environments + // All host libraries if let Some(host) = &deps.host { - for (lib, pkg) in &host.library_mapping { - if pkg.as_normalized().starts_with("sysroot_") { - library_mapping.insert(lib.clone(), pkg.clone()); - } - } + library_mapping.extend(host.library_mapping.clone()); package_to_nature.extend(host.package_nature.clone()); } - + // Only sysroot_ packages from build if let Some(build) = &deps.build { for (lib, pkg) in &build.library_mapping { if pkg.as_normalized().starts_with("sysroot_") { @@ -336,6 +333,7 @@ pub fn perform_linking_checks( &Some(merged), &mut library_mapping, &mut package_to_nature, + output, ); } } From 9b5754907c9d6f11be9fa96e34c012b93842fa0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Mon, 7 Jul 2025 19:57:01 +0300 Subject: [PATCH 23/25] performance improvements with collecting library fiile names once --- src/post_process/package_nature.rs | 19 +++++- src/render/resolved_dependencies.rs | 98 +++++++---------------------- 2 files changed, 41 insertions(+), 76 deletions(-) diff --git a/src/post_process/package_nature.rs b/src/post_process/package_nature.rs index 445b36a92..457086b55 100644 --- a/src/post_process/package_nature.rs +++ b/src/post_process/package_nature.rs @@ -165,6 +165,8 @@ impl Eq for CaseInsensitivePathBuf {} pub(crate) struct PrefixInfo { pub package_to_nature: HashMap, pub path_to_package: HashMap, + /// List of library file names (e.g. "libz.so") provided by each package + pub library_files: HashMap>, } impl PrefixInfo { @@ -187,9 +189,24 @@ impl PrefixInfo { for file in record.files { prefix_info.path_to_package.insert( - file.into(), + CaseInsensitivePathBuf::from(file.clone()), record.repodata_record.package_record.name.clone(), ); + + // Collect library file names provided by this record once here + if is_dso(&file) { + let file_name = file + .file_name() + .and_then(|f| f.to_str()) + .unwrap_or_default() + .to_string(); + + prefix_info + .library_files + .entry(record.repodata_record.package_record.name.clone()) + .or_default() + .push(file_name); + } } } } diff --git a/src/render/resolved_dependencies.rs b/src/render/resolved_dependencies.rs index 4451d6cee..e1f0e717b 100644 --- a/src/render/resolved_dependencies.rs +++ b/src/render/resolved_dependencies.rs @@ -10,8 +10,8 @@ use indicatif::{HumanBytes, MultiProgress, ProgressBar}; use rattler::install::Placement; use rattler_cache::package_cache::PackageCache; use rattler_conda_types::{ - ChannelUrl, MatchSpec, NamelessMatchSpec, PackageName, PackageRecord, Platform, PrefixRecord, - RepoDataRecord, package::RunExportsJson, + ChannelUrl, MatchSpec, NamelessMatchSpec, PackageName, PackageRecord, Platform, RepoDataRecord, + package::RunExportsJson, }; use reqwest_middleware::ClientWithMiddleware; use serde::{Deserialize, Serialize}; @@ -269,50 +269,6 @@ fn short_channel(channel: Option<&str>) -> String { } } -/// Extract library files from a package's metadata in the prefix -fn extract_library_info_from_prefix( - prefix: &Path, - package_name: &PackageName, -) -> Result, std::io::Error> { - let conda_meta = prefix.join("conda-meta"); - let package_prefix = format!("{}-", package_name.as_normalized()); - let metadata_path = fs_err::read_dir(&conda_meta)? - .filter_map(Result::ok) - .find(|entry| { - entry - .file_name() - .to_str() - .filter(|name| name.starts_with(&package_prefix) && name.ends_with(".json")) - .is_some() - }) - .map(|entry| entry.path()); - - let Some(path) = metadata_path else { - return Ok(Vec::new()); - }; - - let record = PrefixRecord::from_path(&path) - .map_err(|e| std::io::Error::new(std::io::ErrorKind::InvalidData, e))?; - - let libraries = record - .files - .into_iter() - .filter_map(|path| { - let file_name = path.file_name()?.to_str()?; - let is_library = file_name.ends_with(".so") - || file_name.contains(".so.") - || file_name.ends_with(".dylib") - || file_name.contains(".dylib.") - || file_name.ends_with(".dll") - || file_name.ends_with(".pyd"); - - is_library.then(|| file_name.to_string()) - }) - .collect(); - - Ok(libraries) -} - impl ResolvedDependencies { pub fn to_table(&self, table: comfy_table::Table, long: bool) -> comfy_table::Table { let mut table = table; @@ -716,42 +672,34 @@ pub fn populate_library_mappings( resolved_deps: &mut ResolvedDependencies, prefix: &Path, ) -> Result<(), std::io::Error> { + // Clear any previous mappings first. resolved_deps.library_mapping.clear(); - // Create PrefixInfo once for lazy lookups + // Build a single PrefixInfo to reuse parsed metadata. let prefix_info = PrefixInfo::from_prefix(prefix)?; for record in &resolved_deps.resolved { - match extract_library_info_from_prefix(prefix, &record.package_record.name) { - Ok(libraries) => { - // Insert libraries -> package mapping - for lib in libraries { - resolved_deps - .library_mapping - .insert(lib, record.package_record.name.clone()); - } + if let Some(libraries) = prefix_info.library_files.get(&record.package_record.name) { + // Insert libraries -> package mapping + for lib in libraries { + resolved_deps + .library_mapping + .insert(lib.clone(), record.package_record.name.clone()); + } + } - // Lazily get package nature from PrefixInfo - if !resolved_deps + // Lazily get package nature from PrefixInfo + if !resolved_deps + .package_nature + .contains_key(&record.package_record.name) + { + if let Some(nature) = prefix_info + .package_to_nature + .get(&record.package_record.name) + { + resolved_deps .package_nature - .contains_key(&record.package_record.name) - { - if let Some(nature) = prefix_info - .package_to_nature - .get(&record.package_record.name) - { - resolved_deps - .package_nature - .insert(record.package_record.name.clone(), nature.clone()); - } - } - } - Err(e) => { - tracing::debug!( - "Failed to extract library info from {}: {}", - record.package_record.name.as_normalized(), - e - ); + .insert(record.package_record.name.clone(), nature.clone()); } } } From c28c445719ff828045b3e3bbf3d74fdbf006d589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Mon, 7 Jul 2025 20:35:57 +0300 Subject: [PATCH 24/25] single lookup --- src/post_process/checks.rs | 52 +++++++++++++++----------------------- 1 file changed, 20 insertions(+), 32 deletions(-) diff --git a/src/post_process/checks.rs b/src/post_process/checks.rs index 56f057977..016bc9bcc 100644 --- a/src/post_process/checks.rs +++ b/src/post_process/checks.rs @@ -13,7 +13,7 @@ use crate::{ use crate::render::resolved_dependencies::{FinalizedDependencies, RunExportDependency}; use globset::{Glob, GlobSet, GlobSetBuilder}; -use rattler_conda_types::{PackageName, PrefixRecord}; +use rattler_conda_types::{PackageName, PrefixRecord, RepoDataRecord}; #[derive(thiserror::Error, Debug)] pub enum LinkingCheckError { @@ -197,39 +197,27 @@ fn find_system_libs(output: &Output) -> Result { return system_libs.build(); } - // Try to locate a `sysroot_` package in either the regular build - // dependencies *or* the cache build dependencies. The first one found is - // used to derive the list of system libraries. - let mut sysroot_package = output - .finalized_dependencies - .as_ref() - .and_then(|deps| deps.build.as_ref()) - .and_then(|deps| { - deps.resolved.iter().find(|v| { - v.file_name.starts_with(&format!( - "sysroot_{}", - output.build_configuration.target_platform - )) - }) - }) - .cloned(); - - if sysroot_package.is_none() { - sysroot_package = output - .finalized_cache_dependencies - .as_ref() - .and_then(|deps| deps.build.as_ref()) - .and_then(|deps| { - deps.resolved.iter().find(|v| { - v.file_name.starts_with(&format!( - "sysroot_{}", - output.build_configuration.target_platform - )) - }) - }) - .cloned(); + // Helper to locate a `sysroot_` package in the build deps of the given + // finalized dependency set. + fn find_sysroot<'a>( + deps: &'a Option, + platform: &rattler_conda_types::Platform, + ) -> Option<&'a RepoDataRecord> { + let build = deps.as_ref()?.build.as_ref()?; + build + .resolved + .iter() + .find(|rec| rec.file_name.starts_with(&format!("sysroot_{}", platform))) } + // Try both the regular and the cache dependencies + let sysroot_package = [ + &output.finalized_dependencies, + &output.finalized_cache_dependencies, + ] + .into_iter() + .find_map(|deps| find_sysroot(deps, &output.build_configuration.target_platform)); + if let Some(sysroot_package) = sysroot_package { let prefix_record_name = format!( "conda-meta/{}-{}-{}.json", From ebff2c518bb27448d6a2d409dcecdec895791e43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denizhan=20Dak=C4=B1l=C4=B1r?= Date: Mon, 14 Jul 2025 17:03:20 +0300 Subject: [PATCH 25/25] back to ascii cases --- src/windows/link.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/windows/link.rs b/src/windows/link.rs index faffcbd63..4c23e59e3 100644 --- a/src/windows/link.rs +++ b/src/windows/link.rs @@ -95,7 +95,7 @@ impl Relinker for Dll { if WIN_ALLOWLIST.iter().any(|&sys_dll| { lib.file_name() .and_then(|n| n.to_str()) - .map(|n| n == sys_dll) + .map(|n| n.eq_ignore_ascii_case(sys_dll)) .unwrap_or(false) }) { continue; @@ -203,7 +203,7 @@ mod tests { let has_kernel32 = libraries.iter().any(|lib| { lib.file_name() .and_then(|n| n.to_str()) - .map(|n| n == "KERNEL32.dll") + .map(|n| n.eq_ignore_ascii_case("KERNEL32.dll")) .unwrap_or(false) }); assert!(has_kernel32, "Expected KERNEL32.dll dependency"); @@ -213,7 +213,7 @@ mod tests { !resolved.iter().any(|(lib, _)| lib .file_name() .and_then(|n| n.to_str()) - .map(|n| n == "KERNEL32.dll") + .map(|n| n.eq_ignore_ascii_case("KERNEL32.dll")) .unwrap_or(false)), "System DLLs should be filtered out during resolution" ); @@ -237,14 +237,14 @@ mod tests { let is_system = WIN_ALLOWLIST.iter().any(|&sys_dll| { path.file_name() .and_then(|n| n.to_str()) - .map(|n| n == sys_dll) + .map(|n| n.eq_ignore_ascii_case(sys_dll)) .unwrap_or(false) }); - match dll { - "KERNEL32.dll" - | "C:\\Windows\\System32\\KERNEL32.dll" - | "D:\\Some\\Path\\KERNEL32.dll" => { + match dll.to_lowercase().as_str() { + "kernel32.dll" + | "c:\\windows\\system32\\kernel32.dll" + | "d:\\some\\path\\kernel32.dll" => { assert!(is_system, "Expected {} to be identified as system DLL", dll); } _ => {