datatrail-cli 0.10.0__tar.gz → 0.10.1__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.
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/CHANGELOG.md +7 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/PKG-INFO +2 -2
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/ps.py +2 -10
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/pull.py +4 -9
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/scout.py +2 -10
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/utilities/cadcclient.py +2 -2
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/utilities/utilities.py +27 -1
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/poetry.lock +7 -7
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/pyproject.toml +2 -2
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.github/workflows/continuous-deployment.yml +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.github/workflows/continuous-integration.yml +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.github/workflows/docs.yml +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.github/workflows/stale.yml +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.gitignore +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.pre-commit-config.yaml +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/LICENSE +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/README.md +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/clear.md +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/cli.md +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/commands.md +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/images/Datatrail-logo.png +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/index.md +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/initialising.md +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/install.md +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/list.md +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/ps.md +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/pull.md +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/scout.md +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/user_guide.md +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/__init__.py +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/clear.py +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/cli.py +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/config.py +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/config.yaml +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/ls.py +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/src/functions.py +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/unregistered.py +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/mkdocs.yml +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/tests/test_cli.py +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/tests/test_functions.py +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/tests/test_utils.py +0 -0
- {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/tox.ini +0 -0
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.10.1](https://github.com/CHIMEFRB/datatrail-cli/compare/v0.10.0...v0.10.1) (2026-03-02)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **cli:** canfar status checks ([7f9df34](https://github.com/CHIMEFRB/datatrail-cli/commit/7f9df349ceeebb1caa7c1c2582cd3d1c54e8ec09))
|
|
9
|
+
|
|
3
10
|
## [0.10.0](https://github.com/CHIMEFRB/datatrail-cli/compare/v0.9.3...v0.10.0) (2026-02-20)
|
|
4
11
|
|
|
5
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: datatrail-cli
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.1
|
|
4
4
|
Summary: CHIME/FRB Datatrail CLI
|
|
5
5
|
Author: CHIME FRB Project Office
|
|
6
6
|
Author-email: Tarik Zegmott <tarik.zegmott@mcgill.ca>
|
|
@@ -18,7 +18,7 @@ Requires-Dist: mergedeep>=1.3.4
|
|
|
18
18
|
Requires-Dist: pyaml>=21.10.1
|
|
19
19
|
Requires-Dist: requests>=2.29.0
|
|
20
20
|
Requires-Dist: rich>=13.3.5
|
|
21
|
-
Requires-Dist: tenacity>=
|
|
21
|
+
Requires-Dist: tenacity>=8.0.0
|
|
22
22
|
Description-Content-Type: text/markdown
|
|
23
23
|
|
|
24
24
|
<div align="center">
|
|
@@ -12,7 +12,7 @@ from rich.table import Table
|
|
|
12
12
|
from dtcli.ls import list
|
|
13
13
|
from dtcli.src import functions
|
|
14
14
|
from dtcli.utilities import cadcclient
|
|
15
|
-
from dtcli.utilities.utilities import set_log_level, validate_scope
|
|
15
|
+
from dtcli.utilities.utilities import check_canfar_status, set_log_level, validate_scope
|
|
16
16
|
|
|
17
17
|
logger = logging.getLogger("ps")
|
|
18
18
|
|
|
@@ -68,15 +68,7 @@ def ps(
|
|
|
68
68
|
return None
|
|
69
69
|
|
|
70
70
|
# Check Canfar status.
|
|
71
|
-
|
|
72
|
-
if not minoc_up:
|
|
73
|
-
error_console.print(
|
|
74
|
-
"Either Minoc is down or certificate is invalid.", style="bold yellow"
|
|
75
|
-
)
|
|
76
|
-
elif not luskan_up:
|
|
77
|
-
error_console.print(
|
|
78
|
-
"Either Luskan is down or certificate is invalid.", style="bold yellow"
|
|
79
|
-
)
|
|
71
|
+
check_canfar_status(error_console)
|
|
80
72
|
|
|
81
73
|
try:
|
|
82
74
|
files, policies = functions.ps(scope, dataset, verbose, quiet)
|
|
@@ -11,7 +11,7 @@ from rich.prompt import Confirm
|
|
|
11
11
|
from dtcli.config import procure
|
|
12
12
|
from dtcli.src.functions import find_missing_dataset_files, get_files
|
|
13
13
|
from dtcli.utilities import cadcclient
|
|
14
|
-
from dtcli.utilities.utilities import set_log_level, validate_scope
|
|
14
|
+
from dtcli.utilities.utilities import check_canfar_status, set_log_level, validate_scope
|
|
15
15
|
|
|
16
16
|
logger = logging.getLogger("pull")
|
|
17
17
|
|
|
@@ -110,15 +110,10 @@ def pull( # noqa: C901
|
|
|
110
110
|
return None
|
|
111
111
|
|
|
112
112
|
# Check Canfar status.
|
|
113
|
-
minoc_up, luskan_up =
|
|
113
|
+
minoc_up, luskan_up = check_canfar_status(error_console)
|
|
114
|
+
|
|
114
115
|
if not minoc_up:
|
|
115
|
-
|
|
116
|
-
"Either Minoc is down or certificate is invalid.", style="bold yellow"
|
|
117
|
-
)
|
|
118
|
-
elif not luskan_up:
|
|
119
|
-
error_console.print(
|
|
120
|
-
"Either Luskan is down or certificate is invalid.", style="bold yellow"
|
|
121
|
-
)
|
|
116
|
+
return None
|
|
122
117
|
|
|
123
118
|
# Find files missing from localhost.
|
|
124
119
|
console.print(f"\nSearching for files for {dataset} {scope}...\n")
|
|
@@ -13,7 +13,7 @@ from rich.table import Table
|
|
|
13
13
|
from dtcli.config import procure
|
|
14
14
|
from dtcli.ls import list as ls
|
|
15
15
|
from dtcli.utilities import cadcclient
|
|
16
|
-
from dtcli.utilities.utilities import set_log_level, validate_scope
|
|
16
|
+
from dtcli.utilities.utilities import check_canfar_status, set_log_level, validate_scope
|
|
17
17
|
|
|
18
18
|
logger = logging.getLogger("scout")
|
|
19
19
|
|
|
@@ -79,15 +79,7 @@ def scout( # noqa: C901
|
|
|
79
79
|
return {"error": "No config. Create one with `datatrail config init`."}
|
|
80
80
|
|
|
81
81
|
# Check Canfar status.
|
|
82
|
-
|
|
83
|
-
if not minoc_up:
|
|
84
|
-
error_console.print(
|
|
85
|
-
"Either Minoc is down or certificate is invalid.", style="bold yellow"
|
|
86
|
-
)
|
|
87
|
-
elif not luskan_up:
|
|
88
|
-
error_console.print(
|
|
89
|
-
"Either Luskan is down or certificate is invalid.", style="bold yellow"
|
|
90
|
-
)
|
|
82
|
+
check_canfar_status(error_console)
|
|
91
83
|
|
|
92
84
|
# Scout dataset.
|
|
93
85
|
endpoint = (
|
|
@@ -422,8 +422,8 @@ def status(
|
|
|
422
422
|
else:
|
|
423
423
|
raise TypeError
|
|
424
424
|
except HTTPError as error:
|
|
425
|
-
logger.
|
|
426
|
-
logger.
|
|
425
|
+
logger.warning(error)
|
|
426
|
+
logger.warning(f"{url.split('/')[3]} is down.")
|
|
427
427
|
except TypeError:
|
|
428
428
|
logger.error("Canfar certificate is not valid.")
|
|
429
429
|
return minoc_status, luskan_status
|
|
@@ -2,10 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
4
|
import logging
|
|
5
|
-
from typing import Any, Dict, List, Union
|
|
5
|
+
from typing import Any, Dict, List, Tuple, Union
|
|
6
6
|
|
|
7
7
|
import requests
|
|
8
8
|
from requests.models import Response
|
|
9
|
+
from rich.console import Console
|
|
10
|
+
|
|
11
|
+
from dtcli.utilities import cadcclient
|
|
9
12
|
|
|
10
13
|
try:
|
|
11
14
|
from packaging.version import parse
|
|
@@ -133,3 +136,26 @@ def cli_is_latest_release() -> bool:
|
|
|
133
136
|
return current_version == get_latest_released_version()
|
|
134
137
|
except (ConnectionError, PackageNotFoundError):
|
|
135
138
|
return True
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def check_canfar_status(console: Console) -> Tuple[bool, bool]:
|
|
142
|
+
"""Checks the status of Luskan and Minoc.
|
|
143
|
+
|
|
144
|
+
Args:
|
|
145
|
+
console: Console to print status messages to.
|
|
146
|
+
|
|
147
|
+
Returns:
|
|
148
|
+
Tuple[bool, bool]: Status of Minoc and Luskan, respectively.
|
|
149
|
+
"""
|
|
150
|
+
# Check Canfar status.
|
|
151
|
+
minoc_up, luskan_up = cadcclient.status()
|
|
152
|
+
if not minoc_up:
|
|
153
|
+
console.print(":warning: Minoc is down!", style="bold yellow")
|
|
154
|
+
if not luskan_up:
|
|
155
|
+
console.print(":warning: Luskan is down!", style="bold yellow")
|
|
156
|
+
if not minoc_up or not luskan_up:
|
|
157
|
+
console.print(
|
|
158
|
+
"See https://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/en/status/ for service availability.", # noqa: E501
|
|
159
|
+
style="bold yellow",
|
|
160
|
+
)
|
|
161
|
+
return minoc_up, luskan_up
|
|
@@ -262,7 +262,7 @@ description = "Foreign Function Interface for Python calling C code."
|
|
|
262
262
|
optional = false
|
|
263
263
|
python-versions = ">=3.9"
|
|
264
264
|
groups = ["main"]
|
|
265
|
-
markers = "
|
|
265
|
+
markers = "python_full_version >= \"3.9.0\" and platform_python_implementation != \"PyPy\""
|
|
266
266
|
files = [
|
|
267
267
|
{file = "cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44"},
|
|
268
268
|
{file = "cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49"},
|
|
@@ -970,8 +970,8 @@ files = [
|
|
|
970
970
|
|
|
971
971
|
[package.dependencies]
|
|
972
972
|
cffi = [
|
|
973
|
-
{version = ">=1.14", markers = "python_full_version == \"3.8.*\" and platform_python_implementation != \"PyPy\""},
|
|
974
973
|
{version = ">=2.0.0", markers = "python_full_version >= \"3.9.0\" and platform_python_implementation != \"PyPy\""},
|
|
974
|
+
{version = ">=1.14", markers = "python_full_version == \"3.8.*\" and platform_python_implementation != \"PyPy\""},
|
|
975
975
|
]
|
|
976
976
|
typing-extensions = {version = ">=4.13.2", markers = "python_full_version < \"3.11.0\""}
|
|
977
977
|
|
|
@@ -1050,7 +1050,7 @@ description = "Backport of PEP 654 (exception groups)"
|
|
|
1050
1050
|
optional = false
|
|
1051
1051
|
python-versions = ">=3.7"
|
|
1052
1052
|
groups = ["dev"]
|
|
1053
|
-
markers = "python_version
|
|
1053
|
+
markers = "python_version <= \"3.10\""
|
|
1054
1054
|
files = [
|
|
1055
1055
|
{file = "exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598"},
|
|
1056
1056
|
{file = "exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219"},
|
|
@@ -2392,7 +2392,7 @@ description = "C parser in Python"
|
|
|
2392
2392
|
optional = false
|
|
2393
2393
|
python-versions = ">=3.8"
|
|
2394
2394
|
groups = ["main"]
|
|
2395
|
-
markers = "platform_python_implementation != \"PyPy\" and
|
|
2395
|
+
markers = "platform_python_implementation != \"PyPy\" and (python_full_version == \"3.8.*\" or implementation_name != \"PyPy\") and python_version < \"3.10\""
|
|
2396
2396
|
files = [
|
|
2397
2397
|
{file = "pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934"},
|
|
2398
2398
|
{file = "pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2"},
|
|
@@ -3050,7 +3050,7 @@ files = [
|
|
|
3050
3050
|
{file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"},
|
|
3051
3051
|
{file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"},
|
|
3052
3052
|
]
|
|
3053
|
-
markers = {main = "python_version >= \"3.9\" and (
|
|
3053
|
+
markers = {main = "python_version >= \"3.9\" and (python_version >= \"3.10\" or platform_python_implementation != \"PyPy\") and python_version < \"3.13\"", dev = "python_version >= \"3.9\" and platform_python_implementation != \"PyPy\" or python_version >= \"3.10\"", docs = "python_full_version >= \"3.9.0\" and platform_python_implementation != \"PyPy\" and python_version < \"3.10\""}
|
|
3054
3054
|
|
|
3055
3055
|
[[package]]
|
|
3056
3056
|
name = "urllib3"
|
|
@@ -3105,8 +3105,8 @@ files = [
|
|
|
3105
3105
|
[package.dependencies]
|
|
3106
3106
|
distlib = ">=0.3.7,<1"
|
|
3107
3107
|
filelock = [
|
|
3108
|
-
{version = ">=3.16.1,<=3.19.1", markers = "python_version < \"3.10\""},
|
|
3109
3108
|
{version = ">=3.24.2,<4", markers = "python_version >= \"3.10\""},
|
|
3109
|
+
{version = ">=3.16.1,<=3.19.1", markers = "python_version < \"3.10\""},
|
|
3110
3110
|
]
|
|
3111
3111
|
platformdirs = ">=3.9.1,<5"
|
|
3112
3112
|
typing-extensions = {version = ">=4.13.2", markers = "python_version < \"3.11\""}
|
|
@@ -3253,4 +3253,4 @@ type = ["pytest-mypy"]
|
|
|
3253
3253
|
[metadata]
|
|
3254
3254
|
lock-version = "2.1"
|
|
3255
3255
|
python-versions = ">=3.8.1,!=3.9.0,!=3.9.1,<4.0"
|
|
3256
|
-
content-hash = "
|
|
3256
|
+
content-hash = "12fdbdc9d8e0a115ee7beab667d6543ba733bde3c10fe169eaf9321a8d7801cb"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "datatrail-cli"
|
|
3
|
-
version = "0.10.
|
|
3
|
+
version = "0.10.1"
|
|
4
4
|
description = "CHIME/FRB Datatrail CLI"
|
|
5
5
|
authors = [
|
|
6
6
|
{ name = "CHIME FRB Project Office" },
|
|
@@ -21,7 +21,7 @@ dependencies = [
|
|
|
21
21
|
"dill>=0.3.6",
|
|
22
22
|
"lxml>=4.9.2",
|
|
23
23
|
"click-aliasing>=1.0.0",
|
|
24
|
-
"tenacity>=
|
|
24
|
+
"tenacity>=8.0.0",
|
|
25
25
|
]
|
|
26
26
|
|
|
27
27
|
[project.scripts]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|