Skip to content

Commit 0912a21

Browse files
committed
align seqspec version and upgrade paths
1 parent 7258d5b commit 0912a21

File tree

4 files changed

+56
-25
lines changed

4 files changed

+56
-25
lines changed

Cargo.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "seqspec"
3-
version = "0.1.0"
3+
version = "0.4.0"
44
edition = "2021"
55
license = "MIT"
66
repository = "https://github.com/pachterlab/seqspec"
@@ -27,4 +27,3 @@ flate2 = "1"
2727
[features]
2828
default = []
2929
python-binding = ["pyo3"] # enable PyO3 only when building Python wheels
30-

seqspec/seqspec_upgrade.py

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ def run_upgrade(parser: ArgumentParser, args: Namespace) -> None:
5252
"""Run the upgrade command."""
5353
validate_upgrade_args(parser, args)
5454

55-
spec = load_spec(args.yaml)
56-
version = spec.seqspec_version
55+
spec = load_spec(args.yaml, strict=False)
56+
version = spec.seqspec_version or "0.0.0"
5757
upgraded_spec = seqspec_upgrade(spec, version)
5858

5959
if args.output:
@@ -65,11 +65,12 @@ def run_upgrade(parser: ArgumentParser, args: Namespace) -> None:
6565
def seqspec_upgrade(spec: Assay, version: str) -> Assay:
6666
"""Upgrade spec to current version."""
6767
UPGRADE = {
68-
"0.0.0": upgrade_0_0_0_to_0_3_0,
69-
"0.1.0": upgrade_0_1_0_to_0_3_0,
70-
"0.1.1": upgrade_0_1_1_to_0_3_0,
71-
"0.2.0": upgrade_0_2_0_to_0_3_0,
72-
"0.3.0": upgrade_0_3_0_to_0_3_0,
68+
"0.0.0": upgrade_0_0_0_to_0_4_0,
69+
"0.1.0": upgrade_0_1_0_to_0_4_0,
70+
"0.1.1": upgrade_0_1_1_to_0_4_0,
71+
"0.2.0": upgrade_0_2_0_to_0_4_0,
72+
"0.3.0": upgrade_0_3_0_to_0_4_0,
73+
"0.4.0": upgrade_0_4_0_to_0_4_0,
7374
}
7475

7576
if version not in UPGRADE:
@@ -80,13 +81,19 @@ def seqspec_upgrade(spec: Assay, version: str) -> Assay:
8081
return UPGRADE[version](spec)
8182

8283

83-
def upgrade_0_3_0_to_0_3_0(spec: Assay) -> Assay:
84+
def upgrade_0_4_0_to_0_4_0(spec: Assay) -> Assay:
8485
"""No upgrade needed for current version."""
8586
return spec
8687

8788

88-
def upgrade_0_2_0_to_0_3_0(spec: Assay) -> Assay:
89-
"""Upgrade spec from version 0.2.0 to 0.3.0."""
89+
def upgrade_0_3_0_to_0_4_0(spec: Assay) -> Assay:
90+
"""Upgrade spec from version 0.3.0 to 0.4.0."""
91+
spec.seqspec_version = "0.4.0"
92+
return spec
93+
94+
95+
def upgrade_0_2_0_to_0_4_0(spec: Assay) -> Assay:
96+
"""Upgrade spec from version 0.2.0 to 0.4.0."""
9097
# Set files to empty for specs < v0.3.0
9198
for r in spec.sequence_spec:
9299
r.set_files(
@@ -117,21 +124,21 @@ def upgrade_0_2_0_to_0_3_0(spec: Assay) -> Assay:
117124
url="",
118125
urltype="",
119126
md5=md5,
120-
)
127+
)
121128
spec.seqspec_version = "0.3.0"
122-
return spec
129+
return upgrade_0_3_0_to_0_4_0(spec)
123130

124131

125-
def upgrade_0_1_1_to_0_3_0(spec: Assay) -> Assay:
126-
"""Upgrade spec from version 0.1.1 to 0.3.0."""
127-
return upgrade_0_2_0_to_0_3_0(spec)
132+
def upgrade_0_1_1_to_0_4_0(spec: Assay) -> Assay:
133+
"""Upgrade spec from version 0.1.1 to 0.4.0."""
134+
return upgrade_0_2_0_to_0_4_0(spec)
128135

129136

130-
def upgrade_0_1_0_to_0_3_0(spec: Assay) -> Assay:
131-
"""Upgrade spec from version 0.1.0 to 0.3.0."""
132-
return upgrade_0_2_0_to_0_3_0(spec)
137+
def upgrade_0_1_0_to_0_4_0(spec: Assay) -> Assay:
138+
"""Upgrade spec from version 0.1.0 to 0.4.0."""
139+
return upgrade_0_2_0_to_0_4_0(spec)
133140

134141

135-
def upgrade_0_0_0_to_0_3_0(spec: Assay) -> Assay:
136-
"""Upgrade spec from version 0.0.0 to 0.3.0."""
137-
return upgrade_0_2_0_to_0_3_0(spec)
142+
def upgrade_0_0_0_to_0_4_0(spec: Assay) -> Assay:
143+
"""Upgrade spec from version 0.0.0 to 0.4.0."""
144+
return upgrade_0_2_0_to_0_4_0(spec)

src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use seqspec::utils;
2222
use clap::{Parser, Subcommand};
2323

2424
#[derive(Parser, Debug)]
25-
#[clap(name = "seqspec", version = "0.X.0", author = "Your Name")]
25+
#[command(name = "seqspec", version)]
2626
struct Args {
2727
#[command(subcommand)]
2828
subcmd: Commands,
@@ -65,4 +65,4 @@ fn main() {
6565
,Commands::Check(args) => { seqspec_check::run_check(&args); }
6666
,Commands::Onlist(args) => seqspec_onlist::run_onlist(&args)
6767
}
68-
}
68+
}

tests/test_seqspec_upgrade.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from pathlib import Path
2+
3+
from seqspec.seqspec_upgrade import seqspec_upgrade
4+
from seqspec.utils import load_spec
5+
6+
7+
def test_seqspec_upgrade_promotes_0_3_to_0_4():
8+
spec = load_spec(Path("tests/fixtures/legacy_0_3_scalar_protocols.yaml"), strict=False)
9+
assert spec.seqspec_version == "0.3.0"
10+
11+
upgraded = seqspec_upgrade(spec, spec.seqspec_version)
12+
13+
assert upgraded.seqspec_version == "0.4.0"
14+
15+
16+
def test_seqspec_upgrade_promotes_0_2_to_0_4_and_adds_files():
17+
spec = load_spec(Path("tests/fixtures/legacy_0_2_missing_fields.yaml"), strict=False)
18+
assert spec.seqspec_version == "0.2.0"
19+
assert spec.sequence_spec[0].files == []
20+
21+
upgraded = seqspec_upgrade(spec, spec.seqspec_version)
22+
23+
assert upgraded.seqspec_version == "0.4.0"
24+
assert len(upgraded.sequence_spec[0].files) == 1
25+
assert upgraded.sequence_spec[0].files[0].file_id == upgraded.sequence_spec[0].read_id

0 commit comments

Comments
 (0)