lsst-ctrl-bps-panda 30.0.0rc3__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.
Files changed (40) hide show
  1. {lsst_ctrl_bps_panda-30.0.0rc3/python/lsst_ctrl_bps_panda.egg-info → lsst_ctrl_bps_panda-30.0.1rc1}/PKG-INFO +3 -3
  2. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/pyproject.toml +4 -12
  3. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/edgenode/cmd_line_decoder.py +1 -1
  4. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/panda_auth_drivers.py +10 -2
  5. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/panda_auth_utils.py +1 -1
  6. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/utils.py +20 -2
  7. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/version.py +1 -1
  8. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1/python/lsst_ctrl_bps_panda.egg-info}/PKG-INFO +3 -3
  9. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/tests/test_panda_auth_utils.py +26 -6
  10. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/COPYRIGHT +0 -0
  11. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/LICENSE +0 -0
  12. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/README.rst +0 -0
  13. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/bsd_license.txt +0 -0
  14. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/gpl-v3.0.txt +0 -0
  15. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/__init__.py +0 -0
  16. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/cli/__init__.py +0 -0
  17. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/cli/cmd/__init__.py +0 -0
  18. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/cli/cmd/panda_auth_commands.py +0 -0
  19. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/cli/panda_auth.py +0 -0
  20. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/cmd_line_embedder.py +0 -0
  21. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/conf_example/example_panda_SLAC.yaml +0 -0
  22. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/conf_example/pipelines_check_idf.yaml +0 -0
  23. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/conf_example/test_idf.yaml +0 -0
  24. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/conf_example/test_sdf.yaml +0 -0
  25. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/conf_example/test_usdf.yaml +0 -0
  26. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/constants.py +0 -0
  27. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/edgenode/__init__.py +0 -0
  28. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/edgenode/build_cmd_line_decoder.py +0 -0
  29. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/panda_exceptions.py +0 -0
  30. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst/ctrl/bps/panda/panda_service.py +0 -0
  31. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst_ctrl_bps_panda.egg-info/SOURCES.txt +0 -0
  32. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst_ctrl_bps_panda.egg-info/dependency_links.txt +0 -0
  33. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst_ctrl_bps_panda.egg-info/requires.txt +0 -0
  34. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst_ctrl_bps_panda.egg-info/top_level.txt +0 -0
  35. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/python/lsst_ctrl_bps_panda.egg-info/zip-safe +0 -0
  36. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/setup.cfg +0 -0
  37. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/tests/test_cmd_line_decoder.py +0 -0
  38. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/tests/test_cmd_line_embedder.py +0 -0
  39. {lsst_ctrl_bps_panda-30.0.0rc3 → lsst_ctrl_bps_panda-30.0.1rc1}/tests/test_panda_service.py +0 -0
  40. {lsst_ctrl_bps_panda-30.0.0rc3 → 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.0rc3
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.11.0
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.11.0"
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 = "py311"
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
- when enableQnodeMap is true.
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")
@@ -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 : callable
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 : `Any`
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.0rc3"
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.0rc3
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.11.0
17
+ Requires-Python: >=3.12.0
18
18
  Description-Content-Type: text/x-rst
19
19
  License-File: COPYRIGHT
20
20
  License-File: LICENSE
@@ -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",