lsst-ctrl-bps-panda 29.2025.3600__tar.gz → 29.2025.3700__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-29.2025.3600/python/lsst_ctrl_bps_panda.egg-info → lsst_ctrl_bps_panda-29.2025.3700}/PKG-INFO +1 -1
  2. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/utils.py +17 -25
  3. lsst_ctrl_bps_panda-29.2025.3700/python/lsst/ctrl/bps/panda/version.py +2 -0
  4. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700/python/lsst_ctrl_bps_panda.egg-info}/PKG-INFO +1 -1
  5. lsst_ctrl_bps_panda-29.2025.3600/python/lsst/ctrl/bps/panda/version.py +0 -2
  6. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/COPYRIGHT +0 -0
  7. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/LICENSE +0 -0
  8. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/README.rst +0 -0
  9. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/bsd_license.txt +0 -0
  10. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/gpl-v3.0.txt +0 -0
  11. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/pyproject.toml +0 -0
  12. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/__init__.py +0 -0
  13. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/cli/__init__.py +0 -0
  14. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/cli/cmd/__init__.py +0 -0
  15. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/cli/cmd/panda_auth_commands.py +0 -0
  16. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/cli/panda_auth.py +0 -0
  17. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/cmd_line_embedder.py +0 -0
  18. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/conf_example/example_panda_SLAC.yaml +0 -0
  19. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/conf_example/pipelines_check_idf.yaml +0 -0
  20. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/conf_example/test_idf.yaml +0 -0
  21. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/conf_example/test_sdf.yaml +0 -0
  22. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/conf_example/test_usdf.yaml +0 -0
  23. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/constants.py +0 -0
  24. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/edgenode/__init__.py +0 -0
  25. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/edgenode/build_cmd_line_decoder.py +0 -0
  26. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/edgenode/cmd_line_decoder.py +0 -0
  27. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/panda_auth_drivers.py +0 -0
  28. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/panda_auth_utils.py +0 -0
  29. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst/ctrl/bps/panda/panda_service.py +0 -0
  30. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst_ctrl_bps_panda.egg-info/SOURCES.txt +0 -0
  31. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst_ctrl_bps_panda.egg-info/dependency_links.txt +0 -0
  32. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst_ctrl_bps_panda.egg-info/requires.txt +0 -0
  33. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst_ctrl_bps_panda.egg-info/top_level.txt +0 -0
  34. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/python/lsst_ctrl_bps_panda.egg-info/zip-safe +0 -0
  35. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/setup.cfg +0 -0
  36. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/tests/test_cmd_line_decoder.py +0 -0
  37. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/tests/test_cmd_line_embedder.py +0 -0
  38. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/tests/test_panda_auth_utils.py +0 -0
  39. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/tests/test_panda_service.py +0 -0
  40. {lsst_ctrl_bps_panda-29.2025.3600 → lsst_ctrl_bps_panda-29.2025.3700}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-ctrl-bps-panda
3
- Version: 29.2025.3600
3
+ Version: 29.2025.3700
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: BSD 3-Clause License
@@ -48,7 +48,6 @@ import uuid
48
48
  import idds.common.utils as idds_utils
49
49
  import pandaclient.idds_api
50
50
  from idds.doma.workflowv2.domapandawork import DomaPanDAWork
51
- from idds.doma.workflowv2.domatree import DomaTree
52
51
  from idds.workflowv2.workflow import AndCondition
53
52
  from idds.workflowv2.workflow import Workflow as IDDS_client_workflow
54
53
 
@@ -636,27 +635,18 @@ def add_idds_work(config, generic_workflow, idds_workflow):
636
635
  name_works = {}
637
636
  order_id_map = {}
638
637
  job_name_to_order_id_map = {}
639
- doma_tree = None
640
638
  order_id_map_file = None
641
639
  if enable_event_service:
642
640
  enable_event_service = enable_event_service.split(",")
643
641
  enable_event_service = [i.strip() for i in enable_event_service]
644
642
  if enable_job_name_map:
645
- doma_tree = DomaTree(name=generic_workflow.name)
646
643
  _, order_id_map_filename = config.search(
647
644
  "orderIdMapFilename", opt={"default": PANDA_DEFAULT_ORDER_ID_MAP_FILE}
648
645
  )
649
646
  order_id_map_file = os.path.join(submit_path, order_id_map_filename)
650
- order_id_map = doma_tree.order_jobs_from_generic_workflow(generic_workflow, order_id_map_file)
651
647
  order_id_map_files = {"orderIdMapFilename": order_id_map_file}
652
648
  files_to_pre_stage.update(order_id_map_files)
653
649
 
654
- # job name to order id map
655
- job_name_to_order_id_map = {
656
- label: {job_name: order_id for order_id, job_name in orders.items()}
657
- for label, orders in order_id_map.items()
658
- }
659
-
660
650
  # To avoid dying due to optimizing number of times through workflow,
661
651
  # catch dependency issues to loop through again later.
662
652
  jobs_with_dependency_issues = {}
@@ -672,12 +662,18 @@ def add_idds_work(config, generic_workflow, idds_workflow):
672
662
  # Assume jobs with same label share config values
673
663
  for job_label in generic_workflow.labels:
674
664
  _LOG.debug("job_label = %s", job_label)
665
+
666
+ if enable_job_name_map:
667
+ order_id_map[job_label] = {}
668
+ job_name_to_order_id_map[job_label] = {}
669
+
675
670
  # Add each job with a particular label to a corresponding PanDA task
676
671
  # A PanDA task has a limit on number of jobs, so break into multiple
677
672
  # PanDA tasks if needed.
678
673
  job_count = 0 # Number of jobs in idds task used for task chunking
679
674
  task_chunk = 1 # Task chunk number within job label used for unique name
680
675
  work = None
676
+ order_id = -1
681
677
 
682
678
  # Instead of changing code to make chunks up front and round-robin
683
679
  # assign jobs to chunks, for now keeping chunk creation in loop
@@ -694,16 +690,18 @@ def add_idds_work(config, generic_workflow, idds_workflow):
694
690
  max_jobs_per_task_this_label,
695
691
  )
696
692
  for gwjob in jobs_by_label:
693
+ order_id += 1
694
+ pseudo_filename = _make_pseudo_filename(config, gwjob)
695
+ job_to_pseudo_filename[gwjob.name] = pseudo_filename
696
+ if enable_job_name_map:
697
+ order_id_map[job_label][str(order_id)] = pseudo_filename
698
+ job_name_to_order_id_map[job_label][gwjob.name] = str(order_id)
699
+
697
700
  job_count += 1
698
701
  if job_count > max_jobs_per_task_this_label:
699
702
  job_count = 1
700
703
  task_chunk += 1
701
704
 
702
- order_id = job_count
703
- job_order_id = gwjob.attrs.get("order_id", None)
704
- if job_order_id is not None:
705
- order_id = job_order_id
706
-
707
705
  if job_count == 1:
708
706
  # Create new PanDA task object
709
707
  task_count += 1
@@ -731,9 +729,6 @@ def add_idds_work(config, generic_workflow, idds_workflow):
731
729
  if generic_workflow.out_degree(gwjob.name) == 0:
732
730
  dag_sink_work.append(work)
733
731
 
734
- pseudo_filename = _make_pseudo_filename(config, gwjob)
735
- job_to_pseudo_filename[gwjob.name] = pseudo_filename
736
-
737
732
  if enable_qnode_map:
738
733
  job_name_PH = "PH:" + gwjob.name
739
734
  job_to_pseudo_filename[gwjob.name] = job_name_PH
@@ -829,15 +824,12 @@ def add_idds_work(config, generic_workflow, idds_workflow):
829
824
  # trigger the setter function which will validate the dependency_map:
830
825
  # 1) check the name length to avoid the the name too long,
831
826
  # 2) check to avoid duplicated items.
832
- work.dependency_map = work.dependency_map
827
+ sorted_dep_map = sorted(work.dependency_map, key=lambda x: x["order_id"])
828
+ work.dependency_map = sorted_dep_map
833
829
 
834
830
  if enable_job_name_map:
835
- for label_name in order_id_map:
836
- for order_id in order_id_map[label_name]:
837
- job_name = order_id_map[label_name][order_id]
838
- if job_name in job_to_pseudo_filename:
839
- order_id_map[label_name][order_id] = job_to_pseudo_filename[job_name]
840
- doma_tree.save_order_id_map(order_id_map, order_id_map_file)
831
+ with open(order_id_map_file, "w") as f:
832
+ json.dump(order_id_map, f)
841
833
 
842
834
  return files_to_pre_stage, dag_sink_work, task_count
843
835
 
@@ -0,0 +1,2 @@
1
+ __all__ = ["__version__"]
2
+ __version__ = "29.2025.3700"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-ctrl-bps-panda
3
- Version: 29.2025.3600
3
+ Version: 29.2025.3700
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: BSD 3-Clause License
@@ -1,2 +0,0 @@
1
- __all__ = ["__version__"]
2
- __version__ = "29.2025.3600"