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.
- grz_cli-1.0.0/CHANGELOG.md +31 -0
- {grz_cli-0.7.0 → grz_cli-1.0.0}/PKG-INFO +4 -4
- {grz_cli-0.7.0 → grz_cli-1.0.0}/pyproject.toml +8 -4
- grz_cli-1.0.0/src/grz_cli/__init__.py +1 -0
- {grz_cli-0.7.0 → grz_cli-1.0.0}/src/grz_cli/cli.py +1 -1
- {grz_cli-0.7.0 → grz_cli-1.0.0}/src/grz_cli/commands/submit.py +1 -1
- {grz_cli-0.7.0 → grz_cli-1.0.0}/src/grz_cli/commands/upload.py +1 -1
- {grz_cli-0.7.0 → grz_cli-1.0.0}/src/grz_cli/commands/validate.py +7 -3
- grz_cli-1.0.0/src/grz_cli/models/config.py +19 -0
- grz_cli-1.0.0/uv.lock +908 -0
- grz_cli-0.7.0/CHANGELOG.md +0 -8
- grz_cli-0.7.0/src/grz_cli/__init__.py +0 -1
- grz_cli-0.7.0/src/grz_cli/models/config.py +0 -57
- {grz_cli-0.7.0 → grz_cli-1.0.0}/.gitignore +0 -0
- {grz_cli-0.7.0 → grz_cli-1.0.0}/LICENSE +0 -0
- {grz_cli-0.7.0 → grz_cli-1.0.0}/MANIFEST.in +0 -0
- {grz_cli-0.7.0 → grz_cli-1.0.0}/README.md +0 -0
- {grz_cli-0.7.0 → grz_cli-1.0.0}/src/__init__.py +0 -0
- {grz_cli-0.7.0 → grz_cli-1.0.0}/src/grz_cli/commands/__init__.py +0 -0
- {grz_cli-0.7.0 → grz_cli-1.0.0}/src/grz_cli/commands/encrypt.py +0 -0
- {grz_cli-0.7.0 → grz_cli-1.0.0}/src/grz_cli/constants.py +0 -0
- {grz_cli-0.7.0 → grz_cli-1.0.0}/src/grz_cli/logging_setup.py +0 -0
- {grz_cli-0.7.0 → grz_cli-1.0.0}/src/grz_cli/models/__init__.py +0 -0
- {grz_cli-0.7.0 → grz_cli-1.0.0}/src/grz_cli/py.typed +0 -0
|
@@ -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.
|
|
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.
|
|
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>=
|
|
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.
|
|
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 >=
|
|
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 = {
|
|
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.
|
|
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!")
|
|
@@ -4,7 +4,8 @@ import logging
|
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
6
|
import click
|
|
7
|
-
from
|
|
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
|