grz-cli 0.7.0__tar.gz → 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,31 @@
1
+ # Changelog
2
+
3
+ ## [1.0.0](https://github.com/BfArM-MVH/grz-tools/compare/grz-cli-v0.7.0...grz-cli-v1.0.0) (2025-06-30)
4
+
5
+
6
+ ### ⚠ BREAKING CHANGES
7
+
8
+ * **grz-cli,grzctl:** require GRZ and LE Id in config during validate ([#226](https://github.com/BfArM-MVH/grz-tools/issues/226))
9
+ * **grz-cli:** remove support for old configuration format ([#221](https://github.com/BfArM-MVH/grz-tools/issues/221))
10
+
11
+ ### Features
12
+
13
+ * **grz-cli,grzctl:** require GRZ and LE Id in config during validate ([#226](https://github.com/BfArM-MVH/grz-tools/issues/226)) ([7043d9b](https://github.com/BfArM-MVH/grz-tools/commit/7043d9b3d66fcbd66bc102d9d0608467293ff7e1))
14
+
15
+
16
+ ### Bug Fixes
17
+
18
+ * **grz-cli,grz-common:** Require click >=8.2 ([#214](https://github.com/BfArM-MVH/grz-tools/issues/214)) ([bc6f839](https://github.com/BfArM-MVH/grz-tools/commit/bc6f839efa3a7b88025af66199b7eea06ac688ef))
19
+ * **grz-cli:** add missing validate parameter to submit command ([#235](https://github.com/BfArM-MVH/grz-tools/issues/235)) ([854e704](https://github.com/BfArM-MVH/grz-tools/commit/854e7046fc9bacf6a6aa71d8d6a0b4ea4b5d6d65))
20
+
21
+
22
+ ### Miscellaneous Chores
23
+
24
+ * **grz-cli:** remove support for old configuration format ([#221](https://github.com/BfArM-MVH/grz-tools/issues/221)) ([49aeaae](https://github.com/BfArM-MVH/grz-tools/commit/49aeaae693a09a42505fe2606f1db8d85c1a4d21))
25
+
26
+ ## [0.7.0](https://github.com/BfArM-MVH/grz-tools/compare/grz-cli-v0.6.1...grz-cli-v0.7.0) (2025-06-11)
27
+
28
+
29
+ ### Features
30
+
31
+ * migrate to monorepo configuration ([36c7360](https://github.com/BfArM-MVH/grz-tools/commit/36c736044ce09473cc664b4471117465c5cab9a3))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: grz-cli
3
- Version: 0.7.0
3
+ Version: 1.0.0
4
4
  Summary: Tool for validation, encryption and upload of MV submissions to GDCs.
5
5
  Project-URL: Homepage, https://github.com/BfArM-MVH/grz-tools
6
6
  Project-URL: Repository, https://github.com/BfArM-MVH/grz-tools
@@ -14,10 +14,10 @@ Classifier: Operating System :: OS Independent
14
14
  Classifier: Programming Language :: Python :: 3
15
15
  Requires-Python: >=3.12
16
16
  Requires-Dist: boto3<2,>=1.36
17
- Requires-Dist: click<9,>=8.1.7
17
+ Requires-Dist: click<9,>=8.2
18
18
  Requires-Dist: crypt4gh<2,>=1.7
19
- Requires-Dist: grz-common
20
- Requires-Dist: grz-pydantic-models>=1.3.0
19
+ Requires-Dist: grz-common>=1.0.0
20
+ Requires-Dist: grz-pydantic-models>=2.0.0
21
21
  Requires-Dist: jsonschema<5,>=4.23.0
22
22
  Requires-Dist: platformdirs<5,>=4.3.6
23
23
  Requires-Dist: pydantic-settings<2.10,>=2.9.0
@@ -14,7 +14,7 @@ authors = [
14
14
  dynamic = ["version"]
15
15
  dependencies = [
16
16
  "boto3 >=1.36,<2",
17
- "click >=8.1.7,<9",
17
+ "click >=8.2,<9",
18
18
  "crypt4gh >=1.7,<2",
19
19
  "jsonschema >=4.23.0,<5",
20
20
  "pyyaml >=6.0.2,<7",
@@ -22,11 +22,11 @@ dependencies = [
22
22
  "pydantic >=2.9.2,<2.10",
23
23
  "pydantic-settings >=2.9.0,<2.10",
24
24
  "platformdirs >=4.3.6,<5",
25
- "grz-pydantic-models >=1.3.0",
25
+ "grz-pydantic-models >=2.0.0",
26
26
  "pysam ==0.23.*",
27
27
  "rich ==13.*",
28
28
  "requests >=2.32.3,<3",
29
- "grz-common",
29
+ "grz-common >=1.0.0",
30
30
  ]
31
31
  classifiers = [
32
32
  "Programming Language :: Python :: 3",
@@ -35,8 +35,12 @@ classifiers = [
35
35
  requires-python = ">=3.12"
36
36
  keywords = ["GRZ", "GDC", "S3"]
37
37
 
38
+ [dependency-groups]
39
+ dev = ["tox", "tox-uv"]
40
+
38
41
  [tool.uv.sources]
39
- grz-common = { workspace = true }
42
+ grz-common = { path = "../grz-common", editable = true }
43
+ grz-pydantic-models = { path = "../grz-pydantic-models", editable = true }
40
44
 
41
45
  [project.urls]
42
46
  Homepage = "https://github.com/BfArM-MVH/grz-tools"
@@ -0,0 +1 @@
1
+ __version__ = "1.0.0"
@@ -41,7 +41,7 @@ def build_cli():
41
41
  @click.version_option(
42
42
  version=version("grz-cli"),
43
43
  prog_name="grz-cli",
44
- message=f"%(prog)s v%(version)s (metadata schema versions: {', '.join(grz_pydantic_models.submission.metadata.get_supported_versions())})",
44
+ message=f"%(prog)s v%(version)s (currently accepted metadata schema versions: {', '.join(grz_pydantic_models.submission.metadata.get_accepted_versions())})",
45
45
  )
46
46
  @click.option("--log-file", metavar="FILE", type=str, help="Path to log file")
47
47
  @click.option(
@@ -29,7 +29,7 @@ def submit(ctx, submission_dir, config_file, threads, force):
29
29
  3. Upload the encrypted submission
30
30
  """
31
31
  click.echo("Starting submission process...")
32
- ctx.invoke(validate, submission_dir=submission_dir, force=force)
32
+ ctx.invoke(validate, submission_dir=submission_dir, config_file=config_file, force=force)
33
33
  ctx.invoke(encrypt, submission_dir=submission_dir, config_file=config_file, force=force)
34
34
  ctx.invoke(upload, submission_dir=submission_dir, config_file=config_file, threads=threads)
35
35
  click.echo("Submission finished!")
@@ -39,6 +39,6 @@ def upload(
39
39
  threads=threads,
40
40
  )
41
41
  # output the generated submission ID
42
- print(worker_inst.upload(config.s3))
42
+ click.echo(worker_inst.upload(config.s3))
43
43
 
44
44
  log.info("Upload finished!")
@@ -4,7 +4,8 @@ import logging
4
4
  from pathlib import Path
5
5
 
6
6
  import click
7
- from grz_common.cli import force, submission_dir
7
+ from grz_cli.models.config import ValidateConfig
8
+ from grz_common.cli import config_file, force, submission_dir
8
9
  from grz_common.workers.worker import Worker
9
10
 
10
11
  log = logging.getLogger(__name__)
@@ -12,14 +13,17 @@ log = logging.getLogger(__name__)
12
13
 
13
14
  @click.command()
14
15
  @submission_dir
16
+ @config_file
15
17
  @force
16
- def validate(submission_dir, force):
18
+ def validate(submission_dir, config_file, force):
17
19
  """
18
20
  Validate the submission.
19
21
 
20
22
  This validates the submission by checking its checksums, as well as performing basic sanity checks on the supplied metadata.
21
23
  Must be executed before calling `encrypt` and `upload`.
22
24
  """
25
+ config = ValidateConfig.from_path(config_file)
26
+
23
27
  log.info("Starting validation...")
24
28
 
25
29
  submission_dir = Path(submission_dir)
@@ -30,6 +34,6 @@ def validate(submission_dir, force):
30
34
  log_dir=submission_dir / "logs",
31
35
  encrypted_files_dir=submission_dir / "encrypted_files",
32
36
  )
33
- worker_inst.validate(force=force)
37
+ worker_inst.validate(identifiers=config.identifiers, force=force)
34
38
 
35
39
  log.info("Validation finished!")
@@ -0,0 +1,19 @@
1
+ import logging
2
+
3
+ from grz_common.models.identifiers import IdentifiersConfigModel
4
+ from grz_common.models.keys import KeyConfigModel
5
+ from grz_common.models.s3 import S3ConfigModel
6
+
7
+ log = logging.getLogger(__name__)
8
+
9
+
10
+ class UploadConfig(S3ConfigModel):
11
+ pass
12
+
13
+
14
+ class EncryptConfig(KeyConfigModel):
15
+ pass
16
+
17
+
18
+ class ValidateConfig(IdentifiersConfigModel):
19
+ pass