From 40ea3106f9c557e2775b2bff355044b03e3d2304 Mon Sep 17 00:00:00 2001 From: Brad Heller Date: Mon, 2 Mar 2026 16:33:51 +0000 Subject: [PATCH 1/2] Pump hidden through to manifest (#216) * Pump hidden through to manifest * Add a quick test for this change --- crates/tower-package/src/lib.rs | 4 ++ crates/tower-package/tests/package_test.rs | 50 +++++++++++++++++++++- 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/crates/tower-package/src/lib.rs b/crates/tower-package/src/lib.rs index caaabcab..59cd539c 100644 --- a/crates/tower-package/src/lib.rs +++ b/crates/tower-package/src/lib.rs @@ -43,6 +43,9 @@ pub struct Parameter { #[serde(default)] pub default: String, + + #[serde(default)] + pub hidden: bool, } #[derive(Clone, Serialize, Deserialize)] @@ -122,6 +125,7 @@ fn get_parameters(towerfile: &Towerfile) -> Vec { name: p.name.clone(), description: Some(p.description.clone()), default: p.default.clone(), + hidden: p.hidden, }); } parameters diff --git a/crates/tower-package/tests/package_test.rs b/crates/tower-package/tests/package_test.rs index d7bda4e1..725f8c8a 100644 --- a/crates/tower-package/tests/package_test.rs +++ b/crates/tower-package/tests/package_test.rs @@ -12,7 +12,7 @@ use tokio_stream::*; use config::Towerfile; use tokio_tar::Archive; -use tower_package::{Manifest, Package, PackageSpec}; +use tower_package::{Manifest, Package, PackageSpec, Parameter}; use tower_telemetry::debug; macro_rules! make_path { @@ -385,6 +385,54 @@ async fn building_package_spec_from_towerfile() { assert_eq!(spec.schedule, Some("0 0 * * *".to_string())); } +#[tokio::test] +async fn it_includes_hidden_parameters_in_manifest() { + let tmp_dir = TmpDir::new("hidden-params") + .await + .expect("Failed to create temp dir"); + create_test_file(tmp_dir.to_path_buf(), "Towerfile", "").await; + create_test_file(tmp_dir.to_path_buf(), "main.py", "print('Hello, world!')").await; + + let spec = PackageSpec { + invoke: "main.py".to_string(), + base_dir: tmp_dir.to_path_buf(), + towerfile_path: tmp_dir.to_path_buf().join("Towerfile").to_path_buf(), + file_globs: vec!["*.py".to_string()], + parameters: vec![ + Parameter { + name: "visible_param".to_string(), + description: Some("A visible parameter".to_string()), + default: "".to_string(), + hidden: false, + }, + Parameter { + name: "hidden_param".to_string(), + description: Some("A hidden parameter".to_string()), + default: "secret".to_string(), + hidden: true, + }, + ], + schedule: None, + import_paths: vec![], + }; + + let package = Package::build(spec).await.expect("Failed to build package"); + let files = read_package_files(package).await; + + let manifest = Manifest::from_json(files.get("MANIFEST").unwrap()) + .await + .expect("Manifest was not valid JSON"); + + assert_eq!(manifest.parameters.len(), 2); + + let visible = manifest.parameters.iter().find(|p| p.name == "visible_param").unwrap(); + assert!(!visible.hidden, "visible_param should not be hidden"); + + let hidden = manifest.parameters.iter().find(|p| p.name == "hidden_param").unwrap(); + assert!(hidden.hidden, "hidden_param should be hidden"); + assert_eq!(hidden.default, "secret"); +} + // read_package_files reads the contents of a given package and returns a map of the file paths to // their contents as a collection of strings. Not useful for anything except for testing purposes. async fn read_package_files(package: Package) -> HashMap { From c41a2cb97f18c8ddfae784ca0965271dc9055d0e Mon Sep 17 00:00:00 2001 From: Brad Heller Date: Mon, 2 Mar 2026 16:36:37 +0000 Subject: [PATCH 2/2] Bump version to v0.3.51 --- Cargo.lock | 22 +++++++++++----------- Cargo.toml | 2 +- pyproject.toml | 2 +- uv.lock | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0fea61cd..69082ec6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -491,7 +491,7 @@ dependencies = [ [[package]] name = "config" -version = "0.3.50" +version = "0.3.51" dependencies = [ "base64", "chrono", @@ -598,7 +598,7 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crypto" -version = "0.3.50" +version = "0.3.51" dependencies = [ "aes-gcm", "base64", @@ -3316,7 +3316,7 @@ dependencies = [ [[package]] name = "testutils" -version = "0.3.50" +version = "0.3.51" dependencies = [ "pem", "rsa", @@ -3586,7 +3586,7 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "tower" -version = "0.3.50" +version = "0.3.51" dependencies = [ "config", "pyo3", @@ -3614,7 +3614,7 @@ dependencies = [ [[package]] name = "tower-api" -version = "0.3.50" +version = "0.3.51" dependencies = [ "reqwest", "serde", @@ -3626,7 +3626,7 @@ dependencies = [ [[package]] name = "tower-cmd" -version = "0.3.50" +version = "0.3.51" dependencies = [ "axum", "bytes", @@ -3696,7 +3696,7 @@ checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-package" -version = "0.3.50" +version = "0.3.51" dependencies = [ "async-compression", "config", @@ -3714,7 +3714,7 @@ dependencies = [ [[package]] name = "tower-runtime" -version = "0.3.50" +version = "0.3.51" dependencies = [ "async-trait", "chrono", @@ -3737,7 +3737,7 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tower-telemetry" -version = "0.3.50" +version = "0.3.51" dependencies = [ "tracing", "tracing-appender", @@ -3746,7 +3746,7 @@ dependencies = [ [[package]] name = "tower-uv" -version = "0.3.50" +version = "0.3.51" dependencies = [ "async-compression", "async_zip", @@ -3764,7 +3764,7 @@ dependencies = [ [[package]] name = "tower-version" -version = "0.3.50" +version = "0.3.51" dependencies = [ "anyhow", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 011288e7..efc53368 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ resolver = "2" [workspace.package] edition = "2021" -version = "0.3.50" +version = "0.3.51" description = "Tower is the best way to host Python data apps in production" rust-version = "1.81" authors = ["Brad Heller "] diff --git a/pyproject.toml b/pyproject.toml index b0a8f99d..9becce92 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "tower" -version = "0.3.50" +version = "0.3.51" description = "Tower CLI and runtime environment for Tower." authors = [{ name = "Tower Computing Inc.", email = "brad@tower.dev" }] readme = "README.md" diff --git a/uv.lock b/uv.lock index 59cb1d32..475a42ac 100644 --- a/uv.lock +++ b/uv.lock @@ -2488,7 +2488,7 @@ wheels = [ [[package]] name = "tower" -version = "0.3.50" +version = "0.3.51" source = { editable = "." } dependencies = [ { name = "attrs" },