From bde968f8059d36da8897668ba9ef4b3de0316e15 Mon Sep 17 00:00:00 2001 From: Angel Dijoux Date: Thu, 31 Oct 2024 14:25:49 +0100 Subject: [PATCH 01/10] feat: init a repo for default use_case template --- Cargo.lock | 80 ++++++++++++++++++++++ Cargo.toml | 1 + src/commands/new/git.rs | 20 ++++++ src/commands/new/mod.rs | 1 + src/commands/new/use_case.rs | 27 +++++--- src/graphql/use_case_template_info.graphql | 1 + 6 files changed, 119 insertions(+), 11 deletions(-) create mode 100644 src/commands/new/git.rs diff --git a/Cargo.lock b/Cargo.lock index 99162ff..e429417 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -125,6 +125,7 @@ dependencies = [ "dunce", "fs4", "futures", + "git2", "graphql_client", "hostname", "human-errors", @@ -1043,6 +1044,21 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +[[package]] +name = "git2" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" +dependencies = [ + "bitflags 2.4.2", + "libc", + "libgit2-sys", + "log", + "openssl-probe", + "openssl-sys", + "url", +] + [[package]] name = "globset" version = "0.4.14" @@ -1580,6 +1596,20 @@ version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +[[package]] +name = "libgit2-sys" +version = "0.17.0+1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" +dependencies = [ + "cc", + "libc", + "libssh2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", +] + [[package]] name = "libredox" version = "0.0.1" @@ -1591,6 +1621,20 @@ dependencies = [ "redox_syscall", ] +[[package]] +name = "libssh2-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee" +dependencies = [ + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", +] + [[package]] name = "libz-ng-sys" version = "1.1.16" @@ -1601,6 +1645,18 @@ dependencies = [ "libc", ] +[[package]] +name = "libz-sys" +version = "1.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -1762,6 +1818,24 @@ dependencies = [ "pathdiff", ] +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "option-ext" version = "0.2.0" @@ -3377,6 +3451,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + [[package]] name = "version-ranges" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 3f7c13e..d36ce98 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -92,6 +92,7 @@ tracing-subscriber = { version = "0.3", features = ["json", "env-filter"] } url = { version = "2.5", features = ["serde"] } uuid = "1.7" which = "6.0" +git2 = "0.19.0" [build-dependencies] toml_edit = "0.22" diff --git a/src/commands/new/git.rs b/src/commands/new/git.rs new file mode 100644 index 0000000..0236215 --- /dev/null +++ b/src/commands/new/git.rs @@ -0,0 +1,20 @@ +use git2::{Error, Repository, RepositoryInitOptions}; +use indicatif::ProgressBar; +use std::path::Path; + +pub fn init_repository( + pb: &ProgressBar, + dest: impl AsRef, + description: impl AsRef, +) -> Result<(), Error> { + pb.set_message("Initializing local Git repository..."); + let mut opts = RepositoryInitOptions::new(); + opts.description(description.as_ref()).initial_head("main"); + match Repository::init_opts(dest, &opts) { + Ok(_) => { + pb.set_message("Repository initialized successfully."); + Ok(()) + } + Err(error) => Err(error), + } +} diff --git a/src/commands/new/mod.rs b/src/commands/new/mod.rs index dc9e2b4..66c937f 100644 --- a/src/commands/new/mod.rs +++ b/src/commands/new/mod.rs @@ -1,3 +1,4 @@ +mod git; mod use_case; use clap::Subcommand; diff --git a/src/commands/new/use_case.rs b/src/commands/new/use_case.rs index 2900aa8..2eb8aa5 100644 --- a/src/commands/new/use_case.rs +++ b/src/commands/new/use_case.rs @@ -1,4 +1,4 @@ -use std::path::PathBuf; +use std::path::{Path, PathBuf}; use aqora_template::UseCaseTemplate; use clap::Args; @@ -6,9 +6,10 @@ use graphql_client::GraphQLQuery; use indicatif::ProgressBar; use serde::Serialize; -use crate::error::{self, Result}; +use crate::error::{self, Error, Result}; use crate::graphql_client::{custom_scalars::*, GraphQLClient}; +use super::git::init_repository; use super::GlobalArgs; #[derive(Args, Debug, Serialize)] @@ -53,18 +54,22 @@ pub async fn use_case(args: UseCase, global: GlobalArgs) -> Result<()> { .competition(args.competition) .title(competition.title) .render(&dest) - .map_err(|e| { - error::user( - &format!("Failed to create use case at '{}': {}", dest.display(), e), - &format!( - "Make sure you have the correct permissions for '{}'", - dest.display() - ), - ) - })?; + .map_err(|e| format_permission_error("create use case", &dest, &e))?; + init_repository(&pb, &dest, competition.short_description) + .map_err(|e| format_permission_error("initialize Git repository", &dest, &e))?; pb.finish_with_message(format!( "Created use case in directory '{}'", dest.display() )); Ok(()) } + +fn format_permission_error(action: &str, dest: &Path, error: &impl std::fmt::Display) -> Error { + error::user( + &format!("Failed to {} at '{}': {}", action, dest.display(), error), + &format!( + "Make sure you have the correct permissions for '{}'", + dest.display() + ), + ) +} diff --git a/src/graphql/use_case_template_info.graphql b/src/graphql/use_case_template_info.graphql index 3123368..8d7cf43 100644 --- a/src/graphql/use_case_template_info.graphql +++ b/src/graphql/use_case_template_info.graphql @@ -2,6 +2,7 @@ query UseCaseTemplateInfo($slug: String!) { competitionBySlug(slug: $slug) { id title + shortDescription useCase { latest { version From a1681cfcba4362176f73788d8133ec178d5e6f6d Mon Sep 17 00:00:00 2001 From: Angel Dijoux Date: Tue, 5 Nov 2024 16:57:59 +0100 Subject: [PATCH 02/10] fix: pr suggestions --- src/commands/new/mod.rs | 1 - src/commands/new/use_case.rs | 2 +- src/{commands/new => }/git.rs | 0 src/lib.rs | 1 + 4 files changed, 2 insertions(+), 2 deletions(-) rename src/{commands/new => }/git.rs (100%) diff --git a/src/commands/new/mod.rs b/src/commands/new/mod.rs index 66c937f..dc9e2b4 100644 --- a/src/commands/new/mod.rs +++ b/src/commands/new/mod.rs @@ -1,4 +1,3 @@ -mod git; mod use_case; use clap::Subcommand; diff --git a/src/commands/new/use_case.rs b/src/commands/new/use_case.rs index 2eb8aa5..49cffd8 100644 --- a/src/commands/new/use_case.rs +++ b/src/commands/new/use_case.rs @@ -7,9 +7,9 @@ use indicatif::ProgressBar; use serde::Serialize; use crate::error::{self, Error, Result}; +use crate::git::init_repository; use crate::graphql_client::{custom_scalars::*, GraphQLClient}; -use super::git::init_repository; use super::GlobalArgs; #[derive(Args, Debug, Serialize)] diff --git a/src/commands/new/git.rs b/src/git.rs similarity index 100% rename from src/commands/new/git.rs rename to src/git.rs diff --git a/src/lib.rs b/src/lib.rs index 546bfb0..f92fc34 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,6 +8,7 @@ mod dirs; mod download; mod error; mod evaluate; +mod git; mod graphql_client; mod id; mod ipynb; From 45683a99d3a6cc01fea98ddf06a1da183f5fb3f0 Mon Sep 17 00:00:00 2001 From: Angel Dijoux Date: Thu, 31 Oct 2024 14:25:49 +0100 Subject: [PATCH 03/10] feat: init a repo for default use_case template feat: implement shield badge feat: inject score badge in readme after test chore: fix generated badge md --- src/commands/test.rs | 55 ++++++++ src/file_utils.rs | 45 +++++++ src/lib.rs | 1 + src/vscode.rs | 123 ++++++------------ template/assets/use_case/README.md.hbs | 2 + .../assets/use_case/template/README.md.hbs | 2 + 6 files changed, 142 insertions(+), 86 deletions(-) create mode 100644 src/file_utils.rs diff --git a/src/commands/test.rs b/src/commands/test.rs index b424a84..3e67499 100644 --- a/src/commands/test.rs +++ b/src/commands/test.rs @@ -7,6 +7,7 @@ use crate::{ }, error::{self, Result}, evaluate::evaluate, + file_utils::with_locked_file, ipynb::{convert_submission_notebooks, convert_use_case_notebooks}, print::wrap_python_output, python::LastRunResult, @@ -25,10 +26,13 @@ use pyo3::{exceptions::PyException, Python}; use serde::Serialize; use std::{ collections::HashMap, + io::SeekFrom, path::{Path, PathBuf}, pin::Pin, sync::{atomic::AtomicU32, Arc}, }; +use tokio::io::{AsyncReadExt, AsyncSeekExt, AsyncWriteExt}; +use url::Url; #[derive(Args, Debug, Clone, Serialize)] #[command(author, version, about)] @@ -67,6 +71,22 @@ fn last_run_items( }) } +fn build_shield_score_badge(score: &Py, aqora_url: Url) -> Result { + const LOGO_BASE64: &str = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIWSURBVHgBjZI/bBJxFMe//5x3BE9D2waCeZiEwNxECcbHSwmGt3qZkwcnB2Q0cFAR6d2Mk6KgcHNQSeHwmJaJ06XYmICprEq1PbaUk7ugJ93p1ToYPpb3svv5fve5/2+P8IRjqqdS4MGiwDTQFx1f2stx4+Kip7Mi3KsKIVj87Kq7zj2z/qoJoajK15IAzTtxVlRiREFIi2ZB6Hg57yoIHEpC0k7lTGL16oRLTk3JFQmGcjkgkA0H4gEBWfSWShyHFIoet+/EyCbh9GJ2B+hx24JvILU2SwiYhyCA4Q5feb6I3bRskyLGMuN6ZriEAsBqo9z3nhYkY/F0Q8BQznUjSQuvBseV9sshNzbArU0zdAAWbOsejOYOmpzY7ZiSJL+hMJKQoqeXh+qkuOogCuj48h4tlyg5Qncw/z3brKrjoLbfRlTfQWwQ46w6zRmHM7edn5Zd8xi5t9EH8MVVUN0B5aPcvcWmwKHxX2+c7Jtm5ddsaf4K2z9WEXrYznT2axXOVlLGg7JNdYf1BxCI6ynHpReUYvv4aVrfU1wdk8ResDel1V8r5XBBsj7wzie8NyLxgE7Q94nKL6h17B3Pglet+2N91hfK0+sxLEx0V9rgtfzM9feXdpsr6DRLI2V8SLw3PtmJ7xN58Z92rPqC37yeaPU7Pa/ffDq0wSyGKPHXav+9OBxVD215HW64k1vSp7ZI6/+d34DKO3EcR6BAbMAAAAASUVORK5CYII="; + const LABEL_COLOR: &str = "eceafc"; + const BADGE_COLOR: &str = "4328e5"; + let badge_url = format!( + "https://img.shields.io/badge/score-{}-{}", + score, BADGE_COLOR + ); + let query_params = format!( + "?logo={}&labelColor={}&link={}", + LOGO_BASE64, LABEL_COLOR, aqora_url + ); + let full_url = Url::parse(&badge_url)?.join(&query_params)?; + Ok(format!("![Aqora Score Badge]({})", full_url)) +} + struct RunPipelineConfig { use_case: AqoraUseCaseConfig, pipeline_config: PipelineConfig, @@ -328,6 +348,7 @@ pub async fn run_submission_tests( }) .collect::>>()?; + let competition = modified_use_case.clone().competition.unwrap_or_default(); let (num_inputs, aggregated) = run_pipeline( &env, RunPipelineConfig { @@ -350,6 +371,40 @@ pub async fn run_submission_tests( score )); } + pipeline_pb.println(format!( + "{}: {}", + "Score".if_supports_color(OwoStream::Stdout, |text| { text.bold() }), + score + )); + let path = global.project.join("README.md"); + with_locked_file( + |file| { + let score = score.clone(); + let url = global.aqora_url().unwrap(); + async move { + let mut contents = String::new(); + file.read_to_string(&mut contents).await?; + file.seek(SeekFrom::Start(0)).await?; + file.write_all( + format!( + "{}\n{}", + build_shield_score_badge( + &score, + url.join(&format!("competitions/{}", &competition))? + )?, + &contents + ) + .as_bytes(), + ) + .await?; + + Ok(()) + } + .boxed() + }, + path, + ) + .await?; pipeline_pb.finish_and_clear(); Ok(score) } diff --git a/src/file_utils.rs b/src/file_utils.rs new file mode 100644 index 0000000..70a6f85 --- /dev/null +++ b/src/file_utils.rs @@ -0,0 +1,45 @@ +use std::path::PathBuf; + +use crate::error::{self, Result}; +use fs4::tokio::AsyncFileExt; +use futures::future::BoxFuture; +use tokio::fs::File; +use tokio::fs::OpenOptions; + +pub async fn with_locked_file(f: F, path: PathBuf) -> Result +where + F: for<'a> FnOnce(&'a mut File) -> BoxFuture<'a, Result> + Send, + T: Send, +{ + let mut file = OpenOptions::new() + .read(true) + .write(true) + .create(true) + .truncate(false) + .open(&path) + .await + .map_err(|e| { + error::system( + &format!("Failed to open file at {}: {:?}", path.display(), e), + "", + ) + })?; + + file.lock_exclusive().map_err(|e| { + error::system( + &format!("Failed to lock file at {}: {:?}", path.display(), e), + "", + ) + })?; + + let res = f(&mut file).await; + + file.unlock().map_err(|e| { + error::system( + &format!("Failed to unlock file at {}: {:?}", path.display(), e), + "", + ) + })?; + + res +} diff --git a/src/lib.rs b/src/lib.rs index f92fc34..9ce65e8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,6 +8,7 @@ mod dirs; mod download; mod error; mod evaluate; +mod file_utils; mod git; mod graphql_client; mod id; diff --git a/src/vscode.rs b/src/vscode.rs index 7161a6e..1d5e200 100644 --- a/src/vscode.rs +++ b/src/vscode.rs @@ -1,14 +1,10 @@ use crate::dirs::vscode_user_settings_file_path; use crate::error::{self, Result}; -use fs4::tokio::AsyncFileExt; -use futures::future::BoxFuture; +use crate::file_utils::with_locked_file; use futures::FutureExt; use serde::{Deserialize, Serialize}; -use tokio::fs::File; -use tokio::{ - fs::OpenOptions, - io::{AsyncReadExt, AsyncSeekExt, AsyncWriteExt}, -}; + +use tokio::io::{AsyncReadExt, AsyncSeekExt, AsyncWriteExt}; #[derive(Debug, Serialize, Deserialize)] pub struct UserVSCodeSettings { @@ -17,42 +13,48 @@ pub struct UserVSCodeSettings { impl UserVSCodeSettings { pub async fn load() -> Result { - with_locked_settings(|file| { - async move { - let mut contents = String::new(); - file.read_to_string(&mut contents).await?; + with_locked_file( + |file| { + async move { + let mut contents = String::new(); + file.read_to_string(&mut contents).await?; - let settings = serde_json::from_str(&contents) - .map_err(|e| { - error::system( - &format!("Failed to parse user vscode settings file: {:?}", e), - "", - ) - }) - .unwrap_or(UserVSCodeSettings { - can_install_extensions: None, - }); + let settings = serde_json::from_str(&contents) + .map_err(|e| { + error::system( + &format!("Failed to parse user vscode settings file: {:?}", e), + "", + ) + }) + .unwrap_or(UserVSCodeSettings { + can_install_extensions: None, + }); - Ok(settings) - } - .boxed() - }) + Ok(settings) + } + .boxed() + }, + vscode_user_settings_file_path().await?, + ) .await } pub async fn save(&self) -> Result<()> { let contents = serde_json::to_string_pretty(self)?; - with_locked_settings(|file| { - async move { - file.rewind().await?; - file.write_all(contents.as_bytes()).await?; - file.set_len(contents.len() as u64).await?; - file.sync_all().await?; + with_locked_file( + |file| { + async move { + file.rewind().await?; + file.write_all(contents.as_bytes()).await?; + file.set_len(contents.len() as u64).await?; + file.sync_all().await?; - Ok(()) - } - .boxed() - }) + Ok(()) + } + .boxed() + }, + vscode_user_settings_file_path().await?, + ) .await } @@ -61,54 +63,3 @@ impl UserVSCodeSettings { self } } - -async fn with_locked_settings(f: F) -> Result -where - F: for<'a> FnOnce(&'a mut File) -> BoxFuture<'a, Result> + Send, - T: Send, -{ - let path = vscode_user_settings_file_path().await?; - let mut file = OpenOptions::new() - .read(true) - .write(true) - .create(true) - .truncate(false) - .open(&path) - .await - .map_err(|e| { - error::system( - &format!( - "Failed to open user vscode settings file at {}: {:?}", - path.display(), - e - ), - "", - ) - })?; - - file.lock_exclusive().map_err(|e| { - error::system( - &format!( - "Failed to lock user vscode settings file at {}: {:?}", - path.display(), - e - ), - "", - ) - })?; - - let res = f(&mut file).await; - - file.unlock().map_err(|e| { - error::system( - &format!( - "Failed to unlock user vscode settings file at {}: {:?}", - path.display(), - e - ), - "", - ) - })?; - - res -} diff --git a/template/assets/use_case/README.md.hbs b/template/assets/use_case/README.md.hbs index 9064fdc..5e5a480 100644 --- a/template/assets/use_case/README.md.hbs +++ b/template/assets/use_case/README.md.hbs @@ -1,3 +1,5 @@ +![Aqora badge](https://img.shields.io/badge/aqora-4328e5?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIWSURBVHgBjZI%2FbBJxFMe%2F7%2F5x3BE9D2waCeZiEwNxECcbHSwmGt3qZkwcnB2Q0cFAR6d2Mk6KgcHNQSeHwmJaJ06XYmICprEq1PbaUk7ugJ93p1ToYPpb3svv5fve5%2F2%2BP8IRjqqdS4MGiwDTQFx1f2stx4%2BKip7Mi3KsKIVj87Kq7zj2z%2FqoJoajK15IAzTtxVlRiREFIi2ZB6Hg57yoIHEpC0k7lTGL16oRLTk3JFQmGcjkgkA0H4gEBWfSWShyHFIoet%2B%2FEyCbh9GJ2B%2Bhx24JvILU2SwiYhyCA4Q5feb6I3bRskyLGMuN6ZriEAsBqo9z3nhYkY%2FF0Q8BQznUjSQuvBseV9sshNzbArU0zdAAWbOsejOYOmpzY7ZiSJL%2BhMJKQoqeXh%2BqkuOogCuj48h4tlyg5Qncw%2Fz3brKrjoLbfRlTfQWwQ46w6zRmHM7edn5Zd8xi5t9EH8MVVUN0B5aPcvcWmwKHxX2%2Bc7Jtm5ddsaf4K2z9WEXrYznT2axXOVlLGg7JNdYf1BxCI6ynHpReUYvv4aVrfU1wdk8ResDel1V8r5XBBsj7wzie8NyLxgE7Q94nKL6h17B3Pglet%2B2N91hfK0%2BsxLEx0V9rgtfzM9feXdpsr6DRLI2V8SLw3PtmJ7xN58Z92rPqC37yeaPU7Pa%2FffDq0wSyGKPHXav%2B9OBxVD215HW64k1vSp7ZI6%2F%2Bd34DKO3EcR6BAbMAAAAASUVORK5CYII%3D&labelColor=eceafc&link=https%3A%2F%2Faqora.io%2Fcompetitions%2F{{competition}}%2F) + ## {{title}} If this is your first competition on Aqora, we highly recommend you follow the diff --git a/template/assets/use_case/template/README.md.hbs b/template/assets/use_case/template/README.md.hbs index a9aabf7..ecc4306 100644 --- a/template/assets/use_case/template/README.md.hbs +++ b/template/assets/use_case/template/README.md.hbs @@ -1,3 +1,5 @@ +![Aqora badge](https://img.shields.io/badge/aqora-4328e5?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIWSURBVHgBjZI%2FbBJxFMe%2F7%2F5x3BE9D2waCeZiEwNxECcbHSwmGt3qZkwcnB2Q0cFAR6d2Mk6KgcHNQSeHwmJaJ06XYmICprEq1PbaUk7ugJ93p1ToYPpb3svv5fve5%2F2%2BP8IRjqqdS4MGiwDTQFx1f2stx4%2BKip7Mi3KsKIVj87Kq7zj2z%2FqoJoajK15IAzTtxVlRiREFIi2ZB6Hg57yoIHEpC0k7lTGL16oRLTk3JFQmGcjkgkA0H4gEBWfSWShyHFIoet%2B%2FEyCbh9GJ2B%2Bhx24JvILU2SwiYhyCA4Q5feb6I3bRskyLGMuN6ZriEAsBqo9z3nhYkY%2FF0Q8BQznUjSQuvBseV9sshNzbArU0zdAAWbOsejOYOmpzY7ZiSJL%2BhMJKQoqeXh%2BqkuOogCuj48h4tlyg5Qncw%2Fz3brKrjoLbfRlTfQWwQ46w6zRmHM7edn5Zd8xi5t9EH8MVVUN0B5aPcvcWmwKHxX2%2Bc7Jtm5ddsaf4K2z9WEXrYznT2axXOVlLGg7JNdYf1BxCI6ynHpReUYvv4aVrfU1wdk8ResDel1V8r5XBBsj7wzie8NyLxgE7Q94nKL6h17B3Pglet%2B2N91hfK0%2BsxLEx0V9rgtfzM9feXdpsr6DRLI2V8SLw3PtmJ7xN58Z92rPqC37yeaPU7Pa%2FffDq0wSyGKPHXav%2B9OBxVD215HW64k1vSp7ZI6%2F%2Bd34DKO3EcR6BAbMAAAAASUVORK5CYII%3D&labelColor=eceafc&link=https%3A%2F%2Faqora.io%2Fcompetitions%2F{{competition}}%2F) + # {{ title }} Submission You can find a template notebook in `submission/solution.ipynb`. From 107d2a593f725d09b47e9b3116bea4ea04ad938e Mon Sep 17 00:00:00 2001 From: Angel Dijoux Date: Tue, 5 Nov 2024 17:09:27 +0100 Subject: [PATCH 04/10] ci: fix build issue --- .github/workflows/cd.yaml | 53 +++++++++++++++++++++++++++++++-------- Cargo.lock | 53 +++++++++++++++++++++++++++++++++++++++ Cargo.toml | 7 ++++-- 3 files changed, 101 insertions(+), 12 deletions(-) diff --git a/.github/workflows/cd.yaml b/.github/workflows/cd.yaml index f42813e..0fd26c9 100644 --- a/.github/workflows/cd.yaml +++ b/.github/workflows/cd.yaml @@ -5,7 +5,7 @@ on: branches: - main tags: - - '*' + - "*" pull_request: merge_group: workflow_dispatch: @@ -26,18 +26,45 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: "3.10" + - name: Calculate openssl-vendored + shell: bash + id: is-openssl-vendored + run: | + if [[ "${{ startsWith(matrix.target, 'x86') }}" == "true" ]]; then + echo "enabled=" >> $GITHUB_OUTPUT + else + echo "enabled=--features vendored-openssl" >> $GITHUB_OUTPUT + fi - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} - args: --release --out dist - sccache: 'true' + args: --release --out dist --find-interpreter ${{ steps.is-openssl-vendored.outputs.enabled }} --features extension-module + sccache: "true" manylinux: auto + before-script-linux: | + case "${{ matrix.target }}" in + "aarch64" | "armv7" | "s390x" | "ppc64le") + # NOTE: pypa/manylinux docker images are Debian based + sudo apt-get update + sudo apt-get install -y pkg-config libssl-dev + sudo apt-get install -y cpanminus + sudo cpanm IPC::Cmd + ;; + "x86" | "x86_64") + # NOTE: rust-cross/manylinux docker images are CentOS based + yum update -y + yum install -y openssl openssl-devel perl-IPC-Cmd + if [[ "${{ matrix.target }}" == "x86" ]]; then + yum -y install gcc libatomic + fi + ;; + esac docker-options: -e SENTRY_DSN env: # Workaround ring 0.17 build issue - CFLAGS_aarch64_unknown_linux_gnu: '-D__ARM_ARCH=8' + CFLAGS_aarch64_unknown_linux_gnu: "-D__ARM_ARCH=8" - name: Upload wheels uses: actions/upload-artifact@v3 with: @@ -53,14 +80,14 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: "3.10" architecture: ${{ matrix.target }} - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} args: --release --out dist - sccache: 'true' + sccache: "true" - name: Upload wheels uses: actions/upload-artifact@v3 with: @@ -76,13 +103,19 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: "3.10" + - name: Install dependencies + run: brew install openssl pkg-config + - name: Set OpenSSL path + run: echo "OPENSSL_DIR=$(brew --prefix openssl)" >> $GITHUB_ENV - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} args: --release --out dist - sccache: 'true' + sccache: "true" + env: + OPENSSL_DIR: ${{ env.OPENSSL_DIR }} - name: Upload wheels uses: actions/upload-artifact@v3 with: @@ -158,4 +191,4 @@ jobs: tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha - cache-to: type=gha,mode=max \ No newline at end of file + cache-to: type=gha,mode=max diff --git a/Cargo.lock b/Cargo.lock index e429417..0668117 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -134,6 +134,8 @@ dependencies = [ "lazy_static", "mime", "open", + "openssl", + "openssl-probe", "owo-colors", "passterm", "pretty_assertions", @@ -908,6 +910,21 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "form_urlencoded" version = "1.2.1" @@ -1818,12 +1835,47 @@ dependencies = [ "pathdiff", ] +[[package]] +name = "openssl" +version = "0.10.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +dependencies = [ + "bitflags 2.4.2", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + [[package]] name = "openssl-probe" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "openssl-src" +version = "300.4.0+3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a709e02f2b4aca747929cca5ed248880847c650233cf8b8cdc48f40aaf4898a6" +dependencies = [ + "cc", +] + [[package]] name = "openssl-sys" version = "0.9.104" @@ -1832,6 +1884,7 @@ checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", + "openssl-src", "pkg-config", "vcpkg", ] diff --git a/Cargo.toml b/Cargo.toml index d36ce98..49c7b6a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,7 @@ name = "aqora" [features] default = [] extension-module = ["pyo3/extension-module", "pyo3/abi3-py39", "pyo3/abi3"] +vendored-openssl = ["openssl/vendored"] [dependencies] aqora-archiver = { path = "archiver", features = ["indicatif", "tokio", "tracing"] } @@ -46,7 +47,7 @@ mime = "0.3" open = "5.0" owo-colors = { version = "4.0", features = ["supports-colors"] } passterm = "2.0" -pyo3 = { version = "0.20", features = ["serde"] } +pyo3 = { version = "0.20", features = ["serde"]} pyo3-asyncio = { version = "0.20", features = ["attributes", "tokio-runtime"] } rand = "0.8" reqwest = { version = "0.11", default-features = false, features = [ @@ -92,7 +93,9 @@ tracing-subscriber = { version = "0.3", features = ["json", "env-filter"] } url = { version = "2.5", features = ["serde"] } uuid = "1.7" which = "6.0" -git2 = "0.19.0" +openssl = { version = "0.10.68", features = ["vendored"], optional = true } +openssl-probe = { version = "0.1.5", optional = true } +git2 = { version = "0.19.0" , features = ["vendored-openssl"] } [build-dependencies] toml_edit = "0.22" From c212d019c6f6a13ed508bd55c441f7964cd30f8d Mon Sep 17 00:00:00 2001 From: Angel Dijoux Date: Sat, 9 Nov 2024 11:36:05 +0100 Subject: [PATCH 05/10] fix: use readme from pyproject.toml --- Cargo.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0668117..0806397 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1858,7 +1858,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.87", ] [[package]] @@ -1869,9 +1869,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.4.0+3.4.0" +version = "300.4.1+3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a709e02f2b4aca747929cca5ed248880847c650233cf8b8cdc48f40aaf4898a6" +checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c" dependencies = [ "cc", ] From ff8b1eb00f26c41241b713000f290fe3d2241ae5 Mon Sep 17 00:00:00 2001 From: Angel Dijoux Date: Sat, 9 Nov 2024 11:36:05 +0100 Subject: [PATCH 06/10] fix: use readme from pyproject.toml --- Cargo.lock | 24 ++++++ Cargo.toml | 1 + src/commands/new/use_case.rs | 3 - src/commands/test.rs | 82 ++++++++++++------- src/git.rs | 20 ----- src/lib.rs | 1 - template/assets/use_case/README.md.hbs | 2 + template/assets/use_case/pyproject.toml.hbs | 1 + .../assets/use_case/template/README.md.hbs | 2 + .../use_case/template/pyproject.toml.hbs | 1 + 10 files changed, 82 insertions(+), 55 deletions(-) delete mode 100644 src/git.rs diff --git a/Cargo.lock b/Cargo.lock index 0806397..8ab16ef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -131,6 +131,7 @@ dependencies = [ "human-errors", "ignore", "indicatif", + "lazy-regex", "lazy_static", "mime", "open", @@ -1601,6 +1602,29 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "lazy-regex" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d8e41c97e6bc7ecb552016274b99fbb5d035e8de288c582d9b933af6677bfda" +dependencies = [ + "lazy-regex-proc_macros", + "once_cell", + "regex", +] + +[[package]] +name = "lazy-regex-proc_macros" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76e1d8b05d672c53cb9c7b920bbba8783845ae4f0b076e02a3db1d02c81b4163" +dependencies = [ + "proc-macro2", + "quote", + "regex", + "syn 2.0.87", +] + [[package]] name = "lazy_static" version = "1.5.0" diff --git a/Cargo.toml b/Cargo.toml index 49c7b6a..6b09b75 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -96,6 +96,7 @@ which = "6.0" openssl = { version = "0.10.68", features = ["vendored"], optional = true } openssl-probe = { version = "0.1.5", optional = true } git2 = { version = "0.19.0" , features = ["vendored-openssl"] } +lazy-regex = "3.3.0" [build-dependencies] toml_edit = "0.22" diff --git a/src/commands/new/use_case.rs b/src/commands/new/use_case.rs index 49cffd8..92ac06d 100644 --- a/src/commands/new/use_case.rs +++ b/src/commands/new/use_case.rs @@ -7,7 +7,6 @@ use indicatif::ProgressBar; use serde::Serialize; use crate::error::{self, Error, Result}; -use crate::git::init_repository; use crate::graphql_client::{custom_scalars::*, GraphQLClient}; use super::GlobalArgs; @@ -55,8 +54,6 @@ pub async fn use_case(args: UseCase, global: GlobalArgs) -> Result<()> { .title(competition.title) .render(&dest) .map_err(|e| format_permission_error("create use case", &dest, &e))?; - init_repository(&pb, &dest, competition.short_description) - .map_err(|e| format_permission_error("initialize Git repository", &dest, &e))?; pb.finish_with_message(format!( "Created use case in directory '{}'", dest.display() diff --git a/src/commands/test.rs b/src/commands/test.rs index 3e67499..1e583ea 100644 --- a/src/commands/test.rs +++ b/src/commands/test.rs @@ -20,6 +20,7 @@ use aqora_runner::{ use clap::Args; use futures::prelude::*; use indicatif::{MultiProgress, ProgressBar}; +use lazy_regex::regex_replace_all; use owo_colors::{OwoColorize, Stream as OwoStream}; use pyo3::prelude::*; use pyo3::{exceptions::PyException, Python}; @@ -228,6 +229,40 @@ fn run_pipeline( ) } +async fn update_score_badge_in_file( + path: PathBuf, + competition: impl AsRef, + score: &Py, + url: Url, +) -> Result<()> { + let badge_url = build_shield_score_badge( + score, + url.join(&format!("competitions/{}", competition.as_ref()))?, + )?; + with_locked_file( + |file| { + async move { + let mut contents = String::new(); + file.read_to_string(&mut contents).await?; + let updated_content = regex_replace_all!( + r"(?:)|(!\[Aqora Score Badge\]\([^\)]+\))", + &contents, + badge_url.clone() + ); + if updated_content != contents { + file.seek(SeekFrom::Start(0)).await?; + file.write_all(updated_content.as_bytes()).await?; + file.set_len(updated_content.len() as u64).await?; + } + Ok(()) + } + .boxed() + }, + path, + ) + .await +} + pub async fn run_submission_tests( m: &MultiProgress, global: &GlobalArgs, @@ -238,9 +273,15 @@ pub async fn run_submission_tests( .aqora() .and_then(|aqora| aqora.as_submission()) .ok_or_else(|| error::user("Submission config is not valid", ""))?; - let project_config = read_project_config(&global.project).await?; - + let project_readme_path = project + .project + .as_ref() + .and_then(|p| p.readme.as_ref()) + .and_then(|readme| match readme { + aqora_config::ReadMe::RelativePath(path) => Some(path), + aqora_config::ReadMe::Table { file, .. } => file.as_ref(), + }); let use_case_toml_path = project_use_case_toml_path(&global.project); let data_path = project_data_dir(&global.project); if !use_case_toml_path.exists() || !data_path.exists() { @@ -376,35 +417,14 @@ pub async fn run_submission_tests( "Score".if_supports_color(OwoStream::Stdout, |text| { text.bold() }), score )); - let path = global.project.join("README.md"); - with_locked_file( - |file| { - let score = score.clone(); - let url = global.aqora_url().unwrap(); - async move { - let mut contents = String::new(); - file.read_to_string(&mut contents).await?; - file.seek(SeekFrom::Start(0)).await?; - file.write_all( - format!( - "{}\n{}", - build_shield_score_badge( - &score, - url.join(&format!("competitions/{}", &competition))? - )?, - &contents - ) - .as_bytes(), - ) - .await?; - - Ok(()) - } - .boxed() - }, - path, - ) - .await?; + let path = global.project.join(project_readme_path.ok_or_else(|| { + error::user( + "Project must contain a README file", + "See : https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#readme", + ) + })?); + update_score_badge_in_file(path, &competition, &score, global.aqora_url().unwrap()) + .await?; pipeline_pb.finish_and_clear(); Ok(score) } diff --git a/src/git.rs b/src/git.rs deleted file mode 100644 index 0236215..0000000 --- a/src/git.rs +++ /dev/null @@ -1,20 +0,0 @@ -use git2::{Error, Repository, RepositoryInitOptions}; -use indicatif::ProgressBar; -use std::path::Path; - -pub fn init_repository( - pb: &ProgressBar, - dest: impl AsRef, - description: impl AsRef, -) -> Result<(), Error> { - pb.set_message("Initializing local Git repository..."); - let mut opts = RepositoryInitOptions::new(); - opts.description(description.as_ref()).initial_head("main"); - match Repository::init_opts(dest, &opts) { - Ok(_) => { - pb.set_message("Repository initialized successfully."); - Ok(()) - } - Err(error) => Err(error), - } -} diff --git a/src/lib.rs b/src/lib.rs index 9ce65e8..8280eb9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,7 +9,6 @@ mod download; mod error; mod evaluate; mod file_utils; -mod git; mod graphql_client; mod id; mod ipynb; diff --git a/template/assets/use_case/README.md.hbs b/template/assets/use_case/README.md.hbs index 5e5a480..aafd526 100644 --- a/template/assets/use_case/README.md.hbs +++ b/template/assets/use_case/README.md.hbs @@ -1,3 +1,5 @@ + + ![Aqora badge](https://img.shields.io/badge/aqora-4328e5?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIWSURBVHgBjZI%2FbBJxFMe%2F7%2F5x3BE9D2waCeZiEwNxECcbHSwmGt3qZkwcnB2Q0cFAR6d2Mk6KgcHNQSeHwmJaJ06XYmICprEq1PbaUk7ugJ93p1ToYPpb3svv5fve5%2F2%2BP8IRjqqdS4MGiwDTQFx1f2stx4%2BKip7Mi3KsKIVj87Kq7zj2z%2FqoJoajK15IAzTtxVlRiREFIi2ZB6Hg57yoIHEpC0k7lTGL16oRLTk3JFQmGcjkgkA0H4gEBWfSWShyHFIoet%2B%2FEyCbh9GJ2B%2Bhx24JvILU2SwiYhyCA4Q5feb6I3bRskyLGMuN6ZriEAsBqo9z3nhYkY%2FF0Q8BQznUjSQuvBseV9sshNzbArU0zdAAWbOsejOYOmpzY7ZiSJL%2BhMJKQoqeXh%2BqkuOogCuj48h4tlyg5Qncw%2Fz3brKrjoLbfRlTfQWwQ46w6zRmHM7edn5Zd8xi5t9EH8MVVUN0B5aPcvcWmwKHxX2%2Bc7Jtm5ddsaf4K2z9WEXrYznT2axXOVlLGg7JNdYf1BxCI6ynHpReUYvv4aVrfU1wdk8ResDel1V8r5XBBsj7wzie8NyLxgE7Q94nKL6h17B3Pglet%2B2N91hfK0%2BsxLEx0V9rgtfzM9feXdpsr6DRLI2V8SLw3PtmJ7xN58Z92rPqC37yeaPU7Pa%2FffDq0wSyGKPHXav%2B9OBxVD215HW64k1vSp7ZI6%2F%2Bd34DKO3EcR6BAbMAAAAASUVORK5CYII%3D&labelColor=eceafc&link=https%3A%2F%2Faqora.io%2Fcompetitions%2F{{competition}}%2F) ## {{title}} diff --git a/template/assets/use_case/pyproject.toml.hbs b/template/assets/use_case/pyproject.toml.hbs index 1684b94..5fc8fdf 100644 --- a/template/assets/use_case/pyproject.toml.hbs +++ b/template/assets/use_case/pyproject.toml.hbs @@ -2,6 +2,7 @@ name = "use-case" version = "0.1.0" requires-python = ">={{ python_version }}" +readme = "README.md" dependencies = ["aqora-cli>={{ cli_version }}"] diff --git a/template/assets/use_case/template/README.md.hbs b/template/assets/use_case/template/README.md.hbs index ecc4306..146ed58 100644 --- a/template/assets/use_case/template/README.md.hbs +++ b/template/assets/use_case/template/README.md.hbs @@ -1,3 +1,5 @@ + + ![Aqora badge](https://img.shields.io/badge/aqora-4328e5?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIWSURBVHgBjZI%2FbBJxFMe%2F7%2F5x3BE9D2waCeZiEwNxECcbHSwmGt3qZkwcnB2Q0cFAR6d2Mk6KgcHNQSeHwmJaJ06XYmICprEq1PbaUk7ugJ93p1ToYPpb3svv5fve5%2F2%2BP8IRjqqdS4MGiwDTQFx1f2stx4%2BKip7Mi3KsKIVj87Kq7zj2z%2FqoJoajK15IAzTtxVlRiREFIi2ZB6Hg57yoIHEpC0k7lTGL16oRLTk3JFQmGcjkgkA0H4gEBWfSWShyHFIoet%2B%2FEyCbh9GJ2B%2Bhx24JvILU2SwiYhyCA4Q5feb6I3bRskyLGMuN6ZriEAsBqo9z3nhYkY%2FF0Q8BQznUjSQuvBseV9sshNzbArU0zdAAWbOsejOYOmpzY7ZiSJL%2BhMJKQoqeXh%2BqkuOogCuj48h4tlyg5Qncw%2Fz3brKrjoLbfRlTfQWwQ46w6zRmHM7edn5Zd8xi5t9EH8MVVUN0B5aPcvcWmwKHxX2%2Bc7Jtm5ddsaf4K2z9WEXrYznT2axXOVlLGg7JNdYf1BxCI6ynHpReUYvv4aVrfU1wdk8ResDel1V8r5XBBsj7wzie8NyLxgE7Q94nKL6h17B3Pglet%2B2N91hfK0%2BsxLEx0V9rgtfzM9feXdpsr6DRLI2V8SLw3PtmJ7xN58Z92rPqC37yeaPU7Pa%2FffDq0wSyGKPHXav%2B9OBxVD215HW64k1vSp7ZI6%2F%2Bd34DKO3EcR6BAbMAAAAASUVORK5CYII%3D&labelColor=eceafc&link=https%3A%2F%2Faqora.io%2Fcompetitions%2F{{competition}}%2F) # {{ title }} Submission diff --git a/template/assets/use_case/template/pyproject.toml.hbs b/template/assets/use_case/template/pyproject.toml.hbs index 7bdd4b5..d3b786c 100644 --- a/template/assets/use_case/template/pyproject.toml.hbs +++ b/template/assets/use_case/template/pyproject.toml.hbs @@ -2,6 +2,7 @@ name = "submission" version = "0.1.0" requires-python = ">={{ python_version }}" +readme = "README.md" # You can add dependencies with `aqora add` dependencies = [] From e608bca7dff0d87e1c5700aba084a1e6f63e1b29 Mon Sep 17 00:00:00 2001 From: Angel Dijoux Date: Sat, 9 Nov 2024 11:39:43 +0100 Subject: [PATCH 07/10] chore: remove git2 from here --- .github/workflows/cd.yaml | 35 +---------------- Cargo.lock | 82 ++------------------------------------- Cargo.toml | 4 -- 3 files changed, 4 insertions(+), 117 deletions(-) diff --git a/.github/workflows/cd.yaml b/.github/workflows/cd.yaml index 0fd26c9..d041ee5 100644 --- a/.github/workflows/cd.yaml +++ b/.github/workflows/cd.yaml @@ -27,40 +27,13 @@ jobs: - uses: actions/setup-python@v4 with: python-version: "3.10" - - name: Calculate openssl-vendored - shell: bash - id: is-openssl-vendored - run: | - if [[ "${{ startsWith(matrix.target, 'x86') }}" == "true" ]]; then - echo "enabled=" >> $GITHUB_OUTPUT - else - echo "enabled=--features vendored-openssl" >> $GITHUB_OUTPUT - fi - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} - args: --release --out dist --find-interpreter ${{ steps.is-openssl-vendored.outputs.enabled }} --features extension-module + args: --release --out dist sccache: "true" manylinux: auto - before-script-linux: | - case "${{ matrix.target }}" in - "aarch64" | "armv7" | "s390x" | "ppc64le") - # NOTE: pypa/manylinux docker images are Debian based - sudo apt-get update - sudo apt-get install -y pkg-config libssl-dev - sudo apt-get install -y cpanminus - sudo cpanm IPC::Cmd - ;; - "x86" | "x86_64") - # NOTE: rust-cross/manylinux docker images are CentOS based - yum update -y - yum install -y openssl openssl-devel perl-IPC-Cmd - if [[ "${{ matrix.target }}" == "x86" ]]; then - yum -y install gcc libatomic - fi - ;; - esac docker-options: -e SENTRY_DSN env: # Workaround ring 0.17 build issue @@ -104,18 +77,12 @@ jobs: - uses: actions/setup-python@v4 with: python-version: "3.10" - - name: Install dependencies - run: brew install openssl pkg-config - - name: Set OpenSSL path - run: echo "OPENSSL_DIR=$(brew --prefix openssl)" >> $GITHUB_ENV - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} args: --release --out dist sccache: "true" - env: - OPENSSL_DIR: ${{ env.OPENSSL_DIR }} - name: Upload wheels uses: actions/upload-artifact@v3 with: diff --git a/Cargo.lock b/Cargo.lock index 8ab16ef..3291b4c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -125,7 +125,6 @@ dependencies = [ "dunce", "fs4", "futures", - "git2", "graphql_client", "hostname", "human-errors", @@ -135,8 +134,6 @@ dependencies = [ "lazy_static", "mime", "open", - "openssl", - "openssl-probe", "owo-colors", "passterm", "pretty_assertions", @@ -911,21 +908,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - [[package]] name = "form_urlencoded" version = "1.2.1" @@ -1062,21 +1044,6 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" -[[package]] -name = "git2" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" -dependencies = [ - "bitflags 2.4.2", - "libc", - "libgit2-sys", - "log", - "openssl-probe", - "openssl-sys", - "url", -] - [[package]] name = "globset" version = "0.4.14" @@ -1637,20 +1604,6 @@ version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" -[[package]] -name = "libgit2-sys" -version = "0.17.0+1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" -dependencies = [ - "cc", - "libc", - "libssh2-sys", - "libz-sys", - "openssl-sys", - "pkg-config", -] - [[package]] name = "libredox" version = "0.0.1" @@ -1662,20 +1615,6 @@ dependencies = [ "redox_syscall", ] -[[package]] -name = "libssh2-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee" -dependencies = [ - "cc", - "libc", - "libz-sys", - "openssl-sys", - "pkg-config", - "vcpkg", -] - [[package]] name = "libz-ng-sys" version = "1.1.16" @@ -1686,18 +1625,6 @@ dependencies = [ "libc", ] -[[package]] -name = "libz-sys" -version = "1.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -1860,6 +1787,7 @@ dependencies = [ ] [[package]] +<<<<<<< HEAD name = "openssl" version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1914,6 +1842,8 @@ dependencies = [ ] [[package]] +======= +>>>>>>> 3686045 (chore: remove git2 from here) name = "option-ext" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3528,12 +3458,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - [[package]] name = "version-ranges" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 6b09b75..cc0fc64 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,6 @@ name = "aqora" [features] default = [] extension-module = ["pyo3/extension-module", "pyo3/abi3-py39", "pyo3/abi3"] -vendored-openssl = ["openssl/vendored"] [dependencies] aqora-archiver = { path = "archiver", features = ["indicatif", "tokio", "tracing"] } @@ -93,9 +92,6 @@ tracing-subscriber = { version = "0.3", features = ["json", "env-filter"] } url = { version = "2.5", features = ["serde"] } uuid = "1.7" which = "6.0" -openssl = { version = "0.10.68", features = ["vendored"], optional = true } -openssl-probe = { version = "0.1.5", optional = true } -git2 = { version = "0.19.0" , features = ["vendored-openssl"] } lazy-regex = "3.3.0" [build-dependencies] From c60b97d987f8772eb63ceeb75f1654e200378cf8 Mon Sep 17 00:00:00 2001 From: Angel Dijoux Date: Thu, 14 Nov 2024 20:09:17 +0100 Subject: [PATCH 08/10] fix: pr suggesstions --- Cargo.toml | 2 +- src/commands/new/use_case.rs | 24 +++--- src/commands/test.rs | 45 ++++++----- src/readme.rs | 79 ++++++++++--------- template/assets/use_case/README.md.hbs | 2 - .../assets/use_case/template/README.md.hbs | 2 +- test/.gitignore | 55 +++++++++++++ test/README.md | 19 +++++ test/pyproject.toml | 28 +++++++ test/submission/solution.ipynb | 60 ++++++++++++++ 10 files changed, 242 insertions(+), 74 deletions(-) create mode 100644 test/.gitignore create mode 100644 test/README.md create mode 100644 test/pyproject.toml create mode 100644 test/submission/solution.ipynb diff --git a/Cargo.toml b/Cargo.toml index cc0fc64..a999f3c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,7 +46,7 @@ mime = "0.3" open = "5.0" owo-colors = { version = "4.0", features = ["supports-colors"] } passterm = "2.0" -pyo3 = { version = "0.20", features = ["serde"]} +pyo3 = { version = "0.20", features = ["serde"] } pyo3-asyncio = { version = "0.20", features = ["attributes", "tokio-runtime"] } rand = "0.8" reqwest = { version = "0.11", default-features = false, features = [ diff --git a/src/commands/new/use_case.rs b/src/commands/new/use_case.rs index 92ac06d..2900aa8 100644 --- a/src/commands/new/use_case.rs +++ b/src/commands/new/use_case.rs @@ -1,4 +1,4 @@ -use std::path::{Path, PathBuf}; +use std::path::PathBuf; use aqora_template::UseCaseTemplate; use clap::Args; @@ -6,7 +6,7 @@ use graphql_client::GraphQLQuery; use indicatif::ProgressBar; use serde::Serialize; -use crate::error::{self, Error, Result}; +use crate::error::{self, Result}; use crate::graphql_client::{custom_scalars::*, GraphQLClient}; use super::GlobalArgs; @@ -53,20 +53,18 @@ pub async fn use_case(args: UseCase, global: GlobalArgs) -> Result<()> { .competition(args.competition) .title(competition.title) .render(&dest) - .map_err(|e| format_permission_error("create use case", &dest, &e))?; + .map_err(|e| { + error::user( + &format!("Failed to create use case at '{}': {}", dest.display(), e), + &format!( + "Make sure you have the correct permissions for '{}'", + dest.display() + ), + ) + })?; pb.finish_with_message(format!( "Created use case in directory '{}'", dest.display() )); Ok(()) } - -fn format_permission_error(action: &str, dest: &Path, error: &impl std::fmt::Display) -> Error { - error::user( - &format!("Failed to {} at '{}': {}", action, dest.display(), error), - &format!( - "Make sure you have the correct permissions for '{}'", - dest.display() - ), - ) -} diff --git a/src/commands/test.rs b/src/commands/test.rs index 1e583ea..c14292a 100644 --- a/src/commands/test.rs +++ b/src/commands/test.rs @@ -11,6 +11,7 @@ use crate::{ ipynb::{convert_submission_notebooks, convert_use_case_notebooks}, print::wrap_python_output, python::LastRunResult, + readme::get_readme_path, }; use aqora_config::{AqoraUseCaseConfig, PyProject}; use aqora_runner::{ @@ -231,13 +232,16 @@ fn run_pipeline( async fn update_score_badge_in_file( path: PathBuf, - competition: impl AsRef, + competition: Option, score: &Py, url: Url, ) -> Result<()> { let badge_url = build_shield_score_badge( score, - url.join(&format!("competitions/{}", competition.as_ref()))?, + url.join(&competition.map_or_else( + || "competitons".to_string(), + |name| format!("competitions/{}", name), + ))?, )?; with_locked_file( |file| { @@ -245,7 +249,7 @@ async fn update_score_badge_in_file( let mut contents = String::new(); file.read_to_string(&mut contents).await?; let updated_content = regex_replace_all!( - r"(?:)|(!\[Aqora Score Badge\]\([^\)]+\))", + r"(?:.*?)|(!\[Aqora Score Badge\]\([^\)]+\))", &contents, badge_url.clone() ); @@ -274,14 +278,17 @@ pub async fn run_submission_tests( .and_then(|aqora| aqora.as_submission()) .ok_or_else(|| error::user("Submission config is not valid", ""))?; let project_config = read_project_config(&global.project).await?; - let project_readme_path = project - .project - .as_ref() - .and_then(|p| p.readme.as_ref()) - .and_then(|readme| match readme { - aqora_config::ReadMe::RelativePath(path) => Some(path), - aqora_config::ReadMe::Table { file, .. } => file.as_ref(), - }); + let project_readme_path = get_readme_path( + &global.project, + project.project.as_ref().and_then(|p| p.readme.as_ref()), + ) + .await + .map_err(|err| { + error::user( + &format!("Could not read readme: {}", err), + "Please make sure the readme is valid", + ) + })?; let use_case_toml_path = project_use_case_toml_path(&global.project); let data_path = project_data_dir(&global.project); if !use_case_toml_path.exists() || !data_path.exists() { @@ -389,11 +396,10 @@ pub async fn run_submission_tests( }) .collect::>>()?; - let competition = modified_use_case.clone().competition.unwrap_or_default(); let (num_inputs, aggregated) = run_pipeline( &env, RunPipelineConfig { - use_case: modified_use_case, + use_case: modified_use_case.clone(), pipeline_config: config, tests: tests.clone(), last_run_dir, @@ -417,14 +423,15 @@ pub async fn run_submission_tests( "Score".if_supports_color(OwoStream::Stdout, |text| { text.bold() }), score )); - let path = global.project.join(project_readme_path.ok_or_else(|| { - error::user( - "Project must contain a README file", - "See : https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#readme", + if let Some(path) = project_readme_path { + update_score_badge_in_file( + global.project.join(path), + modified_use_case.competition, + &score, + global.aqora_url()?, ) - })?); - update_score_badge_in_file(path, &competition, &score, global.aqora_url().unwrap()) .await?; + }; pipeline_pb.finish_and_clear(); Ok(score) } diff --git a/src/readme.rs b/src/readme.rs index 2f34c0d..cc24e08 100644 --- a/src/readme.rs +++ b/src/readme.rs @@ -1,82 +1,85 @@ use aqora_config::ReadMe; use mime::Mime; -use std::path::Path; +use std::path::{Path, PathBuf}; use thiserror::Error; #[derive(Debug, Error)] -pub enum ReadMeError { +pub enum ReadmeError { #[error(transparent)] Io(#[from] std::io::Error), - #[error("Readme not found")] + #[error("README not found")] NotFound, - #[error("Readme content type not supported. Only markdown and plaintext supported")] + #[error("README content type not supported. Only markdown and plaintext supported")] ContentTypeNotSupported, } -pub async fn read_readme( +pub async fn get_readme_path( project_dir: impl AsRef, readme: Option<&ReadMe>, -) -> Result, ReadMeError> { +) -> Result, ReadmeError> { let path = match readme { Some(ReadMe::Table { ref file, - text, + text: _, content_type, }) => { let path: Option<&Path> = file.as_deref().map(str::as_ref); if let Some(content_type) = content_type { let mime: Mime = content_type .parse() - .map_err(|_| ReadMeError::ContentTypeNotSupported)?; + .map_err(|_| ReadmeError::ContentTypeNotSupported)?; if !(mime.type_() == mime::TEXT && (mime.subtype() == mime::PLAIN || mime.subtype() == "markdown")) { - return Err(ReadMeError::ContentTypeNotSupported); + return Err(ReadmeError::ContentTypeNotSupported); } } - if let Some(text) = text { - return Ok(Some(text.to_owned())); - } - path + path.map(|p| p.to_path_buf()) } - Some(ReadMe::RelativePath(ref path)) => Some(path.as_ref()), + Some(ReadMe::RelativePath(ref path)) => Some(PathBuf::from(path)), None => None, }; - let path = if let Some(path) = path { - project_dir.as_ref().join(path) - } else { - let mut dir = tokio::fs::read_dir(&project_dir).await?; - let mut path = None; - while let Some(entry) = dir.next_entry().await? { - match entry.file_name().to_string_lossy().to_lowercase().as_str() { - "readme.md" | "readme.txt" => {} - _ => continue, - } - let metadata = entry.metadata().await?; - if !metadata.is_file() { - continue; - } - path = Some(entry.path()); - break; + + if let Some(path) = path { + return Ok(Some(path)); + } + + let mut dir = tokio::fs::read_dir(&project_dir).await?; + while let Some(entry) = dir.next_entry().await? { + match entry.file_name().to_string_lossy().to_lowercase().as_str() { + "readme.md" | "readme.txt" => {} + _ => continue, } - if let Some(path) = path { - path - } else { - return Ok(None); + let metadata = entry.metadata().await?; + if metadata.is_file() { + return Ok(Some(entry.path())); } + } + + Ok(None) +} + +pub async fn read_readme( + project_dir: impl AsRef, + readme: Option<&ReadMe>, +) -> Result, ReadmeError> { + let path = match get_readme_path(project_dir, readme).await? { + Some(path) => path, + None => return Ok(None), }; + match path .extension() .map(|ext| ext.to_string_lossy().to_lowercase()) .as_deref() { Some("md") | Some("txt") | None => {} - _ => { - return Err(ReadMeError::ContentTypeNotSupported); - } + _ => return Err(ReadmeError::ContentTypeNotSupported), } + if !tokio::fs::try_exists(&path).await? { - return Err(ReadMeError::NotFound); + return Err(ReadmeError::NotFound); } + Ok(Some(tokio::fs::read_to_string(path).await?)) } diff --git a/template/assets/use_case/README.md.hbs b/template/assets/use_case/README.md.hbs index aafd526..5e5a480 100644 --- a/template/assets/use_case/README.md.hbs +++ b/template/assets/use_case/README.md.hbs @@ -1,5 +1,3 @@ - - ![Aqora badge](https://img.shields.io/badge/aqora-4328e5?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIWSURBVHgBjZI%2FbBJxFMe%2F7%2F5x3BE9D2waCeZiEwNxECcbHSwmGt3qZkwcnB2Q0cFAR6d2Mk6KgcHNQSeHwmJaJ06XYmICprEq1PbaUk7ugJ93p1ToYPpb3svv5fve5%2F2%2BP8IRjqqdS4MGiwDTQFx1f2stx4%2BKip7Mi3KsKIVj87Kq7zj2z%2FqoJoajK15IAzTtxVlRiREFIi2ZB6Hg57yoIHEpC0k7lTGL16oRLTk3JFQmGcjkgkA0H4gEBWfSWShyHFIoet%2B%2FEyCbh9GJ2B%2Bhx24JvILU2SwiYhyCA4Q5feb6I3bRskyLGMuN6ZriEAsBqo9z3nhYkY%2FF0Q8BQznUjSQuvBseV9sshNzbArU0zdAAWbOsejOYOmpzY7ZiSJL%2BhMJKQoqeXh%2BqkuOogCuj48h4tlyg5Qncw%2Fz3brKrjoLbfRlTfQWwQ46w6zRmHM7edn5Zd8xi5t9EH8MVVUN0B5aPcvcWmwKHxX2%2Bc7Jtm5ddsaf4K2z9WEXrYznT2axXOVlLGg7JNdYf1BxCI6ynHpReUYvv4aVrfU1wdk8ResDel1V8r5XBBsj7wzie8NyLxgE7Q94nKL6h17B3Pglet%2B2N91hfK0%2BsxLEx0V9rgtfzM9feXdpsr6DRLI2V8SLw3PtmJ7xN58Z92rPqC37yeaPU7Pa%2FffDq0wSyGKPHXav%2B9OBxVD215HW64k1vSp7ZI6%2F%2Bd34DKO3EcR6BAbMAAAAASUVORK5CYII%3D&labelColor=eceafc&link=https%3A%2F%2Faqora.io%2Fcompetitions%2F{{competition}}%2F) ## {{title}} diff --git a/template/assets/use_case/template/README.md.hbs b/template/assets/use_case/template/README.md.hbs index 146ed58..ddde966 100644 --- a/template/assets/use_case/template/README.md.hbs +++ b/template/assets/use_case/template/README.md.hbs @@ -1,4 +1,4 @@ - + ![Aqora badge](https://img.shields.io/badge/aqora-4328e5?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIWSURBVHgBjZI%2FbBJxFMe%2F7%2F5x3BE9D2waCeZiEwNxECcbHSwmGt3qZkwcnB2Q0cFAR6d2Mk6KgcHNQSeHwmJaJ06XYmICprEq1PbaUk7ugJ93p1ToYPpb3svv5fve5%2F2%2BP8IRjqqdS4MGiwDTQFx1f2stx4%2BKip7Mi3KsKIVj87Kq7zj2z%2FqoJoajK15IAzTtxVlRiREFIi2ZB6Hg57yoIHEpC0k7lTGL16oRLTk3JFQmGcjkgkA0H4gEBWfSWShyHFIoet%2B%2FEyCbh9GJ2B%2Bhx24JvILU2SwiYhyCA4Q5feb6I3bRskyLGMuN6ZriEAsBqo9z3nhYkY%2FF0Q8BQznUjSQuvBseV9sshNzbArU0zdAAWbOsejOYOmpzY7ZiSJL%2BhMJKQoqeXh%2BqkuOogCuj48h4tlyg5Qncw%2Fz3brKrjoLbfRlTfQWwQ46w6zRmHM7edn5Zd8xi5t9EH8MVVUN0B5aPcvcWmwKHxX2%2Bc7Jtm5ddsaf4K2z9WEXrYznT2axXOVlLGg7JNdYf1BxCI6ynHpReUYvv4aVrfU1wdk8ResDel1V8r5XBBsj7wzie8NyLxgE7Q94nKL6h17B3Pglet%2B2N91hfK0%2BsxLEx0V9rgtfzM9feXdpsr6DRLI2V8SLw3PtmJ7xN58Z92rPqC37yeaPU7Pa%2FffDq0wSyGKPHXav%2B9OBxVD215HW64k1vSp7ZI6%2F%2Bd34DKO3EcR6BAbMAAAAASUVORK5CYII%3D&labelColor=eceafc&link=https%3A%2F%2Faqora.io%2Fcompetitions%2F{{competition}}%2F) diff --git a/test/.gitignore b/test/.gitignore new file mode 100644 index 0000000..11d9e36 --- /dev/null +++ b/test/.gitignore @@ -0,0 +1,55 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] + +# C extensions +*.so + +# Distribution / packaging +bin/ +build/ +develop-eggs/ +dist/ +eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +.tox/ +.coverage +.cache +nosetests.xml +coverage.xml + +# Translations +*.mo + +# Mr Developer +.mr.developer.cfg +.project +.pydevproject + +# Rope +.ropeproject + +# Django stuff: +*.log +*.pot + +# Sphinx documentation +docs/_build/ + +# aqora +.aqora +.venv +__aqora__/ diff --git a/test/README.md b/test/README.md new file mode 100644 index 0000000..63954ed --- /dev/null +++ b/test/README.md @@ -0,0 +1,19 @@ +![Aqora Score Badge](https://img.shields.io/badge/score-0-4328e5?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIWSURBVHgBjZI/bBJxFMe//5x3BE9D2waCeZiEwNxECcbHSwmGt3qZkwcnB2Q0cFAR6d2Mk6KgcHNQSeHwmJaJ06XYmICprEq1PbaUk7ugJ93p1ToYPpb3svv5fve5/2+P8IRjqqdS4MGiwDTQFx1f2stx4+Kip7Mi3KsKIVj87Kq7zj2z/qoJoajK15IAzTtxVlRiREFIi2ZB6Hg57yoIHEpC0k7lTGL16oRLTk3JFQmGcjkgkA0H4gEBWfSWShyHFIoet+/EyCbh9GJ2B+hx24JvILU2SwiYhyCA4Q5feb6I3bRskyLGMuN6ZriEAsBqo9z3nhYkY/F0Q8BQznUjSQuvBseV9sshNzbArU0zdAAWbOsejOYOmpzY7ZiSJL+hMJKQoqeXh+qkuOogCuj48h4tlyg5Qncw/z3brKrjoLbfRlTfQWwQ46w6zRmHM7edn5Zd8xi5t9EH8MVVUN0B5aPcvcWmwKHxX2+c7Jtm5ddsaf4K2z9WEXrYznT2axXOVlLGg7JNdYf1BxCI6ynHpReUYvv4aVrfU1wdk8ResDel1V8r5XBBsj7wzie8NyLxgE7Q94nKL6h17B3Pglet+2N91hfK0+sxLEx0V9rgtfzM9feXdpsr6DRLI2V8SLw3PtmJ7xN58Z92rPqC37yeaPU7Pa/ffDq0wSyGKPHXav+9OBxVD215HW64k1vSp7ZI6/+d34DKO3EcR6BAbMAAAAASUVORK5CYII=&labelColor=eceafc&link=http://localhost:8080/competitions/test) +rr +![Aqora badge](https://img.shields.io/badge/aqora-4328e5?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIWSURBVHgBjZI%2FbBJxFMe%2F7%2F5x3BE9D2waCeZiEwNxECcbHSwmGt3qZkwcnB2Q0cFAR6d2Mk6KgcHNQSeHwmJaJ06XYmICprEq1PbaUk7ugJ93p1ToYPpb3svv5fve5%2F2%2BP8IRjqqdS4MGiwDTQFx1f2stx4%2BKip7Mi3KsKIVj87Kq7zj2z%2FqoJoajK15IAzTtxVlRiREFIi2ZB6Hg57yoIHEpC0k7lTGL16oRLTk3JFQmGcjkgkA0H4gEBWfSWShyHFIoet%2B%2FEyCbh9GJ2B%2Bhx24JvILU2SwiYhyCA4Q5feb6I3bRskyLGMuN6ZriEAsBqo9z3nhYkY%2FF0Q8BQznUjSQuvBseV9sshNzbArU0zdAAWbOsejOYOmpzY7ZiSJL%2BhMJKQoqeXh%2BqkuOogCuj48h4tlyg5Qncw%2Fz3brKrjoLbfRlTfQWwQ46w6zRmHM7edn5Zd8xi5t9EH8MVVUN0B5aPcvcWmwKHxX2%2Bc7Jtm5ddsaf4K2z9WEXrYznT2axXOVlLGg7JNdYf1BxCI6ynHpReUYvv4aVrfU1wdk8ResDel1V8r5XBBsj7wzie8NyLxgE7Q94nKL6h17B3Pglet%2B2N91hfK0%2BsxLEx0V9rgtfzM9feXdpsr6DRLI2V8SLw3PtmJ7xN58Z92rPqC37yeaPU7Pa%2FffDq0wSyGKPHXav%2B9OBxVD215HW64k1vSp7ZI6%2F%2Bd34DKO3EcR6BAbMAAAAASUVORK5CYII%3D&labelColor=eceafc&link=https%3A%2F%2Faqora.io%2Fcompetitions%2Ftest%2F) + +# test Submission + +You can find a template notebook in `submission/solution.ipynb`. +Fill in your solution. You can run the notebook locally to test your +solution by running the following in the terminal + +```bash +aqora test +``` + +And when you are ready to submit run + +```bash +aqora upload +``` diff --git a/test/pyproject.toml b/test/pyproject.toml new file mode 100644 index 0000000..39b3eb0 --- /dev/null +++ b/test/pyproject.toml @@ -0,0 +1,28 @@ +[project] +name = "submission" +version = "0.1.3" +requires-python = ">=3.8" +readme = "README.md" + +# You can add dependencies with `aqora add` +dependencies = [] + +[build-system] +requires = [ + "uv>=0.4.20", + "setuptools>=75", + "wheel>=0.44", +] +build-backend = "setuptools.build_meta" + +[tool.setuptools.packages.find] +where = ["."] +[tool.setuptools.package-data] +submission = ["*"] + +[tool.aqora] +type = "submission" +competition = "test" + +[tool.aqora.refs] +solution = { path = "submission.solution", notebook = true } diff --git a/test/submission/solution.ipynb b/test/submission/solution.ipynb new file mode 100644 index 0000000..f8a1b66 --- /dev/null +++ b/test/submission/solution.ipynb @@ -0,0 +1,60 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# test Submission\n", + "\n", + "Add your solution below!\n", + "\n", + "To run the notebook in VS Code, you can click on the `Run All` button in the toolbar. You may need to select the kernel to run. When prompted select `Python Environments` and then `.venv` (Should be starred).\n", + "\n", + "> Note: You can add dependencies to your virtual environment by running `aqora add ` or editing the `pyproject.toml` at the root of the project\n", + "\n", + "Once you're ready, you can open a terminal by clicking `Terminal` and then `New Terminal` in the context bar at the very top. To test your solution, run\n", + "\n", + "```bash\n", + "aqora test\n", + "```\n", + "\n", + "Finally, once all the tests are passing, to submit to **Aqora** run\n", + "\n", + "```bash\n", + "aqora upload\n", + "```\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [ + "parameters" + ] + }, + "outputs": [], + "source": [ + "# Example input. Parameters will be injected here by aqora\n", + "input = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Set the output variable to submit the result of your algorithm\n", + "output = None" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 9746408dc80be7c60bb7e4af3f57e3e764be6e26 Mon Sep 17 00:00:00 2001 From: Angel Dijoux Date: Fri, 15 Nov 2024 00:20:03 +0100 Subject: [PATCH 09/10] chore: remove tests files --- test/.gitignore | 55 ------------------------------- test/README.md | 19 ----------- test/pyproject.toml | 28 ---------------- test/submission/solution.ipynb | 60 ---------------------------------- 4 files changed, 162 deletions(-) delete mode 100644 test/.gitignore delete mode 100644 test/README.md delete mode 100644 test/pyproject.toml delete mode 100644 test/submission/solution.ipynb diff --git a/test/.gitignore b/test/.gitignore deleted file mode 100644 index 11d9e36..0000000 --- a/test/.gitignore +++ /dev/null @@ -1,55 +0,0 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] - -# C extensions -*.so - -# Distribution / packaging -bin/ -build/ -develop-eggs/ -dist/ -eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -*.egg-info/ -.installed.cfg -*.egg - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -.tox/ -.coverage -.cache -nosetests.xml -coverage.xml - -# Translations -*.mo - -# Mr Developer -.mr.developer.cfg -.project -.pydevproject - -# Rope -.ropeproject - -# Django stuff: -*.log -*.pot - -# Sphinx documentation -docs/_build/ - -# aqora -.aqora -.venv -__aqora__/ diff --git a/test/README.md b/test/README.md deleted file mode 100644 index 63954ed..0000000 --- a/test/README.md +++ /dev/null @@ -1,19 +0,0 @@ -![Aqora Score Badge](https://img.shields.io/badge/score-0-4328e5?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIWSURBVHgBjZI/bBJxFMe//5x3BE9D2waCeZiEwNxECcbHSwmGt3qZkwcnB2Q0cFAR6d2Mk6KgcHNQSeHwmJaJ06XYmICprEq1PbaUk7ugJ93p1ToYPpb3svv5fve5/2+P8IRjqqdS4MGiwDTQFx1f2stx4+Kip7Mi3KsKIVj87Kq7zj2z/qoJoajK15IAzTtxVlRiREFIi2ZB6Hg57yoIHEpC0k7lTGL16oRLTk3JFQmGcjkgkA0H4gEBWfSWShyHFIoet+/EyCbh9GJ2B+hx24JvILU2SwiYhyCA4Q5feb6I3bRskyLGMuN6ZriEAsBqo9z3nhYkY/F0Q8BQznUjSQuvBseV9sshNzbArU0zdAAWbOsejOYOmpzY7ZiSJL+hMJKQoqeXh+qkuOogCuj48h4tlyg5Qncw/z3brKrjoLbfRlTfQWwQ46w6zRmHM7edn5Zd8xi5t9EH8MVVUN0B5aPcvcWmwKHxX2+c7Jtm5ddsaf4K2z9WEXrYznT2axXOVlLGg7JNdYf1BxCI6ynHpReUYvv4aVrfU1wdk8ResDel1V8r5XBBsj7wzie8NyLxgE7Q94nKL6h17B3Pglet+2N91hfK0+sxLEx0V9rgtfzM9feXdpsr6DRLI2V8SLw3PtmJ7xN58Z92rPqC37yeaPU7Pa/ffDq0wSyGKPHXav+9OBxVD215HW64k1vSp7ZI6/+d34DKO3EcR6BAbMAAAAASUVORK5CYII=&labelColor=eceafc&link=http://localhost:8080/competitions/test) -rr -![Aqora badge](https://img.shields.io/badge/aqora-4328e5?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIWSURBVHgBjZI%2FbBJxFMe%2F7%2F5x3BE9D2waCeZiEwNxECcbHSwmGt3qZkwcnB2Q0cFAR6d2Mk6KgcHNQSeHwmJaJ06XYmICprEq1PbaUk7ugJ93p1ToYPpb3svv5fve5%2F2%2BP8IRjqqdS4MGiwDTQFx1f2stx4%2BKip7Mi3KsKIVj87Kq7zj2z%2FqoJoajK15IAzTtxVlRiREFIi2ZB6Hg57yoIHEpC0k7lTGL16oRLTk3JFQmGcjkgkA0H4gEBWfSWShyHFIoet%2B%2FEyCbh9GJ2B%2Bhx24JvILU2SwiYhyCA4Q5feb6I3bRskyLGMuN6ZriEAsBqo9z3nhYkY%2FF0Q8BQznUjSQuvBseV9sshNzbArU0zdAAWbOsejOYOmpzY7ZiSJL%2BhMJKQoqeXh%2BqkuOogCuj48h4tlyg5Qncw%2Fz3brKrjoLbfRlTfQWwQ46w6zRmHM7edn5Zd8xi5t9EH8MVVUN0B5aPcvcWmwKHxX2%2Bc7Jtm5ddsaf4K2z9WEXrYznT2axXOVlLGg7JNdYf1BxCI6ynHpReUYvv4aVrfU1wdk8ResDel1V8r5XBBsj7wzie8NyLxgE7Q94nKL6h17B3Pglet%2B2N91hfK0%2BsxLEx0V9rgtfzM9feXdpsr6DRLI2V8SLw3PtmJ7xN58Z92rPqC37yeaPU7Pa%2FffDq0wSyGKPHXav%2B9OBxVD215HW64k1vSp7ZI6%2F%2Bd34DKO3EcR6BAbMAAAAASUVORK5CYII%3D&labelColor=eceafc&link=https%3A%2F%2Faqora.io%2Fcompetitions%2Ftest%2F) - -# test Submission - -You can find a template notebook in `submission/solution.ipynb`. -Fill in your solution. You can run the notebook locally to test your -solution by running the following in the terminal - -```bash -aqora test -``` - -And when you are ready to submit run - -```bash -aqora upload -``` diff --git a/test/pyproject.toml b/test/pyproject.toml deleted file mode 100644 index 39b3eb0..0000000 --- a/test/pyproject.toml +++ /dev/null @@ -1,28 +0,0 @@ -[project] -name = "submission" -version = "0.1.3" -requires-python = ">=3.8" -readme = "README.md" - -# You can add dependencies with `aqora add` -dependencies = [] - -[build-system] -requires = [ - "uv>=0.4.20", - "setuptools>=75", - "wheel>=0.44", -] -build-backend = "setuptools.build_meta" - -[tool.setuptools.packages.find] -where = ["."] -[tool.setuptools.package-data] -submission = ["*"] - -[tool.aqora] -type = "submission" -competition = "test" - -[tool.aqora.refs] -solution = { path = "submission.solution", notebook = true } diff --git a/test/submission/solution.ipynb b/test/submission/solution.ipynb deleted file mode 100644 index f8a1b66..0000000 --- a/test/submission/solution.ipynb +++ /dev/null @@ -1,60 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# test Submission\n", - "\n", - "Add your solution below!\n", - "\n", - "To run the notebook in VS Code, you can click on the `Run All` button in the toolbar. You may need to select the kernel to run. When prompted select `Python Environments` and then `.venv` (Should be starred).\n", - "\n", - "> Note: You can add dependencies to your virtual environment by running `aqora add ` or editing the `pyproject.toml` at the root of the project\n", - "\n", - "Once you're ready, you can open a terminal by clicking `Terminal` and then `New Terminal` in the context bar at the very top. To test your solution, run\n", - "\n", - "```bash\n", - "aqora test\n", - "```\n", - "\n", - "Finally, once all the tests are passing, to submit to **Aqora** run\n", - "\n", - "```bash\n", - "aqora upload\n", - "```\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "tags": [ - "parameters" - ] - }, - "outputs": [], - "source": [ - "# Example input. Parameters will be injected here by aqora\n", - "input = None" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Set the output variable to submit the result of your algorithm\n", - "output = None" - ] - } - ], - "metadata": { - "language_info": { - "name": "python" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} From a37dbfa5bc72e62d05232b0615e981b8b8337572 Mon Sep 17 00:00:00 2001 From: Angel Dijoux Date: Tue, 26 Nov 2024 22:20:21 +0100 Subject: [PATCH 10/10] chore: move write op for readme in readme crate --- Cargo.lock | 1481 +++++++++++++++++++++++++----------------- src/commands/test.rs | 104 ++- src/readme.rs | 133 ++-- 3 files changed, 1037 insertions(+), 681 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3291b4c..343e77e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,19 +4,13 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - [[package]] name = "adler2" version = "2.0.0" @@ -36,9 +30,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -60,50 +54,51 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.11" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.2" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -117,7 +112,7 @@ dependencies = [ "async-tempfile", "axum", "base32", - "base64 0.22.0", + "base64 0.22.1", "chrono", "clap", "dialoguer", @@ -140,15 +135,15 @@ dependencies = [ "pyo3", "pyo3-asyncio", "rand", - "reqwest 0.11.24", + "reqwest 0.11.27", "rmp-serde", "sentry", "sentry-types", "serde", "serde_json", - "supports-color 3.0.0", + "supports-color 3.0.2", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-stream", "tokio-util", @@ -175,7 +170,7 @@ dependencies = [ "rayon", "tar", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "tracing-subscriber", @@ -191,7 +186,7 @@ dependencies = [ "pep508_rs", "pyproject-toml", "serde", - "thiserror", + "thiserror 1.0.69", "toml", ] @@ -208,7 +203,7 @@ dependencies = [ "pyo3-asyncio", "serde", "split-stream-by", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -229,9 +224,9 @@ dependencies = [ [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -253,35 +248,35 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.77" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] name = "autocfg" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.7.4" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1236b4b292f6c4d6dc34604bb5120d85c3fe1d1aa596bd5cc52ca054d13e7b9e" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", "axum-core", "bytes", "futures-util", - "http 1.0.0", - "http-body 1.0.0", + "http 1.1.0", + "http-body 1.0.1", "http-body-util", - "hyper 1.1.0", + "hyper 1.5.1", "hyper-util", "itoa", "matchit", @@ -294,7 +289,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 1.0.2", "tokio", "tower", "tower-layer", @@ -304,20 +299,20 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.0.0", - "http-body 1.0.0", + "http 1.1.0", + "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", "tracing", @@ -325,24 +320,24 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", - "miniz_oxide 0.7.2", + "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] name = "base32" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1ce0365f4d5fb6646220bb52fe547afd51796d90f914d4063cb0b032ebee088" +checksum = "022dfe9eb35f19ebbcb51e0b40a5ab759f46ad60cadf7297e0bd085afb50e076" [[package]] name = "base64" @@ -352,9 +347,9 @@ checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bitflags" @@ -364,9 +359,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.2" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "block-buffer" @@ -385,9 +380,9 @@ checksum = "7f839cdf7e2d3198ac6ca003fd8ebc61715755f41c1cad15ff13df67531e00ed" [[package]] name = "bstr" -version = "1.9.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c48f0051a4b4c5e0b6d365cd04af53aeaa209e3cc15ec2cdb69e73cc87fbd0dc" +checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" dependencies = [ "memchr", "serde", @@ -407,9 +402,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "bzip2" @@ -434,9 +429,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.24" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812acba72f0a070b003d3697490d2b55b837230ae7c6c6497f05cc2ddbb8d938" +checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" dependencies = [ "jobserver", "libc", @@ -449,11 +444,17 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" -version = "0.4.33" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", @@ -476,9 +477,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.18" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" +checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" dependencies = [ "clap_builder", "clap_derive", @@ -486,48 +487,48 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.18" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" +checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim 0.10.0", + "strsim", ] [[package]] name = "clap_derive" -version = "4.4.7" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] name = "clap_lex" -version = "0.6.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" [[package]] name = "cmake" -version = "0.1.51" +version = "0.1.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb1e43aa7fd152b1f968787f7dbcdeb306d1867ff373c69955211876c053f91a" +checksum = "c682c223677e0e5b6b7f63a64b9351844c3f1b1678a68b7ee617e30fb082620e" dependencies = [ "cc", ] [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "combine" @@ -551,7 +552,7 @@ dependencies = [ "encode_unicode", "lazy_static", "libc", - "unicode-width 0.1.11", + "unicode-width 0.1.14", "windows-sys 0.52.0", ] @@ -573,15 +574,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] @@ -612,9 +613,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ "crossbeam-utils", ] @@ -674,8 +675,8 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim 0.11.1", - "syn 2.0.87", + "strsim", + "syn 2.0.89", ] [[package]] @@ -686,7 +687,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -716,13 +717,13 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -743,7 +744,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -753,7 +754,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -765,7 +766,7 @@ dependencies = [ "console", "shell-words", "tempfile", - "thiserror", + "thiserror 1.0.69", "zeroize", ] @@ -815,7 +816,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -826,9 +827,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "either" -version = "1.9.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "encode_unicode" @@ -838,9 +839,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.33" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -853,9 +854,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -863,20 +864,20 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" [[package]] name = "filetime" -version = "0.2.23" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if", "libc", - "redox_syscall", - "windows-sys 0.52.0", + "libredox", + "windows-sys 0.59.0", ] [[package]] @@ -893,13 +894,13 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.34" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "libz-ng-sys", - "miniz_oxide 0.8.0", + "miniz_oxide", ] [[package]] @@ -930,9 +931,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -945,9 +946,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -955,15 +956,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -972,38 +973,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -1029,31 +1030,33 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi", + "wasm-bindgen", ] [[package]] name = "gimli" -version = "0.28.1" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "globset" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -1073,7 +1076,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2ebc8013b4426d5b81a4364c419a95ed0b404af2b82e2457de52d9348f0e474" dependencies = [ "combine", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1083,7 +1086,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a50cfdc7f34b7f01909d55c2dcb71d4c13cbcbb4a1605d6c8bd760d654c1144b" dependencies = [ "graphql_query_derive", - "reqwest 0.11.24", + "reqwest 0.11.27", "serde", "serde_json", ] @@ -1096,7 +1099,7 @@ checksum = "5e27ed0c2cf0c0cc52c6bcf3b45c907f433015e580879d14005386251842fb0a" dependencies = [ "graphql-introspection-query", "graphql-parser", - "heck", + "heck 0.4.1", "lazy_static", "proc-macro2", "quote", @@ -1118,35 +1121,16 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.11", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "h2" -version = "0.4.2" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31d030e59af851932b72ceebadf4a2b5986dba4c3b99dd2493f8273a0f151943" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", "futures-core", "futures-sink", "futures-util", - "http 1.0.0", + "http 0.2.12", "indexmap", "slab", "tokio", @@ -1156,24 +1140,25 @@ dependencies = [ [[package]] name = "handlebars" -version = "6.1.0" +version = "6.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce25b617d1375ef96eeb920ae717e3da34a02fc979fe632c75128350f9e1f74a" +checksum = "fd4ccde012831f9a071a637b0d4e31df31c0f6c525784b35ae76a9ac6bc1e315" dependencies = [ "log", + "num-order", "pest", "pest_derive", "rust-embed", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" [[package]] name = "heck" @@ -1181,12 +1166,24 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + [[package]] name = "hex" version = "0.4.3" @@ -1224,9 +1221,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -1235,9 +1232,9 @@ dependencies = [ [[package]] name = "http" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ "bytes", "fnv", @@ -1251,38 +1248,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http 0.2.11", + "http 0.2.12", "pin-project-lite", ] [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.0.0", + "http 1.1.0", ] [[package]] name = "http-body-util" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cb79eb393015dadd30fc252023adb0b2400a0caee0fa2a077e6e21a551e840" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.0.0", - "http-body 1.0.0", + "http 1.1.0", + "http-body 1.0.1", "pin-project-lite", ] [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -1298,16 +1295,16 @@ checksum = "44acdf3f328626384ebd297ee1321b32319745eb12c339b16a738028f952cfdf" [[package]] name = "hyper" -version = "0.14.28" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", "futures-core", "futures-util", - "h2 0.3.24", - "http 0.2.11", + "h2", + "http 0.2.12", "http-body 0.4.6", "httparse", "httpdate", @@ -1322,20 +1319,20 @@ dependencies = [ [[package]] name = "hyper" -version = "1.1.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5aa53871fc917b1a9ed87b683a5d86db645e23acb32c2e0785a353e522fb75" +checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.2", - "http 1.0.0", - "http-body 1.0.0", + "http 1.1.0", + "http-body 1.0.1", "httparse", "httpdate", "itoa", "pin-project-lite", + "smallvec", "tokio", "want", ] @@ -1347,55 +1344,55 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", - "http 0.2.11", - "hyper 0.14.28", - "rustls 0.21.10", + "http 0.2.12", + "hyper 0.14.31", + "rustls 0.21.12", "tokio", "tokio-rustls 0.24.1", ] [[package]] name = "hyper-rustls" -version = "0.26.0" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", - "http 1.0.0", - "hyper 1.1.0", + "http 1.1.0", + "hyper 1.5.1", "hyper-util", - "rustls 0.22.4", + "rustls 0.23.18", "rustls-pki-types", "tokio", - "tokio-rustls 0.25.0", + "tokio-rustls 0.26.0", "tower-service", + "webpki-roots 0.26.7", ] [[package]] name = "hyper-util" -version = "0.1.3" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.0.0", - "http-body 1.0.0", - "hyper 1.1.0", + "http 1.1.0", + "http-body 1.0.1", + "hyper 1.5.1", "pin-project-lite", "socket2", "tokio", - "tower", "tower-service", "tracing", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1414,6 +1411,124 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -1422,25 +1537,36 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", ] [[package]] name = "ignore" -version = "0.4.22" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" dependencies = [ "crossbeam-deque", "globset", "log", "memchr", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "same-file", "walkdir", "winapi-util", @@ -1459,22 +1585,22 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.7" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25" +checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" dependencies = [ "console", - "instant", "number_prefix", "portable-atomic", - "unicode-width 0.1.11", + "unicode-width 0.2.0", + "web-time", ] [[package]] name = "indoc" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "inout" @@ -1485,20 +1611,11 @@ dependencies = [ "generic-array", ] -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", -] - [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "is-docker" @@ -1511,11 +1628,11 @@ dependencies = [ [[package]] name = "is-terminal" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ - "hermit-abi", + "hermit-abi 0.4.0", "libc", "windows-sys 0.52.0", ] @@ -1536,6 +1653,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "itertools" version = "0.13.0" @@ -1547,9 +1670,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jobserver" @@ -1562,9 +1685,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.68" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -1589,7 +1712,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -1600,26 +1723,26 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.159" +version = "0.2.165" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "fcb4d3d38eab6c5239a362fa8bae48c03baf980a6e7079f063942d563ef3533e" [[package]] name = "libredox" -version = "0.0.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.6.0", "libc", "redox_syscall", ] [[package]] name = "libz-ng-sys" -version = "1.1.16" +version = "1.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4436751a01da56f1277f323c80d584ffad94a3d14aecd959dd0dff75aa73a438" +checksum = "8f0f7295a34685977acb2e8cc8b08ee4a8dffd6cf278eeccddbe1ed55ba815d5" dependencies = [ "cmake", "libc", @@ -1631,11 +1754,17 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -1649,9 +1778,9 @@ checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lzma-rs" @@ -1686,9 +1815,9 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memoffset" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] @@ -1699,15 +1828,6 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "miniz_oxide" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" -dependencies = [ - "adler", -] - [[package]] name = "miniz_oxide" version = "0.8.0" @@ -1723,7 +1843,7 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.9", "libc", "wasi", "windows-sys 0.52.0", @@ -1745,11 +1865,26 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +[[package]] +name = "num-modular" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f" + +[[package]] +name = "num-order" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6" +dependencies = [ + "num-modular", +] + [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -1762,24 +1897,24 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.32.2" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "open" -version = "5.0.1" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90878fb664448b54c4e592455ad02831e23a3f7e157374a8b95654731aac7349" +checksum = "3ecd52f0b8d15c40ce4820aa251ed5de032e5d91fab27f7db2f40d42a8bdf69c" dependencies = [ "is-wsl", "libc", @@ -1787,63 +1922,6 @@ dependencies = [ ] [[package]] -<<<<<<< HEAD -name = "openssl" -version = "0.10.68" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" -dependencies = [ - "bitflags 2.4.2", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-src" -version = "300.4.1+3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c" -dependencies = [ - "cc", -] - -[[package]] -name = "openssl-sys" -version = "0.9.104" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" -dependencies = [ - "cc", - "libc", - "openssl-src", - "pkg-config", - "vcpkg", -] - -[[package]] -======= ->>>>>>> 3686045 (chore: remove git2 from here) name = "option-ext" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1868,18 +1946,19 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "owo-colors" -version = "4.0.0" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caff54706df99d2a78a5a4e3455ff45448d81ef1bb63c22cd14052ca0e993a3f" +checksum = "fb37767f6569cd834a413442455e0f066d0d522de8630436e2a1761d9726ba56" dependencies = [ "supports-color 2.1.0", + "supports-color 3.0.2", ] [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -1887,37 +1966,37 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] name = "passterm" -version = "2.0.3" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eea7e8981bca32c52230ca5f28b080dd5f28aed618a7bd12b5a382b234cd2b99" +checksum = "d1e7a4c22a6cce262e8c126b3052e6baf05d4dd5699ef23ed6dadd85c2a1194a" dependencies = [ "libc", ] [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pathdiff" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pbkdf2" @@ -1956,7 +2035,7 @@ dependencies = [ "rustc-hash", "serde", "smallvec", - "thiserror", + "thiserror 1.0.69", "unicode-width 0.2.0", "url", "urlencoding", @@ -1971,20 +2050,20 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" +checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" dependencies = [ "memchr", - "thiserror", + "thiserror 1.0.69", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0" +checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd" dependencies = [ "pest", "pest_generator", @@ -1992,22 +2071,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e" +checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] name = "pest_meta" -version = "2.7.13" +version = "2.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f" +checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d" dependencies = [ "once_cell", "pest", @@ -2016,29 +2095,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.4" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.4" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -2054,9 +2133,9 @@ checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" [[package]] name = "powerfmt" @@ -2066,15 +2145,18 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "pretty_assertions" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" +checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" dependencies = [ "diff", "yansi", @@ -2082,24 +2164,25 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.89" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] [[package]] name = "pyo3" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a89dc7a5850d0e983be1ec2a463a171d20990487c3cfcd68b5363f1ee3d6fe0" +checksum = "53bdbb96d49157e65d45cc287af5f32ffadd5f4761438b527b055fb0d4bb8233" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "parking_lot", + "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", @@ -2134,9 +2217,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07426f0d8fe5a601f26293f300afd1a7b1ed5e78b2a705870c5f30893c5163be" +checksum = "deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7" dependencies = [ "once_cell", "target-lexicon", @@ -2144,9 +2227,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb7dec17e17766b46bca4f1a4215a85006b4c2ecde122076c562dd058da6cf1" +checksum = "62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa" dependencies = [ "libc", "pyo3-build-config", @@ -2154,26 +2237,27 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f738b4e40d50b5711957f142878cfa0f28e054aa0ebdfc3fd137a843f74ed3" +checksum = "7305c720fa01b8055ec95e484a6eca7a83c841267f0dd5280f0c8b8551d2c158" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] name = "pyo3-macros-backend" -version = "0.20.2" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc910d4851847827daf9d6cdd4a823fbdaab5b8818325c5e97a86da79e8881f" +checksum = "7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro2", + "pyo3-build-config", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -2186,15 +2270,67 @@ dependencies = [ "pep440_rs", "pep508_rs", "serde", - "thiserror", + "thiserror 1.0.69", "toml", ] +[[package]] +name = "quinn" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls 0.23.18", + "socket2", + "thiserror 2.0.3", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +dependencies = [ + "bytes", + "getrandom", + "rand", + "ring", + "rustc-hash", + "rustls 0.23.18", + "rustls-pki-types", + "slab", + "thiserror 2.0.3", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a626c6807713b15cac82a6acaccd6043c9a5408c24baae07611fec3f243da" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", +] + [[package]] name = "quote" -version = "1.0.35" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -2251,22 +2387,22 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", ] [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2277,7 +2413,7 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -2292,9 +2428,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -2315,19 +2451,19 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.11.24" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ "base64 0.21.7", "bytes", "encoding_rs", "futures-core", "futures-util", - "h2 0.3.24", - "http 0.2.11", + "h2", + "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.28", + "hyper 0.14.31", "hyper-rustls 0.24.2", "ipnet", "js-sys", @@ -2336,12 +2472,12 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.10", + "rustls 0.21.12", "rustls-pemfile 1.0.4", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 0.1.2", "system-configuration", "tokio", "tokio-rustls 0.24.1", @@ -2353,25 +2489,25 @@ dependencies = [ "wasm-streams", "web-sys", "webpki-roots 0.25.4", - "winreg 0.50.0", + "winreg", ] [[package]] name = "reqwest" -version = "0.12.4" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "bytes", "futures-channel", "futures-core", "futures-util", - "http 1.0.0", - "http-body 1.0.0", + "http 1.1.0", + "http-body 1.0.1", "http-body-util", - "hyper 1.1.0", - "hyper-rustls 0.26.0", + "hyper 1.5.1", + "hyper-rustls 0.27.3", "hyper-util", "ipnet", "js-sys", @@ -2380,43 +2516,45 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.22.4", - "rustls-pemfile 2.1.2", + "quinn", + "rustls 0.23.18", + "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 1.0.2", "tokio", - "tokio-rustls 0.25.0", + "tokio-rustls 0.26.0", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.26.1", - "winreg 0.52.0", + "webpki-roots 0.26.7", + "windows-registry", ] [[package]] name = "ring" -version = "0.17.7" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", + "cfg-if", "getrandom", "libc", "spin", "untrusted", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "rmp" -version = "0.8.12" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9860a6cc38ed1da53456442089b4dfa35e7cedaa326df63017af88385e6b20" +checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4" dependencies = [ "byteorder", "num-traits", @@ -2425,9 +2563,9 @@ dependencies = [ [[package]] name = "rmp-serde" -version = "1.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bffea85eea980d8a74453e5d02a8d93028f3c34725de143085a844ebe953258a" +checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db" dependencies = [ "byteorder", "rmp", @@ -2454,7 +2592,7 @@ dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.87", + "syn 2.0.89", "walkdir", ] @@ -2471,9 +2609,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -2483,20 +2621,20 @@ checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", @@ -2505,9 +2643,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.10" +version = "0.21.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", "ring", @@ -2517,14 +2655,15 @@ dependencies = [ [[package]] name = "rustls" -version = "0.22.4" +version = "0.23.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +checksum = "9c9cc1d47e243d655ace55ed38201c19ae02c148ae56412ab8750e8f0166ab7f" dependencies = [ "log", + "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.102.3", + "rustls-webpki 0.102.8", "subtle", "zeroize", ] @@ -2540,19 +2679,21 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.0", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.4.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +dependencies = [ + "web-time", +] [[package]] name = "rustls-webpki" @@ -2566,9 +2707,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.102.3" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring", "rustls-pki-types", @@ -2577,15 +2718,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" @@ -2614,9 +2755,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "sentry" @@ -2625,8 +2766,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00421ed8fa0c995f07cde48ba6c89e80f2b312f74ff637326f392fbfd23abe02" dependencies = [ "httpdate", - "reqwest 0.12.4", - "rustls 0.21.10", + "reqwest 0.12.9", + "rustls 0.21.12", "sentry-backtrace", "sentry-contexts", "sentry-core", @@ -2733,7 +2874,7 @@ dependencies = [ "rand", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "time", "url", "uuid", @@ -2756,14 +2897,14 @@ checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "indexmap", "itoa", @@ -2774,9 +2915,9 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd154a240de39fdebcf5775d2675c204d7c13cf39a4c697be6493c8e734337c" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" dependencies = [ "itoa", "serde", @@ -2848,9 +2989,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -2878,12 +3019,12 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2903,10 +3044,10 @@ dependencies = [ ] [[package]] -name = "strsim" -version = "0.10.0" +name = "stable_deref_trait" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "strsim" @@ -2916,9 +3057,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "supports-color" @@ -2932,9 +3073,9 @@ dependencies = [ [[package]] name = "supports-color" -version = "3.0.0" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9829b314621dfc575df4e409e79f9d6a66a3bd707ab73f23cb4aa3a854ac854f" +checksum = "c64fc7232dd8d2e4ac5ce4ef302b1d81e0b80d055b9d77c7c4f51f6aa4c867d6" dependencies = [ "is_ci", ] @@ -2952,9 +3093,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.87" +version = "2.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" dependencies = [ "proc-macro2", "quote", @@ -2967,6 +3108,26 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -2990,9 +3151,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ "filetime", "libc", @@ -3001,15 +3162,15 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.13" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", "fastrand", @@ -3020,22 +3181,42 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.65" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" +dependencies = [ + "thiserror-impl 2.0.3", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "thiserror-impl", + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] name = "thiserror-impl" -version = "1.0.65" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" +checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -3079,11 +3260,21 @@ dependencies = [ "time-core", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -3096,9 +3287,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.0" +version = "1.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" +checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" dependencies = [ "backtrace", "bytes", @@ -3119,7 +3310,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -3128,26 +3319,26 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.10", + "rustls 0.21.12", "tokio", ] [[package]] name = "tokio-rustls" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.22.4", + "rustls 0.23.18", "rustls-pki-types", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -3156,9 +3347,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -3203,14 +3394,14 @@ dependencies = [ [[package]] name = "tower" -version = "0.4.13" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" dependencies = [ "futures-core", "futures-util", - "pin-project", "pin-project-lite", + "sync_wrapper 0.1.2", "tokio", "tower-layer", "tower-service", @@ -3219,15 +3410,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -3248,7 +3439,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" dependencies = [ "crossbeam-channel", - "thiserror", + "thiserror 1.0.69", "time", "tracing-subscriber", ] @@ -3261,14 +3452,14 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -3343,32 +3534,17 @@ dependencies = [ "libc", ] -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-width" @@ -3405,25 +3581,24 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.9.6" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f214ce18d8b2cbe84ed3aa6486ed3f5b285cf8d8fbdbce9f3f767a724adc35" +checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "log", "once_cell", - "rustls 0.22.4", + "rustls 0.23.18", "rustls-pki-types", - "rustls-webpki 0.102.3", "url", - "webpki-roots 0.26.1", + "webpki-roots 0.26.7", ] [[package]] name = "url" -version = "2.5.0" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -3437,17 +3612,29 @@ version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.7.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ "serde", ] @@ -3460,9 +3647,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "version-ranges" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284649eba55872c1253f3f6ec15f22303a784e60684babd01d01e4c6ebb85b91" +checksum = "f8d079415ceb2be83fc355adbadafe401307d5c309c7e6ade6638e6f9f42f42d" dependencies = [ "smallvec", ] @@ -3481,9 +3668,9 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -3506,34 +3693,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.91" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.91" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.41" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -3543,9 +3731,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.91" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3553,28 +3741,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.91" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.91" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "wasm-streams" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" dependencies = [ "futures-util", "js-sys", @@ -3585,9 +3773,19 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.68" +version = "0.3.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -3601,24 +3799,23 @@ checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] name = "webpki-roots" -version = "0.26.1" +version = "0.26.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" dependencies = [ "rustls-pki-types", ] [[package]] name = "which" -version = "6.0.0" +version = "6.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fa5e0c10bf77f44aac573e498d1a82d5fbd5e91f6fc0a99e7be4b38e85e101c" +checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" dependencies = [ "either", "home", - "once_cell", "rustix", - "windows-sys 0.52.0", + "winsafe", ] [[package]] @@ -3639,11 +3836,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -3671,6 +3868,36 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -3839,14 +4066,22 @@ dependencies = [ ] [[package]] -name = "winreg" -version = "0.52.0" +name = "winsafe" +version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] +checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "xattr" @@ -3861,9 +4096,75 @@ dependencies = [ [[package]] name = "yansi" -version = "0.5.1" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", + "synstructure", +] [[package]] name = "zeroize" @@ -3882,14 +4183,36 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] name = "zip" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" +checksum = "99d52293fc86ea7cf13971b3bb81eb21683636e7ae24c729cdaf1b7c4157a352" dependencies = [ "aes", "arbitrary", @@ -3907,7 +4230,7 @@ dependencies = [ "pbkdf2", "rand", "sha1", - "thiserror", + "thiserror 2.0.3", "time", "zeroize", "zopfli", diff --git a/src/commands/test.rs b/src/commands/test.rs index c14292a..e9df52b 100644 --- a/src/commands/test.rs +++ b/src/commands/test.rs @@ -7,13 +7,12 @@ use crate::{ }, error::{self, Result}, evaluate::evaluate, - file_utils::with_locked_file, ipynb::{convert_submission_notebooks, convert_use_case_notebooks}, print::wrap_python_output, python::LastRunResult, - readme::get_readme_path, + readme::{read_readme, write_readme}, }; -use aqora_config::{AqoraUseCaseConfig, PyProject}; +use aqora_config::{AqoraUseCaseConfig, PyProject, ReadMe}; use aqora_runner::{ pipeline::{EvaluateAllInfo, EvaluateInputInfo, EvaluationError, Pipeline, PipelineConfig}, python::PyEnv, @@ -28,12 +27,11 @@ use pyo3::{exceptions::PyException, Python}; use serde::Serialize; use std::{ collections::HashMap, - io::SeekFrom, path::{Path, PathBuf}, pin::Pin, sync::{atomic::AtomicU32, Arc}, }; -use tokio::io::{AsyncReadExt, AsyncSeekExt, AsyncWriteExt}; + use url::Url; #[derive(Args, Debug, Clone, Serialize)] @@ -230,41 +228,49 @@ fn run_pipeline( ) } -async fn update_score_badge_in_file( - path: PathBuf, +async fn update_score_badge_in_readme( competition: Option, + project_dir: impl AsRef, + readme: Option<&ReadMe>, score: &Py, url: Url, ) -> Result<()> { let badge_url = build_shield_score_badge( score, - url.join(&competition.map_or_else( - || "competitons".to_string(), - |name| format!("competitions/{}", name), - ))?, + url.join(&competition.unwrap_or_else(|| "competitions".to_string()))?, )?; - with_locked_file( - |file| { - async move { - let mut contents = String::new(); - file.read_to_string(&mut contents).await?; - let updated_content = regex_replace_all!( - r"(?:.*?)|(!\[Aqora Score Badge\]\([^\)]+\))", - &contents, - badge_url.clone() - ); - if updated_content != contents { - file.seek(SeekFrom::Start(0)).await?; - file.write_all(updated_content.as_bytes()).await?; - file.set_len(updated_content.len() as u64).await?; - } - Ok(()) - } - .boxed() - }, - path, - ) - .await + + if let Some(content) = read_readme(&project_dir, readme) + .await + .inspect_err(|e| { + tracing::warn!( + "Failed to read the README file: {}. Skipping badge update.", + e + ) + }) + .ok() + .flatten() + { + let updated_content = regex_replace_all!( + r"(?:.*?)|(!\[Aqora Score Badge\]\([^\)]+\))", + &content, + badge_url + ); + + if updated_content != content { + write_readme(&project_dir, &updated_content) + .await + .inspect_err(|e| { + tracing::warn!( + "Failed to write to the README file: {}. Skipping badge update.", + e + ) + }) + .ok(); + } + } + + Ok(()) } pub async fn run_submission_tests( @@ -278,17 +284,6 @@ pub async fn run_submission_tests( .and_then(|aqora| aqora.as_submission()) .ok_or_else(|| error::user("Submission config is not valid", ""))?; let project_config = read_project_config(&global.project).await?; - let project_readme_path = get_readme_path( - &global.project, - project.project.as_ref().and_then(|p| p.readme.as_ref()), - ) - .await - .map_err(|err| { - error::user( - &format!("Could not read readme: {}", err), - "Please make sure the readme is valid", - ) - })?; let use_case_toml_path = project_use_case_toml_path(&global.project); let data_path = project_data_dir(&global.project); if !use_case_toml_path.exists() || !data_path.exists() { @@ -423,15 +418,18 @@ pub async fn run_submission_tests( "Score".if_supports_color(OwoStream::Stdout, |text| { text.bold() }), score )); - if let Some(path) = project_readme_path { - update_score_badge_in_file( - global.project.join(path), - modified_use_case.competition, - &score, - global.aqora_url()?, - ) - .await?; - }; + + update_score_badge_in_readme( + modified_use_case.competition, + &global.project, + project.project.as_ref().and_then(|p| p.readme.as_ref()), + &score, + global.aqora_url()?, + ) + .await + .inspect_err(|_| tracing::warn!("Failed to add Aqora badge to README.")) + .ok(); + pipeline_pb.finish_and_clear(); Ok(score) } diff --git a/src/readme.rs b/src/readme.rs index cc24e08..ddea681 100644 --- a/src/readme.rs +++ b/src/readme.rs @@ -2,56 +2,79 @@ use aqora_config::ReadMe; use mime::Mime; use std::path::{Path, PathBuf}; use thiserror::Error; +use tokio::fs; #[derive(Debug, Error)] -pub enum ReadmeError { +pub enum ReadMeError { #[error(transparent)] Io(#[from] std::io::Error), - #[error("README not found")] + #[error("Readme not found")] NotFound, - #[error("README content type not supported. Only markdown and plaintext supported")] + #[error("Readme content type not supported. Only markdown and plaintext supported")] ContentTypeNotSupported, } -pub async fn get_readme_path( - project_dir: impl AsRef, +fn is_supported_mime(content_type: &str) -> Result<(), ReadMeError> { + let mime: Mime = content_type + .parse() + .map_err(|_| ReadMeError::ContentTypeNotSupported)?; + if mime.type_() == mime::TEXT && (mime.subtype() == mime::PLAIN || mime.subtype() == "markdown") + { + Ok(()) + } else { + Err(ReadMeError::ContentTypeNotSupported) + } +} + +fn is_supported_extension(extension: Option<&str>) -> bool { + match extension { + Some(ext) => { + let ext = ext.to_lowercase(); + ext == "md" || ext == "txt" + } + None => true, + } +} + +async fn find_readme_path( + project_dir: &Path, readme: Option<&ReadMe>, -) -> Result, ReadmeError> { - let path = match readme { - Some(ReadMe::Table { - ref file, - text: _, - content_type, - }) => { - let path: Option<&Path> = file.as_deref().map(str::as_ref); - if let Some(content_type) = content_type { - let mime: Mime = content_type - .parse() - .map_err(|_| ReadmeError::ContentTypeNotSupported)?; - if !(mime.type_() == mime::TEXT - && (mime.subtype() == mime::PLAIN || mime.subtype() == "markdown")) - { - return Err(ReadmeError::ContentTypeNotSupported); +) -> Result, ReadMeError> { + if let Some(readme) = readme { + match readme { + ReadMe::Table { + file, + text: _, + content_type, + } => { + if let Some(content_type) = content_type { + is_supported_mime(content_type)?; + } + if let Some(file) = file { + let path = project_dir.join(file); + if is_supported_extension(path.extension().and_then(|s| s.to_str())) { + return Ok(Some(path)); + } else { + return Err(ReadMeError::ContentTypeNotSupported); + } + } + } + ReadMe::RelativePath(path) => { + let path = project_dir.join(path); + if is_supported_extension(path.extension().and_then(|s| s.to_str())) { + return Ok(Some(path)); + } else { + return Err(ReadMeError::ContentTypeNotSupported); } } - path.map(|p| p.to_path_buf()) } - Some(ReadMe::RelativePath(ref path)) => Some(PathBuf::from(path)), - None => None, - }; - - if let Some(path) = path { - return Ok(Some(path)); } - let mut dir = tokio::fs::read_dir(&project_dir).await?; + let mut dir = fs::read_dir(project_dir).await?; while let Some(entry) = dir.next_entry().await? { - match entry.file_name().to_string_lossy().to_lowercase().as_str() { - "readme.md" | "readme.txt" => {} - _ => continue, - } - let metadata = entry.metadata().await?; - if metadata.is_file() { + let file_name = entry.file_name().to_string_lossy().to_lowercase(); + let readme_files = ["readme.md", "readme.txt", "readme"]; + if readme_files.contains(&file_name.as_str()) && entry.metadata().await?.is_file() { return Ok(Some(entry.path())); } } @@ -62,24 +85,36 @@ pub async fn get_readme_path( pub async fn read_readme( project_dir: impl AsRef, readme: Option<&ReadMe>, -) -> Result, ReadmeError> { - let path = match get_readme_path(project_dir, readme).await? { - Some(path) => path, - None => return Ok(None), - }; +) -> Result, ReadMeError> { + let project_dir = project_dir.as_ref(); - match path - .extension() - .map(|ext| ext.to_string_lossy().to_lowercase()) - .as_deref() + if let Some(ReadMe::Table { + text: Some(text), .. + }) = readme { - Some("md") | Some("txt") | None => {} - _ => return Err(ReadmeError::ContentTypeNotSupported), + return Ok(Some(text.clone())); } - if !tokio::fs::try_exists(&path).await? { - return Err(ReadmeError::NotFound); + let path = find_readme_path(project_dir, readme).await?; + + if let Some(path) = path { + if !fs::try_exists(&path).await? { + return Err(ReadMeError::NotFound); + } + let content = fs::read_to_string(path).await?; + Ok(Some(content)) + } else { + Ok(None) } +} - Ok(Some(tokio::fs::read_to_string(path).await?)) +pub async fn write_readme(project_dir: impl AsRef, content: &str) -> Result<(), ReadMeError> { + let project_dir = project_dir.as_ref(); + let existing_readme_path = find_readme_path(project_dir, None).await?; + if let Some(existing_path) = existing_readme_path { + fs::write(existing_path, content).await?; + } else { + return Err(ReadMeError::NotFound); + } + Ok(()) }