lsst-ctrl-bps-panda 30.0.0rc2__tar.gz → 30.0.1rc1__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.
- {lsst_ctrl_bps_panda-30.0.0rc2/python/lsst_ctrl_bps_panda.egg-info → lsst_ctrl_bps_panda-30.0.1rc1}/PKG-INFO +3 -3
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/pyproject.toml +4 -12
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/edgenode/cmd_line_decoder.py +1 -1
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/panda_auth_drivers.py +10 -2
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/panda_auth_utils.py +1 -1
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/utils.py +20 -2
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/version.py +1 -1
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1/python/lsst_ctrl_bps_panda.egg-info}/PKG-INFO +3 -3
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/tests/test_panda_auth_utils.py +26 -6
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/COPYRIGHT +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/LICENSE +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/README.rst +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/bsd_license.txt +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/gpl-v3.0.txt +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/__init__.py +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/cli/__init__.py +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/cli/cmd/__init__.py +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/cli/cmd/panda_auth_commands.py +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/cli/panda_auth.py +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/cmd_line_embedder.py +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/conf_example/example_panda_SLAC.yaml +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/conf_example/pipelines_check_idf.yaml +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/conf_example/test_idf.yaml +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/conf_example/test_sdf.yaml +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/conf_example/test_usdf.yaml +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/constants.py +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/edgenode/__init__.py +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/edgenode/build_cmd_line_decoder.py +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/panda_exceptions.py +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/panda_service.py +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst_ctrl_bps_panda.egg-info/SOURCES.txt +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst_ctrl_bps_panda.egg-info/dependency_links.txt +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst_ctrl_bps_panda.egg-info/requires.txt +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst_ctrl_bps_panda.egg-info/top_level.txt +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst_ctrl_bps_panda.egg-info/zip-safe +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/setup.cfg +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/tests/test_cmd_line_decoder.py +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/tests/test_cmd_line_embedder.py +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/tests/test_panda_service.py +0 -0
- {lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/tests/test_utils.py +0 -0
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lsst-ctrl-bps-panda
|
|
3
|
-
Version: 30.0.
|
|
3
|
+
Version: 30.0.1rc1
|
|
4
4
|
Summary: PanDA plugin for lsst-ctrl-bps.
|
|
5
5
|
Author-email: Rubin Observatory Data Management <dm-admin@lists.lsst.org>
|
|
6
6
|
License-Expression: BSD-3-Clause OR GPL-3.0-or-later
|
|
7
7
|
Project-URL: Homepage, https://github.com/lsst/ctrl_bps_panda
|
|
8
|
+
Project-URL: Source, https://github.com/lsst/ctrl_bps_panda
|
|
8
9
|
Keywords: lsst
|
|
9
10
|
Classifier: Intended Audience :: Science/Research
|
|
10
11
|
Classifier: Operating System :: OS Independent
|
|
11
12
|
Classifier: Programming Language :: Python :: 3
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.12
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.13
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.14
|
|
16
16
|
Classifier: Topic :: Scientific/Engineering :: Astronomy
|
|
17
|
-
Requires-Python: >=3.
|
|
17
|
+
Requires-Python: >=3.12.0
|
|
18
18
|
Description-Content-Type: text/x-rst
|
|
19
19
|
License-File: COPYRIGHT
|
|
20
20
|
License-File: LICENSE
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "lsst-ctrl-bps-panda"
|
|
7
|
-
requires-python = ">=3.
|
|
7
|
+
requires-python = ">=3.12.0"
|
|
8
8
|
description = "PanDA plugin for lsst-ctrl-bps."
|
|
9
9
|
license = "BSD-3-Clause OR GPL-3.0-or-later"
|
|
10
10
|
license-files = ["COPYRIGHT", "LICENSE", "bsd_license.txt", "gpl-v3.0.txt"]
|
|
@@ -16,7 +16,6 @@ classifiers = [
|
|
|
16
16
|
"Intended Audience :: Science/Research",
|
|
17
17
|
"Operating System :: OS Independent",
|
|
18
18
|
"Programming Language :: Python :: 3",
|
|
19
|
-
"Programming Language :: Python :: 3.11",
|
|
20
19
|
"Programming Language :: Python :: 3.12",
|
|
21
20
|
"Programming Language :: Python :: 3.13",
|
|
22
21
|
"Programming Language :: Python :: 3.14",
|
|
@@ -40,6 +39,7 @@ dependencies = [
|
|
|
40
39
|
dynamic = ["version"]
|
|
41
40
|
[project.urls]
|
|
42
41
|
"Homepage" = "https://github.com/lsst/ctrl_bps_panda"
|
|
42
|
+
"Source" = "https://github.com/lsst/ctrl_bps_panda"
|
|
43
43
|
|
|
44
44
|
[project.optional-dependencies]
|
|
45
45
|
test = [
|
|
@@ -97,15 +97,6 @@ version = { attr = "lsst_versions.get_lsst_version" }
|
|
|
97
97
|
name = "An API Removal or Deprecation"
|
|
98
98
|
showcontent = true
|
|
99
99
|
|
|
100
|
-
[tool.black]
|
|
101
|
-
line-length = 110
|
|
102
|
-
target-version = ["py311"]
|
|
103
|
-
|
|
104
|
-
[tool.isort]
|
|
105
|
-
profile = "black"
|
|
106
|
-
line_length = 110
|
|
107
|
-
known_first_party = ["lsst"]
|
|
108
|
-
|
|
109
100
|
[tool.lsst_versions]
|
|
110
101
|
write_to = "python/lsst/ctrl/bps/panda/version.py"
|
|
111
102
|
|
|
@@ -124,7 +115,7 @@ add-ignore = ["D107", "D105", "D102", "D100", "D200", "D205", "D400", "D104"]
|
|
|
124
115
|
|
|
125
116
|
[tool.ruff]
|
|
126
117
|
line-length = 110
|
|
127
|
-
target-version = "
|
|
118
|
+
target-version = "py312"
|
|
128
119
|
exclude = [
|
|
129
120
|
"__init__.py",
|
|
130
121
|
]
|
|
@@ -188,6 +179,7 @@ checks = [
|
|
|
188
179
|
"RT01", # Unfortunately our @property trigger this.
|
|
189
180
|
"RT02", # Does not want named return value. DM style says we do.
|
|
190
181
|
"SS05", # pydocstyle is better at finding infinitive verb.
|
|
182
|
+
"RT03", # Temporarily disable for sphinx empty returns.
|
|
191
183
|
]
|
|
192
184
|
exclude = [
|
|
193
185
|
'^__init__$',
|
|
@@ -317,7 +317,7 @@ def use_map_file(input_file):
|
|
|
317
317
|
-------
|
|
318
318
|
use_qnode_map: `bool`
|
|
319
319
|
Whether qnode_map is used. There is a placeholder 'PH'
|
|
320
|
-
|
|
320
|
+
when enableQnodeMap is true.
|
|
321
321
|
"""
|
|
322
322
|
parts = input_file.split(":")
|
|
323
323
|
use_qnode_map = len(parts) == 2 and parts[0] == "PH"
|
|
@@ -69,8 +69,16 @@ def panda_auth_reset_driver():
|
|
|
69
69
|
panda_auth_update(None, True)
|
|
70
70
|
|
|
71
71
|
|
|
72
|
-
def panda_auth_refresh_driver(days, verbose):
|
|
73
|
-
"""Refresh auth token.
|
|
72
|
+
def panda_auth_refresh_driver(days: int, verbose: bool) -> None:
|
|
73
|
+
"""Refresh auth token.
|
|
74
|
+
|
|
75
|
+
Parameters
|
|
76
|
+
----------
|
|
77
|
+
days : `int`
|
|
78
|
+
Number of days before token expires.
|
|
79
|
+
verbose : `bool`
|
|
80
|
+
Enable verbose logging.
|
|
81
|
+
"""
|
|
74
82
|
try:
|
|
75
83
|
panda_auth_refresh(days, verbose)
|
|
76
84
|
except TokenNotFoundError as e:
|
|
@@ -187,7 +187,7 @@ def panda_auth_refresh(days=4, verbose=False):
|
|
|
187
187
|
Returns
|
|
188
188
|
-------
|
|
189
189
|
status: `dict`
|
|
190
|
-
A dictionary containing the refreshed token status
|
|
190
|
+
A dictionary containing the refreshed token status.
|
|
191
191
|
"""
|
|
192
192
|
panda_url = os.environ.get("PANDA_URL")
|
|
193
193
|
panda_auth_vo = os.environ.get("PANDA_AUTH_VO")
|
{lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/utils.py
RENAMED
|
@@ -294,7 +294,7 @@ def idds_call_with_check(func, *, func_name: str, request_id: int, **kwargs):
|
|
|
294
294
|
|
|
295
295
|
Parameters
|
|
296
296
|
----------
|
|
297
|
-
func :
|
|
297
|
+
func : `~collections.abc.Callable`
|
|
298
298
|
The iDDS client function to call.
|
|
299
299
|
func_name : `str`
|
|
300
300
|
Name used for logging.
|
|
@@ -305,7 +305,7 @@ def idds_call_with_check(func, *, func_name: str, request_id: int, **kwargs):
|
|
|
305
305
|
|
|
306
306
|
Returns
|
|
307
307
|
-------
|
|
308
|
-
ret :
|
|
308
|
+
ret : `~typing.Any`
|
|
309
309
|
The return value from the iDDS client function.
|
|
310
310
|
"""
|
|
311
311
|
call_kwargs = dict(kwargs)
|
|
@@ -366,12 +366,30 @@ def _make_doma_work(
|
|
|
366
366
|
----------
|
|
367
367
|
config : `lsst.ctrl.bps.BpsConfig`
|
|
368
368
|
BPS configuration.
|
|
369
|
+
generic_workflow : `lsst.ctrl.bps.GenericWorkflow`
|
|
370
|
+
The workflow.
|
|
369
371
|
gwjob : `lsst.ctrl.bps.GenericWorkflowJob`
|
|
370
372
|
Job representing the jobs for the PanDA task.
|
|
371
373
|
task_count : `int`
|
|
372
374
|
Count of PanDA tasks used when making unique names.
|
|
373
375
|
task_chunk : `int`
|
|
374
376
|
Count of chunk of a PanDA tasks used when making unique names.
|
|
377
|
+
enable_event_service : `bool`, optional
|
|
378
|
+
???.
|
|
379
|
+
enable_job_name_map : `bool`, optional
|
|
380
|
+
???.
|
|
381
|
+
order_id_map_files : `typing.Any`, optional
|
|
382
|
+
???.
|
|
383
|
+
es_label : `typing.Any`, optional
|
|
384
|
+
???.
|
|
385
|
+
max_payloads_per_panda_job : `int`, optional
|
|
386
|
+
???.
|
|
387
|
+
max_wms_job_wall_time : `typing.Any`, optional
|
|
388
|
+
???.
|
|
389
|
+
remote_filename : `typing.Any`, optional
|
|
390
|
+
???.
|
|
391
|
+
qnode_map_filename : `typing.Any`, optional
|
|
392
|
+
???.
|
|
375
393
|
|
|
376
394
|
Returns
|
|
377
395
|
-------
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
__all__ = ["__version__"]
|
|
2
|
-
__version__ = "30.0.
|
|
2
|
+
__version__ = "30.0.1rc1"
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lsst-ctrl-bps-panda
|
|
3
|
-
Version: 30.0.
|
|
3
|
+
Version: 30.0.1rc1
|
|
4
4
|
Summary: PanDA plugin for lsst-ctrl-bps.
|
|
5
5
|
Author-email: Rubin Observatory Data Management <dm-admin@lists.lsst.org>
|
|
6
6
|
License-Expression: BSD-3-Clause OR GPL-3.0-or-later
|
|
7
7
|
Project-URL: Homepage, https://github.com/lsst/ctrl_bps_panda
|
|
8
|
+
Project-URL: Source, https://github.com/lsst/ctrl_bps_panda
|
|
8
9
|
Keywords: lsst
|
|
9
10
|
Classifier: Intended Audience :: Science/Research
|
|
10
11
|
Classifier: Operating System :: OS Independent
|
|
11
12
|
Classifier: Programming Language :: Python :: 3
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.12
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.13
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.14
|
|
16
16
|
Classifier: Topic :: Scientific/Engineering :: Astronomy
|
|
17
|
-
Requires-Python: >=3.
|
|
17
|
+
Requires-Python: >=3.12.0
|
|
18
18
|
Description-Content-Type: text/x-rst
|
|
19
19
|
License-File: COPYRIGHT
|
|
20
20
|
License-File: LICENSE
|
{lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/tests/test_panda_auth_utils.py
RENAMED
|
@@ -42,21 +42,41 @@ from lsst.ctrl.bps.panda.panda_auth_utils import (
|
|
|
42
42
|
)
|
|
43
43
|
|
|
44
44
|
|
|
45
|
-
def make_fake_jwt(exp_offset_days):
|
|
46
|
-
"""Return a fake id_token that expires in N days.
|
|
45
|
+
def make_fake_jwt(exp_offset_days: int) -> str:
|
|
46
|
+
"""Return a fake id_token that expires in N days.
|
|
47
|
+
|
|
48
|
+
Parameters
|
|
49
|
+
----------
|
|
50
|
+
exp_offset_days : `int`
|
|
51
|
+
Number of days to use for expiry.
|
|
52
|
+
"""
|
|
47
53
|
payload = {"exp": int((datetime.now(UTC) + timedelta(days=exp_offset_days)).timestamp())}
|
|
48
54
|
b64_payload = base64.urlsafe_b64encode(json.dumps(payload).encode()).decode().rstrip("=")
|
|
49
55
|
return f"header.{b64_payload}.sig"
|
|
50
56
|
|
|
51
57
|
|
|
52
|
-
def fake_token_file(exp_days=3, refresh_token="fake_refresh"):
|
|
53
|
-
"""Generate fake token file data
|
|
58
|
+
def fake_token_file(exp_days: int = 3, refresh_token: str = "fake_refresh") -> str:
|
|
59
|
+
"""Generate fake token file data.
|
|
60
|
+
|
|
61
|
+
Parameters
|
|
62
|
+
----------
|
|
63
|
+
exp_days : `int`, optional
|
|
64
|
+
Number of days to use for expiry.
|
|
65
|
+
refresh_token : `str`, optional
|
|
66
|
+
Fake token to use.
|
|
67
|
+
"""
|
|
54
68
|
token = make_fake_jwt(exp_days)
|
|
55
69
|
return json.dumps({"id_token": token, "refresh_token": refresh_token})
|
|
56
70
|
|
|
57
71
|
|
|
58
|
-
def fetch_page_side_effect(url):
|
|
59
|
-
"""Simulate OpenIdConnect_Utils.fetch_page behavior in tests.
|
|
72
|
+
def fetch_page_side_effect(url: str) -> tuple[bool, dict[str, str]]:
|
|
73
|
+
"""Simulate OpenIdConnect_Utils.fetch_page behavior in tests.
|
|
74
|
+
|
|
75
|
+
Parameters
|
|
76
|
+
----------
|
|
77
|
+
url : `str`
|
|
78
|
+
URL to fetch.
|
|
79
|
+
"""
|
|
60
80
|
if url.endswith("auth_config.json"):
|
|
61
81
|
return True, {
|
|
62
82
|
"client_secret": "secret",
|
|
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
|
{lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/tests/test_cmd_line_decoder.py
RENAMED
|
File without changes
|
{lsst_ctrl_bps_panda-30.0.0rc2 → lsst_ctrl_bps_panda-30.0.1rc1}/tests/test_cmd_line_embedder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|