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.
Files changed (45) hide show
  1. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/CHANGELOG.md +7 -0
  2. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/PKG-INFO +2 -2
  3. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/ps.py +2 -10
  4. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/pull.py +4 -9
  5. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/scout.py +2 -10
  6. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/utilities/cadcclient.py +2 -2
  7. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/utilities/utilities.py +27 -1
  8. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/poetry.lock +7 -7
  9. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/pyproject.toml +2 -2
  10. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  11. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  12. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  13. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.github/workflows/continuous-deployment.yml +0 -0
  14. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.github/workflows/continuous-integration.yml +0 -0
  15. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.github/workflows/docs.yml +0 -0
  16. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.github/workflows/stale.yml +0 -0
  17. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.gitignore +0 -0
  18. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/.pre-commit-config.yaml +0 -0
  19. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/LICENSE +0 -0
  20. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/README.md +0 -0
  21. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/clear.md +0 -0
  22. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/cli.md +0 -0
  23. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/commands.md +0 -0
  24. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/images/Datatrail-logo.png +0 -0
  25. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/index.md +0 -0
  26. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/initialising.md +0 -0
  27. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/install.md +0 -0
  28. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/list.md +0 -0
  29. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/ps.md +0 -0
  30. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/pull.md +0 -0
  31. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/scout.md +0 -0
  32. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/docs/user_guide.md +0 -0
  33. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/__init__.py +0 -0
  34. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/clear.py +0 -0
  35. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/cli.py +0 -0
  36. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/config.py +0 -0
  37. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/config.yaml +0 -0
  38. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/ls.py +0 -0
  39. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/src/functions.py +0 -0
  40. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/dtcli/unregistered.py +0 -0
  41. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/mkdocs.yml +0 -0
  42. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/tests/test_cli.py +0 -0
  43. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/tests/test_functions.py +0 -0
  44. {datatrail_cli-0.10.0 → datatrail_cli-0.10.1}/tests/test_utils.py +0 -0
  45. {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.0
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>=9.0.0
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
- minoc_up, luskan_up = cadcclient.status()
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 = cadcclient.status()
113
+ minoc_up, luskan_up = check_canfar_status(error_console)
114
+
114
115
  if not minoc_up:
115
- error_console.print(
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
- minoc_up, luskan_up = cadcclient.status()
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.error(error)
426
- logger.error(f"{url.split('/')[3]} is down.")
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 = "python_version >= \"3.9\" and platform_python_implementation != \"PyPy\""
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 < \"3.11\""
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 python_version < \"3.10\" and (python_full_version == \"3.8.*\" or implementation_name != \"PyPy\")"
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 (platform_python_implementation != \"PyPy\" or python_version >= \"3.10\") 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\""}
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 = "0e3d6eead81d1d533bb7cfa298fd2a0d28303ea1e0e06bd6b0ac1ed90308ecf1"
3256
+ content-hash = "12fdbdc9d8e0a115ee7beab667d6543ba733bde3c10fe169eaf9321a8d7801cb"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "datatrail-cli"
3
- version = "0.10.0"
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>=9.0.0",
24
+ "tenacity>=8.0.0",
25
25
  ]
26
26
 
27
27
  [project.scripts]
File without changes
File without changes
File without changes