Skip to content

Commit 26874d3

Browse files
authored
Merge pull request #240 from sanders41/parallel
Speed up downloading of latest packages
2 parents ee6c975 + 981d3cb commit 26874d3

File tree

4 files changed

+82
-19
lines changed

4 files changed

+82
-19
lines changed

Cargo.lock

Lines changed: 52 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ colored = "2.0.4"
2323
dirs = "5.0.1"
2424
indicatif = "0.17.8"
2525
minijinja = "1.0.12"
26+
rayon = "1.9.0"
2627
reqwest = { version = "0.11.24", features = ["json", "blocking"] }
2728
serde = { version = "1.0.195", features = ["derive"] }
2829
serde_json = "1.0.113"

src/project_generator.rs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use std::fs::create_dir_all;
33
use anyhow::{bail, Result};
44
use colored::*;
55
use minijinja::render;
6+
use rayon::prelude::*;
67

78
use crate::file_manager::{save_empty_src_file, save_file_with_content};
89
use crate::github_actions::{
@@ -209,15 +210,15 @@ fn build_latest_pre_commit_dependencies(
209210
];
210211

211212
if download_latest_packages {
212-
for hook in &mut hooks {
213+
hooks.par_iter_mut().for_each(|hook| {
213214
if hook.get_latest_version().is_err() {
214215
let error_message = format!(
215216
"Error retrieving latest pre-commit version for {:?}. Using default.",
216217
hook.hook.to_string()
217218
);
218219
println!("\n{}", error_message.yellow());
219220
}
220-
}
221+
});
221222
}
222223

223224
hooks
@@ -291,15 +292,19 @@ fn build_latest_dev_dependencies(
291292
ProjectManager::Setuptools => (),
292293
};
293294

294-
for mut package in packages {
295-
if download_latest_packages && package.get_latest_version().is_err() {
296-
let error_message = format!(
297-
"Error retrieving latest python package version for {:?}. Using default.",
298-
package.package.to_string()
299-
);
300-
println!("\n{}", error_message.yellow());
301-
}
295+
if download_latest_packages {
296+
packages.par_iter_mut().for_each(|package| {
297+
if package.get_latest_version().is_err() {
298+
let error_message = format!(
299+
"Error retrieving latest python package version for {:?}. Using default.",
300+
package.package.to_string()
301+
);
302+
println!("\n{}", error_message.yellow());
303+
}
304+
})
305+
}
302306

307+
for package in packages {
303308
if let ProjectManager::Poetry = project_manager {
304309
let version: String = if is_application {
305310
package.version

src/rust_files.rs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use anyhow::Result;
22
use colored::*;
3+
use rayon::prelude::*;
34

45
use crate::file_manager::save_file_with_content;
56
use crate::licenses::license_str;
@@ -9,21 +10,25 @@ use crate::project_info::{LicenseType, ProjectInfo};
910
fn build_latest_dependencies(min_python_version: &str, download_latest_packages: bool) -> String {
1011
let mut version_string = String::new();
1112
let abi = format!("abi3-py{}", min_python_version.replace('.', ""));
12-
let packages = vec![RustPackageVersion {
13+
let mut packages = vec![RustPackageVersion {
1314
name: "pyo3".to_string(),
1415
version: "0.20.3".to_string(),
1516
features: Some(vec!["extension-module".to_string(), abi]),
1617
}];
1718

18-
for mut package in packages {
19-
if download_latest_packages && package.get_latest_version().is_err() {
20-
let error_message = format!(
21-
"Error retrieving latest crate version for {:?}. Using default.",
22-
package.name
23-
);
24-
println!("\n{}", error_message.yellow());
25-
}
19+
if download_latest_packages {
20+
packages.par_iter_mut().for_each(|package| {
21+
if package.get_latest_version().is_err() {
22+
let error_message = format!(
23+
"Error retrieving latest crate version for {:?}. Using default.",
24+
package.name
25+
);
26+
println!("\n{}", error_message.yellow());
27+
}
28+
})
29+
}
2630

31+
for package in packages {
2732
if let Some(features) = &package.features {
2833
let mut feature_str = "[".to_string();
2934
for feature in features {

0 commit comments

Comments
 (0)